1 /*========================== begin_copyright_notice ============================
2 
3 Copyright (C) 2021 Intel Corporation
4 
5 SPDX-License-Identifier: MIT
6 
7 ============================= end_copyright_notice ===========================*/
8 
9 #ifndef __SPIRV_MATH_H__
10 #define __SPIRV_MATH_H__
11 
12 #include "spirv_macros.h"
13 
14 //
15 //  Common
16 //        -degrees,fclamp,fmax_common,fmin_common,mix,radians,sign,smoothstep,step
17 //
18 
19 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _f32, )(float r );
20 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v2f32, )(float2 x);
21 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v3f32, )(float3 x);
22 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v4f32, )(float4 x);
23 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v8f32, )(float8 x);
24 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v16f32, )(float16 x);
25 #if defined(cl_khr_fp64)
26 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _f64, )(double r );
27 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v2f64, )(double2 x);
28 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v3f64, )(double3 x);
29 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v4f64, )(double4 x);
30 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v8f64, )(double8 x);
31 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v16f64, )(double16 x);
32 #endif // defined(cl_khr_fp64)
33 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _f16, )(half r );
34 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v2f16, )(half2 x);
35 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v3f16, )(half3 x);
36 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v4f16, )(half4 x);
37 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v8f16, )(half8 x);
38 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(degrees, _v16f16, )(half16 x);
39 
40 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _f32_f32_f32, )(float x, float y, float z);
41 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
42 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
43 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
44 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
45 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
46 #if defined(cl_khr_fp64)
47 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _f64_f64_f64, )(double x, double y, double z);
48 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
49 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
50 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
51 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
52 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
53 #endif // defined(cl_khr_fp64)
54 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _f16_f16_f16, )(half x, half y, half z);
55 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
56 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
57 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
58 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
59 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fclamp, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
60 
61 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _f32_f32, )(float x, float y);
62 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v2f32_v2f32, )(float2 x, float2 y);
63 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v3f32_v3f32, )(float3 x, float3 y);
64 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v4f32_v4f32, )(float4 x, float4 y);
65 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v8f32_v8f32, )(float8 x, float8 y);
66 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v16f32_v16f32, )(float16 x, float16 y);
67 #if defined(cl_khr_fp64)
68 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _f64_f64, )(double x, double y);
69 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v2f64_v2f64, )(double2 x, double2 y);
70 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v3f64_v3f64, )(double3 x, double3 y);
71 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v4f64_v4f64, )(double4 x, double4 y);
72 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v8f64_v8f64, )(double8 x, double8 y);
73 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v16f64_v16f64, )(double16 x, double16 y);
74 #endif // defined(cl_khr_fp64)
75 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _f16_f16, )(half x, half y);
76 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v2f16_v2f16, )(half2 x, half2 y);
77 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v3f16_v3f16, )(half3 x, half3 y);
78 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v4f16_v4f16, )(half4 x, half4 y);
79 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v8f16_v8f16, )(half8 x, half8 y);
80 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax_common, _v16f16_v16f16, )(half16 x, half16 y);
81 
82 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _f32_f32, )(float x, float y);
83 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _f16_f16, )(half x, half y);
84 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v2f32_v2f32, )(float2 x, float2 y);
85 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v3f32_v3f32, )(float3 x, float3 y);
86 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v4f32_v4f32, )(float4 x, float4 y);
87 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v8f32_v8f32, )(float8 x, float8 y);
88 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v16f32_v16f32, )(float16 x, float16 y);
89 #if defined(cl_khr_fp64)
90 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _f64_f64, )(double x, double y);
91 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v2f64_v2f64, )(double2 x, double2 y);
92 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v3f64_v3f64, )(double3 x, double3 y);
93 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v4f64_v4f64, )(double4 x, double4 y);
94 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v8f64_v8f64, )(double8 x, double8 y);
95 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v16f64_v16f64, )(double16 x, double16 y);
96 #endif // defined(cl_khr_fp64)
97 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v2f16_v2f16, )(half2 x, half2 y);
98 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v3f16_v3f16, )(half3 x, half3 y);
99 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v4f16_v4f16, )(half4 x, half4 y);
100 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v8f16_v8f16, )(half8 x, half8 y);
101 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin_common, _v16f16_v16f16, )(half16 x, half16 y);
102 
103 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _f32_f32_f32, )(float x, float y, float a );
104 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
105 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
106 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
107 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
108 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
109 #if defined(cl_khr_fp64)
110 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _f64_f64_f64, )(double x, double y, double a );
111 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
112 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
113 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
114 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
115 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
116 #endif // defined(cl_khr_fp64)
117 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _f16_f16_f16, )(half x, half y, half a );
118 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
119 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
120 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
121 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
122 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mix, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
123 
124 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _f32, )(float d );
125 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v2f32, )(float2 x);
126 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v3f32, )(float3 x);
127 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v4f32, )(float4 x);
128 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v8f32, )(float8 x);
129 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v16f32, )(float16 x);
130 #if defined(cl_khr_fp64)
131 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _f64, )(double d );
132 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v2f64, )(double2 x);
133 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v3f64, )(double3 x);
134 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v4f64, )(double4 x);
135 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v8f64, )(double8 x);
136 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v16f64, )(double16 x);
137 #endif // defined(cl_khr_fp64)
138 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _f16, )(half d );
139 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v2f16, )(half2 x);
140 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v3f16, )(half3 x);
141 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v4f16, )(half4 x);
142 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v8f16, )(half8 x);
143 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(radians, _v16f16, )(half16 x);
144 
145 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _f32, )(float x );
146 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v2f32, )(float2 x);
147 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v3f32, )(float3 x);
148 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v4f32, )(float4 x);
149 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v8f32, )(float8 x);
150 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v16f32, )(float16 x);
151 #if defined(cl_khr_fp64)
152 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _f64, )(double x );
153 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v2f64, )(double2 x);
154 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v3f64, )(double3 x);
155 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v4f64, )(double4 x);
156 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v8f64, )(double8 x);
157 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v16f64, )(double16 x);
158 #endif // defined(cl_khr_fp64)
159 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _f16, )(half x );
160 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v2f16, )(half2 x);
161 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v3f16, )(half3 x);
162 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v4f16, )(half4 x);
163 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v8f16, )(half8 x);
164 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sign, _v16f16, )(half16 x);
165 
166 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _f32_f32_f32, )(float edge0, float edge1, float x );
167 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
168 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
169 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
170 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
171 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
172 #if defined(cl_khr_fp64)
173 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _f64_f64_f64, )(double edge0, double edge1, double x );
174 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
175 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
176 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
177 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
178 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
179 #endif // defined(cl_khr_fp64)
180 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _f16_f16_f16, )(half edge0, half edge1, half x );
181 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
182 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
183 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
184 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
185 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(smoothstep, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
186 
187 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _f32_f32, )(float edge, float x );
188 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v2f32_v2f32, )(float2 x, float2 y);
189 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v3f32_v3f32, )(float3 x, float3 y);
190 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v4f32_v4f32, )(float4 x, float4 y);
191 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v8f32_v8f32, )(float8 x, float8 y);
192 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v16f32_v16f32, )(float16 x, float16 y);
193 #if defined(cl_khr_fp64)
194 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _f64_f64, )(double edge, double x );
195 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v2f64_v2f64, )(double2 x, double2 y);
196 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v3f64_v3f64, )(double3 x, double3 y);
197 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v4f64_v4f64, )(double4 x, double4 y);
198 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v8f64_v8f64, )(double8 x, double8 y);
199 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v16f64_v16f64, )(double16 x, double16 y);
200 #endif // defined(cl_khr_fp64)
201 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _f16_f16, )(half edge, half x );
202 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v2f16_v2f16, )(half2 x, half2 y);
203 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v3f16_v3f16, )(half3 x, half3 y);
204 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v4f16_v4f16, )(half4 x, half4 y);
205 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v8f16_v8f16, )(half8 x, half8 y);
206 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(step, _v16f16_v16f16, )(half16 x, half16 y);
207 
208 
209 //
210 //  Geometric
211 //        -cross,distance,fast_distance,fast_length,fast_normalize,length,normalize
212 //
213 
214 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v3f32_v3f32, )(float3 p0, float3 p1 );
215 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v4f32_v4f32, )(float4 p0, float4 p1 );
216 #if defined(cl_khr_fp64)
217 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v3f64_v3f64, )(double3 p0, double3 p1 );
218 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v4f64_v4f64, )(double4 p0, double4 p1 );
219 #endif // defined(cl_khr_fp64)
220 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v3f16_v3f16, )(half3 p0, half3 p1 );
221 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cross, _v4f16_v4f16, )(half4 p0, half4 p1 );
222 
223 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _f32_f32, )(float p0, float p1 );
224 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v2f32_v2f32, )(float2 p0, float2 p1 );
225 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v3f32_v3f32, )(float3 p0, float3 p1 );
226 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v4f32_v4f32, )(float4 p0, float4 p1 );
227 #if defined(cl_khr_fp64)
228 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _f64_f64, )(double p0, double p1 );
229 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v2f64_v2f64, )(double2 p0, double2 p1 );
230 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v3f64_v3f64, )(double3 p0, double3 p1 );
231 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v4f64_v4f64, )(double4 p0, double4 p1 );
232 #endif // defined(cl_khr_fp64)
233 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _f16_f16, )(half p0, half p1 );
234 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v2f16_v2f16, )(half2 p0, half2 p1 );
235 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v3f16_v3f16, )(half3 p0, half3 p1 );
236 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(distance, _v4f16_v4f16, )(half4 p0, half4 p1 );
237 
238 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_distance, _f32_f32, )(float p0, float p1 );
239 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_distance, _v2f32_v2f32, )(float2 p0, float2 p1 );
240 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_distance, _v3f32_v3f32, )(float3 p0, float3 p1 );
241 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_distance, _v4f32_v4f32, )(float4 p0, float4 p1 );
242 
243 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_length, _f32, )(float p );
244 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_length, _v2f32, )(float2 p );
245 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_length, _v3f32, )(float3 p );
246 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_length, _v4f32, )(float4 p );
247 
248 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_normalize, _f32, )(float p );
249 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_normalize, _v2f32, )(float2 p );
250 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_normalize, _v3f32, )(float3 p );
251 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fast_normalize, _v4f32, )(float4 p );
252 
253 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _f32, )(float p );
254 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v2f32, )(float2 p );
255 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v3f32, )(float3 p );
256 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v4f32, )(float4 p );
257 #if defined(cl_khr_fp64)
258 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _f64, )(double p );
259 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v2f64, )(double2 p );
260 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v3f64, )(double3 p );
261 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v4f64, )(double4 p );
262 #endif // defined(cl_khr_fp64)
263 #if defined(cl_khr_fp16)
264 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _f16, )(half p );
265 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v2f16, )(half2 p );
266 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v3f16, )(half3 p );
267 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(length, _v4f16, )(half4 p );
268 #endif // defined(cl_khr_fp16)
269 
270 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _f32, )(float p );
271 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v2f32, )(float2 p );
272 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v3f32, )(float3 p );
273 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v4f32, )(float4 p );
274 #if defined(cl_khr_fp64)
275 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _f64, )(double p );
276 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v2f64, )(double2 p );
277 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v3f64, )(double3 p );
278 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v4f64, )(double4 p );
279 #endif // defined(cl_khr_fp64)
280 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _f16, )(half p );
281 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v2f16, )(half2 p );
282 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v3f16, )(half3 p );
283 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(normalize, _v4f16, )(half4 p );
284 
285 
286 //
287 //  Half
288 //        -half_cos,half_divide,half_exp,half_exp2,half_exp10,half_log,half_log2,half_log10
289 //         half_powr,half_recip,half_rsqrt,half_sin,half_sqrt,half_tan
290 //
291 
292 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _f32, )(float x );
293 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _v2f32, )(float2 x );
294 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _v3f32, )(float3 x );
295 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _v4f32, )(float4 x );
296 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _v8f32, )(float8 x );
297 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_cos, _v16f32, )(float16 x );
298 
299 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _f32_f32, )(float x, float y );
300 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _v2f32_v2f32, )(float2 x, float2 y );
301 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _v3f32_v3f32, )(float3 x, float3 y );
302 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _v4f32_v4f32, )(float4 x, float4 y );
303 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _v8f32_v8f32, )(float8 x, float8 y );
304 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_divide, _v16f32_v16f32, )(float16 x, float16 y );
305 
306 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _f32, )(float x );
307 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _v2f32, )(float2 x );
308 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _v3f32, )(float3 x );
309 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _v4f32, )(float4 x );
310 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _v8f32, )(float8 x );
311 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp, _v16f32, )(float16 x );
312 
313 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _f32, )(float x );
314 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _v2f32, )(float2 x );
315 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _v3f32, )(float3 x );
316 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _v4f32, )(float4 x );
317 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _v8f32, )(float8 x );
318 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp2, _v16f32, )(float16 x );
319 
320 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _f32, )(float x );
321 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _v2f32, )(float2 x );
322 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _v3f32, )(float3 x );
323 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _v4f32, )(float4 x );
324 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _v8f32, )(float8 x );
325 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_exp10, _v16f32, )(float16 x );
326 
327 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _f32, )(float x );
328 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _v2f32, )(float2 x );
329 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _v3f32, )(float3 x );
330 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _v4f32, )(float4 x );
331 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _v8f32, )(float8 x );
332 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log, _v16f32, )(float16 x );
333 
334 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _f32, )(float x );
335 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _v2f32, )(float2 x );
336 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _v3f32, )(float3 x );
337 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _v4f32, )(float4 x );
338 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _v8f32, )(float8 x );
339 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log2, _v16f32, )(float16 x );
340 
341 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _f32, )(float x );
342 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _v2f32, )(float2 x );
343 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _v3f32, )(float3 x );
344 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _v4f32, )(float4 x );
345 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _v8f32, )(float8 x );
346 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_log10, _v16f32, )(float16 x );
347 
348 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _f32_f32, )(float x, float y );
349 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _v2f32_v2f32, )(float2 x, float2 y );
350 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _v3f32_v3f32, )(float3 x, float3 y );
351 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _v4f32_v4f32, )(float4 x, float4 y );
352 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _v8f32_v8f32, )(float8 x, float8 y );
353 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_powr, _v16f32_v16f32, )(float16 x, float16 y );
354 
355 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _f32, )(float x );
356 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _v2f32, )(float2 x );
357 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _v3f32, )(float3 x );
358 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _v4f32, )(float4 x );
359 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _v8f32, )(float8 x );
360 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_recip, _v16f32, )(float16 x );
361 
362 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _f32, )(float x );
363 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _v2f32, )(float2 x );
364 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _v3f32, )(float3 x );
365 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _v4f32, )(float4 x );
366 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _v8f32, )(float8 x );
367 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_rsqrt, _v16f32, )(float16 x );
368 
369 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _f32, )(float x );
370 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _v2f32, )(float2 x );
371 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _v3f32, )(float3 x );
372 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _v4f32, )(float4 x );
373 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _v8f32, )(float8 x );
374 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sin, _v16f32, )(float16 x );
375 
376 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _f32, )(float x );
377 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _v2f32, )(float2 x );
378 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _v3f32, )(float3 x );
379 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _v4f32, )(float4 x );
380 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _v8f32, )(float8 x );
381 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_sqrt, _v16f32, )(float16 x );
382 
383 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _f32, )(float x );
384 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _v2f32, )(float2 x );
385 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _v3f32, )(float3 x );
386 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _v4f32, )(float4 x );
387 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _v8f32, )(float8 x );
388 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(half_tan, _v16f32, )(float16 x );
389 
390 
391 //
392 //  Integer (signed and unsigned )
393 //        -abs,abs_diff,add_sat,clamp,clz,ctz,hadd,mad_hi,mad_sat,mad24,max,min,mul_hi
394 //         mul24,popcnt,rhadd,rotate,sub_sat,upsample
395 //
396 
397 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _i8, )( char x );
398 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v2i8, )( char2 x );
399 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v3i8, )( char3 x );
400 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v4i8, )( char4 x );
401 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v8i8, )( char8 x );
402 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v16i8, )( char16 x );
403 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _i8, )( uchar x );
404 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v2i8, )( uchar2 x );
405 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v3i8, )( uchar3 x );
406 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v4i8, )( uchar4 x );
407 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v8i8, )( uchar8 x );
408 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v16i8, )( uchar16 x );
409 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _i16, )( short x );
410 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v2i16, )( short2 x );
411 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v3i16, )( short3 x );
412 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v4i16, )( short4 x );
413 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v8i16, )( short8 x );
414 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v16i16, )( short16 x );
415 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _i16, )( ushort x );
416 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v2i16, )( ushort2 x );
417 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v3i16, )( ushort3 x );
418 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v4i16, )( ushort4 x );
419 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v8i16, )( ushort8 x );
420 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v16i16, )( ushort16 x );
421 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _i32, )( int x );
422 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v2i32, )( int2 x );
423 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v3i32, )( int3 x );
424 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v4i32, )( int4 x );
425 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v8i32, )( int8 x );
426 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v16i32, )( int16 x );
427 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _i32, )( uint x );
428 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v2i32, )( uint2 x );
429 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v3i32, )( uint3 x );
430 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v4i32, )( uint4 x );
431 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v8i32, )( uint8 x );
432 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v16i32, )( uint16 x );
433 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _i64, )( long x );
434 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v2i64, )( long2 x );
435 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v3i64, )( long3 x );
436 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v4i64, )( long4 x );
437 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v8i64, )( long8 x );
438 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs, _v16i64, )( long16 x );
439 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _i64, )( ulong x );
440 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v2i64, )( ulong2 x );
441 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v3i64, )( ulong3 x );
442 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v4i64, )( ulong4 x );
443 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v8i64, )( ulong8 x );
444 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs, _v16i64, )( ulong16 x );
445 
446 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _i8_i8, )( char x, char y );
447 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v2i8_v2i8, )( char2 x, char2 y );
448 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v3i8_v3i8, )( char3 x, char3 y );
449 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v4i8_v4i8, )( char4 x, char4 y );
450 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v8i8_v8i8, )( char8 x, char8 y );
451 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v16i8_v16i8, )( char16 x, char16 y );
452 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _i8_i8, )( uchar x, uchar y );
453 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v2i8_v2i8, )( uchar2 x, uchar2 y );
454 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v3i8_v3i8, )( uchar3 x, uchar3 y );
455 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v4i8_v4i8, )( uchar4 x, uchar4 y );
456 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v8i8_v8i8, )( uchar8 x, uchar8 y );
457 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v16i8_v16i8, )( uchar16 x, uchar16 y );
458 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _i16_i16, )( short x, short y );
459 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v2i16_v2i16, )( short2 x, short2 y );
460 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v3i16_v3i16, )( short3 x, short3 y );
461 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v4i16_v4i16, )( short4 x, short4 y );
462 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v8i16_v8i16, )( short8 x, short8 y );
463 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v16i16_v16i16, )( short16 x, short16 y );
464 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _i16_i16, )( ushort x, ushort y );
465 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v2i16_v2i16, )( ushort2 x, ushort2 y );
466 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v3i16_v3i16, )( ushort3 x, ushort3 y );
467 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v4i16_v4i16, )( ushort4 x, ushort4 y );
468 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v8i16_v8i16, )( ushort8 x, ushort8 y );
469 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v16i16_v16i16, )( ushort16 x, ushort16 y );
470 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _i32_i32, )( int x, int y );
471 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v2i32_v2i32, )( int2 x, int2 y );
472 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v3i32_v3i32, )( int3 x, int3 y );
473 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v4i32_v4i32, )( int4 x, int4 y );
474 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v8i32_v8i32, )( int8 x, int8 y );
475 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v16i32_v16i32, )( int16 x, int16 y );
476 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _i32_i32, )( uint x, uint y );
477 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v2i32_v2i32, )( uint2 x, uint2 y );
478 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v3i32_v3i32, )( uint3 x, uint3 y );
479 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v4i32_v4i32, )( uint4 x, uint4 y );
480 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v8i32_v8i32, )( uint8 x, uint8 y );
481 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v16i32_v16i32, )( uint16 x, uint16 y );
482 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _i64_i64, )( long x, long y );
483 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v2i64_v2i64, )( long2 x, long2 y );
484 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v3i64_v3i64, )( long3 x, long3 y );
485 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v4i64_v4i64, )( long4 x, long4 y );
486 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v8i64_v8i64, )( long8 x, long8 y );
487 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_abs_diff, _v16i64_v16i64, )( long16 x, long16 y );
488 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _i64_i64, )( ulong x, ulong y );
489 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v2i64_v2i64, )( ulong2 x, ulong2 y );
490 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v3i64_v3i64, )( ulong3 x, ulong3 y );
491 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v4i64_v4i64, )( ulong4 x, ulong4 y );
492 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v8i64_v8i64, )( ulong8 x, ulong8 y );
493 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_abs_diff, _v16i64_v16i64, )( ulong16 x, ulong16 y );
494 
495 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _i8_i8, )( char x, char y );
496 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v2i8_v2i8, )( char2 x, char2 y );
497 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v3i8_v3i8, )( char3 x, char3 y );
498 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v4i8_v4i8, )( char4 x, char4 y );
499 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v8i8_v8i8, )( char8 x, char8 y );
500 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v16i8_v16i8, )( char16 x, char16 y );
501 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _i8_i8, )( uchar x, uchar y );
502 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v2i8_v2i8, )( uchar2 x, uchar2 y );
503 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v3i8_v3i8, )( uchar3 x, uchar3 y );
504 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v4i8_v4i8, )( uchar4 x, uchar4 y );
505 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v8i8_v8i8, )( uchar8 x, uchar8 y );
506 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v16i8_v16i8, )( uchar16 x, uchar16 y );
507 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _i16_i16, )( short x, short y );
508 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v2i16_v2i16, )( short2 x, short2 y );
509 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v3i16_v3i16, )( short3 x, short3 y );
510 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v4i16_v4i16, )( short4 x, short4 y );
511 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v8i16_v8i16, )( short8 x, short8 y );
512 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v16i16_v16i16, )( short16 x, short16 y );
513 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _i16_i16, )( ushort x, ushort y );
514 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v2i16_v2i16, )( ushort2 x, ushort2 y );
515 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v3i16_v3i16, )( ushort3 x, ushort3 y );
516 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v4i16_v4i16, )( ushort4 x, ushort4 y );
517 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v8i16_v8i16, )( ushort8 x, ushort8 y );
518 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v16i16_v16i16, )( ushort16 x, ushort16 y );
519 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _i32_i32, )( int x, int y );
520 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v2i32_v2i32, )( int2 x, int2 y );
521 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v3i32_v3i32, )( int3 x, int3 y );
522 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v4i32_v4i32, )( int4 x, int4 y );
523 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v8i32_v8i32, )( int8 x, int8 y );
524 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v16i32_v16i32, )( int16 x, int16 y );
525 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _i32_i32, )( uint x, uint y );
526 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v2i32_v2i32, )( uint2 x, uint2 y );
527 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v3i32_v3i32, )( uint3 x, uint3 y );
528 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v4i32_v4i32, )( uint4 x, uint4 y );
529 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v8i32_v8i32, )( uint8 x, uint8 y );
530 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v16i32_v16i32, )( uint16 x, uint16 y );
531 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _i64_i64, )( long x, long y );
532 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v2i64_v2i64, )( long2 x, long2 y );
533 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v3i64_v3i64, )( long3 x, long3 y );
534 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v4i64_v4i64, )( long4 x, long4 y );
535 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v8i64_v8i64, )( long8 x, long8 y );
536 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_add_sat, _v16i64_v16i64, )( long16 x, long16 y );
537 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _i64_i64, )( ulong x, ulong y );
538 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v2i64_v2i64, )( ulong2 x, ulong2 y );
539 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v3i64_v3i64, )( ulong3 x, ulong3 y );
540 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v4i64_v4i64, )( ulong4 x, ulong4 y );
541 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v8i64_v8i64, )( ulong8 x, ulong8 y );
542 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_add_sat, _v16i64_v16i64, )( ulong16 x, ulong16 y );
543 
544 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _i8_i8_i8, )(char x, char minval, char maxval );
545 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _i8_i8_i8, )(uchar x, uchar minval, uchar maxval );
546 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _i16_i16_i16, )(short x, short minval, short maxval );
547 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _i16_i16_i16, )(ushort x, ushort minval, ushort maxval );
548 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _i32_i32_i32, )(int x, int minval, int maxval );
549 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _i32_i32_i32, )(uint x, uint minval, uint maxval );
550 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _i64_i64_i64, )(long x, long minval, long maxval );
551 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _i64_i64_i64, )(ulong x, ulong minval, ulong maxval );
552 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v2i8_v2i8_v2i8, )(char2 x, char2 y, char2 z);
553 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v3i8_v3i8_v3i8, )(char3 x, char3 y, char3 z);
554 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v4i8_v4i8_v4i8, )(char4 x, char4 y, char4 z);
555 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v8i8_v8i8_v8i8, )(char8 x, char8 y, char8 z);
556 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v16i8_v16i8_v16i8, )(char16 x, char16 y, char16 z);
557 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v2i8_v2i8_v2i8, )(uchar2 x, uchar2 y, uchar2 z);
558 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v3i8_v3i8_v3i8, )(uchar3 x, uchar3 y, uchar3 z);
559 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v4i8_v4i8_v4i8, )(uchar4 x, uchar4 y, uchar4 z);
560 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v8i8_v8i8_v8i8, )(uchar8 x, uchar8 y, uchar8 z);
561 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v16i8_v16i8_v16i8, )(uchar16 x, uchar16 y, uchar16 z);
562 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v2i16_v2i16_v2i16, )(short2 x, short2 y, short2 z);
563 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v3i16_v3i16_v3i16, )(short3 x, short3 y, short3 z);
564 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v4i16_v4i16_v4i16, )(short4 x, short4 y, short4 z);
565 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v8i16_v8i16_v8i16, )(short8 x, short8 y, short8 z);
566 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v16i16_v16i16_v16i16, )(short16 x, short16 y, short16 z);
567 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v2i16_v2i16_v2i16, )(ushort2 x, ushort2 y, ushort2 z);
568 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v3i16_v3i16_v3i16, )(ushort3 x, ushort3 y, ushort3 z);
569 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v4i16_v4i16_v4i16, )(ushort4 x, ushort4 y, ushort4 z);
570 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v8i16_v8i16_v8i16, )(ushort8 x, ushort8 y, ushort8 z);
571 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v16i16_v16i16_v16i16, )(ushort16 x, ushort16 y, ushort16 z);
572 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v2i32_v2i32_v2i32, )(int2 x, int2 y, int2 z);
573 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v3i32_v3i32_v3i32, )(int3 x, int3 y, int3 z);
574 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v4i32_v4i32_v4i32, )(int4 x, int4 y, int4 z);
575 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v8i32_v8i32_v8i32, )(int8 x, int8 y, int8 z);
576 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v16i32_v16i32_v16i32, )(int16 x, int16 y, int16 z);
577 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v2i32_v2i32_v2i32, )(uint2 x, uint2 y, uint2 z);
578 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v3i32_v3i32_v3i32, )(uint3 x, uint3 y, uint3 z);
579 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v4i32_v4i32_v4i32, )(uint4 x, uint4 y, uint4 z);
580 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v8i32_v8i32_v8i32, )(uint8 x, uint8 y, uint8 z);
581 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v16i32_v16i32_v16i32, )(uint16 x, uint16 y, uint16 z);
582 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v2i64_v2i64_v2i64, )(long2 x, long2 y, long2 z);
583 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v3i64_v3i64_v3i64, )(long3 x, long3 y, long3 z);
584 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v4i64_v4i64_v4i64, )(long4 x, long4 y, long4 z);
585 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v8i64_v8i64_v8i64, )(long8 x, long8 y, long8 z);
586 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_clamp, _v16i64_v16i64_v16i64, )(long16 x, long16 y, long16 z);
587 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v2i64_v2i64_v2i64, )(ulong2 x, ulong2 y, ulong2 z);
588 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v3i64_v3i64_v3i64, )(ulong3 x, ulong3 y, ulong3 z);
589 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v4i64_v4i64_v4i64, )(ulong4 x, ulong4 y, ulong4 z);
590 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v8i64_v8i64_v8i64, )(ulong8 x, ulong8 y, ulong8 z);
591 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_clamp, _v16i64_v16i64_v16i64, )(ulong16 x, ulong16 y, ulong16 z);
592 
593 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _i8, )( char x );
594 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _i16, )( short x );
595 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _i32, )( int x );
596 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v2i8, )( char2 x );
597 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v3i8, )( char3 x );
598 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v4i8, )( char4 x );
599 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v8i8, )( char8 x );
600 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v16i8, )( char16 x );
601 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v2i16, )( short2 x );
602 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v3i16, )( short3 x );
603 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v4i16, )( short4 x );
604 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v8i16, )( short8 x );
605 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v16i16, )( short16 x );
606 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v2i32, )( int2 x );
607 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v3i32, )( int3 x );
608 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v4i32, )( int4 x );
609 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v8i32, )( int8 x );
610 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v16i32, )( int16 x );
611 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _i64, )( long x );
612 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v2i64, )( long2 x );
613 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v3i64, )( long3 x );
614 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v4i64, )( long4 x );
615 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v8i64, )( long8 x );
616 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(clz, _v16i64, )( long16 x );
617 
618 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _i8, )( char x );
619 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v2i8, )( char2 x );
620 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v3i8, )( char3 x );
621 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v4i8, )( char4 x );
622 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v8i8, )( char8 x );
623 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v16i8, )( char16 x );
624 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _i16, )( short x );
625 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v2i16, )( short2 x );
626 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v3i16, )( short3 x );
627 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v4i16, )( short4 x );
628 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v8i16, )( short8 x );
629 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v16i16, )( short16 x );
630 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _i32, )( int x );
631 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v2i32, )( int2 x );
632 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v3i32, )( int3 x );
633 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v4i32, )( int4 x );
634 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v8i32, )( int8 x );
635 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v16i32, )( int16 x );
636 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _i64, )( long x );
637 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v2i64, )( long2 x );
638 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v3i64, )( long3 x );
639 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v4i64, )( long4 x );
640 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v8i64, )( long8 x );
641 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ctz, _v16i64, )( long16 x );
642 
643 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _i8_i8, )( char x, char y );
644 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v2i8_v2i8, )( char2 x, char2 y );
645 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v3i8_v3i8, )( char3 x, char3 y );
646 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v4i8_v4i8, )( char4 x, char4 y );
647 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v8i8_v8i8, )( char8 x, char8 y );
648 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v16i8_v16i8, )( char16 x, char16 y );
649 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _i8_i8, )( uchar x, uchar y );
650 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v2i8_v2i8, )( uchar2 x, uchar2 y );
651 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v3i8_v3i8, )( uchar3 x, uchar3 y );
652 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v4i8_v4i8, )( uchar4 x, uchar4 y );
653 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v8i8_v8i8, )( uchar8 x, uchar8 y );
654 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v16i8_v16i8, )( uchar16 x, uchar16 y );
655 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _i16_i16, )( short x, short y );
656 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v2i16_v2i16, )( short2 x, short2 y );
657 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v3i16_v3i16, )( short3 x, short3 y );
658 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v4i16_v4i16, )( short4 x, short4 y );
659 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v8i16_v8i16, )( short8 x, short8 y );
660 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v16i16_v16i16, )( short16 x, short16 y );
661 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _i16_i16, )( ushort x, ushort y );
662 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v2i16_v2i16, )( ushort2 x, ushort2 y );
663 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v3i16_v3i16, )( ushort3 x, ushort3 y );
664 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v4i16_v4i16, )( ushort4 x, ushort4 y );
665 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v8i16_v8i16, )( ushort8 x, ushort8 y );
666 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v16i16_v16i16, )( ushort16 x, ushort16 y );
667 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _i32_i32, )( int x, int y );
668 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v2i32_v2i32, )( int2 x, int2 y );
669 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v3i32_v3i32, )( int3 x, int3 y );
670 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v4i32_v4i32, )( int4 x, int4 y );
671 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v8i32_v8i32, )( int8 x, int8 y );
672 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v16i32_v16i32, )( int16 x, int16 y );
673 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _i32_i32, )( uint x, uint y );
674 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v2i32_v2i32, )( uint2 x, uint2 y );
675 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v3i32_v3i32, )( uint3 x, uint3 y );
676 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v4i32_v4i32, )( uint4 x, uint4 y );
677 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v8i32_v8i32, )( uint8 x, uint8 y );
678 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v16i32_v16i32, )( uint16 x, uint16 y );
679 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _i64_i64, )( long x, long y );
680 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v2i64_v2i64, )( long2 x, long2 y );
681 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v3i64_v3i64, )( long3 x, long3 y );
682 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v4i64_v4i64, )( long4 x, long4 y );
683 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v8i64_v8i64, )( long8 x, long8 y );
684 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_hadd, _v16i64_v16i64, )( long16 x, long16 y );
685 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _i64_i64, )( ulong x, ulong y );
686 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v2i64_v2i64, )( ulong2 x, ulong2 y );
687 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v3i64_v3i64, )( ulong3 x, ulong3 y );
688 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v4i64_v4i64, )( ulong4 x, ulong4 y );
689 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v8i64_v8i64, )( ulong8 x, ulong8 y );
690 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_hadd, _v16i64_v16i64, )( ulong16 x, ulong16 y );
691 
692 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _i8_i8_i8, )( char a, char b, char c );
693 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v2i8_v2i8_v2i8, )( char2 a, char2 b, char2 c );
694 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v3i8_v3i8_v3i8, )( char3 a, char3 b, char3 c );
695 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v4i8_v4i8_v4i8, )( char4 a, char4 b, char4 c );
696 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v8i8_v8i8_v8i8, )( char8 a, char8 b, char8 c );
697 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v16i8_v16i8_v16i8, )( char16 a, char16 b, char16 c );
698 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _i8_i8_i8, )( uchar a, uchar b, uchar c );
699 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v2i8_v2i8_v2i8, )( uchar2 a, uchar2 b, uchar2 c );
700 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v3i8_v3i8_v3i8, )( uchar3 a, uchar3 b, uchar3 c );
701 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v4i8_v4i8_v4i8, )( uchar4 a, uchar4 b, uchar4 c );
702 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v8i8_v8i8_v8i8, )( uchar8 a, uchar8 b, uchar8 c );
703 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v16i8_v16i8_v16i8, )( uchar16 a, uchar16 b, uchar16 c );
704 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _i16_i16_i16, )( short a, short b, short c );
705 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v2i16_v2i16_v2i16, )( short2 a, short2 b, short2 c );
706 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v3i16_v3i16_v3i16, )( short3 a, short3 b, short3 c );
707 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v4i16_v4i16_v4i16, )( short4 a, short4 b, short4 c );
708 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v8i16_v8i16_v8i16, )( short8 a, short8 b, short8 c );
709 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v16i16_v16i16_v16i16, )( short16 a, short16 b, short16 c );
710 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _i16_i16_i16, )( ushort a, ushort b, ushort c );
711 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v2i16_v2i16_v2i16, )( ushort2 a, ushort2 b, ushort2 c );
712 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v3i16_v3i16_v3i16, )( ushort3 a, ushort3 b, ushort3 c );
713 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v4i16_v4i16_v4i16, )( ushort4 a, ushort4 b, ushort4 c );
714 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v8i16_v8i16_v8i16, )( ushort8 a, ushort8 b, ushort8 c );
715 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v16i16_v16i16_v16i16, )( ushort16 a, ushort16 b, ushort16 c );
716 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _i32_i32_i32, )( int a, int b, int c );
717 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v2i32_v2i32_v2i32, )( int2 a, int2 b, int2 c );
718 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v3i32_v3i32_v3i32, )( int3 a, int3 b, int3 c );
719 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v4i32_v4i32_v4i32, )( int4 a, int4 b, int4 c );
720 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v8i32_v8i32_v8i32, )( int8 a, int8 b, int8 c );
721 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v16i32_v16i32_v16i32, )( int16 a, int16 b, int16 c );
722 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _i32_i32_i32, )( uint a, uint b, uint c );
723 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v2i32_v2i32_v2i32, )( uint2 a, uint2 b, uint2 c );
724 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v3i32_v3i32_v3i32, )( uint3 a, uint3 b, uint3 c );
725 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v4i32_v4i32_v4i32, )( uint4 a, uint4 b, uint4 c );
726 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v8i32_v8i32_v8i32, )( uint8 a, uint8 b, uint8 c );
727 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v16i32_v16i32_v16i32, )( uint16 a, uint16 b, uint16 c );
728 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _i64_i64_i64, )( long a, long b, long c );
729 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v2i64_v2i64_v2i64, )( long2 a, long2 b, long2 c );
730 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v3i64_v3i64_v3i64, )( long3 a, long3 b, long3 c );
731 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v4i64_v4i64_v4i64, )( long4 a, long4 b, long4 c );
732 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v8i64_v8i64_v8i64, )( long8 a, long8 b, long8 c );
733 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_hi, _v16i64_v16i64_v16i64, )( long16 a, long16 b, long16 c );
734 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _i64_i64_i64, )( ulong a, ulong b, ulong c );
735 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v2i64_v2i64_v2i64, )( ulong2 a, ulong2 b, ulong2 c );
736 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v3i64_v3i64_v3i64, )( ulong3 a, ulong3 b, ulong3 c );
737 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v4i64_v4i64_v4i64, )( ulong4 a, ulong4 b, ulong4 c );
738 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v8i64_v8i64_v8i64, )( ulong8 a, ulong8 b, ulong8 c );
739 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_hi, _v16i64_v16i64_v16i64, )( ulong16 a, ulong16 b, ulong16 c );
740 
741 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _i8_i8_i8, )( char a, char b, char c );
742 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v2i8_v2i8_v2i8, )( char2 a, char2 b, char2 c );
743 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v3i8_v3i8_v3i8, )( char3 a, char3 b, char3 c );
744 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v4i8_v4i8_v4i8, )( char4 a, char4 b, char4 c );
745 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v8i8_v8i8_v8i8, )( char8 a, char8 b, char8 c );
746 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v16i8_v16i8_v16i8, )( char16 a, char16 b, char16 c );
747 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _i8_i8_i8, )( uchar a, uchar b, uchar c );
748 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v2i8_v2i8_v2i8, )( uchar2 a, uchar2 b, uchar2 c );
749 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v3i8_v3i8_v3i8, )( uchar3 a, uchar3 b, uchar3 c );
750 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v4i8_v4i8_v4i8, )( uchar4 a, uchar4 b, uchar4 c );
751 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v8i8_v8i8_v8i8, )( uchar8 a, uchar8 b, uchar8 c );
752 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v16i8_v16i8_v16i8, )( uchar16 a, uchar16 b, uchar16 c );
753 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _i16_i16_i16, )( short a, short b, short c );
754 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v2i16_v2i16_v2i16, )( short2 a, short2 b, short2 c );
755 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v3i16_v3i16_v3i16, )( short3 a, short3 b, short3 c );
756 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v4i16_v4i16_v4i16, )( short4 a, short4 b, short4 c );
757 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v8i16_v8i16_v8i16, )( short8 a, short8 b, short8 c );
758 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v16i16_v16i16_v16i16, )( short16 a, short16 b, short16 c );
759 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _i16_i16_i16, )( ushort a, ushort b, ushort c );
760 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v2i16_v2i16_v2i16, )( ushort2 a, ushort2 b, ushort2 c );
761 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v3i16_v3i16_v3i16, )( ushort3 a, ushort3 b, ushort3 c );
762 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v4i16_v4i16_v4i16, )( ushort4 a, ushort4 b, ushort4 c );
763 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v8i16_v8i16_v8i16, )( ushort8 a, ushort8 b, ushort8 c );
764 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v16i16_v16i16_v16i16, )( ushort16 a, ushort16 b, ushort16 c );
765 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _i32_i32_i32, )( int a, int b, int c );
766 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v2i32_v2i32_v2i32, )( int2 a, int2 b, int2 c );
767 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v3i32_v3i32_v3i32, )( int3 a, int3 b, int3 c );
768 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v4i32_v4i32_v4i32, )( int4 a, int4 b, int4 c );
769 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v8i32_v8i32_v8i32, )( int8 a, int8 b, int8 c );
770 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v16i32_v16i32_v16i32, )( int16 a, int16 b, int16 c );
771 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _i32_i32_i32, )( uint a, uint b, uint c );
772 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v2i32_v2i32_v2i32, )( uint2 a, uint2 b, uint2 c );
773 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v3i32_v3i32_v3i32, )( uint3 a, uint3 b, uint3 c );
774 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v4i32_v4i32_v4i32, )( uint4 a, uint4 b, uint4 c );
775 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v8i32_v8i32_v8i32, )( uint8 a, uint8 b, uint8 c );
776 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v16i32_v16i32_v16i32, )( uint16 a, uint16 b, uint16 c );
777 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _i64_i64_i64, )( long a, long b, long c );
778 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v2i64_v2i64_v2i64, )( long2 a, long2 b, long2 c );
779 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v3i64_v3i64_v3i64, )( long3 a, long3 b, long3 c );
780 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v4i64_v4i64_v4i64, )( long4 a, long4 b, long4 c );
781 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v8i64_v8i64_v8i64, )( long8 a, long8 b, long8 c );
782 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad_sat, _v16i64_v16i64_v16i64, )( long16 a, long16 b, long16 c );
783 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _i64_i64_i64, )( ulong a, ulong b, ulong c );
784 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v2i64_v2i64_v2i64, )( ulong2 a, ulong2 b, ulong2 c );
785 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v3i64_v3i64_v3i64, )( ulong3 a, ulong3 b, ulong3 c );
786 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v4i64_v4i64_v4i64, )( ulong4 a, ulong4 b, ulong4 c );
787 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v8i64_v8i64_v8i64, )( ulong8 a, ulong8 b, ulong8 c );
788 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad_sat, _v16i64_v16i64_v16i64, )( ulong16 a, ulong16 b, ulong16 c );
789 
790 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _i32_i32_i32, )( int x, int y, int z );
791 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _v2i32_v2i32_v2i32, )( int2 x, int2 y, int2 z );
792 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _v3i32_v3i32_v3i32, )( int3 x, int3 y, int3 z );
793 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _v4i32_v4i32_v4i32, )( int4 x, int4 y, int4 z );
794 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _v8i32_v8i32_v8i32, )( int8 x, int8 y, int8 z );
795 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mad24, _v16i32_v16i32_v16i32, )( int16 x, int16 y, int16 z );
796 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _i32_i32_i32, )( uint x, uint y, uint z );
797 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _v2i32_v2i32_v2i32, )( uint2 x, uint2 y, uint2 z );
798 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _v3i32_v3i32_v3i32, )( uint3 x, uint3 y, uint3 z );
799 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _v4i32_v4i32_v4i32, )( uint4 x, uint4 y, uint4 z );
800 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _v8i32_v8i32_v8i32, )( uint8 x, uint8 y, uint8 z );
801 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mad24, _v16i32_v16i32_v16i32, )( uint16 x, uint16 y, uint16 z );
802 
803 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _i8_i8, )(char x, char y);
804 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v2i8_v2i8, )(char2 x, char2 y);
805 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v3i8_v3i8, )(char3 x, char3 y);
806 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v4i8_v4i8, )(char4 x, char4 y);
807 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v8i8_v8i8, )(char8 x, char8 y);
808 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v16i8_v16i8, )(char16 x, char16 y);
809 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _i8_i8, )(uchar x, uchar y);
810 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v2i8_v2i8, )(uchar2 x, uchar2 y);
811 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v3i8_v3i8, )(uchar3 x, uchar3 y);
812 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v4i8_v4i8, )(uchar4 x, uchar4 y);
813 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v8i8_v8i8, )(uchar8 x, uchar8 y);
814 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v16i8_v16i8, )(uchar16 x, uchar16 y);
815 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _i16_i16, )(short x, short y);
816 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v2i16_v2i16, )(short2 x, short2 y);
817 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v3i16_v3i16, )(short3 x, short3 y);
818 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v4i16_v4i16, )(short4 x, short4 y);
819 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v8i16_v8i16, )(short8 x, short8 y);
820 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v16i16_v16i16, )(short16 x, short16 y);
821 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _i16_i16, )(ushort x, ushort y);
822 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v2i16_v2i16, )(ushort2 x, ushort2 y);
823 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v3i16_v3i16, )(ushort3 x, ushort3 y);
824 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v4i16_v4i16, )(ushort4 x, ushort4 y);
825 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v8i16_v8i16, )(ushort8 x, ushort8 y);
826 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v16i16_v16i16, )(ushort16 x, ushort16 y);
827 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _i32_i32, )(int x, int y);
828 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v2i32_v2i32, )(int2 x, int2 y);
829 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v3i32_v3i32, )(int3 x, int3 y);
830 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v4i32_v4i32, )(int4 x, int4 y);
831 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v8i32_v8i32, )(int8 x, int8 y);
832 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v16i32_v16i32, )(int16 x, int16 y);
833 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _i32_i32, )(uint x, uint y);
834 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v2i32_v2i32, )(uint2 x, uint2 y);
835 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v3i32_v3i32, )(uint3 x, uint3 y);
836 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v4i32_v4i32, )(uint4 x, uint4 y);
837 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v8i32_v8i32, )(uint8 x, uint8 y);
838 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v16i32_v16i32, )(uint16 x, uint16 y);
839 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _i64_i64, )(long x, long y);
840 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v2i64_v2i64, )(long2 x, long2 y);
841 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v3i64_v3i64, )(long3 x, long3 y);
842 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v4i64_v4i64, )(long4 x, long4 y);
843 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v8i64_v8i64, )(long8 x, long8 y);
844 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_max, _v16i64_v16i64, )(long16 x, long16 y);
845 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _i64_i64, )(ulong x, ulong y);
846 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v2i64_v2i64, )(ulong2 x, ulong2 y);
847 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v3i64_v3i64, )(ulong3 x, ulong3 y);
848 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v4i64_v4i64, )(ulong4 x, ulong4 y);
849 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v8i64_v8i64, )(ulong8 x, ulong8 y);
850 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_max, _v16i64_v16i64, )(ulong16 x, ulong16 y);
851 
852 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _i8_i8, )( char x, char y );
853 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v2i8_v2i8, )( char2 x, char2 y );
854 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v3i8_v3i8, )( char3 x, char3 y );
855 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v4i8_v4i8, )( char4 x, char4 y );
856 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v8i8_v8i8, )( char8 x, char8 y );
857 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v16i8_v16i8, )( char16 x, char16 y );
858 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _i8_i8, )( uchar x, uchar y );
859 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v2i8_v2i8, )( uchar2 x, uchar2 y );
860 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v3i8_v3i8, )( uchar3 x, uchar3 y );
861 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v4i8_v4i8, )( uchar4 x, uchar4 y );
862 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v8i8_v8i8, )( uchar8 x, uchar8 y );
863 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v16i8_v16i8, )( uchar16 x, uchar16 y );
864 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _i16_i16, )( short x, short y );
865 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v2i16_v2i16, )( short2 x, short2 y );
866 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v3i16_v3i16, )( short3 x, short3 y );
867 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v4i16_v4i16, )( short4 x, short4 y );
868 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v8i16_v8i16, )( short8 x, short8 y );
869 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v16i16_v16i16, )( short16 x, short16 y );
870 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _i16_i16, )( ushort x, ushort y );
871 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v2i16_v2i16, )( ushort2 x, ushort2 y );
872 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v3i16_v3i16, )( ushort3 x, ushort3 y );
873 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v4i16_v4i16, )( ushort4 x, ushort4 y );
874 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v8i16_v8i16, )( ushort8 x, ushort8 y );
875 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v16i16_v16i16, )( ushort16 x, ushort16 y );
876 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _i32_i32, )( int x, int y );
877 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v2i32_v2i32, )( int2 x, int2 y );
878 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v3i32_v3i32, )( int3 x, int3 y );
879 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v4i32_v4i32, )( int4 x, int4 y );
880 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v8i32_v8i32, )( int8 x, int8 y );
881 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v16i32_v16i32, )( int16 x, int16 y );
882 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _i32_i32, )( uint x, uint y );
883 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v2i32_v2i32, )( uint2 x, uint2 y );
884 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v3i32_v3i32, )( uint3 x, uint3 y );
885 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v4i32_v4i32, )( uint4 x, uint4 y );
886 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v8i32_v8i32, )( uint8 x, uint8 y );
887 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v16i32_v16i32, )( uint16 x, uint16 y );
888 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _i64_i64, )( long x, long y );
889 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v2i64_v2i64, )( long2 x, long2 y );
890 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v3i64_v3i64, )( long3 x, long3 y );
891 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v4i64_v4i64, )( long4 x, long4 y );
892 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v8i64_v8i64, )( long8 x, long8 y );
893 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul_hi, _v16i64_v16i64, )( long16 x, long16 y );
894 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _i64_i64, )( ulong x, ulong y );
895 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v2i64_v2i64, )( ulong2 x, ulong2 y );
896 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v3i64_v3i64, )( ulong3 x, ulong3 y );
897 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v4i64_v4i64, )( ulong4 x, ulong4 y );
898 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v8i64_v8i64, )( ulong8 x, ulong8 y );
899 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul_hi, _v16i64_v16i64, )( ulong16 x, ulong16 y );
900 
901 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _i32_i32, )( int x, int y );
902 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _v2i32_v2i32, )( int2 x, int2 y );
903 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _v3i32_v3i32, )( int3 x, int3 y );
904 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _v4i32_v4i32, )( int4 x, int4 y );
905 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _v8i32_v8i32, )( int8 x, int8 y );
906 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_mul24, _v16i32_v16i32, )( int16 x, int16 y );
907 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _i32_i32, )( uint x, uint y );
908 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _v2i32_v2i32, )( uint2 x, uint2 y );
909 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _v3i32_v3i32, )( uint3 x, uint3 y );
910 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _v4i32_v4i32, )( uint4 x, uint4 y );
911 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _v8i32_v8i32, )( uint8 x, uint8 y );
912 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_mul24, _v16i32_v16i32, )( uint16 x, uint16 y );
913 
914 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _i8, )(char x );
915 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v2i8, )(char2 x);
916 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v3i8, )(char3 x);
917 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v4i8, )(char4 x);
918 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v8i8, )(char8 x);
919 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v16i8, )(char16 x);
920 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _i16, )(short x );
921 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v2i16, )(short2 x);
922 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v3i16, )(short3 x);
923 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v4i16, )(short4 x);
924 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v8i16, )(short8 x);
925 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v16i16, )(short16 x);
926 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _i32, )(int x );
927 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v2i32, )(int2 x);
928 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v3i32, )(int3 x);
929 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v4i32, )(int4 x);
930 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v8i32, )(int8 x);
931 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v16i32, )(int16 x);
932 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _i64, )(long x);
933 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v2i64, )(long2 x);
934 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v3i64, )(long3 x);
935 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v4i64, )(long4 x);
936 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v8i64, )(long8 x);
937 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(popcount, _v16i64, )(long16 x);
938 
939 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _i8_i8, )( char x, char y );
940 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v2i8_v2i8, )( char2 x, char2 y );
941 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v3i8_v3i8, )( char3 x, char3 y );
942 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v4i8_v4i8, )( char4 x, char4 y );
943 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v8i8_v8i8, )( char8 x, char8 y );
944 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v16i8_v16i8, )( char16 x, char16 y );
945 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _i8_i8, )( uchar x, uchar y );
946 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v2i8_v2i8, )( uchar2 x, uchar2 y );
947 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v3i8_v3i8, )( uchar3 x, uchar3 y );
948 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v4i8_v4i8, )( uchar4 x, uchar4 y );
949 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v8i8_v8i8, )( uchar8 x, uchar8 y );
950 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v16i8_v16i8, )( uchar16 x, uchar16 y );
951 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _i16_i16, )( short x, short y );
952 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v2i16_v2i16, )( short2 x, short2 y );
953 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v3i16_v3i16, )( short3 x, short3 y );
954 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v4i16_v4i16, )( short4 x, short4 y );
955 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v8i16_v8i16, )( short8 x, short8 y );
956 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v16i16_v16i16, )( short16 x, short16 y );
957 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _i16_i16, )( ushort x, ushort y );
958 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v2i16_v2i16, )( ushort2 x, ushort2 y );
959 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v3i16_v3i16, )( ushort3 x, ushort3 y );
960 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v4i16_v4i16, )( ushort4 x, ushort4 y );
961 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v8i16_v8i16, )( ushort8 x, ushort8 y );
962 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v16i16_v16i16, )( ushort16 x, ushort16 y );
963 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _i32_i32, )( int x, int y );
964 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v2i32_v2i32, )( int2 x, int2 y );
965 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v3i32_v3i32, )( int3 x, int3 y );
966 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v4i32_v4i32, )( int4 x, int4 y );
967 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v8i32_v8i32, )( int8 x, int8 y );
968 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v16i32_v16i32, )( int16 x, int16 y );
969 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _i32_i32, )( uint x, uint y );
970 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v2i32_v2i32, )( uint2 x, uint2 y );
971 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v3i32_v3i32, )( uint3 x, uint3 y );
972 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v4i32_v4i32, )( uint4 x, uint4 y );
973 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v8i32_v8i32, )( uint8 x, uint8 y );
974 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v16i32_v16i32, )( uint16 x, uint16 y );
975 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _i64_i64, )( long x, long y );
976 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v2i64_v2i64, )( long2 x, long2 y );
977 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v3i64_v3i64, )( long3 x, long3 y );
978 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v4i64_v4i64, )( long4 x, long4 y );
979 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v8i64_v8i64, )( long8 x, long8 y );
980 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_rhadd, _v16i64_v16i64, )( long16 x, long16 y );
981 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _i64_i64, )( ulong x, ulong y );
982 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v2i64_v2i64, )( ulong2 x, ulong2 y );
983 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v3i64_v3i64, )( ulong3 x, ulong3 y );
984 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v4i64_v4i64, )( ulong4 x, ulong4 y );
985 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v8i64_v8i64, )( ulong8 x, ulong8 y );
986 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_rhadd, _v16i64_v16i64, )( ulong16 x, ulong16 y );
987 
988 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _i8_i8, )( char v, char i );
989 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v2i8_v2i8, )( char2 v, char2 i );
990 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v3i8_v3i8, )( char3 v, char3 i );
991 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v4i8_v4i8, )( char4 v, char4 i );
992 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v8i8_v8i8, )( char8 v, char8 i );
993 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v16i8_v16i8, )( char16 v, char16 i );
994 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _i16_i16, )( short v, short i );
995 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v2i16_v2i16, )( short2 v, short2 i );
996 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v3i16_v3i16, )( short3 v, short3 i );
997 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v4i16_v4i16, )( short4 v, short4 i );
998 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v8i16_v8i16, )( short8 v, short8 i );
999 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v16i16_v16i16, )( short16 v, short16 i );
1000 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _i32_i32, )( int v, int i );
1001 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v2i32_v2i32, )( int2 v, int2 i );
1002 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v3i32_v3i32, )( int3 v, int3 i );
1003 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v4i32_v4i32, )( int4 v, int4 i );
1004 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v8i32_v8i32, )( int8 v, int8 i );
1005 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v16i32_v16i32, )( int16 v, int16 i );
1006 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _i64_i64, )( long v, long i );
1007 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v2i64_v2i64, )( long2 v, long2 i );
1008 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v3i64_v3i64, )( long3 v, long3 i );
1009 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v4i64_v4i64, )( long4 v, long4 i );
1010 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v8i64_v8i64, )( long8 v, long8 i );
1011 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rotate, _v16i64_v16i64, )( long16 v, long16 i );
1012 
1013 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _i8_i8, )( char x, char y );
1014 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v2i8_v2i8, )( char2 x, char2 y );
1015 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v3i8_v3i8, )( char3 x, char3 y );
1016 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v4i8_v4i8, )( char4 x, char4 y );
1017 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v8i8_v8i8, )( char8 x, char8 y );
1018 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v16i8_v16i8, )( char16 x, char16 y );
1019 uchar SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _i8_i8, )( uchar x, uchar y );
1020 uchar2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v2i8_v2i8, )( uchar2 x, uchar2 y );
1021 uchar3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v3i8_v3i8, )( uchar3 x, uchar3 y );
1022 uchar4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v4i8_v4i8, )( uchar4 x, uchar4 y );
1023 uchar8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v8i8_v8i8, )( uchar8 x, uchar8 y );
1024 uchar16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v16i8_v16i8, )( uchar16 x, uchar16 y );
1025 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _i16_i16, )( short x, short y );
1026 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v2i16_v2i16, )( short2 x, short2 y );
1027 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v3i16_v3i16, )( short3 x, short3 y );
1028 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v4i16_v4i16, )( short4 x, short4 y );
1029 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v8i16_v8i16, )( short8 x, short8 y );
1030 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v16i16_v16i16, )( short16 x, short16 y );
1031 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _i16_i16, )( ushort x, ushort y );
1032 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v2i16_v2i16, )( ushort2 x, ushort2 y );
1033 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v3i16_v3i16, )( ushort3 x, ushort3 y );
1034 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v4i16_v4i16, )( ushort4 x, ushort4 y );
1035 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v8i16_v8i16, )( ushort8 x, ushort8 y );
1036 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v16i16_v16i16, )( ushort16 x, ushort16 y );
1037 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _i32_i32, )( int x, int y );
1038 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v2i32_v2i32, )( int2 x, int2 y );
1039 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v3i32_v3i32, )( int3 x, int3 y );
1040 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v4i32_v4i32, )( int4 x, int4 y );
1041 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v8i32_v8i32, )( int8 x, int8 y );
1042 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v16i32_v16i32, )( int16 x, int16 y );
1043 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _i32_i32, )( uint x, uint y );
1044 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v2i32_v2i32, )( uint2 x, uint2 y );
1045 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v3i32_v3i32, )( uint3 x, uint3 y );
1046 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v4i32_v4i32, )( uint4 x, uint4 y );
1047 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v8i32_v8i32, )( uint8 x, uint8 y );
1048 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v16i32_v16i32, )( uint16 x, uint16 y );
1049 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _i64_i64, )( long x, long y );
1050 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v2i64_v2i64, )( long2 x, long2 y );
1051 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v3i64_v3i64, )( long3 x, long3 y );
1052 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v4i64_v4i64, )( long4 x, long4 y );
1053 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v8i64_v8i64, )( long8 x, long8 y );
1054 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_sub_sat, _v16i64_v16i64, )( long16 x, long16 y );
1055 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _i64_i64, )( ulong x, ulong y );
1056 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v2i64_v2i64, )( ulong2 x, ulong2 y );
1057 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v3i64_v3i64, )( ulong3 x, ulong3 y );
1058 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v4i64_v4i64, )( ulong4 x, ulong4 y );
1059 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v8i64_v8i64, )( ulong8 x, ulong8 y );
1060 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_sub_sat, _v16i64_v16i64, )( ulong16 x, ulong16 y );
1061 
1062 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )( char  hi, uchar lo );
1063 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i8_v2i8, )( char2  hi, uchar2 lo );
1064 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i8_v3i8, )( char3  hi, uchar3 lo );
1065 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i8_v4i8, )( char4  hi, uchar4 lo );
1066 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i8_v8i8, )( char8  hi, uchar8 lo );
1067 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i8_v16i8, )( char16  hi, uchar16 lo );
1068 ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )( uchar hi, uchar lo );
1069 ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i8_v2i8, )( uchar2 hi, uchar2 lo );
1070 ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i8_v3i8, )( uchar3 hi, uchar3 lo );
1071 ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i8_v4i8, )( uchar4 hi, uchar4 lo );
1072 ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i8_v8i8, )( uchar8 hi, uchar8 lo );
1073 ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i8_v16i8, )( uchar16 hi, uchar16 lo );
1074 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )( short  hi, ushort lo );
1075 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i16_v2i16, )( short2  hi, ushort2 lo );
1076 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i16_v3i16, )( short3  hi, ushort3 lo );
1077 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i16_v4i16, )( short4  hi, ushort4 lo );
1078 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i16_v8i16, )( short8  hi, ushort8 lo );
1079 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i16_v16i16, )( short16  hi, ushort16 lo );
1080 uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )( ushort hi, ushort lo );
1081 uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i16_v2i16, )( ushort2 hi, ushort2 lo );
1082 uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i16_v3i16, )( ushort3 hi, ushort3 lo );
1083 uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i16_v4i16, )( ushort4 hi, ushort4 lo );
1084 uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i16_v8i16, )( ushort8 hi, ushort8 lo );
1085 uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i16_v16i16, )( ushort16 hi, ushort16 lo );
1086 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )( int  hi, uint lo );
1087 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i32_v2i32, )( int2  hi, uint2 lo );
1088 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i32_v3i32, )( int3  hi, uint3 lo );
1089 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i32_v4i32, )( int4  hi, uint4 lo );
1090 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i32_v8i32, )( int8  hi, uint8 lo );
1091 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i32_v16i32, )( int16  hi, uint16 lo );
1092 ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )( uint hi, uint lo );
1093 ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i32_v2i32, )( uint2 hi, uint2 lo );
1094 ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i32_v3i32, )( uint3 hi, uint3 lo );
1095 ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i32_v4i32, )( uint4 hi, uint4 lo );
1096 ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i32_v8i32, )( uint8 hi, uint8 lo );
1097 ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i32_v16i32, )( uint16 hi, uint16 lo );
1098 
1099 
1100 //
1101 //  Math_ext
1102 //        -acos,acosh,acospi,asin,asinh,asinpi,atan,atan2,atan2pi,atanh,atanpi,cbrt,ceil,copysign,
1103 //       cos,cosh,cospi,divide_cr,erf,erfc,exp,exp2,exp10,expm1,fabs,fdim,floor,fma,fmax,fmin,
1104 //       fmod,fract,frexp,hypot,ilogb,ldexp,lgamma,lgamma_r,log,log1p,log2,log10,logb,mad,maxmag,minmag,
1105 //         modf,nan,nextafter,pow,pown,powr,remainder,remquo,rint,rootn,round,rsqrt,sin,sincos,
1106 //       sinh,sinpi,sqrt,sqrt_cr,tan,tanh,tanpi,tgamma,trunc
1107 //
1108 
1109 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _f32, )(float x );
1110 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v2f32, )(float2 x);
1111 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v3f32, )(float3 x);
1112 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v4f32, )(float4 x);
1113 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v8f32, )(float8 x);
1114 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v16f32, )(float16 x);
1115 #if defined(cl_khr_fp64)
1116 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _f64, )( double x );
1117 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v2f64, )(double2 x);
1118 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v3f64, )(double3 x);
1119 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v4f64, )(double4 x);
1120 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v8f64, )(double8 x);
1121 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v16f64, )(double16 x);
1122 #endif // defined(cl_khr_fp64)
1123 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _f16, )(half x );
1124 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v2f16, )(half2 x);
1125 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v3f16, )(half3 x);
1126 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v4f16, )(half4 x);
1127 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v8f16, )(half8 x);
1128 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acos, _v16f16, )(half16 x);
1129 
1130 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _f32, )( float x );
1131 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v2f32, )(float2 x);
1132 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v3f32, )(float3 x);
1133 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v4f32, )(float4 x);
1134 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v8f32, )(float8 x);
1135 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v16f32, )(float16 x);
1136 #if defined(cl_khr_fp64)
1137 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _f64, )( double x );
1138 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v2f64, )(double2 x);
1139 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v3f64, )(double3 x);
1140 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v4f64, )(double4 x);
1141 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v8f64, )(double8 x);
1142 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v16f64, )(double16 x);
1143 #endif // defined(cl_khr_fp64)
1144 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _f16, )( half x );
1145 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v2f16, )(half2 x);
1146 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v3f16, )(half3 x);
1147 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v4f16, )(half4 x);
1148 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v8f16, )(half8 x);
1149 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acosh, _v16f16, )(half16 x);
1150 
1151 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _f32, )( float x );
1152 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v2f32, )(float2 x);
1153 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v3f32, )(float3 x);
1154 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v4f32, )(float4 x);
1155 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v8f32, )(float8 x);
1156 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v16f32, )(float16 x);
1157 #if defined(cl_khr_fp64)
1158 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _f64, )( double x );
1159 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v2f64, )(double2 x);
1160 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v3f64, )(double3 x);
1161 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v4f64, )(double4 x);
1162 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v8f64, )(double8 x);
1163 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v16f64, )(double16 x);
1164 #endif // defined(cl_khr_fp64)
1165 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _f16, )( half x );
1166 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v2f16, )(half2 x);
1167 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v3f16, )(half3 x);
1168 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v4f16, )(half4 x);
1169 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v8f16, )(half8 x);
1170 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(acospi, _v16f16, )(half16 x);
1171 
1172 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _f32, )(float value );
1173 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v2f32, )(float2 x);
1174 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v3f32, )(float3 x);
1175 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v4f32, )(float4 x);
1176 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v8f32, )(float8 x);
1177 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v16f32, )(float16 x);
1178 #if defined(cl_khr_fp64)
1179 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _f64, )( double x );
1180 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v2f64, )(double2 x);
1181 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v3f64, )(double3 x);
1182 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v4f64, )(double4 x);
1183 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v8f64, )(double8 x);
1184 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v16f64, )(double16 x);
1185 #endif // defined(cl_khr_fp64)
1186 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _f16, )(half x );
1187 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v2f16, )(half2 x);
1188 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v3f16, )(half3 x);
1189 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v4f16, )(half4 x);
1190 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v8f16, )(half8 x);
1191 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asin, _v16f16, )(half16 x);
1192 
1193 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _f32, )( float x );
1194 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v2f32, )(float2 x);
1195 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v3f32, )(float3 x);
1196 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v4f32, )(float4 x);
1197 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v8f32, )(float8 x);
1198 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v16f32, )(float16 x);
1199 #if defined(cl_khr_fp64)
1200 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _f64, )( double x );
1201 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v2f64, )(double2 x);
1202 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v3f64, )(double3 x);
1203 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v4f64, )(double4 x);
1204 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v8f64, )(double8 x);
1205 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v16f64, )(double16 x);
1206 #endif // defined(cl_khr_fp64)
1207 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _f16, )( half x );
1208 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v2f16, )(half2 x);
1209 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v3f16, )(half3 x);
1210 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v4f16, )(half4 x);
1211 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v8f16, )(half8 x);
1212 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinh, _v16f16, )(half16 x);
1213 
1214 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _f32, )( float x );
1215 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v2f32, )(float2 x);
1216 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v3f32, )(float3 x);
1217 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v4f32, )(float4 x);
1218 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v8f32, )(float8 x);
1219 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v16f32, )(float16 x);
1220 #if defined(cl_khr_fp64)
1221 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _f64, )( double x );
1222 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v2f64, )(double2 x);
1223 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v3f64, )(double3 x);
1224 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v4f64, )(double4 x);
1225 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v8f64, )(double8 x);
1226 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v16f64, )(double16 x);
1227 #endif // defined(cl_khr_fp64)
1228 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _f16, )( half x );
1229 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v2f16, )(half2 x);
1230 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v3f16, )(half3 x);
1231 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v4f16, )(half4 x);
1232 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v8f16, )(half8 x);
1233 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(asinpi, _v16f16, )(half16 x);
1234 
1235 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _f32, )(float value );
1236 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v2f32, )(float2 x);
1237 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v3f32, )(float3 x);
1238 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v4f32, )(float4 x);
1239 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v8f32, )(float8 x);
1240 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v16f32, )(float16 x);
1241 #if defined(cl_khr_fp64)
1242 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _f64, )( double x );
1243 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v2f64, )(double2 x);
1244 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v3f64, )(double3 x);
1245 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v4f64, )(double4 x);
1246 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v8f64, )(double8 x);
1247 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v16f64, )(double16 x);
1248 #endif // defined(cl_khr_fp64)
1249 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _f16, )(half x );
1250 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v2f16, )(half2 x);
1251 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v3f16, )(half3 x);
1252 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v4f16, )(half4 x);
1253 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v8f16, )(half8 x);
1254 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan, _v16f16, )(half16 x);
1255 
1256 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _f32_f32, )( float y, float x );
1257 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v2f32_v2f32, )(float2 x, float2 y);
1258 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v3f32_v3f32, )(float3 x, float3 y);
1259 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v4f32_v4f32, )(float4 x, float4 y);
1260 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v8f32_v8f32, )(float8 x, float8 y);
1261 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v16f32_v16f32, )(float16 x, float16 y);
1262 #if defined(cl_khr_fp64)
1263 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _f64_f64, )( double y, double x );
1264 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v2f64_v2f64, )(double2 x, double2 y);
1265 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v3f64_v3f64, )(double3 x, double3 y);
1266 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v4f64_v4f64, )(double4 x, double4 y);
1267 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v8f64_v8f64, )(double8 x, double8 y);
1268 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v16f64_v16f64, )(double16 x, double16 y);
1269 #endif // defined(cl_khr_fp64)
1270 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _f16_f16, )( half y, half x );
1271 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v2f16_v2f16, )(half2 x, half2 y);
1272 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v3f16_v3f16, )(half3 x, half3 y);
1273 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v4f16_v4f16, )(half4 x, half4 y);
1274 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v8f16_v8f16, )(half8 x, half8 y);
1275 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2, _v16f16_v16f16, )(half16 x, half16 y);
1276 
1277 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _f32_f32, )( float x, float y );
1278 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v2f32_v2f32, )(float2 x, float2 y);
1279 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v3f32_v3f32, )(float3 x, float3 y);
1280 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v4f32_v4f32, )(float4 x, float4 y);
1281 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v8f32_v8f32, )(float8 x, float8 y);
1282 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v16f32_v16f32, )(float16 x, float16 y);
1283 #if defined(cl_khr_fp64)
1284 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _f64_f64, )( double x, double y );
1285 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v2f64_v2f64, )(double2 x, double2 y);
1286 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v3f64_v3f64, )(double3 x, double3 y);
1287 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v4f64_v4f64, )(double4 x, double4 y);
1288 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v8f64_v8f64, )(double8 x, double8 y);
1289 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v16f64_v16f64, )(double16 x, double16 y);
1290 #endif // defined(cl_khr_fp64)
1291 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _f16_f16, )( half x, half y );
1292 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v2f16_v2f16, )(half2 x, half2 y);
1293 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v3f16_v3f16, )(half3 x, half3 y);
1294 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v4f16_v4f16, )(half4 x, half4 y);
1295 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v8f16_v8f16, )(half8 x, half8 y);
1296 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atan2pi, _v16f16_v16f16, )(half16 x, half16 y);
1297 
1298 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _f32, )( float x );
1299 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v2f32, )(float2 x);
1300 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v3f32, )(float3 x);
1301 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v4f32, )(float4 x);
1302 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v8f32, )(float8 x);
1303 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v16f32, )(float16 x);
1304 #if defined(cl_khr_fp64)
1305 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _f64, )( double x );
1306 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v2f64, )(double2 x);
1307 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v3f64, )(double3 x);
1308 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v4f64, )(double4 x);
1309 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v8f64, )(double8 x);
1310 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v16f64, )(double16 x);
1311 #endif // defined(cl_khr_fp64)
1312 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _f16, )( half x );
1313 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v2f16, )(half2 x);
1314 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v3f16, )(half3 x);
1315 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v4f16, )(half4 x);
1316 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v8f16, )(half8 x);
1317 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanh, _v16f16, )(half16 x);
1318 
1319 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _f32, )( float x );
1320 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v2f32, )(float2 x);
1321 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v3f32, )(float3 x);
1322 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v4f32, )(float4 x);
1323 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v8f32, )(float8 x);
1324 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v16f32, )(float16 x);
1325 #if defined(cl_khr_fp64)
1326 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _f64, )( double x );
1327 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v2f64, )(double2 x);
1328 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v3f64, )(double3 x);
1329 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v4f64, )(double4 x);
1330 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v8f64, )(double8 x);
1331 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v16f64, )(double16 x);
1332 #endif // defined(cl_khr_fp64)
1333 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _f16, )( half x );
1334 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v2f16, )(half2 x);
1335 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v3f16, )(half3 x);
1336 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v4f16, )(half4 x);
1337 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v8f16, )(half8 x);
1338 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(atanpi, _v16f16, )(half16 x);
1339 
1340 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _f32, )( float x );
1341 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v2f32, )(float2 x);
1342 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v3f32, )(float3 x);
1343 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v4f32, )(float4 x);
1344 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v8f32, )(float8 x);
1345 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v16f32, )(float16 x);
1346 #if defined(cl_khr_fp64)
1347 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _f64, )( double x );
1348 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v2f64, )(double2 x);
1349 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v3f64, )(double3 x);
1350 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v4f64, )(double4 x);
1351 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v8f64, )(double8 x);
1352 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v16f64, )(double16 x);
1353 #endif // defined(cl_khr_fp64)
1354 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _f16, )( half x );
1355 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v2f16, )(half2 x);
1356 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v3f16, )(half3 x);
1357 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v4f16, )(half4 x);
1358 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v8f16, )(half8 x);
1359 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cbrt, _v16f16, )(half16 x);
1360 
1361 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _f32, )(float x );
1362 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v2f32, )(float2 x);
1363 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v3f32, )(float3 x);
1364 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v4f32, )(float4 x);
1365 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v8f32, )(float8 x);
1366 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v16f32, )(float16 x);
1367 #if defined(cl_khr_fp64)
1368 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _f64, )(double x );
1369 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v2f64, )(double2 x);
1370 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v3f64, )(double3 x);
1371 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v4f64, )(double4 x);
1372 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v8f64, )(double8 x);
1373 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v16f64, )(double16 x);
1374 #endif // defined(cl_khr_fp64)
1375 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _f16, )(half x );
1376 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v2f16, )(half2 x);
1377 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v3f16, )(half3 x);
1378 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v4f16, )(half4 x);
1379 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v8f16, )(half8 x);
1380 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ceil, _v16f16, )(half16 x);
1381 
1382 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _f32_f32, )( float x, float y );
1383 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v2f32_v2f32, )(float2 x, float2 y);
1384 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v3f32_v3f32, )(float3 x, float3 y);
1385 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v4f32_v4f32, )(float4 x, float4 y);
1386 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v8f32_v8f32, )(float8 x, float8 y);
1387 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v16f32_v16f32, )(float16 x, float16 y);
1388 #if defined(cl_khr_fp64)
1389 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _f64_f64, )( double x, double y );
1390 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v2f64_v2f64, )(double2 x, double2 y);
1391 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v3f64_v3f64, )(double3 x, double3 y);
1392 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v4f64_v4f64, )(double4 x, double4 y);
1393 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v8f64_v8f64, )(double8 x, double8 y);
1394 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v16f64_v16f64, )(double16 x, double16 y);
1395 #endif // defined(cl_khr_fp64)
1396 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _f16_f16, )( half x, half y );
1397 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v2f16_v2f16, )(half2 x, half2 y);
1398 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v3f16_v3f16, )(half3 x, half3 y);
1399 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v4f16_v4f16, )(half4 x, half4 y);
1400 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v8f16_v8f16, )(half8 x, half8 y);
1401 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(copysign, _v16f16_v16f16, )(half16 x, half16 y);
1402 
1403 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _f32, )( float x );
1404 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v2f32, )(float2 x);
1405 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v3f32, )(float3 x);
1406 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v4f32, )(float4 x);
1407 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v8f32, )(float8 x);
1408 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v16f32, )(float16 x);
1409 #if defined(cl_khr_fp64)
1410 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _f64, )( double x );
1411 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v2f64, )(double2 x);
1412 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v3f64, )(double3 x);
1413 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v4f64, )(double4 x);
1414 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v8f64, )(double8 x);
1415 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v16f64, )(double16 x);
1416 #endif // defined(cl_khr_fp64)
1417 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _f16, )( half x );
1418 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v2f16, )(half2 x);
1419 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v3f16, )(half3 x);
1420 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v4f16, )(half4 x);
1421 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v8f16, )(half8 x);
1422 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cos, _v16f16, )(half16 x);
1423 
1424 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _f32, )( float x );
1425 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v2f32, )(float2 x);
1426 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v3f32, )(float3 x);
1427 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v4f32, )(float4 x);
1428 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v8f32, )(float8 x);
1429 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v16f32, )(float16 x);
1430 #if defined(cl_khr_fp64)
1431 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _f64, )( double x );
1432 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v2f64, )(double2 x);
1433 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v3f64, )(double3 x);
1434 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v4f64, )(double4 x);
1435 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v8f64, )(double8 x);
1436 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v16f64, )(double16 x);
1437 #endif // defined(cl_khr_fp64)
1438 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _f16, )( half x );
1439 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v2f16, )(half2 x);
1440 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v3f16, )(half3 x);
1441 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v4f16, )(half4 x);
1442 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v8f16, )(half8 x);
1443 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cosh, _v16f16, )(half16 x);
1444 
1445 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _f32, )( float x );
1446 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v2f32, )(float2 x);
1447 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v3f32, )(float3 x);
1448 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v4f32, )(float4 x);
1449 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v8f32, )(float8 x);
1450 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v16f32, )(float16 x);
1451 #if defined(cl_khr_fp64)
1452 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _f64, )( double x );
1453 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v2f64, )(double2 x);
1454 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v3f64, )(double3 x);
1455 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v4f64, )(double4 x);
1456 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v8f64, )(double8 x);
1457 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v16f64, )(double16 x);
1458 #endif // defined(cl_khr_fp64)
1459 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _f16, )( half x );
1460 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v2f16, )(half2 x);
1461 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v3f16, )(half3 x);
1462 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v4f16, )(half4 x);
1463 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v8f16, )(half8 x);
1464 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(cospi, _v16f16, )(half16 x);
1465 
1466 float __builtin_spirv_divide_cr_f32_f32( float a, float b );
1467 float2 __builtin_spirv_divide_cr_v2f32_v2f32( float2 a, float2 b );
1468 float3 __builtin_spirv_divide_cr_v3f32_v3f32( float3 a, float3 b );
1469 float4 __builtin_spirv_divide_cr_v4f32_v4f32( float4 a, float4 b );
1470 float8 __builtin_spirv_divide_cr_v8f32_v8f32( float8 a, float8 b );
1471 float16 __builtin_spirv_divide_cr_v16f32_v16f32( float16 a, float16 b );
1472 
1473 #if defined(cl_khr_fp64)
1474 double __builtin_spirv_divide_cr_f64_f64(double a, double b);
1475 #endif // defined(cl_khr_fp64)
1476 
1477 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _f32, )( float x );
1478 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v2f32, )(float2 x);
1479 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v3f32, )(float3 x);
1480 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v4f32, )(float4 x);
1481 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v8f32, )(float8 x);
1482 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v16f32, )(float16 x);
1483 #if defined(cl_khr_fp64)
1484 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _f64, )( double x );
1485 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v2f64, )(double2 x);
1486 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v3f64, )(double3 x);
1487 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v4f64, )(double4 x);
1488 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v8f64, )(double8 x);
1489 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v16f64, )(double16 x);
1490 #endif // defined(cl_khr_fp64)
1491 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _f16, )( half x );
1492 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v2f16, )(half2 x);
1493 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v3f16, )(half3 x);
1494 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v4f16, )(half4 x);
1495 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v8f16, )(half8 x);
1496 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erf, _v16f16, )(half16 x);
1497 
1498 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _f32, )( float x );
1499 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v2f32, )(float2 x);
1500 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v3f32, )(float3 x);
1501 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v4f32, )(float4 x);
1502 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v8f32, )(float8 x);
1503 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v16f32, )(float16 x);
1504 #if defined(cl_khr_fp64)
1505 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _f64, )( double x );
1506 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v2f64, )(double2 x);
1507 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v3f64, )(double3 x);
1508 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v4f64, )(double4 x);
1509 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v8f64, )(double8 x);
1510 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v16f64, )(double16 x);
1511 #endif // defined(cl_khr_fp64)
1512 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _f16, )( half x );
1513 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v2f16, )(half2 x);
1514 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v3f16, )(half3 x);
1515 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v4f16, )(half4 x);
1516 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v8f16, )(half8 x);
1517 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(erfc, _v16f16, )(half16 x);
1518 
1519 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _f32, )(float x);
1520 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v2f32, )(float2 x);
1521 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v3f32, )(float3 x);
1522 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v4f32, )(float4 x);
1523 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v8f32, )(float8 x);
1524 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v16f32, )(float16 x);
1525 #if defined(cl_khr_fp64)
1526 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _f64, )( double x );
1527 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v2f64, )(double2 x);
1528 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v3f64, )(double3 x);
1529 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v4f64, )(double4 x);
1530 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v8f64, )(double8 x);
1531 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v16f64, )(double16 x);
1532 #endif // defined(cl_khr_fp64)
1533 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _f16, )( half x );
1534 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v2f16, )(half2 x);
1535 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v3f16, )(half3 x);
1536 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v4f16, )(half4 x);
1537 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v8f16, )(half8 x);
1538 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp, _v16f16, )(half16 x);
1539 
1540 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _f32, )( float x );
1541 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v2f32, )(float2 x);
1542 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v3f32, )(float3 x);
1543 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v4f32, )(float4 x);
1544 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v8f32, )(float8 x);
1545 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v16f32, )(float16 x);
1546 #if defined(cl_khr_fp64)
1547 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _f64, )( double x );
1548 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v2f64, )(double2 x);
1549 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v3f64, )(double3 x);
1550 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v4f64, )(double4 x);
1551 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v8f64, )(double8 x);
1552 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v16f64, )(double16 x);
1553 #endif // defined(cl_khr_fp64)
1554 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _f16, )( half x );
1555 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v2f16, )(half2 x);
1556 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v3f16, )(half3 x);
1557 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v4f16, )(half4 x);
1558 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v8f16, )(half8 x);
1559 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp2, _v16f16, )(half16 x);
1560 
1561 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _f32, )( float x );
1562 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v2f32, )(float2 x);
1563 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v3f32, )(float3 x);
1564 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v4f32, )(float4 x);
1565 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v8f32, )(float8 x);
1566 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v16f32, )(float16 x);
1567 #if defined(cl_khr_fp64)
1568 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _f64, )( double x );
1569 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v2f64, )(double2 x);
1570 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v3f64, )(double3 x);
1571 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v4f64, )(double4 x);
1572 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v8f64, )(double8 x);
1573 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v16f64, )(double16 x);
1574 #endif // defined(cl_khr_fp64)
1575 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _f16, )( half x );
1576 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v2f16, )(half2 x);
1577 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v3f16, )(half3 x);
1578 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v4f16, )(half4 x);
1579 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v8f16, )(half8 x);
1580 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(exp10, _v16f16, )(half16 x);
1581 
1582 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _f32, )( float a );
1583 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v2f32, )(float2 x);
1584 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v3f32, )(float3 x);
1585 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v4f32, )(float4 x);
1586 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v8f32, )(float8 x);
1587 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v16f32, )(float16 x);
1588 #if defined(cl_khr_fp64)
1589 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _f64, )( double x );
1590 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v2f64, )(double2 x);
1591 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v3f64, )(double3 x);
1592 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v4f64, )(double4 x);
1593 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v8f64, )(double8 x);
1594 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v16f64, )(double16 x);
1595 #endif // defined(cl_khr_fp64)
1596 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _f16, )( half x );
1597 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v2f16, )(half2 x);
1598 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v3f16, )(half3 x);
1599 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v4f16, )(half4 x);
1600 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v8f16, )(half8 x);
1601 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(expm1, _v16f16, )(half16 x);
1602 
1603 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _f32, )(float x );
1604 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v2f32, )(float2 x);
1605 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v3f32, )(float3 x);
1606 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v4f32, )(float4 x);
1607 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v8f32, )(float8 x);
1608 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v16f32, )(float16 x);
1609 #if defined(cl_khr_fp64)
1610 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _f64, )(double x );
1611 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v2f64, )(double2 x);
1612 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v3f64, )(double3 x);
1613 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v4f64, )(double4 x);
1614 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v8f64, )(double8 x);
1615 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v16f64, )(double16 x);
1616 #endif // defined(cl_khr_fp64)
1617 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _f16, )(half x );
1618 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v2f16, )(half2 x);
1619 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v3f16, )(half3 x);
1620 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v4f16, )(half4 x);
1621 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v8f16, )(half8 x);
1622 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fabs, _v16f16, )(half16 x);
1623 
1624 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _f32_f32, )( float x, float y );
1625 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v2f32_v2f32, )(float2 x, float2 y);
1626 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v3f32_v3f32, )(float3 x, float3 y);
1627 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v4f32_v4f32, )(float4 x, float4 y);
1628 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v8f32_v8f32, )(float8 x, float8 y);
1629 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v16f32_v16f32, )(float16 x, float16 y);
1630 #if defined(cl_khr_fp64)
1631 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _f64_f64, )( double x, double y );
1632 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v2f64_v2f64, )(double2 x, double2 y);
1633 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v3f64_v3f64, )(double3 x, double3 y);
1634 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v4f64_v4f64, )(double4 x, double4 y);
1635 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v8f64_v8f64, )(double8 x, double8 y);
1636 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v16f64_v16f64, )(double16 x, double16 y);
1637 #endif // defined(cl_khr_fp64)
1638 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _f16_f16, )( half x, half y );
1639 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v2f16_v2f16, )(half2 x, half2 y);
1640 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v3f16_v3f16, )(half3 x, half3 y);
1641 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v4f16_v4f16, )(half4 x, half4 y);
1642 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v8f16_v8f16, )(half8 x, half8 y);
1643 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fdim, _v16f16_v16f16, )(half16 x, half16 y);
1644 
1645 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _f32, )(float x );
1646 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v2f32, )(float2 x);
1647 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v3f32, )(float3 x);
1648 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v4f32, )(float4 x);
1649 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v8f32, )(float8 x);
1650 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v16f32, )(float16 x);
1651 #if defined(cl_khr_fp64)
1652 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _f64, )(double x );
1653 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v2f64, )(double2 x);
1654 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v3f64, )(double3 x);
1655 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v4f64, )(double4 x);
1656 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v8f64, )(double8 x);
1657 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v16f64, )(double16 x);
1658 #endif // defined(cl_khr_fp64)
1659 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _f16, )(half x );
1660 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v2f16, )(half2 x);
1661 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v3f16, )(half3 x);
1662 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v4f16, )(half4 x);
1663 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v8f16, )(half8 x);
1664 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(floor, _v16f16, )(half16 x);
1665 
1666 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _f32_f32_f32, )( float a, float b, float c );
1667 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
1668 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
1669 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
1670 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
1671 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
1672 #if defined(cl_khr_fp64)
1673 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, )( double a, double b, double c );
1674 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
1675 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
1676 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
1677 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
1678 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
1679 #endif // defined(cl_khr_fp64)
1680 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _f16_f16_f16, )(half x, half y, half z);
1681 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
1682 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
1683 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
1684 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
1685 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fma, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
1686 
1687 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _f32_f32, )( float x, float y );
1688 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f32_v2f32, )(float2 x, float2 y);
1689 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f32_v3f32, )(float3 x, float3 y);
1690 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f32_v4f32, )(float4 x, float4 y);
1691 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f32_v8f32, )(float8 x, float8 y);
1692 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f32_v16f32, )(float16 x, float16 y);
1693 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f32_f32, )(float2 x, float y);
1694 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f32_f32, )(float3 x, float y);
1695 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f32_f32, )(float4 x, float y);
1696 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f32_f32, )(float8 x, float y);
1697 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f32_f32, )(float16 x, float y);
1698 #if defined(cl_khr_fp64)
1699 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _f64_f64, )( double x, double y );
1700 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f64_v2f64, )(double2 x, double2 y);
1701 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f64_v3f64, )(double3 x, double3 y);
1702 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f64_v4f64, )(double4 x, double4 y);
1703 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f64_v8f64, )(double8 x, double8 y);
1704 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f64_v16f64, )(double16 x, double16 y);
1705 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f64_f64, )(double2 x, double y);
1706 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f64_f64, )(double3 x, double y);
1707 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f64_f64, )(double4 x, double y);
1708 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f64_f64, )(double8 x, double y);
1709 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f64_f64, )(double16 x, double y);
1710 #endif // defined(cl_khr_fp64)
1711 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _f16_f16, )( half x, half y );
1712 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f16_v2f16, )(half2 x, half2 y);
1713 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f16_v3f16, )(half3 x, half3 y);
1714 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f16_v4f16, )(half4 x, half4 y);
1715 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f16_v8f16, )(half8 x, half8 y);
1716 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f16_v16f16, )(half16 x, half16 y);
1717 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v2f16_f16, )(half2 x, half y);
1718 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v3f16_f16, )(half3 x, half y);
1719 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v4f16_f16, )(half4 x, half y);
1720 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v8f16_f16, )(half8 x, half y);
1721 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmax, _v16f16_f16, )(half16 x, half y);
1722 
1723 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _f32_f32, )( float x, float y );
1724 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v2f32_v2f32, )(float2 x, float2 y);
1725 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v3f32_v3f32, )(float3 x, float3 y);
1726 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v4f32_v4f32, )(float4 x, float4 y);
1727 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v8f32_v8f32, )(float8 x, float8 y);
1728 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v16f32_v16f32, )(float16 x, float16 y);
1729 #if defined(cl_khr_fp64)
1730 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _f64_f64, )( double x, double y );
1731 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v2f64_v2f64, )(double2 x, double2 y);
1732 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v3f64_v3f64, )(double3 x, double3 y);
1733 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v4f64_v4f64, )(double4 x, double4 y);
1734 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v8f64_v8f64, )(double8 x, double8 y);
1735 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v16f64_v16f64, )(double16 x, double16 y);
1736 #endif // defined(cl_khr_fp64)
1737 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _f16_f16, )( half x, half y );
1738 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v2f16_v2f16, )(half2 x, half2 y);
1739 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v3f16_v3f16, )(half3 x, half3 y);
1740 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v4f16_v4f16, )(half4 x, half4 y);
1741 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v8f16_v8f16, )(half8 x, half8 y);
1742 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmin, _v16f16_v16f16, )(half16 x, half16 y);
1743 
1744 float  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _f32_f32, )( float xx, float yy );
1745 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v2f32_v2f32, )(float2 x, float2 y);
1746 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v3f32_v3f32, )(float3 x, float3 y);
1747 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v4f32_v4f32, )(float4 x, float4 y);
1748 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v8f32_v8f32, )(float8 x, float8 y);
1749 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v16f32_v16f32, )(float16 x, float16 y);
1750 #if defined(cl_khr_fp64)
1751 double  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _f64_f64, )( double xx, double yy );
1752 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v2f64_v2f64, )(double2 x, double2 y);
1753 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v3f64_v3f64, )(double3 x, double3 y);
1754 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v4f64_v4f64, )(double4 x, double4 y);
1755 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v8f64_v8f64, )(double8 x, double8 y);
1756 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v16f64_v16f64, )(double16 x, double16 y);
1757 #endif // defined(cl_khr_fp64)
1758 half  SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _f16_f16, )( half x, half y );
1759 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v2f16_v2f16, )(half2 x, half2 y);
1760 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v3f16_v3f16, )(half3 x, half3 y);
1761 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v4f16_v4f16, )(half4 x, half4 y);
1762 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v8f16_v8f16, )(half8 x, half8 y);
1763 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fmod, _v16f16_v16f16, )(half16 x, half16 y);
1764 
1765 /* Helper function for fmod */
1766 float  __builtin_spirv_fast_fmod_f32_f32( float xx, float yy );
1767 float2  __builtin_spirv_fast_fmod_v2f32_v2f32( float2 xx, float2 yy );
1768 float3  __builtin_spirv_fast_fmod_v3f32_v3f32( float3 xx, float3 yy );
1769 float4  __builtin_spirv_fast_fmod_v4f32_v4f32( float4 xx, float4 yy );
1770 half  __builtin_spirv_fast_fmod_f16_f16( half xx, half yy );
1771 half2  __builtin_spirv_fast_fmod_v2f16_v2f16( half2 xx, half2 yy );
1772 half3  __builtin_spirv_fast_fmod_v3f16_v3f16( half3 xx, half3 yy );
1773 half4  __builtin_spirv_fast_fmod_v4f16_v4f16( half4 xx, half4 yy );
1774 #if defined(cl_khr_fp64)
1775 double  __builtin_spirv_fast_fmod_f64_f64( double xx, double yy );
1776 double2  __builtin_spirv_fast_fmod_v2f64_v2f64( double2 xx, double2 yy );
1777 double3  __builtin_spirv_fast_fmod_v3f64_v3f64( double3 xx, double3 yy );
1778 double4  __builtin_spirv_fast_fmod_v4f64_v4f64( double4 xx, double4 yy );
1779 #endif // defined(cl_khr_fp64)
1780 
1781 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f32_p1f32, )( float x, __global float* iptr );
1782 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f32_p1v2f32, )( float2 x, __global float2* iptr );
1783 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f32_p1v3f32, )( float3 x, __global float3* iptr );
1784 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f32_p1v4f32, )( float4 x, __global float4* iptr );
1785 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f32_p1v8f32, )( float8 x, __global float8* iptr );
1786 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f32_p1v16f32, )( float16 x, __global float16* iptr );
1787 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f32_p0f32, )( float x, __private float* iptr );
1788 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f32_p0v2f32, )( float2 x, __private float2* iptr );
1789 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f32_p0v3f32, )( float3 x, __private float3* iptr );
1790 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f32_p0v4f32, )( float4 x, __private float4* iptr );
1791 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f32_p0v8f32, )( float8 x, __private float8* iptr );
1792 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f32_p0v16f32, )( float16 x, __private float16* iptr );
1793 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f32_p3f32, )( float x, __local float* iptr );
1794 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f32_p3v2f32, )( float2 x, __local float2* iptr );
1795 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f32_p3v3f32, )( float3 x, __local float3* iptr );
1796 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f32_p3v4f32, )( float4 x, __local float4* iptr );
1797 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f32_p3v8f32, )( float8 x, __local float8* iptr );
1798 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f32_p3v16f32, )( float16 x, __local float16* iptr );
1799 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1800 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f32_p4f32, )( float x, __generic float* iptr );
1801 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f32_p4v2f32, )( float2 x, __generic float2* iptr );
1802 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f32_p4v3f32, )( float3 x, __generic float3* iptr );
1803 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f32_p4v4f32, )( float4 x, __generic float4* iptr );
1804 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f32_p4v8f32, )( float8 x, __generic float8* iptr );
1805 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f32_p4v16f32, )( float16 x, __generic float16* iptr );
1806 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1807 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f16_p1f16, )( half x, __global half* iptr );
1808 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f16_p1v2f16, )( half2 x, __global half2* iptr );
1809 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f16_p1v3f16, )( half3 x, __global half3* iptr );
1810 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f16_p1v4f16, )( half4 x, __global half4* iptr );
1811 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f16_p1v8f16, )( half8 x, __global half8* iptr );
1812 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f16_p1v16f16, )( half16 x, __global half16* iptr );
1813 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f16_p0f16, )( half x, __private half* iptr );
1814 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f16_p0v2f16, )( half2 x, __private half2* iptr );
1815 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f16_p0v3f16, )( half3 x, __private half3* iptr );
1816 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f16_p0v4f16, )( half4 x, __private half4* iptr );
1817 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f16_p0v8f16, )( half8 x, __private half8* iptr );
1818 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f16_p0v16f16, )( half16 x, __private half16* iptr );
1819 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f16_p3f16, )( half x, __local half* iptr );
1820 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f16_p3v2f16, )( half2 x, __local half2* iptr );
1821 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f16_p3v3f16, )( half3 x, __local half3* iptr );
1822 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f16_p3v4f16, )( half4 x, __local half4* iptr );
1823 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f16_p3v8f16, )( half8 x, __local half8* iptr );
1824 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f16_p3v16f16, )( half16 x, __local half16* iptr );
1825 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1826 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f16_p4f16, )( half x, __generic half* iptr );
1827 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f16_p4v2f16, )( half2 x, __generic half2* iptr );
1828 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f16_p4v3f16, )( half3 x, __generic half3* iptr );
1829 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f16_p4v4f16, )( half4 x, __generic half4* iptr );
1830 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f16_p4v8f16, )( half8 x, __generic half8* iptr );
1831 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f16_p4v16f16, )( half16 x, __generic half16* iptr );
1832 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1833 #if defined(cl_khr_fp64)
1834 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f64_p1f64, )( double x, __global double* iptr );
1835 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f64_p1v2f64, )( double2 x, __global double2* iptr );
1836 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f64_p1v3f64, )( double3 x, __global double3* iptr );
1837 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f64_p1v4f64, )( double4 x, __global double4* iptr );
1838 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f64_p1v8f64, )( double8 x, __global double8* iptr );
1839 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f64_p1v16f64, )( double16 x, __global double16* iptr );
1840 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f64_p0f64, )( double x, __private double* iptr );
1841 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f64_p0v2f64, )( double2 x, __private double2* iptr );
1842 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f64_p0v3f64, )( double3 x, __private double3* iptr );
1843 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f64_p0v4f64, )( double4 x, __private double4* iptr );
1844 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f64_p0v8f64, )( double8 x, __private double8* iptr );
1845 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f64_p0v16f64, )( double16 x, __private double16* iptr );
1846 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f64_p3f64, )( double x, __local double* iptr );
1847 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f64_p3v2f64, )( double2 x, __local double2* iptr );
1848 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f64_p3v3f64, )( double3 x, __local double3* iptr );
1849 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f64_p3v4f64, )( double4 x, __local double4* iptr );
1850 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f64_p3v8f64, )( double8 x, __local double8* iptr );
1851 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f64_p3v16f64, )( double16 x, __local double16* iptr );
1852 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1853 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _f64_p4f64, )( double x, __generic double* iptr );
1854 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v2f64_p4v2f64, )( double2 x, __generic double2* iptr );
1855 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v3f64_p4v3f64, )( double3 x, __generic double3* iptr );
1856 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v4f64_p4v4f64, )( double4 x, __generic double4* iptr );
1857 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v8f64_p4v8f64, )( double8 x, __generic double8* iptr );
1858 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(fract, _v16f64_p4v16f64, )( double16 x, __generic double16* iptr );
1859 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1860 #endif // defined(cl_khr_fp64)
1861 
1862 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f32_p1i32, )( float x, __global int* exp );
1863 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f32_p1v2i32, )( float2 x, __global int2* exp );
1864 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f32_p1v3i32, )( float3 x, __global int3* exp );
1865 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f32_p1v4i32, )( float4 x, __global int4* exp );
1866 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f32_p1v8i32, )( float8 x, __global int8* exp );
1867 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f32_p1v16i32, )( float16 x, __global int16* exp );
1868 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f32_p0i32, )( float x, __private int* exp );
1869 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f32_p0v2i32, )( float2 x, __private int2* exp );
1870 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f32_p0v3i32, )( float3 x, __private int3* exp );
1871 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f32_p0v4i32, )( float4 x, __private int4* exp );
1872 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f32_p0v8i32, )( float8 x, __private int8* exp );
1873 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f32_p0v16i32, )( float16 x, __private int16* exp );
1874 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f32_p3i32, )( float x, __local int* exp );
1875 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f32_p3v2i32, )( float2 x, __local int2* exp );
1876 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f32_p3v3i32, )( float3 x, __local int3* exp );
1877 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f32_p3v4i32, )( float4 x, __local int4* exp );
1878 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f32_p3v8i32, )( float8 x, __local int8* exp );
1879 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f32_p3v16i32, )( float16 x, __local int16* exp );
1880 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1881 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f32_p4i32, )( float x, __generic int* exp );
1882 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f32_p4v2i32, )( float2 x, __generic int2* exp );
1883 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f32_p4v3i32, )( float3 x, __generic int3* exp );
1884 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f32_p4v4i32, )( float4 x, __generic int4* exp );
1885 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f32_p4v8i32, )( float8 x, __generic int8* exp );
1886 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f32_p4v16i32, )( float16 x, __generic int16* exp );
1887 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1888 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f16_p1i32, )( half x, __global int* exp );
1889 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f16_p1v2i32, )( half2 x, __global int2* exp );
1890 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f16_p1v3i32, )( half3 x, __global int3* exp );
1891 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f16_p1v4i32, )( half4 x, __global int4* exp );
1892 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f16_p1v8i32, )( half8 x, __global int8* exp );
1893 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f16_p1v16i32, )( half16 x, __global int16* exp );
1894 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f16_p0i32, )( half x, __private int* exp );
1895 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f16_p0v2i32, )( half2 x, __private int2* exp );
1896 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f16_p0v3i32, )( half3 x, __private int3* exp );
1897 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f16_p0v4i32, )( half4 x, __private int4* exp );
1898 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f16_p0v8i32, )( half8 x, __private int8* exp );
1899 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f16_p0v16i32, )( half16 x, __private int16* exp );
1900 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f16_p3i32, )( half x, __local int* exp );
1901 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f16_p3v2i32, )( half2 x, __local int2* exp );
1902 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f16_p3v3i32, )( half3 x, __local int3* exp );
1903 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f16_p3v4i32, )( half4 x, __local int4* exp );
1904 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f16_p3v8i32, )( half8 x, __local int8* exp );
1905 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f16_p3v16i32, )( half16 x, __local int16* exp );
1906 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1907 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f16_p4i32, )( half x, __generic int* exp );
1908 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f16_p4v2i32, )( half2 x, __generic int2* exp );
1909 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f16_p4v3i32, )( half3 x, __generic int3* exp );
1910 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f16_p4v4i32, )( half4 x, __generic int4* exp );
1911 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f16_p4v8i32, )( half8 x, __generic int8* exp );
1912 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f16_p4v16i32, )( half16 x, __generic int16* exp );
1913 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1914 #if defined(cl_khr_fp64)
1915 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f64_p1i32, )( double x, __global int* exp );
1916 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f64_p1v2i32, )( double2 x, __global int2* exp );
1917 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f64_p1v3i32, )( double3 x, __global int3* exp );
1918 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f64_p1v4i32, )( double4 x, __global int4* exp );
1919 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f64_p1v8i32, )( double8 x, __global int8* exp );
1920 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f64_p1v16i32, )( double16 x, __global int16* exp );
1921 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f64_p0i32, )( double x, __private int* exp );
1922 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f64_p0v2i32, )( double2 x, __private int2* exp );
1923 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f64_p0v3i32, )( double3 x, __private int3* exp );
1924 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f64_p0v4i32, )( double4 x, __private int4* exp );
1925 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f64_p0v8i32, )( double8 x, __private int8* exp );
1926 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f64_p0v16i32, )( double16 x, __private int16* exp );
1927 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f64_p3i32, )( double x, __local int* exp );
1928 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f64_p3v2i32, )( double2 x, __local int2* exp );
1929 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f64_p3v3i32, )( double3 x, __local int3* exp );
1930 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f64_p3v4i32, )( double4 x, __local int4* exp );
1931 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f64_p3v8i32, )( double8 x, __local int8* exp );
1932 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f64_p3v16i32, )( double16 x, __local int16* exp );
1933 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1934 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _f64_p4i32, )( double x, __generic int* exp );
1935 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v2f64_p4v2i32, )( double2 x, __generic int2* exp );
1936 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v3f64_p4v3i32, )( double3 x, __generic int3* exp );
1937 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v4f64_p4v4i32, )( double4 x, __generic int4* exp );
1938 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v8f64_p4v8i32, )( double8 x, __generic int8* exp );
1939 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(frexp, _v16f64_p4v16i32, )( double16 x, __generic int16* exp );
1940 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
1941 #endif // defined(cl_khr_fp64)
1942 
1943 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _f32_f32, )( float x, float y );
1944 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v2f32_v2f32, )(float2 x, float2 y);
1945 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v3f32_v3f32, )(float3 x, float3 y);
1946 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v4f32_v4f32, )(float4 x, float4 y);
1947 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v8f32_v8f32, )(float8 x, float8 y);
1948 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v16f32_v16f32, )(float16 x, float16 y);
1949 #if defined(cl_khr_fp64)
1950 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _f64_f64, )( double x, double y );
1951 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v2f64_v2f64, )(double2 x, double2 y);
1952 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v3f64_v3f64, )(double3 x, double3 y);
1953 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v4f64_v4f64, )(double4 x, double4 y);
1954 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v8f64_v8f64, )(double8 x, double8 y);
1955 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v16f64_v16f64, )(double16 x, double16 y);
1956 #endif // defined(cl_khr_fp64)
1957 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _f16_f16, )( half x, half y );
1958 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v2f16_v2f16, )(half2 x, half2 y);
1959 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v3f16_v3f16, )(half3 x, half3 y);
1960 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v4f16_v4f16, )(half4 x, half4 y);
1961 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v8f16_v8f16, )(half8 x, half8 y);
1962 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(hypot, _v16f16_v16f16, )(half16 x, half16 y);
1963 
1964 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _f32, )( float x );
1965 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _f32, )( float x );
1966 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v2f32, )(float2 x);
1967 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v3f32, )(float3 x);
1968 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v4f32, )(float4 x);
1969 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v8f32, )(float8 x);
1970 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v16f32, )(float16 x);
1971 #if defined(cl_khr_fp64)
1972 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _f64, )( double x );
1973 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v2f64, )(double2 x);
1974 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v3f64, )(double3 x);
1975 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v4f64, )(double4 x);
1976 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v8f64, )(double8 x);
1977 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v16f64, )(double16 x);
1978 #endif // defined(cl_khr_fp64)
1979 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _f16, )( half x );
1980 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v2f16, )(half2 x);
1981 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v3f16, )(half3 x);
1982 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v4f16, )(half4 x);
1983 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v8f16, )(half8 x);
1984 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ilogb, _v16f16, )(half16 x);
1985 
1986 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _f32_i32, )( float x, int n );
1987 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v2f32_v2i32, )(float2 x, int2 y);
1988 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v3f32_v3i32, )(float3 x, int3 y);
1989 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v4f32_v4i32, )(float4 x, int4 y);
1990 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v8f32_v8i32, )(float8 x, int8 y);
1991 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v16f32_v16i32, )(float16 x, int16 y);
1992 #if defined(cl_khr_fp64)
1993 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _f64_i32, )( double x, int n );
1994 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v2f64_v2i32, )(double2 x, int2 y);
1995 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v3f64_v3i32, )(double3 x, int3 y);
1996 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v4f64_v4i32, )(double4 x, int4 y);
1997 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v8f64_v8i32, )(double8 x, int8 y);
1998 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v16f64_v16i32, )(double16 x, int16 y);
1999 #endif // defined(cl_khr_fp64)
2000 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _f16_i32, )( half x, int n );
2001 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v2f16_v2i32, )(half2 x, int2 y);
2002 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v3f16_v3i32, )(half3 x, int3 y);
2003 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v4f16_v4i32, )(half4 x, int4 y);
2004 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v8f16_v8i32, )(half8 x, int8 y);
2005 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(ldexp, _v16f16_v16i32, )(half16 x, int16 y);
2006 
2007 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _f32, )( float x );
2008 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v2f32, )(float2 x);
2009 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v3f32, )(float3 x);
2010 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v4f32, )(float4 x);
2011 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v8f32, )(float8 x);
2012 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v16f32, )(float16 x);
2013 #if defined(cl_khr_fp64)
2014 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _f64, )( double x );
2015 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v2f64, )(double2 x);
2016 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v3f64, )(double3 x);
2017 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v4f64, )(double4 x);
2018 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v8f64, )(double8 x);
2019 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v16f64, )(double16 x);
2020 #endif // defined(cl_khr_fp64)
2021 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _f16, )( half x );
2022 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v2f16, )(half2 x);
2023 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v3f16, )(half3 x);
2024 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v4f16, )(half4 x);
2025 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v8f16, )(half8 x);
2026 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma, _v16f16, )(half16 x);
2027 
2028 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f32_p1i32, )( float x, __global int* signp );
2029 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f32_p1v2i32, )( float2 x, __global int2* signp );
2030 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f32_p1v3i32, )( float3 x, __global int3* signp );
2031 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f32_p1v4i32, )( float4 x, __global int4* signp );
2032 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f32_p1v8i32, )( float8 x, __global int8* signp );
2033 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f32_p1v16i32, )( float16 x, __global int16* signp );
2034 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f32_p3i32, )( float x, __local int* signp );
2035 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f32_p3v2i32, )( float2 x, __local int2* signp );
2036 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f32_p3v3i32, )( float3 x, __local int3* signp );
2037 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f32_p3v4i32, )( float4 x, __local int4* signp );
2038 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f32_p3v8i32, )( float8 x, __local int8* signp );
2039 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f32_p3v16i32, )( float16 x, __local int16* signp );
2040 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f32_p0i32, )( float x, __private int* signp );
2041 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f32_p0v2i32, )( float2 x, __private int2* signp );
2042 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f32_p0v3i32, )( float3 x, __private int3* signp );
2043 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f32_p0v4i32, )( float4 x, __private int4* signp );
2044 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f32_p0v8i32, )( float8 x, __private int8* signp );
2045 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f32_p0v16i32, )( float16 x, __private int16* signp );
2046 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2047 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f32_p4i32, )( float x, __generic int* signp );
2048 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f32_p4v2i32, )( float2 x, __generic int2* signp );
2049 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f32_p4v3i32, )( float3 x, __generic int3* signp );
2050 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f32_p4v4i32, )( float4 x, __generic int4* signp );
2051 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f32_p4v8i32, )( float8 x, __generic int8* signp );
2052 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f32_p4v16i32, )( float16 x, __generic int16* signp );
2053 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2054 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f16_p1i32, )( half x, __global int* signp );
2055 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f16_p1v2i32, )( half2 x, __global int2* signp );
2056 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f16_p1v3i32, )( half3 x, __global int3* signp );
2057 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f16_p1v4i32, )( half4 x, __global int4* signp );
2058 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f16_p1v8i32, )( half8 x, __global int8* signp );
2059 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f16_p1v16i32, )( half16 x, __global int16* signp );
2060 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f16_p0i32, )( half x, __private int* signp );
2061 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f16_p0v2i32, )( half2 x, __private int2* signp );
2062 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f16_p0v3i32, )( half3 x, __private int3* signp );
2063 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f16_p0v4i32, )( half4 x, __private int4* signp );
2064 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f16_p0v8i32, )( half8 x, __private int8* signp );
2065 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f16_p0v16i32, )( half16 x, __private int16* signp );
2066 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f16_p3i32, )( half x, __local int* signp );
2067 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f16_p3v2i32, )( half2 x, __local int2* signp );
2068 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f16_p3v3i32, )( half3 x, __local int3* signp );
2069 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f16_p3v4i32, )( half4 x, __local int4* signp );
2070 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f16_p3v8i32, )( half8 x, __local int8* signp );
2071 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f16_p3v16i32, )( half16 x, __local int16* signp );
2072 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2073 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f16_p4i32, )( half x, __generic int* signp );
2074 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f16_p4v2i32, )( half2 x, __generic int2* signp );
2075 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f16_p4v3i32, )( half3 x, __generic int3* signp );
2076 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f16_p4v4i32, )( half4 x, __generic int4* signp );
2077 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f16_p4v8i32, )( half8 x, __generic int8* signp );
2078 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f16_p4v16i32, )( half16 x, __generic int16* signp );
2079 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2080 #if defined(cl_khr_fp64)
2081 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f64_p1i32, )( double x, __global int* signp );
2082 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f64_p1v2i32, )( double2 x, __global int2* signp );
2083 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f64_p1v3i32, )( double3 x, __global int3* signp );
2084 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f64_p1v4i32, )( double4 x, __global int4* signp );
2085 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f64_p1v8i32, )( double8 x, __global int8* signp );
2086 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f64_p1v16i32, )( double16 x, __global int16* signp );
2087 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f64_p0i32, )( double x, __private int* signp );
2088 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f64_p0v2i32, )( double2 x, __private int2* signp );
2089 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f64_p0v3i32, )( double3 x, __private int3* signp );
2090 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f64_p0v4i32, )( double4 x, __private int4* signp );
2091 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f64_p0v8i32, )( double8 x, __private int8* signp );
2092 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f64_p0v16i32, )( double16 x, __private int16* signp );
2093 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f64_p3i32, )( double x, __local int* signp );
2094 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f64_p3v2i32, )( double2 x, __local int2* signp );
2095 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f64_p3v3i32, )( double3 x, __local int3* signp );
2096 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f64_p3v4i32, )( double4 x, __local int4* signp );
2097 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f64_p3v8i32, )( double8 x, __local int8* signp );
2098 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f64_p3v16i32, )( double16 x, __local int16* signp );
2099 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2100 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _f64_p4i32, )( double x, __generic int* signp );
2101 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v2f64_p4v2i32, )( double2 x, __generic int2* signp );
2102 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v3f64_p4v3i32, )( double3 x, __generic int3* signp );
2103 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v4f64_p4v4i32, )( double4 x, __generic int4* signp );
2104 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v8f64_p4v8i32, )( double8 x, __generic int8* signp );
2105 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(lgamma_r, _v16f64_p4v16i32, )( double16 x, __generic int16* signp );
2106 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2107 #endif // defined(cl_khr_fp64)
2108 
2109 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _f32, )( float x );
2110 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v2f32, )(float2 x);
2111 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v3f32, )(float3 x);
2112 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v4f32, )(float4 x);
2113 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v8f32, )(float8 x);
2114 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v16f32, )(float16 x);
2115 #if defined(cl_khr_fp64)
2116 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _f64, )( double x );
2117 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v2f64, )(double2 x);
2118 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v3f64, )(double3 x);
2119 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v4f64, )(double4 x);
2120 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v8f64, )(double8 x);
2121 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v16f64, )(double16 x);
2122 #endif // defined(cl_khr_fp64)
2123 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _f16, )( half x );
2124 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v2f16, )(half2 x);
2125 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v3f16, )(half3 x);
2126 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v4f16, )(half4 x);
2127 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v8f16, )(half8 x);
2128 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log, _v16f16, )(half16 x);
2129 
2130 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _f32, )( float a );
2131 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v2f32, )(float2 x);
2132 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v3f32, )(float3 x);
2133 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v4f32, )(float4 x);
2134 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v8f32, )(float8 x);
2135 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v16f32, )(float16 x);
2136 #if defined(cl_khr_fp64)
2137 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _f64, )( double a );
2138 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v2f64, )(double2 x);
2139 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v3f64, )(double3 x);
2140 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v4f64, )(double4 x);
2141 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v8f64, )(double8 x);
2142 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v16f64, )(double16 x);
2143 #endif // defined(cl_khr_fp64)
2144 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _f16, )( half x );
2145 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v2f16, )(half2 x);
2146 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v3f16, )(half3 x);
2147 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v4f16, )(half4 x);
2148 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v8f16, )(half8 x);
2149 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log1p, _v16f16, )(half16 x);
2150 
2151 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _f32, )( float x );
2152 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v2f32, )(float2 x);
2153 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v3f32, )(float3 x);
2154 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v4f32, )(float4 x);
2155 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v8f32, )(float8 x);
2156 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v16f32, )(float16 x);
2157 #if defined(cl_khr_fp64)
2158 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _f64, )( double x );
2159 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v2f64, )(double2 x);
2160 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v3f64, )(double3 x);
2161 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v4f64, )(double4 x);
2162 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v8f64, )(double8 x);
2163 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v16f64, )(double16 x);
2164 #endif // defined(cl_khr_fp64)
2165 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _f16, )( half x );
2166 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v2f16, )(half2 x);
2167 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v3f16, )(half3 x);
2168 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v4f16, )(half4 x);
2169 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v8f16, )(half8 x);
2170 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log2, _v16f16, )(half16 x);
2171 
2172 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _f32, )( float x );
2173 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v2f32, )(float2 x);
2174 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v3f32, )(float3 x);
2175 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v4f32, )(float4 x);
2176 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v8f32, )(float8 x);
2177 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v16f32, )(float16 x);
2178 #if defined(cl_khr_fp64)
2179 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _f64, )( double x );
2180 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v2f64, )(double2 x);
2181 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v3f64, )(double3 x);
2182 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v4f64, )(double4 x);
2183 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v8f64, )(double8 x);
2184 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v16f64, )(double16 x);
2185 #endif // defined(cl_khr_fp64)
2186 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _f16, )( half x );
2187 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v2f16, )(half2 x);
2188 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v3f16, )(half3 x);
2189 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v4f16, )(half4 x);
2190 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v8f16, )(half8 x);
2191 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(log10, _v16f16, )(half16 x);
2192 
2193 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _f32, )( float x );
2194 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v2f32, )(float2 x);
2195 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v3f32, )(float3 x);
2196 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v4f32, )(float4 x);
2197 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v8f32, )(float8 x);
2198 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v16f32, )(float16 x);
2199 #if defined(cl_khr_fp64)
2200 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _f64, )( double x );
2201 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v2f64, )(double2 x);
2202 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v3f64, )(double3 x);
2203 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v4f64, )(double4 x);
2204 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v8f64, )(double8 x);
2205 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v16f64, )(double16 x);
2206 #endif // defined(cl_khr_fp64)
2207 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _f16, )( half x );
2208 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v2f16, )(half2 x);
2209 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v3f16, )(half3 x);
2210 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v4f16, )(half4 x);
2211 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v8f16, )(half8 x);
2212 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(logb, _v16f16, )(half16 x);
2213 
2214 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _f32_f32_f32, )( float a, float b, float c );
2215 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
2216 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
2217 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
2218 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
2219 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
2220 #if defined(cl_khr_fp64)
2221 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _f64_f64_f64, )( double a, double b, double c );
2222 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
2223 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
2224 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
2225 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
2226 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
2227 #endif // defined(cl_khr_fp64)
2228 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _f16_f16_f16, )(half x, half y, half z);
2229 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
2230 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
2231 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
2232 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
2233 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(mad, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
2234 
2235 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _f32_f32, )( float x, float y );
2236 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v2f32_v2f32, )(float2 x, float2 y);
2237 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v3f32_v3f32, )(float3 x, float3 y);
2238 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v4f32_v4f32, )(float4 x, float4 y);
2239 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v8f32_v8f32, )(float8 x, float8 y);
2240 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v16f32_v16f32, )(float16 x, float16 y);
2241 #if defined(cl_khr_fp64)
2242 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _f64_f64, )( double x, double y );
2243 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v2f64_v2f64, )(double2 x, double2 y);
2244 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v3f64_v3f64, )(double3 x, double3 y);
2245 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v4f64_v4f64, )(double4 x, double4 y);
2246 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v8f64_v8f64, )(double8 x, double8 y);
2247 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v16f64_v16f64, )(double16 x, double16 y);
2248 #endif // defined(cl_khr_fp64)
2249 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _f16_f16, )( half x, half y );
2250 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v2f16_v2f16, )(half2 x, half2 y);
2251 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v3f16_v3f16, )(half3 x, half3 y);
2252 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v4f16_v4f16, )(half4 x, half4 y);
2253 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v8f16_v8f16, )(half8 x, half8 y);
2254 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(maxmag, _v16f16_v16f16, )(half16 x, half16 y);
2255 
2256 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _f32_f32, )( float x, float y );
2257 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v2f32_v2f32, )(float2 x, float2 y);
2258 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v3f32_v3f32, )(float3 x, float3 y);
2259 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v4f32_v4f32, )(float4 x, float4 y);
2260 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v8f32_v8f32, )(float8 x, float8 y);
2261 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v16f32_v16f32, )(float16 x, float16 y);
2262 #if defined(cl_khr_fp64)
2263 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _f64_f64, )( double x, double y );
2264 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v2f64_v2f64, )(double2 x, double2 y);
2265 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v3f64_v3f64, )(double3 x, double3 y);
2266 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v4f64_v4f64, )(double4 x, double4 y);
2267 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v8f64_v8f64, )(double8 x, double8 y);
2268 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v16f64_v16f64, )(double16 x, double16 y);
2269 #endif // defined(cl_khr_fp64)
2270 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _f16_f16, )( half x, half y );
2271 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v2f16_v2f16, )(half2 x, half2 y);
2272 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v3f16_v3f16, )(half3 x, half3 y);
2273 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v4f16_v4f16, )(half4 x, half4 y);
2274 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v8f16_v8f16, )(half8 x, half8 y);
2275 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(minmag, _v16f16_v16f16, )(half16 x, half16 y);
2276 
2277 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f32_p1f32, )( float x, __global float* iptr );
2278 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f32_p1v2f32, )( float2 x, __global float2* iptr );
2279 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f32_p1v3f32, )( float3 x, __global float3* iptr );
2280 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f32_p1v4f32, )( float4 x, __global float4* iptr );
2281 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f32_p1v8f32, )( float8 x, __global float8* iptr );
2282 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f32_p1v16f32, )( float16 x, __global float16* iptr );
2283 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f32_p0f32, )( float x, __private float* iptr );
2284 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f32_p0v2f32, )( float2 x, __private float2* iptr );
2285 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f32_p0v3f32, )( float3 x, __private float3* iptr );
2286 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f32_p0v4f32, )( float4 x, __private float4* iptr );
2287 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f32_p0v8f32, )( float8 x, __private float8* iptr );
2288 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f32_p0v16f32, )( float16 x, __private float16* iptr );
2289 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f32_p3f32, )( float x, __local float* iptr );
2290 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f32_p3v2f32, )( float2 x, __local float2* iptr );
2291 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f32_p3v3f32, )( float3 x, __local float3* iptr );
2292 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f32_p3v4f32, )( float4 x, __local float4* iptr );
2293 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f32_p3v8f32, )( float8 x, __local float8* iptr );
2294 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f32_p3v16f32, )( float16 x, __local float16* iptr );
2295 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2296 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f32_p4f32, )( float x, __generic float* iptr );
2297 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f32_p4v2f32, )( float2 x, __generic float2* iptr );
2298 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f32_p4v3f32, )( float3 x, __generic float3* iptr );
2299 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f32_p4v4f32, )( float4 x, __generic float4* iptr );
2300 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f32_p4v8f32, )( float8 x, __generic float8* iptr );
2301 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f32_p4v16f32, )( float16 x, __generic float16* iptr );
2302 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2303 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f16_p1f16, )( half x, __global half* iptr );
2304 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f16_p1v2f16, )( half2 x, __global half2* iptr );
2305 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f16_p1v3f16, )( half3 x, __global half3* iptr );
2306 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f16_p1v4f16, )( half4 x, __global half4* iptr );
2307 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f16_p1v8f16, )( half8 x, __global half8* iptr );
2308 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f16_p1v16f16, )( half16 x, __global half16* iptr );
2309 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f16_p0f16, )( half x, __private half* iptr );
2310 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f16_p0v2f16, )( half2 x, __private half2* iptr );
2311 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f16_p0v3f16, )( half3 x, __private half3* iptr );
2312 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f16_p0v4f16, )( half4 x, __private half4* iptr );
2313 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f16_p0v8f16, )( half8 x, __private half8* iptr );
2314 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f16_p0v16f16, )( half16 x, __private half16* iptr );
2315 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f16_p3f16, )( half x, __local half* iptr );
2316 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f16_p3v2f16, )( half2 x, __local half2* iptr );
2317 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f16_p3v3f16, )( half3 x, __local half3* iptr );
2318 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f16_p3v4f16, )( half4 x, __local half4* iptr );
2319 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f16_p3v8f16, )( half8 x, __local half8* iptr );
2320 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f16_p3v16f16, )( half16 x, __local half16* iptr );
2321 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2322 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f16_p4f16, )( half x, __generic half* iptr );
2323 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f16_p4v2f16, )( half2 x, __generic half2* iptr );
2324 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f16_p4v3f16, )( half3 x, __generic half3* iptr );
2325 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f16_p4v4f16, )( half4 x, __generic half4* iptr );
2326 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f16_p4v8f16, )( half8 x, __generic half8* iptr );
2327 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f16_p4v16f16, )( half16 x, __generic half16* iptr );
2328 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2329 #if defined(cl_khr_fp64)
2330 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f64_p1f64, )( double x, __global double* iptr );
2331 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f64_p1v2f64, )( double2 x, __global double2* iptr );
2332 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f64_p1v3f64, )( double3 x, __global double3* iptr );
2333 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f64_p1v4f64, )( double4 x, __global double4* iptr );
2334 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f64_p1v8f64, )( double8 x, __global double8* iptr );
2335 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f64_p1v16f64, )( double16  x, __global double16* iptr );
2336 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f64_p0f64, )( double x, __private double* iptr );
2337 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f64_p0v2f64, )( double2 x, __private double2* iptr );
2338 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f64_p0v3f64, )( double3 x, __private double3* iptr );
2339 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f64_p0v4f64, )( double4 x, __private double4* iptr );
2340 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f64_p0v8f64, )( double8 x, __private double8* iptr );
2341 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f64_p0v16f64, )( double16   x, __private double16* iptr );
2342 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f64_p3f64, )( double x, __local double* iptr );
2343 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f64_p3v2f64, )( double2 x, __local double2* iptr );
2344 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f64_p3v3f64, )( double3 x, __local double3* iptr );
2345 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f64_p3v4f64, )( double4 x, __local double4* iptr );
2346 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f64_p3v8f64, )( double8 x, __local double8* iptr );
2347 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f64_p3v16f64, )( double16 x, __local double16* iptr );
2348 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2349 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _f64_p4f64, )( double x, __generic double* iptr );
2350 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v2f64_p4v2f64, )( double2 x, __generic double2* iptr );
2351 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v3f64_p4v3f64, )( double3 x, __generic double3* iptr );
2352 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v4f64_p4v4f64, )( double4 x, __generic double4* iptr );
2353 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v8f64_p4v8f64, )( double8 x, __generic double8* iptr );
2354 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(modf, _v16f64_p4v16f64, )( double16 x, __generic double16* iptr );
2355 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2356 #endif // defined(cl_khr_fp64)
2357 
2358 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _i32, )( int nancode );
2359 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v2i32, )(int2 x);
2360 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v3i32, )(int3 x);
2361 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v4i32, )(int4 x);
2362 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v8i32, )(int8 x);
2363 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v16i32, )(int16 x);
2364 #if defined(cl_khr_fp64)
2365 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _i64, )( long nancode );
2366 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v2i64, )(long2 x);
2367 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v3i64, )(long3 x);
2368 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v4i64, )(long4 x);
2369 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v8i64, )(long8 x);
2370 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v16i64, )(long16 x);
2371 #endif // defined(cl_khr_fp64)
2372 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _i16, )( short nancode );
2373 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v2i16, )(short2 x);
2374 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v3i16, )(short3 x);
2375 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v4i16, )(short4 x);
2376 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v8i16, )(short8 x);
2377 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nan, _v16i16, )(short16 x);
2378 
2379 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _f32_f32, )( float x, float y );
2380 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v2f32_v2f32, )(float2 x, float2 y);
2381 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v3f32_v3f32, )(float3 x, float3 y);
2382 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v4f32_v4f32, )(float4 x, float4 y);
2383 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v8f32_v8f32, )(float8 x, float8 y);
2384 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v16f32_v16f32, )(float16 x, float16 y);
2385 #if defined(cl_khr_fp64)
2386 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _f64_f64, )( double x, double y );
2387 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v2f64_v2f64, )(double2 x, double2 y);
2388 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v3f64_v3f64, )(double3 x, double3 y);
2389 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v4f64_v4f64, )(double4 x, double4 y);
2390 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v8f64_v8f64, )(double8 x, double8 y);
2391 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v16f64_v16f64, )(double16 x, double16 y);
2392 #endif // defined(cl_khr_fp64)
2393 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _f16_f16, )( half x, half y );
2394 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v2f16_v2f16, )(half2 x, half2 y);
2395 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v3f16_v3f16, )(half3 x, half3 y);
2396 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v4f16_v4f16, )(half4 x, half4 y);
2397 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v8f16_v8f16, )(half8 x, half8 y);
2398 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(nextafter, _v16f16_v16f16, )(half16 x, half16 y);
2399 
2400 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _f32_f32, )( float x, float y );
2401 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v2f32_v2f32, )(float2 x, float2 y);
2402 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v3f32_v3f32, )(float3 x, float3 y);
2403 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v4f32_v4f32, )(float4 x, float4 y);
2404 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v8f32_v8f32, )(float8 x, float8 y);
2405 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v16f32_v16f32, )(float16 x, float16 y);
2406 #if defined(cl_khr_fp64)
2407 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _f64_f64, )( double x, double y );
2408 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v2f64_v2f64, )(double2 x, double2 y);
2409 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v3f64_v3f64, )(double3 x, double3 y);
2410 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v4f64_v4f64, )(double4 x, double4 y);
2411 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v8f64_v8f64, )(double8 x, double8 y);
2412 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v16f64_v16f64, )(double16 x, double16 y);
2413 #endif // defined(cl_khr_fp64)
2414 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _f16_f16, )( half x, half y );
2415 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v2f16_v2f16, )(half2 x, half2 y);
2416 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v3f16_v3f16, )(half3 x, half3 y);
2417 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v4f16_v4f16, )(half4 x, half4 y);
2418 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v8f16_v8f16, )(half8 x, half8 y);
2419 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pow, _v16f16_v16f16, )(half16 x, half16 y);
2420 
2421 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _f32_i32, )( float x, int y );
2422 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v2f32_v2i32, )(float2 x, int2 y);
2423 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v3f32_v3i32, )(float3 x, int3 y);
2424 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v4f32_v4i32, )(float4 x, int4 y);
2425 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v8f32_v8i32, )(float8 x, int8 y);
2426 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v16f32_v16i32, )(float16 x, int16 y);
2427 #if defined(cl_khr_fp64)
2428 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _f64_i32, )( double x, int y );
2429 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v2f64_v2i32, )(double2 x, int2 y);
2430 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v3f64_v3i32, )(double3 x, int3 y);
2431 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v4f64_v4i32, )(double4 x, int4 y);
2432 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v8f64_v8i32, )(double8 x, int8 y);
2433 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v16f64_v16i32, )(double16 x, int16 y);
2434 #endif // defined(cl_khr_fp64)
2435 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _f16_i32, )( half x, int y );
2436 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v2f16_v2i32, )(half2 x, int2 y);
2437 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v3f16_v3i32, )(half3 x, int3 y);
2438 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v4f16_v4i32, )(half4 x, int4 y);
2439 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v8f16_v8i32, )(half8 x, int8 y);
2440 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(pown, _v16f16_v16i32, )(half16 x, int16 y);
2441 
2442 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _f32_f32, )( float x, float y );
2443 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v2f32_v2f32, )(float2 x, float2 y);
2444 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v3f32_v3f32, )(float3 x, float3 y);
2445 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v4f32_v4f32, )(float4 x, float4 y);
2446 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v8f32_v8f32, )(float8 x, float8 y);
2447 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v16f32_v16f32, )(float16 x, float16 y);
2448 #if defined(cl_khr_fp64)
2449 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _f64_f64, )( double x, double y );
2450 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v2f64_v2f64, )(double2 x, double2 y);
2451 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v3f64_v3f64, )(double3 x, double3 y);
2452 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v4f64_v4f64, )(double4 x, double4 y);
2453 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v8f64_v8f64, )(double8 x, double8 y);
2454 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v16f64_v16f64, )(double16 x, double16 y);
2455 #endif // defined(cl_khr_fp64)
2456 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _f16_f16, )( half x, half y );
2457 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v2f16_v2f16, )(half2 x, half2 y);
2458 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v3f16_v3f16, )(half3 x, half3 y);
2459 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v4f16_v4f16, )(half4 x, half4 y);
2460 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v8f16_v8f16, )(half8 x, half8 y);
2461 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(powr, _v16f16_v16f16, )(half16 x, half16 y);
2462 
2463 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _f32_f32, )( float x, float y );
2464 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v2f32_v2f32, )(float2 x, float2 y);
2465 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v3f32_v3f32, )(float3 x, float3 y);
2466 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v4f32_v4f32, )(float4 x, float4 y);
2467 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v8f32_v8f32, )(float8 x, float8 y);
2468 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v16f32_v16f32, )(float16 x, float16 y);
2469 #if defined(cl_khr_fp64)
2470 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _f64_f64, )( double x, double y );
2471 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v2f64_v2f64, )(double2 x, double2 y);
2472 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v3f64_v3f64, )(double3 x, double3 y);
2473 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v4f64_v4f64, )(double4 x, double4 y);
2474 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v8f64_v8f64, )(double8 x, double8 y);
2475 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v16f64_v16f64, )(double16 x, double16 y);
2476 #endif // defined(cl_khr_fp64)
2477 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _f16_f16, )( half y, half x );
2478 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v2f16_v2f16, )(half2 x, half2 y);
2479 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v3f16_v3f16, )(half3 x, half3 y);
2480 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v4f16_v4f16, )(half4 x, half4 y);
2481 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v8f16_v8f16, )(half8 x, half8 y);
2482 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remainder, _v16f16_v16f16, )(half16 x, half16 y);
2483 
2484 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f32_f32_p1i32, )( float xx, float yy, __global int* quo );
2485 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f32_v2f32_p1v2i32, )( float2 xx, float2 yy, __global int2* quo );
2486 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f32_v3f32_p1v3i32, )( float3 xx, float3 yy, __global int3* quo );
2487 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f32_v4f32_p1v4i32, )( float4 xx, float4 yy, __global int4* quo );
2488 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f32_v8f32_p1v8i32, )( float8 xx, float8 yy, __global int8* quo );
2489 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f32_v16f32_p1v16i32, )( float16 xx, float16 yy, __global int16* quo );
2490 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f32_f32_p0i32, )( float xx, float yy, __private int* quo );
2491 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f32_v2f32_p0v2i32, )( float2 xx, float2 yy, __private int2* quo );
2492 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f32_v3f32_p0v3i32, )( float3 xx, float3 yy, __private int3* quo );
2493 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f32_v4f32_p0v4i32, )( float4 xx, float4 yy, __private int4* quo );
2494 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f32_v8f32_p0v8i32, )( float8 xx, float8 yy, __private int8* quo );
2495 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f32_v16f32_p0v16i32, )( float16 xx, float16 yy, __private int16* quo );
2496 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f32_f32_p3i32, )( float xx, float yy, __local int* quo );
2497 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f32_v2f32_p3v2i32, )( float2 xx, float2 yy, __local int2* quo );
2498 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f32_v3f32_p3v3i32, )( float3 xx, float3 yy, __local int3* quo );
2499 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f32_v4f32_p3v4i32, )( float4 xx, float4 yy, __local int4* quo );
2500 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f32_v8f32_p3v8i32, )( float8 xx, float8 yy, __local int8* quo );
2501 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f32_v16f32_p3v16i32, )( float16 xx, float16 yy, __local int16* quo );
2502 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2503 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f32_f32_p4i32, )( float xx, float yy, __generic int* quo );
2504 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f32_v2f32_p4v2i32, )( float2 xx, float2 yy, __generic int2* quo );
2505 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f32_v3f32_p4v3i32, )( float3 xx, float3 yy, __generic int3* quo );
2506 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f32_v4f32_p4v4i32, )( float4 xx, float4 yy, __generic int4* quo );
2507 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f32_v8f32_p4v8i32, )( float8 xx, float8 yy, __generic int8* quo );
2508 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f32_v16f32_p4v16i32, )( float16 xx, float16 yy, __generic int16* quo );
2509 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2510 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f16_f16_p1i32, )( half xx, half yy, __global int* quo );
2511 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f16_v2f16_p1v2i32, )( half2 xx, half2 yy, __global int2* quo );
2512 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f16_v3f16_p1v3i32, )( half3 xx, half3 yy, __global int3* quo );
2513 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f16_v4f16_p1v4i32, )( half4 xx, half4 yy, __global int4* quo );
2514 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f16_v8f16_p1v8i32, )( half8 xx, half8 yy, __global int8* quo );
2515 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f16_v16f16_p1v16i32, )( half16 xx, half16 yy, __global int16* quo );
2516 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f16_f16_p0i32, )( half xx, half yy, __private int* quo );
2517 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f16_v2f16_p0v2i32, )( half2 xx, half2 yy, __private int2* quo );
2518 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f16_v3f16_p0v3i32, )( half3 xx, half3 yy, __private int3* quo );
2519 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f16_v4f16_p0v4i32, )( half4 xx, half4 yy, __private int4* quo );
2520 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f16_v8f16_p0v8i32, )( half8 xx, half8 yy, __private int8* quo );
2521 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f16_v16f16_p0v16i32, )( half16 xx, half16 yy, __private int16* quo );
2522 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f16_f16_p3i32, )( half xx, half yy, __local int* quo );
2523 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f16_v2f16_p3v2i32, )( half2 xx, half2 yy, __local int2* quo );
2524 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f16_v3f16_p3v3i32, )( half3 xx, half3 yy, __local int3* quo );
2525 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f16_v4f16_p3v4i32, )( half4 xx, half4 yy, __local int4* quo );
2526 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f16_v8f16_p3v8i32, )( half8 xx, half8 yy, __local int8* quo );
2527 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f16_v16f16_p3v16i32, )( half16 xx, half16 yy, __local int16* quo );
2528 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2529 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f16_f16_p4i32, )( half xx, half yy, __generic int* quo );
2530 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f16_v2f16_p4v2i32, )( half2 xx, half2 yy, __generic int2* quo );
2531 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f16_v3f16_p4v3i32, )( half3 xx, half3 yy, __generic int3* quo );
2532 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f16_v4f16_p4v4i32, )( half4 xx, half4 yy, __generic int4* quo );
2533 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f16_v8f16_p4v8i32, )( half8 xx, half8 yy, __generic int8* quo );
2534 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f16_v16f16_p4v16i32, )( half16 xx, half16 yy, __generic int16* quo );
2535 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2536 #if defined(cl_khr_fp64)
2537 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f64_f64_p1i32, )( double xx, double yy, __global int* quo );
2538 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f64_v2f64_p1v2i32, )( double2 xx, double2 yy, __global int2* quo );
2539 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f64_v3f64_p1v3i32, )( double3 xx, double3 yy, __global int3* quo );
2540 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f64_v4f64_p1v4i32, )( double4 xx, double4 yy, __global int4* quo );
2541 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f64_v8f64_p1v8i32, )( double8 xx, double8 yy, __global int8* quo );
2542 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f64_v16f64_p1v16i32, )( double16 xx, double16 yy, __global int16* quo );
2543 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f64_f64_p0i32, )( double xx, double yy, __private int* quo );
2544 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f64_v2f64_p0v2i32, )( double2 xx, double2 yy, __private int2* quo );
2545 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f64_v3f64_p0v3i32, )( double3 xx, double3 yy, __private int3* quo );
2546 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f64_v4f64_p0v4i32, )( double4 xx, double4 yy, __private int4* quo );
2547 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f64_v8f64_p0v8i32, )( double8 xx, double8 yy, __private int8* quo );
2548 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f64_v16f64_p0v16i32, )( double16 xx, double16 yy, __private int16* quo );
2549 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f64_f64_p3i32, )( double xx, double yy, __local int* quo );
2550 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f64_v2f64_p3v2i32, )( double2 xx, double2 yy, __local int2* quo );
2551 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f64_v3f64_p3v3i32, )( double3 xx, double3 yy, __local int3* quo );
2552 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f64_v4f64_p3v4i32, )( double4 xx, double4 yy, __local int4* quo );
2553 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f64_v8f64_p3v8i32, )( double8 xx, double8 yy, __local int8* quo );
2554 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f64_v16f64_p3v16i32, )( double16 xx, double16 yy, __local int16* quo );
2555 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2556 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _f64_f64_p4i32, )( double xx, double yy, __generic int* quo );
2557 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v2f64_v2f64_p4v2i32, )( double2 xx, double2 yy, __generic int2* quo );
2558 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v3f64_v3f64_p4v3i32, )( double3 xx, double3 yy, __generic int3* quo );
2559 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v4f64_v4f64_p4v4i32, )( double4 xx, double4 yy, __generic int4* quo );
2560 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v8f64_v8f64_p4v8i32, )( double8 xx, double8 yy, __generic int8* quo );
2561 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(remquo, _v16f64_v16f64_p4v16i32, )( double16 xx, double16 yy, __generic int16* quo );
2562 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2563 #endif // defined(cl_khr_fp64)
2564 
2565 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _f32, )(float x );
2566 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v2f32, )(float2 x);
2567 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v3f32, )(float3 x);
2568 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v4f32, )(float4 x);
2569 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v8f32, )(float8 x);
2570 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v16f32, )(float16 x);
2571 #if defined(cl_khr_fp64)
2572 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _f64, )( double x );
2573 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v2f64, )(double2 x);
2574 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v3f64, )(double3 x);
2575 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v4f64, )(double4 x);
2576 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v8f64, )(double8 x);
2577 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v16f64, )(double16 x);
2578 #endif // defined(cl_khr_fp64)
2579 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _f16, )(half x );
2580 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v2f16, )(half2 x);
2581 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v3f16, )(half3 x);
2582 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v4f16, )(half4 x);
2583 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v8f16, )(half8 x);
2584 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rint, _v16f16, )(half16 x);
2585 
2586 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _f32_i32, )( float x, int n );
2587 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v2f32_v2i32, )(float2 x, int2 y);
2588 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v3f32_v3i32, )(float3 x, int3 y);
2589 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v4f32_v4i32, )(float4 x, int4 y);
2590 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v8f32_v8i32, )(float8 x, int8 y);
2591 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v16f32_v16i32, )(float16 x, int16 y);
2592 #if defined(cl_khr_fp64)
2593 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _f64_i32, )( double y, int x );
2594 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v2f64_v2i32, )(double2 x, int2 y);
2595 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v3f64_v3i32, )(double3 x, int3 y);
2596 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v4f64_v4i32, )(double4 x, int4 y);
2597 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v8f64_v8i32, )(double8 x, int8 y);
2598 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v16f64_v16i32, )(double16 x, int16 y);
2599 #endif // defined(cl_khr_fp64)
2600 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _f16_i32, )( half y, int x );
2601 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v2f16_v2i32, )(half2 x, int2 y);
2602 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v3f16_v3i32, )(half3 x, int3 y);
2603 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v4f16_v4i32, )(half4 x, int4 y);
2604 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v8f16_v8i32, )(half8 x, int8 y);
2605 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rootn, _v16f16_v16i32, )(half16 x, int16 y);
2606 
2607 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _f32, )( float x );
2608 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v2f32, )(float2 x);
2609 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v3f32, )(float3 x);
2610 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v4f32, )(float4 x);
2611 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v8f32, )(float8 x);
2612 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v16f32, )(float16 x);
2613 #if defined(cl_khr_fp64)
2614 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _f64, )( double x );
2615 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v2f64, )(double2 x);
2616 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v3f64, )(double3 x);
2617 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v4f64, )(double4 x);
2618 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v8f64, )(double8 x);
2619 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v16f64, )(double16 x);
2620 #endif // defined(cl_khr_fp64)
2621 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _f16, )( half x );
2622 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v2f16, )(half2 x);
2623 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v3f16, )(half3 x);
2624 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v4f16, )(half4 x);
2625 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v8f16, )(half8 x);
2626 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(round, _v16f16, )(half16 x);
2627 
2628 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _f32, )( float x );
2629 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v2f32, )(float2 x);
2630 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v3f32, )(float3 x);
2631 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v4f32, )(float4 x);
2632 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v8f32, )(float8 x);
2633 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v16f32, )(float16 x);
2634 #if defined(cl_khr_fp64)
2635 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _f64, )( double x );
2636 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v2f64, )(double2 x);
2637 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v3f64, )(double3 x);
2638 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v4f64, )(double4 x);
2639 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v8f64, )(double8 x);
2640 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v16f64, )(double16 x);
2641 #endif // defined(cl_khr_fp64)
2642 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _f16, )( half x );
2643 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v2f16, )(half2 x);
2644 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v3f16, )(half3 x);
2645 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v4f16, )(half4 x);
2646 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v8f16, )(half8 x);
2647 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(rsqrt, _v16f16, )(half16 x);
2648 
2649 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _f32, )( float x );
2650 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v2f32, )(float2 x);
2651 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v3f32, )(float3 x);
2652 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v4f32, )(float4 x);
2653 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v8f32, )(float8 x);
2654 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v16f32, )(float16 x);
2655 #if defined(cl_khr_fp64)
2656 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _f64, )( double x );
2657 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v2f64, )(double2 x);
2658 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v3f64, )(double3 x);
2659 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v4f64, )(double4 x);
2660 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v8f64, )(double8 x);
2661 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v16f64, )(double16 x);
2662 #endif // defined(cl_khr_fp64)
2663 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _f16, )( half x );
2664 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v2f16, )(half2 x);
2665 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v3f16, )(half3 x);
2666 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v4f16, )(half4 x);
2667 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v8f16, )(half8 x);
2668 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sin, _v16f16, )(half16 x);
2669 
2670 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f32_p0f32, )( float x, __private float* cosval );
2671 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f32_p1f32, )( float x, __global float* cosval );
2672 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f32_p3f32, )( float x, __local float* cosval );
2673 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f32_p0v2f32, )( float2 x, __private float2* cosval );
2674 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f32_p1v2f32, )( float2 x, __global float2* cosval );
2675 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f32_p3v2f32, )( float2 x, __local float2* cosval );
2676 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f32_p0v3f32, )( float3 x, __private float3* cosval );
2677 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f32_p1v3f32, )( float3 x, __global float3* cosval );
2678 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f32_p3v3f32, )( float3 x, __local float3* cosval );
2679 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f32_p0v4f32, )( float4 x, __private float4* cosval );
2680 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f32_p1v4f32, )( float4 x, __global float4* cosval );
2681 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f32_p3v4f32, )( float4 x, __local float4* cosval );
2682 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f32_p0v8f32, )( float8 x, __private float8* cosval );
2683 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f32_p1v8f32, )( float8 x, __global float8* cosval );
2684 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f32_p3v8f32, )( float8 x, __local float8* cosval );
2685 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f32_p0v16f32, )( float16 x, __private float16* cosval );
2686 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f32_p1v16f32, )( float16 x, __global float16* cosval );
2687 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f32_p3v16f32, )( float16 x, __local float16* cosval );
2688 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2689 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f32_p4f32, )( float x, __generic float* cosval );
2690 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f32_p4v2f32, )( float2 x, __generic float2* cosval );
2691 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f32_p4v3f32, )( float3 x, __generic float3* cosval );
2692 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f32_p4v4f32, )( float4 x, __generic float4* cosval );
2693 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f32_p4v8f32, )( float8 x, __generic float8* cosval );
2694 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f32_p4v16f32, )( float16 x, __generic float16* cosval );
2695 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2696 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f16_p0f16, )( half x, __private half* cosval );
2697 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f16_p1f16, )( half x, __global half* cosval );
2698 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f16_p3f16, )( half x, __local half* cosval );
2699 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f16_p0v2f16, )( half2 x, __private half2* cosval );
2700 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f16_p1v2f16, )( half2 x, __global half2* cosval );
2701 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f16_p3v2f16, )( half2 x, __local half2* cosval );
2702 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f16_p0v3f16, )( half3 x, __private half3* cosval );
2703 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f16_p1v3f16, )( half3 x, __global half3* cosval );
2704 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f16_p3v3f16, )( half3 x, __local half3* cosval );
2705 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f16_p0v4f16, )( half4 x, __private half4* cosval );
2706 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f16_p1v4f16, )( half4 x, __global half4* cosval );
2707 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f16_p3v4f16, )( half4 x, __local half4* cosval );
2708 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f16_p0v8f16, )( half8 x, __private half8* cosval );
2709 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f16_p1v8f16, )( half8 x, __global half8* cosval );
2710 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f16_p3v8f16, )( half8 x, __local half8* cosval );
2711 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f16_p0v16f16, )( half16 x, __private half16* cosval );
2712 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f16_p1v16f16, )( half16 x, __global half16* cosval );
2713 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f16_p3v16f16, )( half16 x, __local half16* cosval );
2714 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2715 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f16_p4f16, )( half x, __generic half* cosval );
2716 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f16_p4v2f16, )( half2 x, __generic half2* cosval );
2717 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f16_p4v3f16, )( half3 x, __generic half3* cosval );
2718 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f16_p4v4f16, )( half4 x, __generic half4* cosval );
2719 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f16_p4v8f16, )( half8 x, __generic half8* cosval );
2720 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f16_p4v16f16, )( half16 x, __generic half16* cosval );
2721 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2722 #if defined(cl_khr_fp64)
2723 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f64_p0f64, )( double x, __private double* cosval );
2724 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f64_p3f64, )( double x, __local double* cosval );
2725 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f64_p1f64, )( double x, __global double* cosval );
2726 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f64_p3f64, )( double x, __local double* cosval );
2727 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f64_p0v2f64, )( double2 x, __private double2* cosval );
2728 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f64_p1v2f64, )( double2 x, __global double2* cosval );
2729 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f64_p3v2f64, )( double2 x, __local double2* cosval );
2730 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f64_p0v3f64, )( double3 x, __private double3* cosval );
2731 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f64_p1v3f64, )( double3 x, __global double3* cosval );
2732 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f64_p3v3f64, )( double3 x, __local double3* cosval );
2733 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f64_p0v4f64, )( double4 x, __private double4* cosval );
2734 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f64_p1v4f64, )( double4 x, __global double4* cosval );
2735 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f64_p3v4f64, )( double4 x, __local double4* cosval );
2736 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f64_p0v8f64, )( double8 x, __private double8* cosval );
2737 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f64_p1v8f64, )( double8 x, __global double8* cosval );
2738 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f64_p3v8f64, )( double8 x, __local double8* cosval );
2739 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f64_p0v16f64, )( double16 x, __private double16* cosval );
2740 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f64_p1v16f64, )( double16 x, __global double16* cosval );
2741 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f64_p3v16f64, )( double16 x, __local double16* cosval );
2742 #if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2743 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _f64_p4f64, )( double x, __generic double* cosval );
2744 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v2f64_p4v2f64, )( double2 x, __generic double2* cosval );
2745 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v3f64_p4v3f64, )( double3 x, __generic double3* cosval );
2746 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v4f64_p4v4f64, )( double4 x, __generic double4* cosval );
2747 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v8f64_p4v8f64, )( double8 x, __generic double8* cosval );
2748 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sincos, _v16f32_p4v16f64, )( double16 x, __generic double16* cosval );
2749 #endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
2750 #endif // defined(cl_khr_fp64)
2751 
2752 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _f32, )( float x );
2753 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v2f32, )(float2 x);
2754 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v3f32, )(float3 x);
2755 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v4f32, )(float4 x);
2756 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v8f32, )(float8 x);
2757 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v16f32, )(float16 x);
2758 #if defined(cl_khr_fp64)
2759 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _f64, )( double x );
2760 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v2f64, )(double2 x);
2761 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v3f64, )(double3 x);
2762 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v4f64, )(double4 x);
2763 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v8f64, )(double8 x);
2764 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v16f64, )(double16 x);
2765 #endif // defined(cl_khr_fp64)
2766 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _f16, )( half x );
2767 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v2f16, )(half2 x);
2768 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v3f16, )(half3 x);
2769 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v4f16, )(half4 x);
2770 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v8f16, )(half8 x);
2771 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinh, _v16f16, )(half16 x);
2772 
2773 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _f32, )( float x );
2774 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v2f32, )(float2 x);
2775 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v3f32, )(float3 x);
2776 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v4f32, )(float4 x);
2777 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v8f32, )(float8 x);
2778 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v16f32, )(float16 x);
2779 #if defined(cl_khr_fp64)
2780 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _f64, )( double x );
2781 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v2f64, )(double2 x);
2782 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v3f64, )(double3 x);
2783 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v4f64, )(double4 x);
2784 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v8f64, )(double8 x);
2785 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v16f64, )(double16 x);
2786 #endif // defined(cl_khr_fp64)
2787 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _f16, )( half x );
2788 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v2f16, )(half2 x);
2789 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v3f16, )(half3 x);
2790 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v4f16, )(half4 x);
2791 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v8f16, )(half8 x);
2792 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sinpi, _v16f16, )(half16 x);
2793 
2794 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _f32, )( float x );
2795 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v2f32, )(float2 x);
2796 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v3f32, )(float3 x);
2797 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v4f32, )(float4 x);
2798 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v8f32, )(float8 x);
2799 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v16f32, )(float16 x);
2800 #if defined(cl_khr_fp64)
2801 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _f64, )( double x );
2802 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v2f64, )(double2 x);
2803 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v3f64, )(double3 x);
2804 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v4f64, )(double4 x);
2805 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v8f64, )(double8 x);
2806 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v16f64, )(double16 x);
2807 #endif // defined(cl_khr_fp64)
2808 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _f16, )( half x );
2809 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v2f16, )(half2 x);
2810 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v3f16, )(half3 x);
2811 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v4f16, )(half4 x);
2812 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v8f16, )(half8 x);
2813 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt, _v16f16, )(half16 x);
2814 
2815 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _f32, )( float a );
2816 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v2f32, )(float2 x);
2817 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v3f32, )(float3 x);
2818 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v4f32, )(float4 x);
2819 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v8f32, )(float8 x);
2820 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v16f32, )(float16 x);
2821 #ifdef cl_fp64_basic_ops
2822 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _f64, )( double x );
2823 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v2f64, )(double2 x);
2824 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v3f64, )(double3 x);
2825 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v4f64, )(double4 x);
2826 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v8f64, )(double8 x);
2827 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v16f64, )(double16 x);
2828 #endif // cl_fp64_basic_ops
2829 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _f16, )( half a );
2830 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v2f16, )(half2 x);
2831 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v3f16, )(half3 x);
2832 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v4f16, )(half4 x);
2833 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v8f16, )(half8 x);
2834 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(sqrt_cr, _v16f16, )(half16 x);
2835 
2836 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _f32, )( float x );
2837 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v2f32, )(float2 x);
2838 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v3f32, )(float3 x);
2839 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v4f32, )(float4 x);
2840 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v8f32, )(float8 x);
2841 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v16f32, )(float16 x);
2842 #if defined(cl_khr_fp64)
2843 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _f64, )( double x );
2844 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v2f64, )(double2 x);
2845 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v3f64, )(double3 x);
2846 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v4f64, )(double4 x);
2847 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v8f64, )(double8 x);
2848 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v16f64, )(double16 x);
2849 #endif // defined(cl_khr_fp64)
2850 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _f16, )( half x );
2851 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v2f16, )(half2 x);
2852 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v3f16, )(half3 x);
2853 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v4f16, )(half4 x);
2854 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v8f16, )(half8 x);
2855 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tan, _v16f16, )(half16 x);
2856 
2857 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _f32, )( float x );
2858 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v2f32, )(float2 x);
2859 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v3f32, )(float3 x);
2860 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v4f32, )(float4 x);
2861 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v8f32, )(float8 x);
2862 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v16f32, )(float16 x);
2863 #if defined(cl_khr_fp64)
2864 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _f64, )( double x );
2865 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v2f64, )(double2 x);
2866 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v3f64, )(double3 x);
2867 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v4f64, )(double4 x);
2868 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v8f64, )(double8 x);
2869 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v16f64, )(double16 x);
2870 #endif // defined(cl_khr_fp64)
2871 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _f16, )( half x );
2872 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v2f16, )(half2 x);
2873 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v3f16, )(half3 x);
2874 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v4f16, )(half4 x);
2875 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v8f16, )(half8 x);
2876 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanh, _v16f16, )(half16 x);
2877 
2878 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _f32, )( float x );
2879 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v2f32, )(float2 x);
2880 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v3f32, )(float3 x);
2881 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v4f32, )(float4 x);
2882 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v8f32, )(float8 x);
2883 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v16f32, )(float16 x);
2884 #if defined(cl_khr_fp64)
2885 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _f64, )( double x );
2886 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v2f64, )(double2 x);
2887 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v3f64, )(double3 x);
2888 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v4f64, )(double4 x);
2889 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v8f64, )(double8 x);
2890 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v16f64, )(double16 x);
2891 #endif // defined(cl_khr_fp64)
2892 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _f16, )( half x );
2893 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v2f16, )(half2 x);
2894 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v3f16, )(half3 x);
2895 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v4f16, )(half4 x);
2896 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v8f16, )(half8 x);
2897 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tanpi, _v16f16, )(half16 x);
2898 
2899 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _f32, )( float x );
2900 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v2f32, )(float2 x);
2901 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v3f32, )(float3 x);
2902 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v4f32, )(float4 x);
2903 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v8f32, )(float8 x);
2904 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v16f32, )(float16 x);
2905 #if defined(cl_khr_fp64)
2906 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _f64, )( double x );
2907 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v2f64, )(double2 x);
2908 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v3f64, )(double3 x);
2909 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v4f64, )(double4 x);
2910 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v8f64, )(double8 x);
2911 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v16f64, )(double16 x);
2912 #endif // defined(cl_khr_fp64)
2913 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _f16, )( half x );
2914 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v2f16, )(half2 x);
2915 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v3f16, )(half3 x);
2916 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v4f16, )(half4 x);
2917 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v8f16, )(half8 x);
2918 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(tgamma, _v16f16, )(half16 x);
2919 
2920 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _f32, )(float x );
2921 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v2f32, )(float2 x);
2922 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v3f32, )(float3 x);
2923 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v4f32, )(float4 x);
2924 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v8f32, )(float8 x);
2925 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v16f32, )(float16 x);
2926 #if defined(cl_khr_fp64)
2927 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _f64, )(double x );
2928 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v2f64, )(double2 x);
2929 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v3f64, )(double3 x);
2930 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v4f64, )(double4 x);
2931 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v8f64, )(double8 x);
2932 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v16f64, )(double16 x);
2933 #endif // defined(cl_khr_fp64)
2934 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _f16, )(half x );
2935 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v2f16, )(half2 x);
2936 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v3f16, )(half3 x);
2937 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v4f16, )(half4 x);
2938 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v8f16, )(half8 x);
2939 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(trunc, _v16f16, )(half16 x);
2940 
2941 //
2942 //  Native
2943 //        -native_cos,native_divide,native_exp,native_exp2,native_exp10,native_log,native_log2,
2944 //         native_log10,native_powr,native_recip,native_rsqrt,native_sin,native_sqrt,native_tan
2945 //
2946 
2947 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _f32, )(float x );
2948 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v2f32, )(float2 x);
2949 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v3f32, )(float3 x);
2950 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v4f32, )(float4 x);
2951 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v8f32, )(float8 x);
2952 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v16f32, )(float16 x);
2953 #if defined(cl_khr_fp64)
2954 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _f64, )( double x );
2955 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v2f64, )(double2 x);
2956 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v3f64, )(double3 x);
2957 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v4f64, )(double4 x);
2958 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v8f64, )(double8 x);
2959 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v16f64, )(double16 x);
2960 #endif // defined(cl_khr_fp64)
2961 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _f16, )(half x );
2962 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v2f16, )(half2 x);
2963 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v3f16, )(half3 x);
2964 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v4f16, )(half4 x);
2965 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v8f16, )(half8 x);
2966 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_cos, _v16f16, )(half16 x);
2967 
2968 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _f32_f32, )( float x, float y );
2969 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v2f32_v2f32, )(float2 x, float2 y);
2970 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v3f32_v3f32, )(float3 x, float3 y);
2971 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v4f32_v4f32, )(float4 x, float4 y);
2972 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v8f32_v8f32, )(float8 x, float8 y);
2973 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v16f32_v16f32, )(float16 x, float16 y);
2974 #if defined(cl_khr_fp64)
2975 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _f64_f64, )( double x, double y );
2976 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v2f64_v2f64, )(double2 x, double2 y);
2977 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v3f64_v3f64, )(double3 x, double3 y);
2978 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v4f64_v4f64, )(double4 x, double4 y);
2979 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v8f64_v8f64, )(double8 x, double8 y);
2980 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v16f64_v16f64, )(double16 x, double16 y);
2981 #endif // defined(cl_khr_fp64)
2982 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _f16_f16, )( half x, half y );
2983 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v2f16_v2f16, )(half2 x, half2 y);
2984 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v3f16_v3f16, )(half3 x, half3 y);
2985 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v4f16_v4f16, )(half4 x, half4 y);
2986 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v8f16_v8f16, )(half8 x, half8 y);
2987 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_divide, _v16f16_v16f16, )(half16 x, half16 y);
2988 
2989 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _f32, )( float x );
2990 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v2f32, )(float2 x);
2991 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v3f32, )(float3 x);
2992 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v4f32, )(float4 x);
2993 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v8f32, )(float8 x);
2994 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v16f32, )(float16 x);
2995 #if defined(cl_khr_fp64)
2996 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _f64, )( double x );
2997 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v2f64, )(double2 x);
2998 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v3f64, )(double3 x);
2999 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v4f64, )(double4 x);
3000 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v8f64, )(double8 x);
3001 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v16f64, )(double16 x);
3002 #endif // defined(cl_khr_fp64)
3003 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _f16, )( half x );
3004 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v2f16, )(half2 x);
3005 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v3f16, )(half3 x);
3006 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v4f16, )(half4 x);
3007 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v8f16, )(half8 x);
3008 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp, _v16f16, )(half16 x);
3009 
3010 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _f32, )(float x );
3011 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v2f32, )(float2 x);
3012 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v3f32, )(float3 x);
3013 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v4f32, )(float4 x);
3014 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v8f32, )(float8 x);
3015 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v16f32, )(float16 x);
3016 #if defined(cl_khr_fp64)
3017 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _f64, )( double x );
3018 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v2f64, )(double2 x);
3019 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v3f64, )(double3 x);
3020 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v4f64, )(double4 x);
3021 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v8f64, )(double8 x);
3022 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v16f64, )(double16 x);
3023 #endif // defined(cl_khr_fp64)
3024 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _f16, )(half x );
3025 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v2f16, )(half2 x);
3026 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v3f16, )(half3 x);
3027 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v4f16, )(half4 x);
3028 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v8f16, )(half8 x);
3029 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp2, _v16f16, )(half16 x);
3030 
3031 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _f32, )( float x );
3032 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v2f32, )(float2 x);
3033 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v3f32, )(float3 x);
3034 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v4f32, )(float4 x);
3035 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v8f32, )(float8 x);
3036 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v16f32, )(float16 x);
3037 #if defined(cl_khr_fp64)
3038 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _f64, )( double x );
3039 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v2f64, )(double2 x);
3040 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v3f64, )(double3 x);
3041 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v4f64, )(double4 x);
3042 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v8f64, )(double8 x);
3043 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v16f64, )(double16 x);
3044 #endif // defined(cl_khr_fp64)
3045 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _f16, )( half x );
3046 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v2f16, )(half2 x);
3047 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v3f16, )(half3 x);
3048 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v4f16, )(half4 x);
3049 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v8f16, )(half8 x);
3050 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_exp10, _v16f16, )(half16 x);
3051 
3052 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _f32, )( float x );
3053 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v2f32, )(float2 x);
3054 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v3f32, )(float3 x);
3055 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v4f32, )(float4 x);
3056 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v8f32, )(float8 x);
3057 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v16f32, )(float16 x);
3058 #if defined(cl_khr_fp64)
3059 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _f64, )( double x );
3060 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v2f64, )(double2 x);
3061 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v3f64, )(double3 x);
3062 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v4f64, )(double4 x);
3063 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v8f64, )(double8 x);
3064 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v16f64, )(double16 x);
3065 #endif // defined(cl_khr_fp64)
3066 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _f16, )( half x );
3067 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v2f16, )(half2 x);
3068 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v3f16, )(half3 x);
3069 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v4f16, )(half4 x);
3070 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v8f16, )(half8 x);
3071 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log, _v16f16, )(half16 x);
3072 
3073 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _f32, )(float x );
3074 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v2f32, )(float2 x);
3075 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v3f32, )(float3 x);
3076 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v4f32, )(float4 x);
3077 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v8f32, )(float8 x);
3078 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v16f32, )(float16 x);
3079 #if defined(cl_khr_fp64)
3080 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _f64, )( double x );
3081 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v2f64, )(double2 x);
3082 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v3f64, )(double3 x);
3083 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v4f64, )(double4 x);
3084 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v8f64, )(double8 x);
3085 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v16f64, )(double16 x);
3086 #endif // defined(cl_khr_fp64)
3087 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _f16, )(half x );
3088 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v2f16, )(half2 x);
3089 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v3f16, )(half3 x);
3090 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v4f16, )(half4 x);
3091 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v8f16, )(half8 x);
3092 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log2, _v16f16, )(half16 x);
3093 
3094 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _f32, )( float x );
3095 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v2f32, )(float2 x);
3096 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v3f32, )(float3 x);
3097 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v4f32, )(float4 x);
3098 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v8f32, )(float8 x);
3099 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v16f32, )(float16 x);
3100 #if defined(cl_khr_fp64)
3101 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _f64, )( double x );
3102 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v2f64, )(double2 x);
3103 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v3f64, )(double3 x);
3104 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v4f64, )(double4 x);
3105 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v8f64, )(double8 x);
3106 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v16f64, )(double16 x);
3107 #endif // defined(cl_khr_fp64)
3108 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _f16, )( half x );
3109 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v2f16, )(half2 x);
3110 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v3f16, )(half3 x);
3111 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v4f16, )(half4 x);
3112 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v8f16, )(half8 x);
3113 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_log10, _v16f16, )(half16 x);
3114 
3115 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _f32_f32, )(float x, float y);
3116 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v2f32_v2f32, )(float2 x, float2 y);
3117 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v3f32_v3f32, )(float3 x, float3 y);
3118 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v4f32_v4f32, )(float4 x, float4 y);
3119 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v8f32_v8f32, )(float8 x, float8 y);
3120 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v16f32_v16f32, )(float16 x, float16 y);
3121 #if defined(cl_khr_fp64)
3122 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _f64_f64, )( double x, double y );
3123 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v2f64_v2f64, )(double2 x, double2 y);
3124 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v3f64_v3f64, )(double3 x, double3 y);
3125 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v4f64_v4f64, )(double4 x, double4 y);
3126 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v8f64_v8f64, )(double8 x, double8 y);
3127 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v16f64_v16f64, )(double16 x, double16 y);
3128 #endif // defined(cl_khr_fp64)
3129 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _f16_f16, )(half x, half y);
3130 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v2f16_v2f16, )(half2 x, half2 y);
3131 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v3f16_v3f16, )(half3 x, half3 y);
3132 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v4f16_v4f16, )(half4 x, half4 y);
3133 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v8f16_v8f16, )(half8 x, half8 y);
3134 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_powr, _v16f16_v16f16, )(half16 x, half16 y);
3135 
3136 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _f32, )(float x );
3137 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v2f32, )(float2 x);
3138 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v3f32, )(float3 x);
3139 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v4f32, )(float4 x);
3140 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v8f32, )(float8 x);
3141 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v16f32, )(float16 x);
3142 #if defined(cl_khr_fp64)
3143 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _f64, )( double x );
3144 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v2f64, )(double2 x);
3145 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v3f64, )(double3 x);
3146 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v4f64, )(double4 x);
3147 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v8f64, )(double8 x);
3148 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v16f64, )(double16 x);
3149 #endif // defined(cl_khr_fp64)
3150 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _f16, )(half x );
3151 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v2f16, )(half2 x);
3152 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v3f16, )(half3 x);
3153 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v4f16, )(half4 x);
3154 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v8f16, )(half8 x);
3155 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_recip, _v16f16, )(half16 x);
3156 
3157 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _f32, )(float x );
3158 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v2f32, )(float2 x);
3159 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v3f32, )(float3 x);
3160 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v4f32, )(float4 x);
3161 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v8f32, )(float8 x);
3162 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v16f32, )(float16 x);
3163 #if defined(cl_khr_fp64)
3164 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _f64, )(double x );
3165 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v2f64, )(double2 x);
3166 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v3f64, )(double3 x);
3167 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v4f64, )(double4 x);
3168 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v8f64, )(double8 x);
3169 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v16f64, )(double16 x);
3170 #endif // defined(cl_khr_fp64)
3171 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _f16, )(half x );
3172 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v2f16, )(half2 x);
3173 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v3f16, )(half3 x);
3174 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v4f16, )(half4 x);
3175 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v8f16, )(half8 x);
3176 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_rsqrt, _v16f16, )(half16 x);
3177 
3178 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _f32, )(float x );
3179 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v2f32, )(float2 x);
3180 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v3f32, )(float3 x);
3181 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v4f32, )(float4 x);
3182 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v8f32, )(float8 x);
3183 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v16f32, )(float16 x);
3184 #if defined(cl_khr_fp64)
3185 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _f64, )( double x );
3186 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v2f64, )(double2 x);
3187 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v3f64, )(double3 x);
3188 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v4f64, )(double4 x);
3189 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v8f64, )(double8 x);
3190 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v16f64, )(double16 x);
3191 #endif // cl_khr_fp64
3192 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _f16, )(half x );
3193 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v2f16, )(half2 x);
3194 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v3f16, )(half3 x);
3195 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v4f16, )(half4 x);
3196 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v8f16, )(half8 x);
3197 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sin, _v16f16, )(half16 x);
3198 
3199 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _f32, )(float x );
3200 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v2f32, )(float2 x);
3201 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v3f32, )(float3 x);
3202 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v4f32, )(float4 x);
3203 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v8f32, )(float8 x);
3204 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v16f32, )(float16 x);
3205 #ifdef cl_fp64_basic_ops
3206 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _f64, )(double x );
3207 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v2f64, )(double2 x);
3208 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v3f64, )(double3 x);
3209 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v4f64, )(double4 x);
3210 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v8f64, )(double8 x);
3211 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v16f64, )(double16 x);
3212 #endif // cl_fp64_basic_ops
3213 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _f16, )(half x );
3214 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v2f16, )(half2 x);
3215 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v3f16, )(half3 x);
3216 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v4f16, )(half4 x);
3217 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v8f16, )(half8 x);
3218 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_sqrt, _v16f16, )(half16 x);
3219 
3220 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _f32, )(float x );
3221 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v2f32, )(float2 x);
3222 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v3f32, )(float3 x);
3223 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v4f32, )(float4 x);
3224 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v8f32, )(float8 x);
3225 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v16f32, )(float16 x);
3226 #if defined(cl_khr_fp64)
3227 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _f64, )( double x );
3228 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v2f64, )(double2 x);
3229 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v3f64, )(double3 x);
3230 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v4f64, )(double4 x);
3231 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v8f64, )(double8 x);
3232 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v16f64, )(double16 x);
3233 #endif // defined(cl_khr_fp64)
3234 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _f16, )(half x );
3235 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v2f16, )(half2 x);
3236 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v3f16, )(half3 x);
3237 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v4f16, )(half4 x);
3238 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v8f16, )(half8 x);
3239 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(native_tan, _v16f16, )(half16 x);
3240 
3241 //
3242 //  Relational
3243 //        -bitselect,select
3244 //
3245 
3246 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _i8_i8_i8, )( char a, char b, char c );
3247 char2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2i8_v2i8_v2i8, )(char2 x, char2 y, char2 z);
3248 char3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3i8_v3i8_v3i8, )(char3 x, char3 y, char3 z);
3249 char4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4i8_v4i8_v4i8, )(char4 x, char4 y, char4 z);
3250 char8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8i8_v8i8_v8i8, )(char8 x, char8 y, char8 z);
3251 char16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16i8_v16i8_v16i8, )(char16 x, char16 y, char16 z);
3252 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _i16_i16_i16, )( short a, short b, short c );
3253 short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2i16_v2i16_v2i16, )(short2 x, short2 y, short2 z);
3254 short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3i16_v3i16_v3i16, )(short3 x, short3 y, short3 z);
3255 short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4i16_v4i16_v4i16, )(short4 x, short4 y, short4 z);
3256 short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8i16_v8i16_v8i16, )(short8 x, short8 y, short8 z);
3257 short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16i16_v16i16_v16i16, )(short16 x, short16 y, short16 z);
3258 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _i32_i32_i32, )( int a, int b, int c );
3259 int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2i32_v2i32_v2i32, )(int2 x, int2 y, int2 z);
3260 int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3i32_v3i32_v3i32, )(int3 x, int3 y, int3 z);
3261 int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4i32_v4i32_v4i32, )(int4 x, int4 y, int4 z);
3262 int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8i32_v8i32_v8i32, )(int8 x, int8 y, int8 z);
3263 int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16i32_v16i32_v16i32, )(int16 x, int16 y, int16 z);
3264 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _i64_i64_i64, )( long a, long b, long c );
3265 long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2i64_v2i64_v2i64, )(long2 x, long2 y, long2 z);
3266 long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3i64_v3i64_v3i64, )(long3 x, long3 y, long3 z);
3267 long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4i64_v4i64_v4i64, )(long4 x, long4 y, long4 z);
3268 long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8i64_v8i64_v8i64, )(long8 x, long8 y, long8 z);
3269 long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16i64_v16i64_v16i64, )(long16 x, long16 y, long16 z);
3270 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _f32_f32_f32, )( float a, float b, float c );
3271 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2f32_v2f32_v2f32, )(float2 x, float2 y, float2 z);
3272 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3f32_v3f32_v3f32, )(float3 x, float3 y, float3 z);
3273 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4f32_v4f32_v4f32, )(float4 x, float4 y, float4 z);
3274 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8f32_v8f32_v8f32, )(float8 x, float8 y, float8 z);
3275 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16f32_v16f32_v16f32, )(float16 x, float16 y, float16 z);
3276 #if defined(cl_khr_fp64)
3277 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _f64_f64_f64, )( double a, double b, double c );
3278 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2f64_v2f64_v2f64, )(double2 x, double2 y, double2 z);
3279 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3f64_v3f64_v3f64, )(double3 x, double3 y, double3 z);
3280 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4f64_v4f64_v4f64, )(double4 x, double4 y, double4 z);
3281 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8f64_v8f64_v8f64, )(double8 x, double8 y, double8 z);
3282 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16f64_v16f64_v16f64, )(double16 x, double16 y, double16 z);
3283 #endif // defined(cl_khr_fp64)
3284 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _f16_f16_f16, )( half a, half b, half c );
3285 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v2f16_v2f16_v2f16, )(half2 x, half2 y, half2 z);
3286 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v3f16_v3f16_v3f16, )(half3 x, half3 y, half3 z);
3287 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v4f16_v4f16_v4f16, )(half4 x, half4 y, half4 z);
3288 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v8f16_v8f16_v8f16, )(half8 x, half8 y, half8 z);
3289 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(bitselect, _v16f16_v16f16_v16f16, )(half16 x, half16 y, half16 z);
3290 
3291 char SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _i8_i8_i8, )( char a, char b, char c );
3292 short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _i16_i16_i16, )( short a, short b, short c );
3293 int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _i32_i32_i32, )( int a, int b, int c );
3294 long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _i64_i64_i64, )( long a, long b, long c );
3295 
3296 float SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _f32_f32_i32, )( float a, float b, int c );
3297 float2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v2f32_v2f32_v2i32, )(float2 a, float2 b, int2 c);
3298 float3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v3f32_v3f32_v3i32, )(float3 a, float3 b, int3 c);
3299 float4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v4f32_v4f32_v4i32, )(float4 a, float4 b, int4 c);
3300 float8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v8f32_v8f32_v8i32, )(float8 a, float8 b, int8 c);
3301 float16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v16f32_v16f32_v16i32, )(float16 a, float16 b, int16 c);
3302 
3303 #if defined(cl_khr_fp64)
3304 double SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _f64_f64_i64, )( double a, double b, long c );
3305 double2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v2f64_v2f64_v2i64, )(double2 a, double2 b, long2 c);
3306 double3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v3f64_v3f64_v3i64, )(double3 a, double3 b, long3 c);
3307 double4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v4f64_v4f64_v4i64, )(double4 a, double4 b, long4 c);
3308 double8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v8f64_v8f64_v8i64, )(double8 a, double8 b, long8 c);
3309 double16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v16f64_v16f64_v16i64, )(double16 a, double16 b, long16 c);
3310 
3311 #endif // defined(cl_khr_fp64)
3312 
3313 #if defined(cl_khr_fp16)
3314 half SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _f16_f16_i16, )( half a, half b, short c );
3315 half2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v2f16_v2f16_v2i16, )(half2 a, half2 b, short2 c);
3316 half3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v3f16_v3f16_v3i16, )(half3 a, half3 b, short3 c);
3317 half4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v4f16_v4f16_v4i16, )(half4 a, half4 b, short4 c);
3318 half8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v8f16_v8f16_v8i16, )(half8 a, half8 b, short8 c);
3319 half16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(select, _v16f16_v16f16_v16i16, )(half16 a, half16 b, short16 c);
3320 
3321 #endif // defined(cl_khr_fp16)
3322 
3323 #endif // __SPIRV_MATH_H__
3324 
3325