Merge lp:~schnetter/pocl/main into lp:~pocl/pocl/trunk
- main
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 75 |
Proposed branch: | lp:~schnetter/pocl/main |
Merge into: | lp:~pocl/pocl/trunk |
Diff against target: |
3359 lines (+377/-1782) 7 files modified
include/_kernel.h (+258/-1039) lib/kernel/Makefile.am (+1/-1) lib/kernel/arm/Makefile.am (+1/-1) lib/kernel/sources.mk (+1/-2) lib/kernel/tce/Makefile.am (+1/-1) lib/kernel/templates.h (+114/-737) lib/kernel/x86_64/Makefile.am (+1/-1) |
To merge this branch: | bzr merge lp:~schnetter/pocl/main |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Pekka Jääskeläinen | Needs Fixing | ||
Review via email: mp+81503@code.launchpad.net |
Commit message
Description of the change
I have replaced many #ifdefs that test for cl_khr_int64 and cl_khr_fp64 with corresponding __IF_INT64 and __IF_FP64 macros to shorten the code.
Pekka Jääskeläinen (pekka-jaaskelainen) wrote : | # |
Erik Schnetter (schnetter) wrote : | # |
The dependency between double and long isn't introduced by this patch; this patch only simplifies the existing #ifdef statements, and adds a corresponding check (that could be removed again). Should I?
Clang has currently a problem, in that all 3 operands of the ?: operator need to have the same type to prevent an internal compiler error complaining about types in a binary (!) operator. My current solution for e.g. long ? double : double is to re-interpret the doubles as longs before calling the ?: operator, and to re-interpret them back to double afterwards. See e.g. lib/kernel/
Certain run-time functions that use only double in their signature thus also use long in their implementation, and these are currently only enabled if both double and long are supported.
Using long without double is not a problem.
Carlos Sánchez de La Lama (csanchezdll) wrote : | # |
Hi Erik,
in the select() it is clear both doubles are long are required (the prototype is
double select(double, double, long)
so it could not be otherwise). However, some calls require only doubles (for example, bitselect, all the trigonometric functions for double, ...) and those can be there even if the machine does not support 64-bit integers (longs).
Look for example at sin.cl; it is using BUILTIN_V_V template, and when I added the macros I changed the template so double versions are only defined if cl_khr_fp64 is defined. But AFAIU there is no real dependency with long there (please correct me if I am mistaken) so this should be done regardless of the cl_khr_int64 status.
BR
Carlos
Erik Schnetter (schnetter) wrote : | # |
Regarding select: This is just an example where the implementation needs to re-interpret a double as a long to circumvent a compiler problem that currently exists. I assume that this will go away in the (near) future. Maybe double max(double,double) is a better example -- this function does not depend on long in its signature, but its implementation currently does use long because it uses the ?: operator: Since (int ? double : double) doesn't work, it uses (long ? long : long) instead.
Regarding sin.cl: I agree. The #ifdef only checks whether double is available, and my patch doesn't change this, it uses only __IF_FP64 and not __IF_INT64.
- 80. By Erik Schnetter
-
Remove warning about "double" requiring "long".
Enable more run-time functions if double is supported but long is not. - 81. By Erik Schnetter
-
C files do not depend on templates.h.
templates.h is not a source file. - 82. By Erik Schnetter
-
Merge
- 83. By Erik Schnetter
-
Merge
- 84. By Erik Schnetter
-
Merge
- 85. By Erik Schnetter
-
Add templates.h to sources again
Preview Diff
1 | === modified file 'include/_kernel.h' |
2 | --- include/_kernel.h 2011-11-05 00:10:25 +0000 |
3 | +++ include/_kernel.h 2011-11-14 18:40:38 +0000 |
4 | @@ -61,7 +61,19 @@ |
5 | define the macro and the pragma is conditionally enabled. |
6 | */ |
7 | #ifdef cl_khr_fp64 |
8 | -#pragma OPENCL EXTENSION cl_khr_fp64: enable |
9 | +# pragma OPENCL EXTENSION cl_khr_fp64: enable |
10 | +#endif |
11 | + |
12 | +/* Define some feature macros to help write generic code */ |
13 | +#ifdef cl_khr_int64 |
14 | +# define __IF_INT64(x) x |
15 | +#else |
16 | +# define __IF_INT64(x) |
17 | +#endif |
18 | +#ifdef cl_khr_fp64 |
19 | +# define __IF_FP64(x) x |
20 | +#else |
21 | +# define __IF_FP64(x) |
22 | #endif |
23 | |
24 | #define __global __attribute__ ((address_space(3))) |
25 | @@ -135,6 +147,10 @@ |
26 | typedef ulong ulong4 __attribute__((__ext_vector_type__(4))); |
27 | typedef ulong ulong8 __attribute__((__ext_vector_type__(8))); |
28 | typedef ulong ulong16 __attribute__((__ext_vector_type__(16))); |
29 | +#else |
30 | +/* Disable datatype */ |
31 | +struct error_undefined_type_long; |
32 | +#define long struct error_undefined_type_long |
33 | #endif |
34 | |
35 | typedef float float2 __attribute__((__ext_vector_type__(2))); |
36 | @@ -149,6 +165,10 @@ |
37 | typedef double double4 __attribute__((__ext_vector_type__(4))); |
38 | typedef double double8 __attribute__((__ext_vector_type__(8))); |
39 | typedef double double16 __attribute__((__ext_vector_type__(16))); |
40 | +#else |
41 | +/* Disable datatype */ |
42 | +struct error_undefined_type_double; |
43 | +#define double struct error_undefined_type_double |
44 | #endif |
45 | |
46 | #if (__ADDRESS_BITS__ == 32) |
47 | @@ -294,589 +314,234 @@ |
48 | _CL_DECLARE_AS_TYPE_4(float) |
49 | |
50 | /* 8 bytes */ |
51 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
52 | -#define _CL_DECLARE_AS_TYPE_8(SRC) \ |
53 | - _CL_DECLARE_AS_TYPE(SRC, char8) \ |
54 | - _CL_DECLARE_AS_TYPE(SRC, uchar8) \ |
55 | - _CL_DECLARE_AS_TYPE(SRC, short4) \ |
56 | - _CL_DECLARE_AS_TYPE(SRC, ushort4) \ |
57 | - _CL_DECLARE_AS_TYPE(SRC, int2) \ |
58 | - _CL_DECLARE_AS_TYPE(SRC, uint2) \ |
59 | - _CL_DECLARE_AS_TYPE(SRC, long) \ |
60 | - _CL_DECLARE_AS_TYPE(SRC, ulong) \ |
61 | - _CL_DECLARE_AS_TYPE(SRC, float2) \ |
62 | - _CL_DECLARE_AS_TYPE(SRC, double) |
63 | -#elif defined(cl_khr_int64) |
64 | -#define _CL_DECLARE_AS_TYPE_8(SRC) \ |
65 | - _CL_DECLARE_AS_TYPE(SRC, char8) \ |
66 | - _CL_DECLARE_AS_TYPE(SRC, uchar8) \ |
67 | - _CL_DECLARE_AS_TYPE(SRC, short4) \ |
68 | - _CL_DECLARE_AS_TYPE(SRC, ushort4) \ |
69 | - _CL_DECLARE_AS_TYPE(SRC, int2) \ |
70 | - _CL_DECLARE_AS_TYPE(SRC, uint2) \ |
71 | - _CL_DECLARE_AS_TYPE(SRC, long) \ |
72 | - _CL_DECLARE_AS_TYPE(SRC, ulong) \ |
73 | - _CL_DECLARE_AS_TYPE(SRC, float2) |
74 | -#elif defined(cl_khr_fp64) |
75 | -#define _CL_DECLARE_AS_TYPE_8(SRC) \ |
76 | - _CL_DECLARE_AS_TYPE(SRC, char8) \ |
77 | - _CL_DECLARE_AS_TYPE(SRC, uchar8) \ |
78 | - _CL_DECLARE_AS_TYPE(SRC, short4) \ |
79 | - _CL_DECLARE_AS_TYPE(SRC, ushort4) \ |
80 | - _CL_DECLARE_AS_TYPE(SRC, int2) \ |
81 | - _CL_DECLARE_AS_TYPE(SRC, uint2) \ |
82 | - _CL_DECLARE_AS_TYPE(SRC, float2) \ |
83 | - _CL_DECLARE_AS_TYPE(SRC, double) |
84 | -#else |
85 | -#define _CL_DECLARE_AS_TYPE_8(SRC) \ |
86 | - _CL_DECLARE_AS_TYPE(SRC, char8) \ |
87 | - _CL_DECLARE_AS_TYPE(SRC, uchar8) \ |
88 | - _CL_DECLARE_AS_TYPE(SRC, short4) \ |
89 | - _CL_DECLARE_AS_TYPE(SRC, ushort4) \ |
90 | - _CL_DECLARE_AS_TYPE(SRC, int2) \ |
91 | - _CL_DECLARE_AS_TYPE(SRC, uint2) \ |
92 | - _CL_DECLARE_AS_TYPE(SRC, float2) |
93 | -#endif |
94 | +#define _CL_DECLARE_AS_TYPE_8(SRC) \ |
95 | + _CL_DECLARE_AS_TYPE(SRC, char8) \ |
96 | + _CL_DECLARE_AS_TYPE(SRC, uchar8) \ |
97 | + _CL_DECLARE_AS_TYPE(SRC, short4) \ |
98 | + _CL_DECLARE_AS_TYPE(SRC, ushort4) \ |
99 | + _CL_DECLARE_AS_TYPE(SRC, int2) \ |
100 | + _CL_DECLARE_AS_TYPE(SRC, uint2) \ |
101 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, long)) \ |
102 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, ulong)) \ |
103 | + _CL_DECLARE_AS_TYPE(SRC, float2) \ |
104 | + __IF_FP64(_CL_DECLARE_AS_TYPE(SRC, double)) |
105 | _CL_DECLARE_AS_TYPE_8(char8) |
106 | _CL_DECLARE_AS_TYPE_8(uchar8) |
107 | _CL_DECLARE_AS_TYPE_8(short4) |
108 | _CL_DECLARE_AS_TYPE_8(ushort4) |
109 | _CL_DECLARE_AS_TYPE_8(int2) |
110 | _CL_DECLARE_AS_TYPE_8(uint2) |
111 | -#ifdef cl_khr_int64 |
112 | -_CL_DECLARE_AS_TYPE_8(long) |
113 | -_CL_DECLARE_AS_TYPE_8(ulong) |
114 | -#endif |
115 | +__IF_INT64(_CL_DECLARE_AS_TYPE_8(long)) |
116 | +__IF_INT64(_CL_DECLARE_AS_TYPE_8(ulong)) |
117 | _CL_DECLARE_AS_TYPE_8(float2) |
118 | -#ifdef cl_khr_fp64 |
119 | -_CL_DECLARE_AS_TYPE_8(double) |
120 | -#endif |
121 | +__IF_FP64(_CL_DECLARE_AS_TYPE_8(double)) |
122 | |
123 | /* 16 bytes */ |
124 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
125 | -#define _CL_DECLARE_AS_TYPE_16(SRC) \ |
126 | - _CL_DECLARE_AS_TYPE(SRC, char16) \ |
127 | - _CL_DECLARE_AS_TYPE(SRC, uchar16) \ |
128 | - _CL_DECLARE_AS_TYPE(SRC, short8) \ |
129 | - _CL_DECLARE_AS_TYPE(SRC, ushort8) \ |
130 | - _CL_DECLARE_AS_TYPE(SRC, int4) \ |
131 | - _CL_DECLARE_AS_TYPE(SRC, uint4) \ |
132 | - _CL_DECLARE_AS_TYPE(SRC, long2) \ |
133 | - _CL_DECLARE_AS_TYPE(SRC, ulong2) \ |
134 | - _CL_DECLARE_AS_TYPE(SRC, float4) \ |
135 | - _CL_DECLARE_AS_TYPE(SRC, double2) |
136 | -#elif defined(cl_khr_int64) |
137 | -#define _CL_DECLARE_AS_TYPE_16(SRC) \ |
138 | - _CL_DECLARE_AS_TYPE(SRC, char16) \ |
139 | - _CL_DECLARE_AS_TYPE(SRC, uchar16) \ |
140 | - _CL_DECLARE_AS_TYPE(SRC, short8) \ |
141 | - _CL_DECLARE_AS_TYPE(SRC, ushort8) \ |
142 | - _CL_DECLARE_AS_TYPE(SRC, int4) \ |
143 | - _CL_DECLARE_AS_TYPE(SRC, uint4) \ |
144 | - _CL_DECLARE_AS_TYPE(SRC, long2) \ |
145 | - _CL_DECLARE_AS_TYPE(SRC, ulong2) \ |
146 | - _CL_DECLARE_AS_TYPE(SRC, float4) |
147 | -#elif defined(cl_khr_fp64) |
148 | -#define _CL_DECLARE_AS_TYPE_16(SRC) \ |
149 | - _CL_DECLARE_AS_TYPE(SRC, char16) \ |
150 | - _CL_DECLARE_AS_TYPE(SRC, uchar16) \ |
151 | - _CL_DECLARE_AS_TYPE(SRC, short8) \ |
152 | - _CL_DECLARE_AS_TYPE(SRC, ushort8) \ |
153 | - _CL_DECLARE_AS_TYPE(SRC, int4) \ |
154 | - _CL_DECLARE_AS_TYPE(SRC, uint4) \ |
155 | - _CL_DECLARE_AS_TYPE(SRC, float4) \ |
156 | - _CL_DECLARE_AS_TYPE(SRC, double2) |
157 | -#else |
158 | -#define _CL_DECLARE_AS_TYPE_16(SRC) \ |
159 | - _CL_DECLARE_AS_TYPE(SRC, char16) \ |
160 | - _CL_DECLARE_AS_TYPE(SRC, uchar16) \ |
161 | - _CL_DECLARE_AS_TYPE(SRC, short8) \ |
162 | - _CL_DECLARE_AS_TYPE(SRC, ushort8) \ |
163 | - _CL_DECLARE_AS_TYPE(SRC, int4) \ |
164 | - _CL_DECLARE_AS_TYPE(SRC, uint4) \ |
165 | - _CL_DECLARE_AS_TYPE(SRC, float4) |
166 | -#endif |
167 | +#define _CL_DECLARE_AS_TYPE_16(SRC) \ |
168 | + _CL_DECLARE_AS_TYPE(SRC, char16) \ |
169 | + _CL_DECLARE_AS_TYPE(SRC, uchar16) \ |
170 | + _CL_DECLARE_AS_TYPE(SRC, short8) \ |
171 | + _CL_DECLARE_AS_TYPE(SRC, ushort8) \ |
172 | + _CL_DECLARE_AS_TYPE(SRC, int4) \ |
173 | + _CL_DECLARE_AS_TYPE(SRC, uint4) \ |
174 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, long2)) \ |
175 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, ulong2)) \ |
176 | + _CL_DECLARE_AS_TYPE(SRC, float4) \ |
177 | + __IF_FP64(_CL_DECLARE_AS_TYPE(SRC, double2)) |
178 | _CL_DECLARE_AS_TYPE_16(char16) |
179 | _CL_DECLARE_AS_TYPE_16(uchar16) |
180 | _CL_DECLARE_AS_TYPE_16(short8) |
181 | _CL_DECLARE_AS_TYPE_16(ushort8) |
182 | _CL_DECLARE_AS_TYPE_16(int4) |
183 | _CL_DECLARE_AS_TYPE_16(uint4) |
184 | -#ifdef cl_khr_int64 |
185 | -_CL_DECLARE_AS_TYPE_16(long2) |
186 | -_CL_DECLARE_AS_TYPE_16(ulong2) |
187 | -#endif |
188 | +__IF_INT64(_CL_DECLARE_AS_TYPE_16(long2)) |
189 | +__IF_INT64(_CL_DECLARE_AS_TYPE_16(ulong2)) |
190 | _CL_DECLARE_AS_TYPE_16(float4) |
191 | -#ifdef cl_khr_fp64 |
192 | -_CL_DECLARE_AS_TYPE_16(double2) |
193 | -#endif |
194 | +__IF_FP64(_CL_DECLARE_AS_TYPE_16(double2)) |
195 | |
196 | /* 32 bytes */ |
197 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
198 | -#define _CL_DECLARE_AS_TYPE_32(SRC) \ |
199 | - _CL_DECLARE_AS_TYPE(SRC, short16) \ |
200 | - _CL_DECLARE_AS_TYPE(SRC, ushort16) \ |
201 | - _CL_DECLARE_AS_TYPE(SRC, int8) \ |
202 | - _CL_DECLARE_AS_TYPE(SRC, uint8) \ |
203 | - _CL_DECLARE_AS_TYPE(SRC, long4) \ |
204 | - _CL_DECLARE_AS_TYPE(SRC, ulong4) \ |
205 | - _CL_DECLARE_AS_TYPE(SRC, float8) \ |
206 | - _CL_DECLARE_AS_TYPE(SRC, double4) |
207 | -#elif defined(cl_khr_int64) |
208 | -#define _CL_DECLARE_AS_TYPE_32(SRC) \ |
209 | - _CL_DECLARE_AS_TYPE(SRC, short16) \ |
210 | - _CL_DECLARE_AS_TYPE(SRC, ushort16) \ |
211 | - _CL_DECLARE_AS_TYPE(SRC, int8) \ |
212 | - _CL_DECLARE_AS_TYPE(SRC, uint8) \ |
213 | - _CL_DECLARE_AS_TYPE(SRC, long4) \ |
214 | - _CL_DECLARE_AS_TYPE(SRC, ulong4) \ |
215 | - _CL_DECLARE_AS_TYPE(SRC, float8) |
216 | -#elif defined(cl_khr_fp64) |
217 | -#define _CL_DECLARE_AS_TYPE_32(SRC) \ |
218 | - _CL_DECLARE_AS_TYPE(SRC, short16) \ |
219 | - _CL_DECLARE_AS_TYPE(SRC, ushort16) \ |
220 | - _CL_DECLARE_AS_TYPE(SRC, int8) \ |
221 | - _CL_DECLARE_AS_TYPE(SRC, uint8) \ |
222 | - _CL_DECLARE_AS_TYPE(SRC, float8) \ |
223 | - _CL_DECLARE_AS_TYPE(SRC, double4) |
224 | -#else |
225 | -#define _CL_DECLARE_AS_TYPE_32(SRC) \ |
226 | - _CL_DECLARE_AS_TYPE(SRC, short16) \ |
227 | - _CL_DECLARE_AS_TYPE(SRC, ushort16) \ |
228 | - _CL_DECLARE_AS_TYPE(SRC, int8) \ |
229 | - _CL_DECLARE_AS_TYPE(SRC, uint8) \ |
230 | - _CL_DECLARE_AS_TYPE(SRC, float8) |
231 | -#endif |
232 | +#define _CL_DECLARE_AS_TYPE_32(SRC) \ |
233 | + _CL_DECLARE_AS_TYPE(SRC, short16) \ |
234 | + _CL_DECLARE_AS_TYPE(SRC, ushort16) \ |
235 | + _CL_DECLARE_AS_TYPE(SRC, int8) \ |
236 | + _CL_DECLARE_AS_TYPE(SRC, uint8) \ |
237 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, long4)) \ |
238 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, ulong4)) \ |
239 | + _CL_DECLARE_AS_TYPE(SRC, float8) \ |
240 | + __IF_FP64(_CL_DECLARE_AS_TYPE(SRC, double4)) |
241 | _CL_DECLARE_AS_TYPE_32(short16) |
242 | _CL_DECLARE_AS_TYPE_32(ushort16) |
243 | _CL_DECLARE_AS_TYPE_32(int8) |
244 | _CL_DECLARE_AS_TYPE_32(uint8) |
245 | -#ifdef cl_khr_int64 |
246 | -_CL_DECLARE_AS_TYPE_32(long4) |
247 | -_CL_DECLARE_AS_TYPE_32(ulong4) |
248 | -#endif |
249 | +__IF_INT64(_CL_DECLARE_AS_TYPE_32(long4)) |
250 | +__IF_INT64(_CL_DECLARE_AS_TYPE_32(ulong4)) |
251 | _CL_DECLARE_AS_TYPE_32(float8) |
252 | -#ifdef cl_khr_fp64 |
253 | -_CL_DECLARE_AS_TYPE_32(double4) |
254 | -#endif |
255 | +__IF_FP64(_CL_DECLARE_AS_TYPE_32(double4)) |
256 | |
257 | /* 64 bytes */ |
258 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
259 | -#define _CL_DECLARE_AS_TYPE_64(SRC) \ |
260 | - _CL_DECLARE_AS_TYPE(SRC, int16) \ |
261 | - _CL_DECLARE_AS_TYPE(SRC, uint16) \ |
262 | - _CL_DECLARE_AS_TYPE(SRC, long8) \ |
263 | - _CL_DECLARE_AS_TYPE(SRC, ulong8) \ |
264 | - _CL_DECLARE_AS_TYPE(SRC, float16) \ |
265 | - _CL_DECLARE_AS_TYPE(SRC, double8) |
266 | -#elif defined(cl_khr_int64) |
267 | -#define _CL_DECLARE_AS_TYPE_64(SRC) \ |
268 | - _CL_DECLARE_AS_TYPE(SRC, int16) \ |
269 | - _CL_DECLARE_AS_TYPE(SRC, uint16) \ |
270 | - _CL_DECLARE_AS_TYPE(SRC, long8) \ |
271 | - _CL_DECLARE_AS_TYPE(SRC, ulong8) \ |
272 | - _CL_DECLARE_AS_TYPE(SRC, float16) |
273 | -#elif defined(cl_khr_fp64) |
274 | -#define _CL_DECLARE_AS_TYPE_64(SRC) \ |
275 | - _CL_DECLARE_AS_TYPE(SRC, int16) \ |
276 | - _CL_DECLARE_AS_TYPE(SRC, uint16) \ |
277 | - _CL_DECLARE_AS_TYPE(SRC, float16) \ |
278 | - _CL_DECLARE_AS_TYPE(SRC, double8) |
279 | -#else |
280 | -#define _CL_DECLARE_AS_TYPE_64(SRC) \ |
281 | - _CL_DECLARE_AS_TYPE(SRC, int16) \ |
282 | - _CL_DECLARE_AS_TYPE(SRC, uint16) \ |
283 | - _CL_DECLARE_AS_TYPE(SRC, float16) |
284 | -#endif |
285 | +#define _CL_DECLARE_AS_TYPE_64(SRC) \ |
286 | + _CL_DECLARE_AS_TYPE(SRC, int16) \ |
287 | + _CL_DECLARE_AS_TYPE(SRC, uint16) \ |
288 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, long8)) \ |
289 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, ulong8)) \ |
290 | + _CL_DECLARE_AS_TYPE(SRC, float16) \ |
291 | + __IF_FP64(_CL_DECLARE_AS_TYPE(SRC, double8)) |
292 | _CL_DECLARE_AS_TYPE_64(int16) |
293 | _CL_DECLARE_AS_TYPE_64(uint16) |
294 | -#ifdef cl_khr_int64 |
295 | -_CL_DECLARE_AS_TYPE_64(long8) |
296 | -_CL_DECLARE_AS_TYPE_64(ulong8) |
297 | -#endif |
298 | +__IF_INT64(_CL_DECLARE_AS_TYPE_64(long8)) |
299 | +__IF_INT64(_CL_DECLARE_AS_TYPE_64(ulong8)) |
300 | _CL_DECLARE_AS_TYPE_64(float16) |
301 | -#ifdef cl_khr_fp64 |
302 | -_CL_DECLARE_AS_TYPE_64(double8) |
303 | -#endif |
304 | +__IF_FP64(_CL_DECLARE_AS_TYPE_64(double8)) |
305 | |
306 | /* 128 bytes */ |
307 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
308 | -#define _CL_DECLARE_AS_TYPE_128(SRC) \ |
309 | - _CL_DECLARE_AS_TYPE(SRC, long16) \ |
310 | - _CL_DECLARE_AS_TYPE(SRC, ulong16) \ |
311 | - _CL_DECLARE_AS_TYPE(SRC, double16) |
312 | -#elif defined(cl_khr_int64) |
313 | -#define _CL_DECLARE_AS_TYPE_128(SRC) \ |
314 | - _CL_DECLARE_AS_TYPE(SRC, long16) \ |
315 | - _CL_DECLARE_AS_TYPE(SRC, ulong16) |
316 | -#elif defined(cl_khr_fp64) |
317 | -#define _CL_DECLARE_AS_TYPE_128(SRC) \ |
318 | - _CL_DECLARE_AS_TYPE(SRC, double16) |
319 | -#endif |
320 | -#ifdef cl_khr_int64 |
321 | -_CL_DECLARE_AS_TYPE_128(long16) |
322 | -_CL_DECLARE_AS_TYPE_128(ulong16) |
323 | -#endif |
324 | -#ifdef cl_khr_fp64 |
325 | -_CL_DECLARE_AS_TYPE_128(double16) |
326 | -#endif |
327 | +#define _CL_DECLARE_AS_TYPE_128(SRC) \ |
328 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, long16)) \ |
329 | + __IF_INT64(_CL_DECLARE_AS_TYPE(SRC, ulong16)) \ |
330 | + __IF_FP64(_CL_DECLARE_AS_TYPE(SRC, double16)) |
331 | +__IF_INT64(_CL_DECLARE_AS_TYPE_128(long16)) |
332 | +__IF_INT64(_CL_DECLARE_AS_TYPE_128(ulong16)) |
333 | +__IF_FP64(_CL_DECLARE_AS_TYPE_128(double16)) |
334 | |
335 | #define _CL_DECLARE_CONVERT_TYPE(SRC, DST) \ |
336 | DST _cl_overloadable convert_##DST(SRC a); |
337 | |
338 | /* 1 element */ |
339 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
340 | -#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
341 | - _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
342 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
343 | - _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
344 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
345 | - _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
346 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
347 | - _CL_DECLARE_CONVERT_TYPE(SRC, long) \ |
348 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong) \ |
349 | - _CL_DECLARE_CONVERT_TYPE(SRC, float) \ |
350 | - _CL_DECLARE_CONVERT_TYPE(SRC, double) |
351 | -#elif defined(cl_khr_int64) |
352 | -#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
353 | - _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
354 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
355 | - _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
356 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
357 | - _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
358 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
359 | - _CL_DECLARE_CONVERT_TYPE(SRC, long) \ |
360 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong) \ |
361 | - _CL_DECLARE_CONVERT_TYPE(SRC, float) |
362 | -#elif defined(cl_khr_fp64) |
363 | -#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
364 | - _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
365 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
366 | - _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
367 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
368 | - _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
369 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
370 | - _CL_DECLARE_CONVERT_TYPE(SRC, float) \ |
371 | - _CL_DECLARE_CONVERT_TYPE(SRC, double) |
372 | -#else |
373 | -#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
374 | - _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
375 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
376 | - _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
377 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
378 | - _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
379 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
380 | - _CL_DECLARE_CONVERT_TYPE(SRC, float) |
381 | -#endif |
382 | +#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
383 | + _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
384 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
385 | + _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
386 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
387 | + _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
388 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
389 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long)) \ |
390 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong)) \ |
391 | + _CL_DECLARE_CONVERT_TYPE(SRC, float) \ |
392 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double)) |
393 | _CL_DECLARE_CONVERT_TYPE_1(char) |
394 | _CL_DECLARE_CONVERT_TYPE_1(uchar) |
395 | _CL_DECLARE_CONVERT_TYPE_1(short) |
396 | _CL_DECLARE_CONVERT_TYPE_1(ushort) |
397 | _CL_DECLARE_CONVERT_TYPE_1(int) |
398 | _CL_DECLARE_CONVERT_TYPE_1(uint) |
399 | -#ifdef cl_khr_int64 |
400 | -_CL_DECLARE_CONVERT_TYPE_1(long) |
401 | -_CL_DECLARE_CONVERT_TYPE_1(ulong) |
402 | -#endif |
403 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_1(long)) |
404 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_1(ulong)) |
405 | _CL_DECLARE_CONVERT_TYPE_1(float) |
406 | -#ifdef cl_khr_fp64 |
407 | -_CL_DECLARE_CONVERT_TYPE_1(double) |
408 | -#endif |
409 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_1(double)) |
410 | |
411 | /* 2 elements */ |
412 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
413 | -#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
414 | - _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
415 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
416 | - _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
417 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
418 | - _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
419 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
420 | - _CL_DECLARE_CONVERT_TYPE(SRC, long2) \ |
421 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong2) \ |
422 | - _CL_DECLARE_CONVERT_TYPE(SRC, float2) \ |
423 | - _CL_DECLARE_CONVERT_TYPE(SRC, double2) |
424 | -#elif defined(cl_khr_int64) |
425 | -#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
426 | - _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
427 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
428 | - _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
429 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
430 | - _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
431 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
432 | - _CL_DECLARE_CONVERT_TYPE(SRC, long2) \ |
433 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong2) \ |
434 | - _CL_DECLARE_CONVERT_TYPE(SRC, float2) |
435 | -#elif defined(cl_khr_fp64) |
436 | -#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
437 | - _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
438 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
439 | - _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
440 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
441 | - _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
442 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
443 | - _CL_DECLARE_CONVERT_TYPE(SRC, float2) \ |
444 | - _CL_DECLARE_CONVERT_TYPE(SRC, double2) |
445 | -#else |
446 | -#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
447 | - _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
448 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
449 | - _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
450 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
451 | - _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
452 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
453 | - _CL_DECLARE_CONVERT_TYPE(SRC, float2) |
454 | -#endif |
455 | +#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
456 | + _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
457 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
458 | + _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
459 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
460 | + _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
461 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
462 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long2)) \ |
463 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong2)) \ |
464 | + _CL_DECLARE_CONVERT_TYPE(SRC, float2) \ |
465 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double2)) |
466 | _CL_DECLARE_CONVERT_TYPE_2(char2) |
467 | _CL_DECLARE_CONVERT_TYPE_2(uchar2) |
468 | _CL_DECLARE_CONVERT_TYPE_2(short2) |
469 | _CL_DECLARE_CONVERT_TYPE_2(ushort2) |
470 | _CL_DECLARE_CONVERT_TYPE_2(int2) |
471 | _CL_DECLARE_CONVERT_TYPE_2(uint2) |
472 | -#ifdef cl_khr_int64 |
473 | -_CL_DECLARE_CONVERT_TYPE_2(long2) |
474 | -_CL_DECLARE_CONVERT_TYPE_2(ulong2) |
475 | -#endif |
476 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_2(long2)) |
477 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_2(ulong2)) |
478 | _CL_DECLARE_CONVERT_TYPE_2(float2) |
479 | -#ifdef cl_khr_fp64 |
480 | -_CL_DECLARE_CONVERT_TYPE_2(double2) |
481 | -#endif |
482 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_2(double2)) |
483 | |
484 | /* 3 elements */ |
485 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
486 | -#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
487 | - _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
488 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
489 | - _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
490 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
491 | - _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
492 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
493 | - _CL_DECLARE_CONVERT_TYPE(SRC, long3) \ |
494 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong3) \ |
495 | - _CL_DECLARE_CONVERT_TYPE(SRC, float3) \ |
496 | - _CL_DECLARE_CONVERT_TYPE(SRC, double3) |
497 | -#elif defined(cl_khr_int64) |
498 | -#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
499 | - _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
500 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
501 | - _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
502 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
503 | - _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
504 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
505 | - _CL_DECLARE_CONVERT_TYPE(SRC, long3) \ |
506 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong3) \ |
507 | - _CL_DECLARE_CONVERT_TYPE(SRC, float3) |
508 | -#elif defined(cl_khr_fp64) |
509 | -#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
510 | - _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
511 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
512 | - _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
513 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
514 | - _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
515 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
516 | - _CL_DECLARE_CONVERT_TYPE(SRC, float3) \ |
517 | - _CL_DECLARE_CONVERT_TYPE(SRC, double3) |
518 | -#else |
519 | -#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
520 | - _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
521 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
522 | - _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
523 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
524 | - _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
525 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
526 | - _CL_DECLARE_CONVERT_TYPE(SRC, float3) |
527 | -#endif |
528 | +#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
529 | + _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
530 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
531 | + _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
532 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
533 | + _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
534 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
535 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long3)) \ |
536 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong3)) \ |
537 | + _CL_DECLARE_CONVERT_TYPE(SRC, float3) \ |
538 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double3)) |
539 | _CL_DECLARE_CONVERT_TYPE_3(char3) |
540 | _CL_DECLARE_CONVERT_TYPE_3(uchar3) |
541 | _CL_DECLARE_CONVERT_TYPE_3(short3) |
542 | _CL_DECLARE_CONVERT_TYPE_3(ushort3) |
543 | _CL_DECLARE_CONVERT_TYPE_3(int3) |
544 | _CL_DECLARE_CONVERT_TYPE_3(uint3) |
545 | -#ifdef cl_khr_int64 |
546 | -_CL_DECLARE_CONVERT_TYPE_3(long3) |
547 | -_CL_DECLARE_CONVERT_TYPE_3(ulong3) |
548 | -#endif |
549 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_3(long3)) |
550 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_3(ulong3)) |
551 | _CL_DECLARE_CONVERT_TYPE_3(float3) |
552 | -#ifdef cl_khr_fp64 |
553 | -_CL_DECLARE_CONVERT_TYPE_3(double3) |
554 | -#endif |
555 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_3(double3)) |
556 | |
557 | /* 4 elements */ |
558 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
559 | -#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
560 | - _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
561 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
562 | - _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
563 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
564 | - _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
565 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
566 | - _CL_DECLARE_CONVERT_TYPE(SRC, long4) \ |
567 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong4) \ |
568 | - _CL_DECLARE_CONVERT_TYPE(SRC, float4) \ |
569 | - _CL_DECLARE_CONVERT_TYPE(SRC, double4) |
570 | -#elif defined(cl_khr_int64) |
571 | -#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
572 | - _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
573 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
574 | - _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
575 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
576 | - _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
577 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
578 | - _CL_DECLARE_CONVERT_TYPE(SRC, long4) \ |
579 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong4) \ |
580 | - _CL_DECLARE_CONVERT_TYPE(SRC, float4) |
581 | -#elif defined(cl_khr_fp64) |
582 | -#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
583 | - _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
584 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
585 | - _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
586 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
587 | - _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
588 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
589 | - _CL_DECLARE_CONVERT_TYPE(SRC, float4) \ |
590 | - _CL_DECLARE_CONVERT_TYPE(SRC, double4) |
591 | -#else |
592 | -#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
593 | - _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
594 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
595 | - _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
596 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
597 | - _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
598 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
599 | - _CL_DECLARE_CONVERT_TYPE(SRC, float4) |
600 | -#endif |
601 | +#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
602 | + _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
603 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
604 | + _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
605 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
606 | + _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
607 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
608 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long4)) \ |
609 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong4)) \ |
610 | + _CL_DECLARE_CONVERT_TYPE(SRC, float4) \ |
611 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double4)) |
612 | _CL_DECLARE_CONVERT_TYPE_4(char4) |
613 | _CL_DECLARE_CONVERT_TYPE_4(uchar4) |
614 | _CL_DECLARE_CONVERT_TYPE_4(short4) |
615 | _CL_DECLARE_CONVERT_TYPE_4(ushort4) |
616 | _CL_DECLARE_CONVERT_TYPE_4(int4) |
617 | _CL_DECLARE_CONVERT_TYPE_4(uint4) |
618 | -#ifdef cl_khr_int64 |
619 | -_CL_DECLARE_CONVERT_TYPE_4(long4) |
620 | -_CL_DECLARE_CONVERT_TYPE_4(ulong4) |
621 | -#endif |
622 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_4(long4)) |
623 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_4(ulong4)) |
624 | _CL_DECLARE_CONVERT_TYPE_4(float4) |
625 | -#ifdef cl_khr_fp64 |
626 | -_CL_DECLARE_CONVERT_TYPE_4(double4) |
627 | -#endif |
628 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_4(double4)) |
629 | |
630 | /* 8 elements */ |
631 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
632 | -#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
633 | - _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
634 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
635 | - _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
636 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
637 | - _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
638 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
639 | - _CL_DECLARE_CONVERT_TYPE(SRC, long8) \ |
640 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong8) \ |
641 | - _CL_DECLARE_CONVERT_TYPE(SRC, float8) \ |
642 | - _CL_DECLARE_CONVERT_TYPE(SRC, double8) |
643 | -#elif defined(cl_khr_int64) |
644 | -#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
645 | - _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
646 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
647 | - _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
648 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
649 | - _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
650 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
651 | - _CL_DECLARE_CONVERT_TYPE(SRC, long8) \ |
652 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong8) \ |
653 | - _CL_DECLARE_CONVERT_TYPE(SRC, float8) |
654 | -#elif defined(cl_khr_fp64) |
655 | -#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
656 | - _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
657 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
658 | - _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
659 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
660 | - _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
661 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
662 | - _CL_DECLARE_CONVERT_TYPE(SRC, float8) \ |
663 | - _CL_DECLARE_CONVERT_TYPE(SRC, double8) |
664 | -#else |
665 | -#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
666 | - _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
667 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
668 | - _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
669 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
670 | - _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
671 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
672 | - _CL_DECLARE_CONVERT_TYPE(SRC, float8) |
673 | -#endif |
674 | +#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
675 | + _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
676 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
677 | + _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
678 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
679 | + _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
680 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
681 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long8)) \ |
682 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong8)) \ |
683 | + _CL_DECLARE_CONVERT_TYPE(SRC, float8) \ |
684 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double8)) |
685 | _CL_DECLARE_CONVERT_TYPE_8(char8) |
686 | _CL_DECLARE_CONVERT_TYPE_8(uchar8) |
687 | _CL_DECLARE_CONVERT_TYPE_8(short8) |
688 | _CL_DECLARE_CONVERT_TYPE_8(ushort8) |
689 | _CL_DECLARE_CONVERT_TYPE_8(int8) |
690 | _CL_DECLARE_CONVERT_TYPE_8(uint8) |
691 | -#ifdef cl_khr_int64 |
692 | -_CL_DECLARE_CONVERT_TYPE_8(long8) |
693 | -_CL_DECLARE_CONVERT_TYPE_8(ulong8) |
694 | -#endif |
695 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_8(long8)) |
696 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_8(ulong8)) |
697 | _CL_DECLARE_CONVERT_TYPE_8(float8) |
698 | -#ifdef cl_khr_fp64 |
699 | -_CL_DECLARE_CONVERT_TYPE_8(double8) |
700 | -#endif |
701 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_8(double8)) |
702 | |
703 | /* 16 elements */ |
704 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
705 | -#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
706 | - _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
707 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
708 | - _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
709 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
710 | - _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
711 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
712 | - _CL_DECLARE_CONVERT_TYPE(SRC, long16) \ |
713 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong16) \ |
714 | - _CL_DECLARE_CONVERT_TYPE(SRC, float16) \ |
715 | - _CL_DECLARE_CONVERT_TYPE(SRC, double16) |
716 | -#elif defined(cl_khr_int64) |
717 | -#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
718 | - _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
719 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
720 | - _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
721 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
722 | - _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
723 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
724 | - _CL_DECLARE_CONVERT_TYPE(SRC, long16) \ |
725 | - _CL_DECLARE_CONVERT_TYPE(SRC, ulong16) \ |
726 | - _CL_DECLARE_CONVERT_TYPE(SRC, float16) |
727 | -#elif defined(cl_khr_fp64) |
728 | -#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
729 | - _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
730 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
731 | - _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
732 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
733 | - _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
734 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
735 | - _CL_DECLARE_CONVERT_TYPE(SRC, float16) \ |
736 | - _CL_DECLARE_CONVERT_TYPE(SRC, double16) |
737 | -#else |
738 | -#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
739 | - _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
740 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
741 | - _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
742 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
743 | - _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
744 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
745 | - _CL_DECLARE_CONVERT_TYPE(SRC, float16) |
746 | -#endif |
747 | +#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
748 | + _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
749 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
750 | + _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
751 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
752 | + _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
753 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
754 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long16)) \ |
755 | + __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong16)) \ |
756 | + _CL_DECLARE_CONVERT_TYPE(SRC, float16) \ |
757 | + __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double16)) |
758 | _CL_DECLARE_CONVERT_TYPE_16(char16) |
759 | _CL_DECLARE_CONVERT_TYPE_16(uchar16) |
760 | _CL_DECLARE_CONVERT_TYPE_16(short16) |
761 | _CL_DECLARE_CONVERT_TYPE_16(ushort16) |
762 | _CL_DECLARE_CONVERT_TYPE_16(int16) |
763 | _CL_DECLARE_CONVERT_TYPE_16(uint16) |
764 | -#ifdef cl_khr_int64 |
765 | -_CL_DECLARE_CONVERT_TYPE_16(long16) |
766 | -_CL_DECLARE_CONVERT_TYPE_16(ulong16) |
767 | -#endif |
768 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_16(long16)) |
769 | +__IF_INT64(_CL_DECLARE_CONVERT_TYPE_16(ulong16)) |
770 | _CL_DECLARE_CONVERT_TYPE_16(float16) |
771 | -#ifdef cl_khr_fp64 |
772 | -_CL_DECLARE_CONVERT_TYPE_16(double16) |
773 | -#endif |
774 | +__IF_FP64(_CL_DECLARE_CONVERT_TYPE_16(double16)) |
775 | |
776 | |
777 | |
778 | /* Work-Item Functions */ |
779 | @@ -966,7 +631,6 @@ |
780 | * V: vector of float or double |
781 | */ |
782 | |
783 | -#ifdef cl_khr_fp64 |
784 | #define _CL_DECLARE_FUNC_V_V(NAME) \ |
785 | float _cl_overloadable NAME(float ); \ |
786 | float2 _cl_overloadable NAME(float2 ); \ |
787 | @@ -974,22 +638,13 @@ |
788 | float4 _cl_overloadable NAME(float4 ); \ |
789 | float8 _cl_overloadable NAME(float8 ); \ |
790 | float16 _cl_overloadable NAME(float16 ); \ |
791 | + __IF_FP64( \ |
792 | double _cl_overloadable NAME(double ); \ |
793 | double2 _cl_overloadable NAME(double2 ); \ |
794 | double3 _cl_overloadable NAME(double3 ); \ |
795 | double4 _cl_overloadable NAME(double4 ); \ |
796 | double8 _cl_overloadable NAME(double8 ); \ |
797 | - double16 _cl_overloadable NAME(double16); |
798 | -#else |
799 | -#define _CL_DECLARE_FUNC_V_V(NAME) \ |
800 | - float _cl_overloadable NAME(float ); \ |
801 | - float2 _cl_overloadable NAME(float2 ); \ |
802 | - float3 _cl_overloadable NAME(float3 ); \ |
803 | - float4 _cl_overloadable NAME(float4 ); \ |
804 | - float8 _cl_overloadable NAME(float8 ); \ |
805 | - float16 _cl_overloadable NAME(float16 ); |
806 | -#endif |
807 | -#ifdef cl_khr_fp64 |
808 | + double16 _cl_overloadable NAME(double16);) |
809 | #define _CL_DECLARE_FUNC_V_VV(NAME) \ |
810 | float _cl_overloadable NAME(float , float ); \ |
811 | float2 _cl_overloadable NAME(float2 , float2 ); \ |
812 | @@ -997,105 +652,63 @@ |
813 | float4 _cl_overloadable NAME(float4 , float4 ); \ |
814 | float8 _cl_overloadable NAME(float8 , float8 ); \ |
815 | float16 _cl_overloadable NAME(float16 , float16 ); \ |
816 | + __IF_FP64( \ |
817 | double _cl_overloadable NAME(double , double ); \ |
818 | double2 _cl_overloadable NAME(double2 , double2 ); \ |
819 | double3 _cl_overloadable NAME(double3 , double3 ); \ |
820 | double4 _cl_overloadable NAME(double4 , double4 ); \ |
821 | double8 _cl_overloadable NAME(double8 , double8 ); \ |
822 | - double16 _cl_overloadable NAME(double16, double16); |
823 | -#else |
824 | -#define _CL_DECLARE_FUNC_V_VV(NAME) \ |
825 | - float _cl_overloadable NAME(float , float ); \ |
826 | - float2 _cl_overloadable NAME(float2 , float2 ); \ |
827 | - float3 _cl_overloadable NAME(float3 , float3 ); \ |
828 | - float4 _cl_overloadable NAME(float4 , float4 ); \ |
829 | - float8 _cl_overloadable NAME(float8 , float8 ); \ |
830 | - float16 _cl_overloadable NAME(float16 , float16 ); |
831 | -#endif |
832 | -#ifdef cl_khr_fp64 |
833 | -#define _CL_DECLARE_FUNC_V_VVV(NAME) \ |
834 | - float _cl_overloadable NAME(float , float , float ); \ |
835 | - float2 _cl_overloadable NAME(float2 , float2 , float2 ); \ |
836 | - float3 _cl_overloadable NAME(float3 , float3 , float3 ); \ |
837 | - float4 _cl_overloadable NAME(float4 , float4 , float4 ); \ |
838 | - float8 _cl_overloadable NAME(float8 , float8 , float8 ); \ |
839 | - float16 _cl_overloadable NAME(float16 , float16 , float16 ); \ |
840 | - double _cl_overloadable NAME(double , double , double ); \ |
841 | - double2 _cl_overloadable NAME(double2 , double2 , double2 ); \ |
842 | - double3 _cl_overloadable NAME(double3 , double3 , double3 ); \ |
843 | - double4 _cl_overloadable NAME(double4 , double4 , double4 ); \ |
844 | - double8 _cl_overloadable NAME(double8 , double8 , double8 ); \ |
845 | - double16 _cl_overloadable NAME(double16, double16, double16); |
846 | -#else |
847 | -#define _CL_DECLARE_FUNC_V_VVV(NAME) \ |
848 | - float _cl_overloadable NAME(float , float , float ); \ |
849 | - float2 _cl_overloadable NAME(float2 , float2 , float2 ); \ |
850 | - float3 _cl_overloadable NAME(float3 , float3 , float3 ); \ |
851 | - float4 _cl_overloadable NAME(float4 , float4 , float4 ); \ |
852 | - float8 _cl_overloadable NAME(float8 , float8 , float8 ); \ |
853 | - float16 _cl_overloadable NAME(float16 , float16 , float16 ); |
854 | -#endif |
855 | -#ifdef cl_khr_fp64 |
856 | + double16 _cl_overloadable NAME(double16, double16);) |
857 | +#define _CL_DECLARE_FUNC_V_VVV(NAME) \ |
858 | + float _cl_overloadable NAME(float , float , float ); \ |
859 | + float2 _cl_overloadable NAME(float2 , float2 , float2 ); \ |
860 | + float3 _cl_overloadable NAME(float3 , float3 , float3 ); \ |
861 | + float4 _cl_overloadable NAME(float4 , float4 , float4 ); \ |
862 | + float8 _cl_overloadable NAME(float8 , float8 , float8 ); \ |
863 | + float16 _cl_overloadable NAME(float16 , float16 , float16 ); \ |
864 | + __IF_FP64( \ |
865 | + double _cl_overloadable NAME(double , double , double ); \ |
866 | + double2 _cl_overloadable NAME(double2 , double2 , double2 ); \ |
867 | + double3 _cl_overloadable NAME(double3 , double3 , double3 ); \ |
868 | + double4 _cl_overloadable NAME(double4 , double4 , double4 ); \ |
869 | + double8 _cl_overloadable NAME(double8 , double8 , double8 ); \ |
870 | + double16 _cl_overloadable NAME(double16, double16, double16);) |
871 | #define _CL_DECLARE_FUNC_V_VVS(NAME) \ |
872 | float2 _cl_overloadable NAME(float2 , float2 , float ); \ |
873 | float3 _cl_overloadable NAME(float3 , float3 , float ); \ |
874 | float4 _cl_overloadable NAME(float4 , float4 , float ); \ |
875 | float8 _cl_overloadable NAME(float8 , float8 , float ); \ |
876 | float16 _cl_overloadable NAME(float16 , float16 , float ); \ |
877 | + __IF_FP64( \ |
878 | double2 _cl_overloadable NAME(double2 , double2 , double); \ |
879 | double3 _cl_overloadable NAME(double3 , double3 , double); \ |
880 | double4 _cl_overloadable NAME(double4 , double4 , double); \ |
881 | double8 _cl_overloadable NAME(double8 , double8 , double); \ |
882 | - double16 _cl_overloadable NAME(double16, double16, double); |
883 | -#else |
884 | -#define _CL_DECLARE_FUNC_V_VVS(NAME) \ |
885 | - float2 _cl_overloadable NAME(float2 , float2 , float ); \ |
886 | - float3 _cl_overloadable NAME(float3 , float3 , float ); \ |
887 | - float4 _cl_overloadable NAME(float4 , float4 , float ); \ |
888 | - float8 _cl_overloadable NAME(float8 , float8 , float ); \ |
889 | - float16 _cl_overloadable NAME(float16 , float16 , float ); |
890 | -#endif |
891 | -#ifdef cl_khr_fp64 |
892 | + double16 _cl_overloadable NAME(double16, double16, double);) |
893 | #define _CL_DECLARE_FUNC_V_VSS(NAME) \ |
894 | float2 _cl_overloadable NAME(float2 , float , float ); \ |
895 | float3 _cl_overloadable NAME(float3 , float , float ); \ |
896 | float4 _cl_overloadable NAME(float4 , float , float ); \ |
897 | float8 _cl_overloadable NAME(float8 , float , float ); \ |
898 | float16 _cl_overloadable NAME(float16 , float , float ); \ |
899 | + __IF_FP64( \ |
900 | double2 _cl_overloadable NAME(double2 , double, double); \ |
901 | double3 _cl_overloadable NAME(double3 , double, double); \ |
902 | double4 _cl_overloadable NAME(double4 , double, double); \ |
903 | double8 _cl_overloadable NAME(double8 , double, double); \ |
904 | - double16 _cl_overloadable NAME(double16, double, double); |
905 | -#else |
906 | -#define _CL_DECLARE_FUNC_V_VSS(NAME) \ |
907 | - float2 _cl_overloadable NAME(float2 , float , float ); \ |
908 | - float3 _cl_overloadable NAME(float3 , float , float ); \ |
909 | - float4 _cl_overloadable NAME(float4 , float , float ); \ |
910 | - float8 _cl_overloadable NAME(float8 , float , float ); \ |
911 | - float16 _cl_overloadable NAME(float16 , float , float ); |
912 | -#endif |
913 | -#ifdef cl_khr_fp64 |
914 | + double16 _cl_overloadable NAME(double16, double, double);) |
915 | #define _CL_DECLARE_FUNC_V_SSV(NAME) \ |
916 | float2 _cl_overloadable NAME(float , float , float2 ); \ |
917 | float3 _cl_overloadable NAME(float , float , float3 ); \ |
918 | float4 _cl_overloadable NAME(float , float , float4 ); \ |
919 | float8 _cl_overloadable NAME(float , float , float8 ); \ |
920 | float16 _cl_overloadable NAME(float , float , float16 ); \ |
921 | + __IF_FP64( \ |
922 | double2 _cl_overloadable NAME(double, double, double2 ); \ |
923 | double3 _cl_overloadable NAME(double, double, double3 ); \ |
924 | double4 _cl_overloadable NAME(double, double, double4 ); \ |
925 | double8 _cl_overloadable NAME(double, double, double8 ); \ |
926 | - double16 _cl_overloadable NAME(double, double, double16); |
927 | -#else |
928 | -#define _CL_DECLARE_FUNC_V_SSV(NAME) \ |
929 | - float2 _cl_overloadable NAME(float , float , float2 ); \ |
930 | - float3 _cl_overloadable NAME(float , float , float3 ); \ |
931 | - float4 _cl_overloadable NAME(float , float , float4 ); \ |
932 | - float8 _cl_overloadable NAME(float , float , float8 ); \ |
933 | - float16 _cl_overloadable NAME(float , float , float16 ); |
934 | -#endif |
935 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
936 | + double16 _cl_overloadable NAME(double, double, double16);) |
937 | #define _CL_DECLARE_FUNC_V_VVJ(NAME) \ |
938 | float _cl_overloadable NAME(float , float , int ); \ |
939 | float2 _cl_overloadable NAME(float2 , float2 , int2 ); \ |
940 | @@ -1103,22 +716,13 @@ |
941 | float4 _cl_overloadable NAME(float4 , float4 , int4 ); \ |
942 | float8 _cl_overloadable NAME(float8 , float8 , int8 ); \ |
943 | float16 _cl_overloadable NAME(float16 , float16 , int16 ); \ |
944 | + __IF_INT64(__IF_FP64( \ |
945 | double _cl_overloadable NAME(double , double , long ); \ |
946 | double2 _cl_overloadable NAME(double2 , double2 , long2 ); \ |
947 | double3 _cl_overloadable NAME(double3 , double3 , long3 ); \ |
948 | double4 _cl_overloadable NAME(double4 , double4 , long4 ); \ |
949 | double8 _cl_overloadable NAME(double8 , double8 , long8 ); \ |
950 | - double16 _cl_overloadable NAME(double16, double16, long16); |
951 | -#else |
952 | -#define _CL_DECLARE_FUNC_V_VVJ(NAME) \ |
953 | - float _cl_overloadable NAME(float , float , int ); \ |
954 | - float2 _cl_overloadable NAME(float2 , float2 , int2 ); \ |
955 | - float3 _cl_overloadable NAME(float3 , float3 , int3 ); \ |
956 | - float4 _cl_overloadable NAME(float4 , float4 , int4 ); \ |
957 | - float8 _cl_overloadable NAME(float8 , float8 , int8 ); \ |
958 | - float16 _cl_overloadable NAME(float16 , float16 , int16 ); |
959 | -#endif |
960 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
961 | + double16 _cl_overloadable NAME(double16, double16, long16);)) |
962 | #define _CL_DECLARE_FUNC_V_U(NAME) \ |
963 | float _cl_overloadable NAME(uint ); \ |
964 | float2 _cl_overloadable NAME(uint2 ); \ |
965 | @@ -1126,42 +730,25 @@ |
966 | float4 _cl_overloadable NAME(uint4 ); \ |
967 | float8 _cl_overloadable NAME(uint8 ); \ |
968 | float16 _cl_overloadable NAME(uint16 ); \ |
969 | + __IF_INT64(__IF_FP64( \ |
970 | double _cl_overloadable NAME(ulong ); \ |
971 | double2 _cl_overloadable NAME(ulong2 ); \ |
972 | double3 _cl_overloadable NAME(ulong3 ); \ |
973 | double4 _cl_overloadable NAME(ulong4 ); \ |
974 | double8 _cl_overloadable NAME(ulong8 ); \ |
975 | - double16 _cl_overloadable NAME(ulong16); |
976 | -#else |
977 | -#define _CL_DECLARE_FUNC_V_U(NAME) \ |
978 | - float _cl_overloadable NAME(uint ); \ |
979 | - float2 _cl_overloadable NAME(uint2 ); \ |
980 | - float3 _cl_overloadable NAME(uint3 ); \ |
981 | - float4 _cl_overloadable NAME(uint4 ); \ |
982 | - float8 _cl_overloadable NAME(uint8 ); \ |
983 | - float16 _cl_overloadable NAME(uint16 ); |
984 | -#endif |
985 | -#ifdef cl_khr_fp64 |
986 | + double16 _cl_overloadable NAME(ulong16);)) |
987 | #define _CL_DECLARE_FUNC_V_VS(NAME) \ |
988 | float2 _cl_overloadable NAME(float2 , float ); \ |
989 | float3 _cl_overloadable NAME(float3 , float ); \ |
990 | float4 _cl_overloadable NAME(float4 , float ); \ |
991 | float8 _cl_overloadable NAME(float8 , float ); \ |
992 | float16 _cl_overloadable NAME(float16 , float ); \ |
993 | + __IF_FP64( \ |
994 | double2 _cl_overloadable NAME(double2 , double); \ |
995 | double3 _cl_overloadable NAME(double3 , double); \ |
996 | double4 _cl_overloadable NAME(double4 , double); \ |
997 | double8 _cl_overloadable NAME(double8 , double); \ |
998 | - double16 _cl_overloadable NAME(double16, double); |
999 | -#else |
1000 | -#define _CL_DECLARE_FUNC_V_VS(NAME) \ |
1001 | - float2 _cl_overloadable NAME(float2 , float ); \ |
1002 | - float3 _cl_overloadable NAME(float3 , float ); \ |
1003 | - float4 _cl_overloadable NAME(float4 , float ); \ |
1004 | - float8 _cl_overloadable NAME(float8 , float ); \ |
1005 | - float16 _cl_overloadable NAME(float16 , float ); |
1006 | -#endif |
1007 | -#ifdef cl_khr_fp64 |
1008 | + double16 _cl_overloadable NAME(double16, double);) |
1009 | #define _CL_DECLARE_FUNC_V_VJ(NAME) \ |
1010 | float _cl_overloadable NAME(float , int ); \ |
1011 | float2 _cl_overloadable NAME(float2 , int2 ); \ |
1012 | @@ -1169,22 +756,13 @@ |
1013 | float4 _cl_overloadable NAME(float4 , int4 ); \ |
1014 | float8 _cl_overloadable NAME(float8 , int8 ); \ |
1015 | float16 _cl_overloadable NAME(float16 , int16); \ |
1016 | + __IF_FP64( \ |
1017 | double _cl_overloadable NAME(double , int ); \ |
1018 | double2 _cl_overloadable NAME(double2 , int2 ); \ |
1019 | double3 _cl_overloadable NAME(double3 , int3 ); \ |
1020 | double4 _cl_overloadable NAME(double4 , int4 ); \ |
1021 | double8 _cl_overloadable NAME(double8 , int8 ); \ |
1022 | - double16 _cl_overloadable NAME(double16, int16); |
1023 | -#else |
1024 | -#define _CL_DECLARE_FUNC_V_VJ(NAME) \ |
1025 | - float _cl_overloadable NAME(float , int ); \ |
1026 | - float2 _cl_overloadable NAME(float2 , int2 ); \ |
1027 | - float3 _cl_overloadable NAME(float3 , int3 ); \ |
1028 | - float4 _cl_overloadable NAME(float4 , int4 ); \ |
1029 | - float8 _cl_overloadable NAME(float8 , int8 ); \ |
1030 | - float16 _cl_overloadable NAME(float16 , int16); |
1031 | -#endif |
1032 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
1033 | + double16 _cl_overloadable NAME(double16, int16);) |
1034 | #define _CL_DECLARE_FUNC_J_VV(NAME) \ |
1035 | int _cl_overloadable NAME(float , float ); \ |
1036 | int2 _cl_overloadable NAME(float2 , float2 ); \ |
1037 | @@ -1192,51 +770,26 @@ |
1038 | int4 _cl_overloadable NAME(float4 , float4 ); \ |
1039 | int8 _cl_overloadable NAME(float8 , float8 ); \ |
1040 | int16 _cl_overloadable NAME(float16 , float16 ); \ |
1041 | + __IF_FP64( \ |
1042 | int _cl_overloadable NAME(double , double ); \ |
1043 | + __IF_INT64( \ |
1044 | long2 _cl_overloadable NAME(double2 , double2 ); \ |
1045 | long3 _cl_overloadable NAME(double3 , double3 ); \ |
1046 | long4 _cl_overloadable NAME(double4 , double4 ); \ |
1047 | long8 _cl_overloadable NAME(double8 , double8 ); \ |
1048 | - long16 _cl_overloadable NAME(double16, double16); |
1049 | -#elif defined(cl_khr_fp64) |
1050 | -#define _CL_DECLARE_FUNC_J_VV(NAME) \ |
1051 | - int _cl_overloadable NAME(float , float ); \ |
1052 | - int2 _cl_overloadable NAME(float2 , float2 ); \ |
1053 | - int3 _cl_overloadable NAME(float3 , float3 ); \ |
1054 | - int4 _cl_overloadable NAME(float4 , float4 ); \ |
1055 | - int8 _cl_overloadable NAME(float8 , float8 ); \ |
1056 | - int16 _cl_overloadable NAME(float16 , float16 ); \ |
1057 | - int _cl_overloadable NAME(double , double ); |
1058 | -#else |
1059 | -#define _CL_DECLARE_FUNC_J_VV(NAME) \ |
1060 | - int _cl_overloadable NAME(float , float ); \ |
1061 | - int2 _cl_overloadable NAME(float2 , float2 ); \ |
1062 | - int3 _cl_overloadable NAME(float3 , float3 ); \ |
1063 | - int4 _cl_overloadable NAME(float4 , float4 ); \ |
1064 | - int8 _cl_overloadable NAME(float8 , float8 ); \ |
1065 | - int16 _cl_overloadable NAME(float16 , float16 ); |
1066 | -#endif |
1067 | -#ifdef cl_khr_fp64 |
1068 | + long16 _cl_overloadable NAME(double16, double16);)) |
1069 | #define _CL_DECLARE_FUNC_V_VI(NAME) \ |
1070 | float2 _cl_overloadable NAME(float2 , int); \ |
1071 | float3 _cl_overloadable NAME(float3 , int); \ |
1072 | float4 _cl_overloadable NAME(float4 , int); \ |
1073 | float8 _cl_overloadable NAME(float8 , int); \ |
1074 | float16 _cl_overloadable NAME(float16 , int); \ |
1075 | + __IF_FP64( \ |
1076 | double2 _cl_overloadable NAME(double2 , int); \ |
1077 | double3 _cl_overloadable NAME(double3 , int); \ |
1078 | double4 _cl_overloadable NAME(double4 , int); \ |
1079 | double8 _cl_overloadable NAME(double8 , int); \ |
1080 | - double16 _cl_overloadable NAME(double16, int); |
1081 | -#else |
1082 | -#define _CL_DECLARE_FUNC_V_VI(NAME) \ |
1083 | - float2 _cl_overloadable NAME(float2 , int); \ |
1084 | - float3 _cl_overloadable NAME(float3 , int); \ |
1085 | - float4 _cl_overloadable NAME(float4 , int); \ |
1086 | - float8 _cl_overloadable NAME(float8 , int); \ |
1087 | - float16 _cl_overloadable NAME(float16 , int); |
1088 | -#endif |
1089 | -#ifdef cl_khr_fp64 |
1090 | + double16 _cl_overloadable NAME(double16, int);) |
1091 | #define _CL_DECLARE_FUNC_V_VPV(NAME) \ |
1092 | float _cl_overloadable NAME(float , __global float *); \ |
1093 | float2 _cl_overloadable NAME(float2 , __global float2 *); \ |
1094 | @@ -1244,24 +797,26 @@ |
1095 | float4 _cl_overloadable NAME(float4 , __global float4 *); \ |
1096 | float8 _cl_overloadable NAME(float8 , __global float8 *); \ |
1097 | float16 _cl_overloadable NAME(float16 , __global float16 *); \ |
1098 | + __IF_FP64( \ |
1099 | double _cl_overloadable NAME(double , __global double *); \ |
1100 | double2 _cl_overloadable NAME(double2 , __global double2 *); \ |
1101 | double3 _cl_overloadable NAME(double3 , __global double3 *); \ |
1102 | double4 _cl_overloadable NAME(double4 , __global double4 *); \ |
1103 | double8 _cl_overloadable NAME(double8 , __global double8 *); \ |
1104 | - double16 _cl_overloadable NAME(double16, __global double16*); \ |
1105 | + double16 _cl_overloadable NAME(double16, __global double16*);) \ |
1106 | float _cl_overloadable NAME(float , __local float *); \ |
1107 | float2 _cl_overloadable NAME(float2 , __local float2 *); \ |
1108 | float3 _cl_overloadable NAME(float3 , __local float3 *); \ |
1109 | float4 _cl_overloadable NAME(float4 , __local float4 *); \ |
1110 | float8 _cl_overloadable NAME(float8 , __local float8 *); \ |
1111 | float16 _cl_overloadable NAME(float16 , __local float16 *); \ |
1112 | + __IF_FP64( \ |
1113 | double _cl_overloadable NAME(double , __local double *); \ |
1114 | double2 _cl_overloadable NAME(double2 , __local double2 *); \ |
1115 | double3 _cl_overloadable NAME(double3 , __local double3 *); \ |
1116 | double4 _cl_overloadable NAME(double4 , __local double4 *); \ |
1117 | double8 _cl_overloadable NAME(double8 , __local double8 *); \ |
1118 | - double16 _cl_overloadable NAME(double16, __local double16*); \ |
1119 | + double16 _cl_overloadable NAME(double16, __local double16*);) \ |
1120 | /* __private is not supported yet \ |
1121 | float _cl_overloadable NAME(float , __private float *); \ |
1122 | float2 _cl_overloadable NAME(float2 , __private float2 *); \ |
1123 | @@ -1269,57 +824,26 @@ |
1124 | float4 _cl_overloadable NAME(float4 , __private float4 *); \ |
1125 | float8 _cl_overloadable NAME(float8 , __private float8 *); \ |
1126 | float16 _cl_overloadable NAME(float16 , __private float16 *); \ |
1127 | + __IF_FP64( \ |
1128 | double _cl_overloadable NAME(double , __private double *); \ |
1129 | double2 _cl_overloadable NAME(double2 , __private double2 *); \ |
1130 | double3 _cl_overloadable NAME(double3 , __private double3 *); \ |
1131 | double4 _cl_overloadable NAME(double4 , __private double4 *); \ |
1132 | double8 _cl_overloadable NAME(double8 , __private double8 *); \ |
1133 | - double16 _cl_overloadable NAME(double16, __private double16*); \ |
1134 | - */ |
1135 | -#else |
1136 | -#define _CL_DECLARE_FUNC_V_VPV(NAME) \ |
1137 | - float _cl_overloadable NAME(float , __global float *); \ |
1138 | - float2 _cl_overloadable NAME(float2 , __global float2 *); \ |
1139 | - float3 _cl_overloadable NAME(float3 , __global float3 *); \ |
1140 | - float4 _cl_overloadable NAME(float4 , __global float4 *); \ |
1141 | - float8 _cl_overloadable NAME(float8 , __global float8 *); \ |
1142 | - float16 _cl_overloadable NAME(float16 , __global float16 *); \ |
1143 | - float _cl_overloadable NAME(float , __local float *); \ |
1144 | - float2 _cl_overloadable NAME(float2 , __local float2 *); \ |
1145 | - float3 _cl_overloadable NAME(float3 , __local float3 *); \ |
1146 | - float4 _cl_overloadable NAME(float4 , __local float4 *); \ |
1147 | - float8 _cl_overloadable NAME(float8 , __local float8 *); \ |
1148 | - float16 _cl_overloadable NAME(float16 , __local float16 *); \ |
1149 | - /* __private is not supported yet \ |
1150 | - float _cl_overloadable NAME(float , __private float *); \ |
1151 | - float2 _cl_overloadable NAME(float2 , __private float2 *); \ |
1152 | - float3 _cl_overloadable NAME(float3 , __private float3 *); \ |
1153 | - float4 _cl_overloadable NAME(float4 , __private float4 *); \ |
1154 | - float8 _cl_overloadable NAME(float8 , __private float8 *); \ |
1155 | - float16 _cl_overloadable NAME(float16 , __private float16 *); \ |
1156 | - */ |
1157 | -#endif |
1158 | -#ifdef cl_khr_fp64 |
1159 | + double16 _cl_overloadable NAME(double16, __private double16*);) \ |
1160 | + */ |
1161 | #define _CL_DECLARE_FUNC_V_SV(NAME) \ |
1162 | float2 _cl_overloadable NAME(float , float2 ); \ |
1163 | float3 _cl_overloadable NAME(float , float3 ); \ |
1164 | float4 _cl_overloadable NAME(float , float4 ); \ |
1165 | float8 _cl_overloadable NAME(float , float8 ); \ |
1166 | float16 _cl_overloadable NAME(float , float16 ); \ |
1167 | + __IF_FP64( \ |
1168 | double2 _cl_overloadable NAME(double, double2 ); \ |
1169 | double3 _cl_overloadable NAME(double, double3 ); \ |
1170 | double4 _cl_overloadable NAME(double, double4 ); \ |
1171 | double8 _cl_overloadable NAME(double, double8 ); \ |
1172 | - double16 _cl_overloadable NAME(double, double16); |
1173 | -#else |
1174 | -#define _CL_DECLARE_FUNC_V_SV(NAME) \ |
1175 | - float2 _cl_overloadable NAME(float , float2 ); \ |
1176 | - float3 _cl_overloadable NAME(float , float3 ); \ |
1177 | - float4 _cl_overloadable NAME(float , float4 ); \ |
1178 | - float8 _cl_overloadable NAME(float , float8 ); \ |
1179 | - float16 _cl_overloadable NAME(float , float16 ); |
1180 | -#endif |
1181 | -#ifdef cl_khr_fp64 |
1182 | + double16 _cl_overloadable NAME(double, double16);) |
1183 | #define _CL_DECLARE_FUNC_J_V(NAME) \ |
1184 | int _cl_overloadable NAME(float ); \ |
1185 | int2 _cl_overloadable NAME(float2 ); \ |
1186 | @@ -1327,22 +851,13 @@ |
1187 | int4 _cl_overloadable NAME(float4 ); \ |
1188 | int8 _cl_overloadable NAME(float8 ); \ |
1189 | int16 _cl_overloadable NAME(float16 ); \ |
1190 | + __IF_FP64( \ |
1191 | int _cl_overloadable NAME(double ); \ |
1192 | int2 _cl_overloadable NAME(double2 ); \ |
1193 | int3 _cl_overloadable NAME(double3 ); \ |
1194 | int4 _cl_overloadable NAME(double4 ); \ |
1195 | int8 _cl_overloadable NAME(double8 ); \ |
1196 | - int16 _cl_overloadable NAME(double16); |
1197 | -#else |
1198 | -#define _CL_DECLARE_FUNC_J_V(NAME) \ |
1199 | - int _cl_overloadable NAME(float ); \ |
1200 | - int2 _cl_overloadable NAME(float2 ); \ |
1201 | - int3 _cl_overloadable NAME(float3 ); \ |
1202 | - int4 _cl_overloadable NAME(float4 ); \ |
1203 | - int8 _cl_overloadable NAME(float8 ); \ |
1204 | - int16 _cl_overloadable NAME(float16 ); |
1205 | -#endif |
1206 | -#ifdef cl_khr_fp64 |
1207 | + int16 _cl_overloadable NAME(double16);) |
1208 | #define _CL_DECLARE_FUNC_K_V(NAME) \ |
1209 | int _cl_overloadable NAME(float ); \ |
1210 | int2 _cl_overloadable NAME(float2 ); \ |
1211 | @@ -1350,22 +865,13 @@ |
1212 | int4 _cl_overloadable NAME(float4 ); \ |
1213 | int8 _cl_overloadable NAME(float8 ); \ |
1214 | int16 _cl_overloadable NAME(float16 ); \ |
1215 | + __IF_FP64( \ |
1216 | int _cl_overloadable NAME(double ); \ |
1217 | long2 _cl_overloadable NAME(double2 ); \ |
1218 | long3 _cl_overloadable NAME(double3 ); \ |
1219 | long4 _cl_overloadable NAME(double4 ); \ |
1220 | long8 _cl_overloadable NAME(double8 ); \ |
1221 | - long16 _cl_overloadable NAME(double16); |
1222 | -#else |
1223 | -#define _CL_DECLARE_FUNC_K_V(NAME) \ |
1224 | - int _cl_overloadable NAME(float ); \ |
1225 | - int2 _cl_overloadable NAME(float2 ); \ |
1226 | - int3 _cl_overloadable NAME(float3 ); \ |
1227 | - int4 _cl_overloadable NAME(float4 ); \ |
1228 | - int8 _cl_overloadable NAME(float8 ); \ |
1229 | - int16 _cl_overloadable NAME(float16 ); |
1230 | -#endif |
1231 | -#ifdef cl_khr_fp64 |
1232 | + long16 _cl_overloadable NAME(double16);) |
1233 | #define _CL_DECLARE_FUNC_S_V(NAME) \ |
1234 | float _cl_overloadable NAME(float ); \ |
1235 | float _cl_overloadable NAME(float2 ); \ |
1236 | @@ -1373,22 +879,13 @@ |
1237 | float _cl_overloadable NAME(float4 ); \ |
1238 | float _cl_overloadable NAME(float8 ); \ |
1239 | float _cl_overloadable NAME(float16 ); \ |
1240 | + __IF_FP64( \ |
1241 | double _cl_overloadable NAME(double ); \ |
1242 | double _cl_overloadable NAME(double2 ); \ |
1243 | double _cl_overloadable NAME(double3 ); \ |
1244 | double _cl_overloadable NAME(double4 ); \ |
1245 | double _cl_overloadable NAME(double8 ); \ |
1246 | - double _cl_overloadable NAME(double16); |
1247 | -#else |
1248 | -#define _CL_DECLARE_FUNC_S_V(NAME) \ |
1249 | - float _cl_overloadable NAME(float ); \ |
1250 | - float _cl_overloadable NAME(float2 ); \ |
1251 | - float _cl_overloadable NAME(float3 ); \ |
1252 | - float _cl_overloadable NAME(float4 ); \ |
1253 | - float _cl_overloadable NAME(float8 ); \ |
1254 | - float _cl_overloadable NAME(float16 ); |
1255 | -#endif |
1256 | -#ifdef cl_khr_fp64 |
1257 | + double _cl_overloadable NAME(double16);) |
1258 | #define _CL_DECLARE_FUNC_S_VV(NAME) \ |
1259 | float _cl_overloadable NAME(float , float ); \ |
1260 | float _cl_overloadable NAME(float2 , float2 ); \ |
1261 | @@ -1396,21 +893,13 @@ |
1262 | float _cl_overloadable NAME(float4 , float4 ); \ |
1263 | float _cl_overloadable NAME(float8 , float8 ); \ |
1264 | float _cl_overloadable NAME(float16 , float16 ); \ |
1265 | + __IF_FP64( \ |
1266 | double _cl_overloadable NAME(double , double ); \ |
1267 | double _cl_overloadable NAME(double2 , double2 ); \ |
1268 | double _cl_overloadable NAME(double3 , double3 ); \ |
1269 | double _cl_overloadable NAME(double4 , double4 ); \ |
1270 | double _cl_overloadable NAME(double8 , double8 ); \ |
1271 | - double _cl_overloadable NAME(double16, double16); |
1272 | -#else |
1273 | -#define _CL_DECLARE_FUNC_S_VV(NAME) \ |
1274 | - float _cl_overloadable NAME(float , float ); \ |
1275 | - float _cl_overloadable NAME(float2 , float2 ); \ |
1276 | - float _cl_overloadable NAME(float3 , float3 ); \ |
1277 | - float _cl_overloadable NAME(float4 , float4 ); \ |
1278 | - float _cl_overloadable NAME(float8 , float8 ); \ |
1279 | - float _cl_overloadable NAME(float16 , float16 ); |
1280 | -#endif |
1281 | + double _cl_overloadable NAME(double16, double16);) |
1282 | |
1283 | /* Move built-in declarations out of the way. (There should be a |
1284 | better way of doing so.) These five functions are built-in math |
1285 | @@ -1519,8 +1008,10 @@ |
1286 | #define CHAR_MIN SCHAR_MIN |
1287 | #define INT_MAX 2147483647 |
1288 | #define INT_MIN (-2147483647 - 1) |
1289 | +#ifdef cl_khr_int64 |
1290 | #define LONG_MAX 0x7fffffffffffffffL |
1291 | #define LONG_MIN (-0x7fffffffffffffffL - 1) |
1292 | +#endif |
1293 | #define SCHAR_MAX 127 |
1294 | #define SCHAR_MIN (-127 - 1) |
1295 | #define SHRT_MAX 32767 |
1296 | @@ -1528,11 +1019,12 @@ |
1297 | #define UCHAR_MAX 255 |
1298 | #define USHRT_MAX 65535 |
1299 | #define UINT_MAX 0xffffffff |
1300 | +#ifdef cl_khr_int64 |
1301 | #define ULONG_MAX 0xffffffffffffffffUL |
1302 | +#endif |
1303 | |
1304 | |
1305 | |
1306 | /* Integer Functions */ |
1307 | -#ifdef cl_khr_int64 |
1308 | #define _CL_DECLARE_FUNC_G_G(NAME) \ |
1309 | char _cl_overloadable NAME(char ); \ |
1310 | char2 _cl_overloadable NAME(char2 ); \ |
1311 | @@ -1570,6 +1062,7 @@ |
1312 | uint4 _cl_overloadable NAME(uint4 ); \ |
1313 | uint8 _cl_overloadable NAME(uint8 ); \ |
1314 | uint16 _cl_overloadable NAME(uint16 ); \ |
1315 | + __IF_INT64( \ |
1316 | long _cl_overloadable NAME(long ); \ |
1317 | long2 _cl_overloadable NAME(long2 ); \ |
1318 | long3 _cl_overloadable NAME(long3 ); \ |
1319 | @@ -1581,47 +1074,7 @@ |
1320 | ulong3 _cl_overloadable NAME(ulong3 ); \ |
1321 | ulong4 _cl_overloadable NAME(ulong4 ); \ |
1322 | ulong8 _cl_overloadable NAME(ulong8 ); \ |
1323 | - ulong16 _cl_overloadable NAME(ulong16 ); |
1324 | -#else |
1325 | -#define _CL_DECLARE_FUNC_G_G(NAME) \ |
1326 | - char _cl_overloadable NAME(char ); \ |
1327 | - char2 _cl_overloadable NAME(char2 ); \ |
1328 | - char3 _cl_overloadable NAME(char3 ); \ |
1329 | - char4 _cl_overloadable NAME(char4 ); \ |
1330 | - char8 _cl_overloadable NAME(char8 ); \ |
1331 | - char16 _cl_overloadable NAME(char16 ); \ |
1332 | - uchar _cl_overloadable NAME(uchar ); \ |
1333 | - uchar2 _cl_overloadable NAME(uchar2 ); \ |
1334 | - uchar3 _cl_overloadable NAME(uchar3 ); \ |
1335 | - uchar4 _cl_overloadable NAME(uchar4 ); \ |
1336 | - uchar8 _cl_overloadable NAME(uchar8 ); \ |
1337 | - uchar16 _cl_overloadable NAME(uchar16 ); \ |
1338 | - short _cl_overloadable NAME(short ); \ |
1339 | - short2 _cl_overloadable NAME(short2 ); \ |
1340 | - short3 _cl_overloadable NAME(short3 ); \ |
1341 | - short4 _cl_overloadable NAME(short4 ); \ |
1342 | - short8 _cl_overloadable NAME(short8 ); \ |
1343 | - short16 _cl_overloadable NAME(short16 ); \ |
1344 | - ushort _cl_overloadable NAME(ushort ); \ |
1345 | - ushort2 _cl_overloadable NAME(ushort2 ); \ |
1346 | - ushort3 _cl_overloadable NAME(ushort3 ); \ |
1347 | - ushort4 _cl_overloadable NAME(ushort4 ); \ |
1348 | - ushort8 _cl_overloadable NAME(ushort8 ); \ |
1349 | - ushort16 _cl_overloadable NAME(ushort16); \ |
1350 | - int _cl_overloadable NAME(int ); \ |
1351 | - int2 _cl_overloadable NAME(int2 ); \ |
1352 | - int3 _cl_overloadable NAME(int3 ); \ |
1353 | - int4 _cl_overloadable NAME(int4 ); \ |
1354 | - int8 _cl_overloadable NAME(int8 ); \ |
1355 | - int16 _cl_overloadable NAME(int16 ); \ |
1356 | - uint _cl_overloadable NAME(uint ); \ |
1357 | - uint2 _cl_overloadable NAME(uint2 ); \ |
1358 | - uint3 _cl_overloadable NAME(uint3 ); \ |
1359 | - uint4 _cl_overloadable NAME(uint4 ); \ |
1360 | - uint8 _cl_overloadable NAME(uint8 ); \ |
1361 | - uint16 _cl_overloadable NAME(uint16 ); |
1362 | -#endif |
1363 | -#ifdef cl_khr_int64 |
1364 | + ulong16 _cl_overloadable NAME(ulong16 );) |
1365 | #define _CL_DECLARE_FUNC_G_GG(NAME) \ |
1366 | char _cl_overloadable NAME(char , char ); \ |
1367 | char2 _cl_overloadable NAME(char2 , char2 ); \ |
1368 | @@ -1659,6 +1112,7 @@ |
1369 | uint4 _cl_overloadable NAME(uint4 , uint4 ); \ |
1370 | uint8 _cl_overloadable NAME(uint8 , uint8 ); \ |
1371 | uint16 _cl_overloadable NAME(uint16 , uint16 ); \ |
1372 | + __IF_INT64( \ |
1373 | long _cl_overloadable NAME(long , long ); \ |
1374 | long2 _cl_overloadable NAME(long2 , long2 ); \ |
1375 | long3 _cl_overloadable NAME(long3 , long3 ); \ |
1376 | @@ -1670,47 +1124,7 @@ |
1377 | ulong3 _cl_overloadable NAME(ulong3 , ulong3 ); \ |
1378 | ulong4 _cl_overloadable NAME(ulong4 , ulong4 ); \ |
1379 | ulong8 _cl_overloadable NAME(ulong8 , ulong8 ); \ |
1380 | - ulong16 _cl_overloadable NAME(ulong16 , ulong16 ); |
1381 | -#else |
1382 | -#define _CL_DECLARE_FUNC_G_GG(NAME) \ |
1383 | - char _cl_overloadable NAME(char , char ); \ |
1384 | - char2 _cl_overloadable NAME(char2 , char2 ); \ |
1385 | - char3 _cl_overloadable NAME(char3 , char3 ); \ |
1386 | - char4 _cl_overloadable NAME(char4 , char4 ); \ |
1387 | - char8 _cl_overloadable NAME(char8 , char8 ); \ |
1388 | - char16 _cl_overloadable NAME(char16 , char16 ); \ |
1389 | - uchar _cl_overloadable NAME(uchar , uchar ); \ |
1390 | - uchar2 _cl_overloadable NAME(uchar2 , uchar2 ); \ |
1391 | - uchar3 _cl_overloadable NAME(uchar3 , uchar3 ); \ |
1392 | - uchar4 _cl_overloadable NAME(uchar4 , uchar4 ); \ |
1393 | - uchar8 _cl_overloadable NAME(uchar8 , uchar8 ); \ |
1394 | - uchar16 _cl_overloadable NAME(uchar16 , uchar16 ); \ |
1395 | - short _cl_overloadable NAME(short , short ); \ |
1396 | - short2 _cl_overloadable NAME(short2 , short2 ); \ |
1397 | - short3 _cl_overloadable NAME(short3 , short3 ); \ |
1398 | - short4 _cl_overloadable NAME(short4 , short4 ); \ |
1399 | - short8 _cl_overloadable NAME(short8 , short8 ); \ |
1400 | - short16 _cl_overloadable NAME(short16 , short16 ); \ |
1401 | - ushort _cl_overloadable NAME(ushort , ushort ); \ |
1402 | - ushort2 _cl_overloadable NAME(ushort2 , ushort2 ); \ |
1403 | - ushort3 _cl_overloadable NAME(ushort3 , ushort3 ); \ |
1404 | - ushort4 _cl_overloadable NAME(ushort4 , ushort4 ); \ |
1405 | - ushort8 _cl_overloadable NAME(ushort8 , ushort8 ); \ |
1406 | - ushort16 _cl_overloadable NAME(ushort16, ushort16); \ |
1407 | - int _cl_overloadable NAME(int , int ); \ |
1408 | - int2 _cl_overloadable NAME(int2 , int2 ); \ |
1409 | - int3 _cl_overloadable NAME(int3 , int3 ); \ |
1410 | - int4 _cl_overloadable NAME(int4 , int4 ); \ |
1411 | - int8 _cl_overloadable NAME(int8 , int8 ); \ |
1412 | - int16 _cl_overloadable NAME(int16 , int16 ); \ |
1413 | - uint _cl_overloadable NAME(uint , uint ); \ |
1414 | - uint2 _cl_overloadable NAME(uint2 , uint2 ); \ |
1415 | - uint3 _cl_overloadable NAME(uint3 , uint3 ); \ |
1416 | - uint4 _cl_overloadable NAME(uint4 , uint4 ); \ |
1417 | - uint8 _cl_overloadable NAME(uint8 , uint8 ); \ |
1418 | - uint16 _cl_overloadable NAME(uint16 , uint16 ); |
1419 | -#endif |
1420 | -#ifdef cl_khr_int64 |
1421 | + ulong16 _cl_overloadable NAME(ulong16 , ulong16 );) |
1422 | #define _CL_DECLARE_FUNC_G_GGG(NAME) \ |
1423 | char _cl_overloadable NAME(char , char , char ); \ |
1424 | char2 _cl_overloadable NAME(char2 , char2 , char2 ); \ |
1425 | @@ -1748,6 +1162,7 @@ |
1426 | uint4 _cl_overloadable NAME(uint4 , uint4 , uint4 ); \ |
1427 | uint8 _cl_overloadable NAME(uint8 , uint8 , uint8 ); \ |
1428 | uint16 _cl_overloadable NAME(uint16 , uint16 , uint16 ); \ |
1429 | + __IF_INT64( \ |
1430 | long _cl_overloadable NAME(long , long , long ); \ |
1431 | long2 _cl_overloadable NAME(long2 , long2 , long2 ); \ |
1432 | long3 _cl_overloadable NAME(long3 , long3 , long3 ); \ |
1433 | @@ -1759,47 +1174,7 @@ |
1434 | ulong3 _cl_overloadable NAME(ulong3 , ulong3 , ulong3 ); \ |
1435 | ulong4 _cl_overloadable NAME(ulong4 , ulong4 , ulong4 ); \ |
1436 | ulong8 _cl_overloadable NAME(ulong8 , ulong8 , ulong8 ); \ |
1437 | - ulong16 _cl_overloadable NAME(ulong16 , ulong16 , ulong16 ); |
1438 | -#else |
1439 | -#define _CL_DECLARE_FUNC_G_GGG(NAME) \ |
1440 | - char _cl_overloadable NAME(char , char , char ); \ |
1441 | - char2 _cl_overloadable NAME(char2 , char2 , char2 ); \ |
1442 | - char3 _cl_overloadable NAME(char3 , char3 , char3 ); \ |
1443 | - char4 _cl_overloadable NAME(char4 , char4 , char4 ); \ |
1444 | - char8 _cl_overloadable NAME(char8 , char8 , char8 ); \ |
1445 | - char16 _cl_overloadable NAME(char16 , char16 , char16 ); \ |
1446 | - uchar _cl_overloadable NAME(uchar , uchar , uchar ); \ |
1447 | - uchar2 _cl_overloadable NAME(uchar2 , uchar2 , uchar2 ); \ |
1448 | - uchar3 _cl_overloadable NAME(uchar3 , uchar3 , uchar3 ); \ |
1449 | - uchar4 _cl_overloadable NAME(uchar4 , uchar4 , uchar4 ); \ |
1450 | - uchar8 _cl_overloadable NAME(uchar8 , uchar8 , uchar8 ); \ |
1451 | - uchar16 _cl_overloadable NAME(uchar16 , uchar16 , uchar16 ); \ |
1452 | - short _cl_overloadable NAME(short , short , short ); \ |
1453 | - short2 _cl_overloadable NAME(short2 , short2 , short2 ); \ |
1454 | - short3 _cl_overloadable NAME(short3 , short3 , short3 ); \ |
1455 | - short4 _cl_overloadable NAME(short4 , short4 , short4 ); \ |
1456 | - short8 _cl_overloadable NAME(short8 , short8 , short8 ); \ |
1457 | - short16 _cl_overloadable NAME(short16 , short16 , short16 ); \ |
1458 | - ushort _cl_overloadable NAME(ushort , ushort , ushort ); \ |
1459 | - ushort2 _cl_overloadable NAME(ushort2 , ushort2 , ushort2 ); \ |
1460 | - ushort3 _cl_overloadable NAME(ushort3 , ushort3 , ushort3 ); \ |
1461 | - ushort4 _cl_overloadable NAME(ushort4 , ushort4 , ushort4 ); \ |
1462 | - ushort8 _cl_overloadable NAME(ushort8 , ushort8 , ushort8 ); \ |
1463 | - ushort16 _cl_overloadable NAME(ushort16, ushort16, ushort16); \ |
1464 | - int _cl_overloadable NAME(int , int , int ); \ |
1465 | - int2 _cl_overloadable NAME(int2 , int2 , int2 ); \ |
1466 | - int3 _cl_overloadable NAME(int3 , int3 , int3 ); \ |
1467 | - int4 _cl_overloadable NAME(int4 , int4 , int4 ); \ |
1468 | - int8 _cl_overloadable NAME(int8 , int8 , int8 ); \ |
1469 | - int16 _cl_overloadable NAME(int16 , int16 , int16 ); \ |
1470 | - uint _cl_overloadable NAME(uint , uint , uint ); \ |
1471 | - uint2 _cl_overloadable NAME(uint2 , uint2 , uint2 ); \ |
1472 | - uint3 _cl_overloadable NAME(uint3 , uint3 , uint3 ); \ |
1473 | - uint4 _cl_overloadable NAME(uint4 , uint4 , uint4 ); \ |
1474 | - uint8 _cl_overloadable NAME(uint8 , uint8 , uint8 ); \ |
1475 | - uint16 _cl_overloadable NAME(uint16 , uint16 , uint16 ); |
1476 | -#endif |
1477 | -#ifdef cl_khr_int64 |
1478 | + ulong16 _cl_overloadable NAME(ulong16 , ulong16 , ulong16 );) |
1479 | #define _CL_DECLARE_FUNC_G_GS(NAME) \ |
1480 | char2 _cl_overloadable NAME(char2 , char ); \ |
1481 | char3 _cl_overloadable NAME(char3 , char ); \ |
1482 | @@ -1831,6 +1206,7 @@ |
1483 | uint4 _cl_overloadable NAME(uint4 , uint ); \ |
1484 | uint8 _cl_overloadable NAME(uint8 , uint ); \ |
1485 | uint16 _cl_overloadable NAME(uint16 , uint ); \ |
1486 | + __IF_INT64( \ |
1487 | long2 _cl_overloadable NAME(long2 , long ); \ |
1488 | long3 _cl_overloadable NAME(long3 , long ); \ |
1489 | long4 _cl_overloadable NAME(long4 , long ); \ |
1490 | @@ -1840,41 +1216,7 @@ |
1491 | ulong3 _cl_overloadable NAME(ulong3 , ulong ); \ |
1492 | ulong4 _cl_overloadable NAME(ulong4 , ulong ); \ |
1493 | ulong8 _cl_overloadable NAME(ulong8 , ulong ); \ |
1494 | - ulong16 _cl_overloadable NAME(ulong16 , ulong ); |
1495 | -#else |
1496 | -#define _CL_DECLARE_FUNC_G_GS(NAME) \ |
1497 | - char2 _cl_overloadable NAME(char2 , char ); \ |
1498 | - char3 _cl_overloadable NAME(char3 , char ); \ |
1499 | - char4 _cl_overloadable NAME(char4 , char ); \ |
1500 | - char8 _cl_overloadable NAME(char8 , char ); \ |
1501 | - char16 _cl_overloadable NAME(char16 , char ); \ |
1502 | - uchar2 _cl_overloadable NAME(uchar2 , uchar ); \ |
1503 | - uchar3 _cl_overloadable NAME(uchar3 , uchar ); \ |
1504 | - uchar4 _cl_overloadable NAME(uchar4 , uchar ); \ |
1505 | - uchar8 _cl_overloadable NAME(uchar8 , uchar ); \ |
1506 | - uchar16 _cl_overloadable NAME(uchar16 , uchar ); \ |
1507 | - short2 _cl_overloadable NAME(short2 , short ); \ |
1508 | - short3 _cl_overloadable NAME(short3 , short ); \ |
1509 | - short4 _cl_overloadable NAME(short4 , short ); \ |
1510 | - short8 _cl_overloadable NAME(short8 , short ); \ |
1511 | - short16 _cl_overloadable NAME(short16 , short ); \ |
1512 | - ushort2 _cl_overloadable NAME(ushort2 , ushort); \ |
1513 | - ushort3 _cl_overloadable NAME(ushort3 , ushort); \ |
1514 | - ushort4 _cl_overloadable NAME(ushort4 , ushort); \ |
1515 | - ushort8 _cl_overloadable NAME(ushort8 , ushort); \ |
1516 | - ushort16 _cl_overloadable NAME(ushort16, ushort); \ |
1517 | - int2 _cl_overloadable NAME(int2 , int ); \ |
1518 | - int3 _cl_overloadable NAME(int3 , int ); \ |
1519 | - int4 _cl_overloadable NAME(int4 , int ); \ |
1520 | - int8 _cl_overloadable NAME(int8 , int ); \ |
1521 | - int16 _cl_overloadable NAME(int16 , int ); \ |
1522 | - uint2 _cl_overloadable NAME(uint2 , uint ); \ |
1523 | - uint3 _cl_overloadable NAME(uint3 , uint ); \ |
1524 | - uint4 _cl_overloadable NAME(uint4 , uint ); \ |
1525 | - uint8 _cl_overloadable NAME(uint8 , uint ); \ |
1526 | - uint16 _cl_overloadable NAME(uint16 , uint ); |
1527 | -#endif |
1528 | -#ifdef cl_khr_int64 |
1529 | + ulong16 _cl_overloadable NAME(ulong16 , ulong );) |
1530 | #define _CL_DECLARE_FUNC_UG_G(NAME) \ |
1531 | uchar _cl_overloadable NAME(char ); \ |
1532 | uchar2 _cl_overloadable NAME(char2 ); \ |
1533 | @@ -1894,12 +1236,13 @@ |
1534 | uint4 _cl_overloadable NAME(int4 ); \ |
1535 | uint8 _cl_overloadable NAME(int8 ); \ |
1536 | uint16 _cl_overloadable NAME(int16 ); \ |
1537 | + __IF_INT64( \ |
1538 | ulong _cl_overloadable NAME(long ); \ |
1539 | ulong2 _cl_overloadable NAME(long2 ); \ |
1540 | ulong3 _cl_overloadable NAME(long3 ); \ |
1541 | ulong4 _cl_overloadable NAME(long4 ); \ |
1542 | ulong8 _cl_overloadable NAME(long8 ); \ |
1543 | - ulong16 _cl_overloadable NAME(long16 ); \ |
1544 | + ulong16 _cl_overloadable NAME(long16 );) \ |
1545 | uchar _cl_overloadable NAME(uchar ); \ |
1546 | uchar2 _cl_overloadable NAME(uchar2 ); \ |
1547 | uchar3 _cl_overloadable NAME(uchar3 ); \ |
1548 | @@ -1918,52 +1261,13 @@ |
1549 | uint4 _cl_overloadable NAME(uint4 ); \ |
1550 | uint8 _cl_overloadable NAME(uint8 ); \ |
1551 | uint16 _cl_overloadable NAME(uint16 ); \ |
1552 | + __IF_INT64( \ |
1553 | ulong _cl_overloadable NAME(ulong ); \ |
1554 | ulong2 _cl_overloadable NAME(ulong2 ); \ |
1555 | ulong3 _cl_overloadable NAME(ulong3 ); \ |
1556 | ulong4 _cl_overloadable NAME(ulong4 ); \ |
1557 | ulong8 _cl_overloadable NAME(ulong8 ); \ |
1558 | - ulong16 _cl_overloadable NAME(ulong16 ); |
1559 | -#else |
1560 | -#define _CL_DECLARE_FUNC_UG_G(NAME) \ |
1561 | - uchar _cl_overloadable NAME(char ); \ |
1562 | - uchar2 _cl_overloadable NAME(char2 ); \ |
1563 | - uchar3 _cl_overloadable NAME(char3 ); \ |
1564 | - uchar4 _cl_overloadable NAME(char4 ); \ |
1565 | - uchar8 _cl_overloadable NAME(char8 ); \ |
1566 | - uchar16 _cl_overloadable NAME(char16 ); \ |
1567 | - ushort _cl_overloadable NAME(short ); \ |
1568 | - ushort2 _cl_overloadable NAME(short2 ); \ |
1569 | - ushort3 _cl_overloadable NAME(short3 ); \ |
1570 | - ushort4 _cl_overloadable NAME(short4 ); \ |
1571 | - ushort8 _cl_overloadable NAME(short8 ); \ |
1572 | - ushort16 _cl_overloadable NAME(short16 ); \ |
1573 | - uint _cl_overloadable NAME(int ); \ |
1574 | - uint2 _cl_overloadable NAME(int2 ); \ |
1575 | - uint3 _cl_overloadable NAME(int3 ); \ |
1576 | - uint4 _cl_overloadable NAME(int4 ); \ |
1577 | - uint8 _cl_overloadable NAME(int8 ); \ |
1578 | - uint16 _cl_overloadable NAME(int16 ); \ |
1579 | - uchar _cl_overloadable NAME(uchar ); \ |
1580 | - uchar2 _cl_overloadable NAME(uchar2 ); \ |
1581 | - uchar3 _cl_overloadable NAME(uchar3 ); \ |
1582 | - uchar4 _cl_overloadable NAME(uchar4 ); \ |
1583 | - uchar8 _cl_overloadable NAME(uchar8 ); \ |
1584 | - uchar16 _cl_overloadable NAME(uchar16 ); \ |
1585 | - ushort _cl_overloadable NAME(ushort ); \ |
1586 | - ushort2 _cl_overloadable NAME(ushort2 ); \ |
1587 | - ushort3 _cl_overloadable NAME(ushort3 ); \ |
1588 | - ushort4 _cl_overloadable NAME(ushort4 ); \ |
1589 | - ushort8 _cl_overloadable NAME(ushort8 ); \ |
1590 | - ushort16 _cl_overloadable NAME(ushort16); \ |
1591 | - uint _cl_overloadable NAME(uint ); \ |
1592 | - uint2 _cl_overloadable NAME(uint2 ); \ |
1593 | - uint3 _cl_overloadable NAME(uint3 ); \ |
1594 | - uint4 _cl_overloadable NAME(uint4 ); \ |
1595 | - uint8 _cl_overloadable NAME(uint8 ); \ |
1596 | - uint16 _cl_overloadable NAME(uint16 ); |
1597 | -#endif |
1598 | -#ifdef cl_khr_int64 |
1599 | + ulong16 _cl_overloadable NAME(ulong16 );) |
1600 | #define _CL_DECLARE_FUNC_UG_GG(NAME) \ |
1601 | uchar _cl_overloadable NAME(char , char ); \ |
1602 | uchar2 _cl_overloadable NAME(char2 , char2 ); \ |
1603 | @@ -1983,12 +1287,13 @@ |
1604 | uint4 _cl_overloadable NAME(int4 , int4 ); \ |
1605 | uint8 _cl_overloadable NAME(int8 , int8 ); \ |
1606 | uint16 _cl_overloadable NAME(int16 , int16 ); \ |
1607 | + __IF_INT64( \ |
1608 | ulong _cl_overloadable NAME(long , long ); \ |
1609 | ulong2 _cl_overloadable NAME(long2 , long2 ); \ |
1610 | ulong3 _cl_overloadable NAME(long3 , long3 ); \ |
1611 | ulong4 _cl_overloadable NAME(long4 , long4 ); \ |
1612 | ulong8 _cl_overloadable NAME(long8 , long8 ); \ |
1613 | - ulong16 _cl_overloadable NAME(long16 , long16 ); \ |
1614 | + ulong16 _cl_overloadable NAME(long16 , long16 );) \ |
1615 | uchar _cl_overloadable NAME(uchar , uchar ); \ |
1616 | uchar2 _cl_overloadable NAME(uchar2 , uchar2 ); \ |
1617 | uchar3 _cl_overloadable NAME(uchar3 , uchar3 ); \ |
1618 | @@ -2007,59 +1312,20 @@ |
1619 | uint4 _cl_overloadable NAME(uint4 , uint4 ); \ |
1620 | uint8 _cl_overloadable NAME(uint8 , uint8 ); \ |
1621 | uint16 _cl_overloadable NAME(uint16 , uint16 ); \ |
1622 | + __IF_INT64( \ |
1623 | ulong _cl_overloadable NAME(ulong , ulong ); \ |
1624 | ulong2 _cl_overloadable NAME(ulong2 , ulong2 ); \ |
1625 | ulong3 _cl_overloadable NAME(ulong3 , ulong3 ); \ |
1626 | ulong4 _cl_overloadable NAME(ulong4 , ulong4 ); \ |
1627 | ulong8 _cl_overloadable NAME(ulong8 , ulong8 ); \ |
1628 | - ulong16 _cl_overloadable NAME(ulong16 , ulong16 ); |
1629 | -#else |
1630 | -#define _CL_DECLARE_FUNC_UG_GG(NAME) \ |
1631 | - uchar _cl_overloadable NAME(char , char ); \ |
1632 | - uchar2 _cl_overloadable NAME(char2 , char2 ); \ |
1633 | - uchar3 _cl_overloadable NAME(char3 , char3 ); \ |
1634 | - uchar4 _cl_overloadable NAME(char4 , char4 ); \ |
1635 | - uchar8 _cl_overloadable NAME(char8 , char8 ); \ |
1636 | - uchar16 _cl_overloadable NAME(char16 , char16 ); \ |
1637 | - ushort _cl_overloadable NAME(short , short ); \ |
1638 | - ushort2 _cl_overloadable NAME(short2 , short2 ); \ |
1639 | - ushort3 _cl_overloadable NAME(short3 , short3 ); \ |
1640 | - ushort4 _cl_overloadable NAME(short4 , short4 ); \ |
1641 | - ushort8 _cl_overloadable NAME(short8 , short8 ); \ |
1642 | - ushort16 _cl_overloadable NAME(short16 , short16 ); \ |
1643 | - uint _cl_overloadable NAME(int , int ); \ |
1644 | - uint2 _cl_overloadable NAME(int2 , int2 ); \ |
1645 | - uint3 _cl_overloadable NAME(int3 , int3 ); \ |
1646 | - uint4 _cl_overloadable NAME(int4 , int4 ); \ |
1647 | - uint8 _cl_overloadable NAME(int8 , int8 ); \ |
1648 | - uint16 _cl_overloadable NAME(int16 , int16 ); \ |
1649 | - uchar _cl_overloadable NAME(uchar , uchar ); \ |
1650 | - uchar2 _cl_overloadable NAME(uchar2 , uchar2 ); \ |
1651 | - uchar3 _cl_overloadable NAME(uchar3 , uchar3 ); \ |
1652 | - uchar4 _cl_overloadable NAME(uchar4 , uchar4 ); \ |
1653 | - uchar8 _cl_overloadable NAME(uchar8 , uchar8 ); \ |
1654 | - uchar16 _cl_overloadable NAME(uchar16 , uchar16 ); \ |
1655 | - ushort _cl_overloadable NAME(ushort , ushort ); \ |
1656 | - ushort2 _cl_overloadable NAME(ushort2 , ushort2 ); \ |
1657 | - ushort3 _cl_overloadable NAME(ushort3 , ushort3 ); \ |
1658 | - ushort4 _cl_overloadable NAME(ushort4 , ushort4 ); \ |
1659 | - ushort8 _cl_overloadable NAME(ushort8 , ushort8 ); \ |
1660 | - ushort16 _cl_overloadable NAME(ushort16, ushort16); \ |
1661 | - uint _cl_overloadable NAME(uint , uint ); \ |
1662 | - uint2 _cl_overloadable NAME(uint2 , uint2 ); \ |
1663 | - uint3 _cl_overloadable NAME(uint3 , uint3 ); \ |
1664 | - uint4 _cl_overloadable NAME(uint4 , uint4 ); \ |
1665 | - uint8 _cl_overloadable NAME(uint8 , uint8 ); \ |
1666 | - uint16 _cl_overloadable NAME(uint16 , uint16 ); |
1667 | -#endif |
1668 | -#ifdef cl_khr_int64 |
1669 | + ulong16 _cl_overloadable NAME(ulong16 , ulong16 );) |
1670 | #define _CL_DECLARE_FUNC_LG_GUG(NAME) \ |
1671 | - short _cl_overloadable NAME(char , uchar ); \ |
1672 | - short2 _cl_overloadable NAME(char2 , uchar2 ); \ |
1673 | - short3 _cl_overloadable NAME(char3 , uchar3 ); \ |
1674 | - short4 _cl_overloadable NAME(char4 , uchar4 ); \ |
1675 | - short8 _cl_overloadable NAME(char8 , uchar8 ); \ |
1676 | - short16 _cl_overloadable NAME(char16 , uchar16 ); \ |
1677 | + short _cl_overloadable NAME(char , uchar ); \ |
1678 | + short2 _cl_overloadable NAME(char2 , uchar2 ); \ |
1679 | + short3 _cl_overloadable NAME(char3 , uchar3 ); \ |
1680 | + short4 _cl_overloadable NAME(char4 , uchar4 ); \ |
1681 | + short8 _cl_overloadable NAME(char8 , uchar8 ); \ |
1682 | + short16 _cl_overloadable NAME(char16 , uchar16 ); \ |
1683 | ushort _cl_overloadable NAME(uchar , uchar ); \ |
1684 | ushort2 _cl_overloadable NAME(uchar2 , uchar2 ); \ |
1685 | ushort3 _cl_overloadable NAME(uchar3 , uchar3 ); \ |
1686 | @@ -2072,52 +1338,25 @@ |
1687 | uint4 _cl_overloadable NAME(ushort4 , ushort4 ); \ |
1688 | uint8 _cl_overloadable NAME(ushort8 , ushort8 ); \ |
1689 | uint16 _cl_overloadable NAME(ushort16, ushort16); \ |
1690 | - int _cl_overloadable NAME(short , ushort ); \ |
1691 | - int2 _cl_overloadable NAME(short2 , ushort2 ); \ |
1692 | - int3 _cl_overloadable NAME(short3 , ushort3 ); \ |
1693 | - int4 _cl_overloadable NAME(short4 , ushort4 ); \ |
1694 | - int8 _cl_overloadable NAME(short8 , ushort8 ); \ |
1695 | - int16 _cl_overloadable NAME(short16 , ushort16 ); \ |
1696 | - long _cl_overloadable NAME(int , uint ); \ |
1697 | - long2 _cl_overloadable NAME(int2 , uint2 ); \ |
1698 | - long3 _cl_overloadable NAME(int3 , uint3 ); \ |
1699 | - long4 _cl_overloadable NAME(int4 , uint4 ); \ |
1700 | - long8 _cl_overloadable NAME(int8 , uint8 ); \ |
1701 | - long16 _cl_overloadable NAME(int16 , uint16 ); \ |
1702 | + int _cl_overloadable NAME(short , ushort ); \ |
1703 | + int2 _cl_overloadable NAME(short2 , ushort2 ); \ |
1704 | + int3 _cl_overloadable NAME(short3 , ushort3 ); \ |
1705 | + int4 _cl_overloadable NAME(short4 , ushort4 ); \ |
1706 | + int8 _cl_overloadable NAME(short8 , ushort8 ); \ |
1707 | + int16 _cl_overloadable NAME(short16 , ushort16); \ |
1708 | + __IF_INT64( \ |
1709 | + long _cl_overloadable NAME(int , uint ); \ |
1710 | + long2 _cl_overloadable NAME(int2 , uint2 ); \ |
1711 | + long3 _cl_overloadable NAME(int3 , uint3 ); \ |
1712 | + long4 _cl_overloadable NAME(int4 , uint4 ); \ |
1713 | + long8 _cl_overloadable NAME(int8 , uint8 ); \ |
1714 | + long16 _cl_overloadable NAME(int16 , uint16 ); \ |
1715 | ulong _cl_overloadable NAME(uint , uint ); \ |
1716 | ulong2 _cl_overloadable NAME(uint2 , uint2 ); \ |
1717 | ulong3 _cl_overloadable NAME(uint3 , uint3 ); \ |
1718 | ulong4 _cl_overloadable NAME(uint4 , uint4 ); \ |
1719 | ulong8 _cl_overloadable NAME(uint8 , uint8 ); \ |
1720 | - ulong16 _cl_overloadable NAME(uint16 , uint16 ); |
1721 | -#else |
1722 | -#define _CL_DECLARE_FUNC_LG_GUG(NAME) \ |
1723 | - short _cl_overloadable NAME(char , uchar ); \ |
1724 | - short2 _cl_overloadable NAME(char2 , uchar2 ); \ |
1725 | - short3 _cl_overloadable NAME(char3 , uchar3 ); \ |
1726 | - short4 _cl_overloadable NAME(char4 , uchar4 ); \ |
1727 | - short8 _cl_overloadable NAME(char8 , uchar8 ); \ |
1728 | - short16 _cl_overloadable NAME(char16 , uchar16 ); \ |
1729 | - ushort _cl_overloadable NAME(uchar , uchar ); \ |
1730 | - ushort2 _cl_overloadable NAME(uchar2 , uchar2 ); \ |
1731 | - ushort3 _cl_overloadable NAME(uchar3 , uchar3 ); \ |
1732 | - ushort4 _cl_overloadable NAME(uchar4 , uchar4 ); \ |
1733 | - ushort8 _cl_overloadable NAME(uchar8 , uchar8 ); \ |
1734 | - ushort16 _cl_overloadable NAME(uchar16 , uchar16 ); \ |
1735 | - uint _cl_overloadable NAME(ushort , ushort ); \ |
1736 | - uint2 _cl_overloadable NAME(ushort2 , ushort2 ); \ |
1737 | - uint3 _cl_overloadable NAME(ushort3 , ushort3 ); \ |
1738 | - uint4 _cl_overloadable NAME(ushort4 , ushort4 ); \ |
1739 | - uint8 _cl_overloadable NAME(ushort8 , ushort8 ); \ |
1740 | - uint16 _cl_overloadable NAME(ushort16, ushort16); \ |
1741 | - int _cl_overloadable NAME(short , ushort ); \ |
1742 | - int2 _cl_overloadable NAME(short2 , ushort2 ); \ |
1743 | - int3 _cl_overloadable NAME(short3 , ushort3 ); \ |
1744 | - int4 _cl_overloadable NAME(short4 , ushort4 ); \ |
1745 | - int8 _cl_overloadable NAME(short8 , ushort8 ); \ |
1746 | - int16 _cl_overloadable NAME(short16 , ushort16 ); |
1747 | -#endif |
1748 | -#ifdef cl_khr_int64 |
1749 | + ulong16 _cl_overloadable NAME(uint16 , uint16 );) |
1750 | #define _CL_DECLARE_FUNC_I_IG(NAME) \ |
1751 | int _cl_overloadable NAME(char ); \ |
1752 | int _cl_overloadable NAME(char2 ); \ |
1753 | @@ -2137,33 +1376,13 @@ |
1754 | int _cl_overloadable NAME(int4 ); \ |
1755 | int _cl_overloadable NAME(int8 ); \ |
1756 | int _cl_overloadable NAME(int16 ); \ |
1757 | + __IF_INT64( \ |
1758 | int _cl_overloadable NAME(long ); \ |
1759 | int _cl_overloadable NAME(long2 ); \ |
1760 | int _cl_overloadable NAME(long3 ); \ |
1761 | int _cl_overloadable NAME(long4 ); \ |
1762 | int _cl_overloadable NAME(long8 ); \ |
1763 | - int _cl_overloadable NAME(long16 ); |
1764 | -#else |
1765 | -#define _CL_DECLARE_FUNC_I_IG(NAME) \ |
1766 | - int _cl_overloadable NAME(char ); \ |
1767 | - int _cl_overloadable NAME(char2 ); \ |
1768 | - int _cl_overloadable NAME(char3 ); \ |
1769 | - int _cl_overloadable NAME(char4 ); \ |
1770 | - int _cl_overloadable NAME(char8 ); \ |
1771 | - int _cl_overloadable NAME(char16 ); \ |
1772 | - int _cl_overloadable NAME(short ); \ |
1773 | - int _cl_overloadable NAME(short2 ); \ |
1774 | - int _cl_overloadable NAME(short3 ); \ |
1775 | - int _cl_overloadable NAME(short4 ); \ |
1776 | - int _cl_overloadable NAME(short8 ); \ |
1777 | - int _cl_overloadable NAME(short16); \ |
1778 | - int _cl_overloadable NAME(int ); \ |
1779 | - int _cl_overloadable NAME(int2 ); \ |
1780 | - int _cl_overloadable NAME(int3 ); \ |
1781 | - int _cl_overloadable NAME(int4 ); \ |
1782 | - int _cl_overloadable NAME(int8 ); \ |
1783 | - int _cl_overloadable NAME(int16 ); |
1784 | -#endif |
1785 | + int _cl_overloadable NAME(long16 );) |
1786 | #define _CL_DECLARE_FUNC_J_JJ(NAME) \ |
1787 | int _cl_overloadable NAME(int , int ); \ |
1788 | int2 _cl_overloadable NAME(int2 , int2 ); \ |
1789 | |
1790 | === modified file 'lib/kernel/Makefile.am' |
1791 | --- lib/kernel/Makefile.am 2011-11-08 13:38:46 +0000 |
1792 | +++ lib/kernel/Makefile.am 2011-11-14 18:40:38 +0000 |
1793 | @@ -42,5 +42,5 @@ |
1794 | .ll.o: |
1795 | $(LLVM_AS) -o $@ $< |
1796 | |
1797 | -$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h templates.h |
1798 | +$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h |
1799 | $(libkernel_a_SOURCES:.cl=.o): $(top_srcdir)/include/_kernel.h templates.h |
1800 | |
1801 | === modified file 'lib/kernel/arm/Makefile.am' |
1802 | --- lib/kernel/arm/Makefile.am 2011-11-09 15:30:32 +0000 |
1803 | +++ lib/kernel/arm/Makefile.am 2011-11-14 18:40:38 +0000 |
1804 | @@ -47,5 +47,5 @@ |
1805 | .c.o: |
1806 | $(CLANG) $(AM_CPPFLAGS) $(CLANGFLAGS) $(ARM_CLANG_FLAGS) -c -emit-llvm -include $(top_srcdir)/include/_kernel.h -o $@ $< |
1807 | |
1808 | -$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
1809 | +$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h |
1810 | $(libkernel_a_SOURCES:.cl=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
1811 | |
1812 | === modified file 'lib/kernel/sources.mk' |
1813 | --- lib/kernel/sources.mk 2011-11-07 18:06:12 +0000 |
1814 | +++ lib/kernel/sources.mk 2011-11-14 18:40:38 +0000 |
1815 | @@ -1,5 +1,4 @@ |
1816 | -libkernel_a_SOURCES = templates.h \ |
1817 | - barrier.c \ |
1818 | +libkernel_a_SOURCES = barrier.c \ |
1819 | get_global_size.c \ |
1820 | get_global_id.c \ |
1821 | get_local_id.c \ |
1822 | |
1823 | === modified file 'lib/kernel/tce/Makefile.am' |
1824 | --- lib/kernel/tce/Makefile.am 2011-11-07 18:06:12 +0000 |
1825 | +++ lib/kernel/tce/Makefile.am 2011-11-14 18:40:38 +0000 |
1826 | @@ -42,5 +42,5 @@ |
1827 | .c.o: |
1828 | $(CLANG) $(AM_CPPFLAGS) $(CLANGFLAGS) -ccc-host-triple tce-tut-llvm -c -emit-llvm -include $(top_srcdir)/include/_kernel.h -o $@ $< |
1829 | |
1830 | -$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
1831 | +$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h |
1832 | $(libkernel_a_SOURCES:.cl=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
1833 | |
1834 | === modified file 'lib/kernel/templates.h' |
1835 | --- lib/kernel/templates.h 2011-11-05 00:10:25 +0000 |
1836 | +++ lib/kernel/templates.h 2011-11-14 18:40:38 +0000 |
1837 | @@ -27,41 +27,28 @@ |
1838 | { \ |
1839 | return (VTYPE)(NAME(a.LO), NAME(a.HI)); \ |
1840 | } |
1841 | -#ifdef cl_khr_fp64 |
1842 | #define DEFINE_BUILTIN_V_V(NAME) \ |
1843 | float __attribute__ ((overloadable)) \ |
1844 | NAME(float a) \ |
1845 | { \ |
1846 | return __builtin_##NAME##f(a); \ |
1847 | } \ |
1848 | + IMPLEMENT_BUILTIN_V_V(NAME, float2 , lo, hi) \ |
1849 | + IMPLEMENT_BUILTIN_V_V(NAME, float4 , lo, hi) \ |
1850 | + IMPLEMENT_BUILTIN_V_V(NAME, float3 , lo, s2) \ |
1851 | + IMPLEMENT_BUILTIN_V_V(NAME, float8 , lo, hi) \ |
1852 | + IMPLEMENT_BUILTIN_V_V(NAME, float16 , lo, hi) \ |
1853 | + __IF_FP64( \ |
1854 | double __attribute__ ((overloadable)) \ |
1855 | NAME(double a) \ |
1856 | { \ |
1857 | return __builtin_##NAME(a); \ |
1858 | } \ |
1859 | - IMPLEMENT_BUILTIN_V_V(NAME, float2 , lo, hi) \ |
1860 | - IMPLEMENT_BUILTIN_V_V(NAME, float4 , lo, hi) \ |
1861 | - IMPLEMENT_BUILTIN_V_V(NAME, float3 , lo, s2) \ |
1862 | - IMPLEMENT_BUILTIN_V_V(NAME, float8 , lo, hi) \ |
1863 | - IMPLEMENT_BUILTIN_V_V(NAME, float16 , lo, hi) \ |
1864 | IMPLEMENT_BUILTIN_V_V(NAME, double2 , lo, hi) \ |
1865 | IMPLEMENT_BUILTIN_V_V(NAME, double3 , lo, s2) \ |
1866 | IMPLEMENT_BUILTIN_V_V(NAME, double4 , lo, hi) \ |
1867 | IMPLEMENT_BUILTIN_V_V(NAME, double8 , lo, hi) \ |
1868 | - IMPLEMENT_BUILTIN_V_V(NAME, double16, lo, hi) |
1869 | -#else |
1870 | -#define DEFINE_BUILTIN_V_V(NAME) \ |
1871 | - float __attribute__ ((overloadable)) \ |
1872 | - NAME(float a) \ |
1873 | - { \ |
1874 | - return __builtin_##NAME##f(a); \ |
1875 | - } \ |
1876 | - IMPLEMENT_BUILTIN_V_V(NAME, float2 , lo, hi) \ |
1877 | - IMPLEMENT_BUILTIN_V_V(NAME, float4 , lo, hi) \ |
1878 | - IMPLEMENT_BUILTIN_V_V(NAME, float3 , lo, s2) \ |
1879 | - IMPLEMENT_BUILTIN_V_V(NAME, float8 , lo, hi) \ |
1880 | - IMPLEMENT_BUILTIN_V_V(NAME, float16 , lo, hi) |
1881 | -#endif |
1882 | + IMPLEMENT_BUILTIN_V_V(NAME, double16, lo, hi)) |
1883 | |
1884 | #define IMPLEMENT_BUILTIN_V_VV(NAME, VTYPE, LO, HI) \ |
1885 | VTYPE __attribute__ ((overloadable)) \ |
1886 | @@ -69,41 +56,28 @@ |
1887 | { \ |
1888 | return (VTYPE)(NAME(a.LO, b.LO), NAME(a.HI, b.HI)); \ |
1889 | } |
1890 | -#ifdef cl_khr_fp64 |
1891 | #define DEFINE_BUILTIN_V_VV(NAME) \ |
1892 | float __attribute__ ((overloadable)) \ |
1893 | NAME(float a, float b) \ |
1894 | { \ |
1895 | return __builtin_##NAME##f(a, b); \ |
1896 | } \ |
1897 | + IMPLEMENT_BUILTIN_V_VV(NAME, float2 , lo, hi) \ |
1898 | + IMPLEMENT_BUILTIN_V_VV(NAME, float3 , lo, s2) \ |
1899 | + IMPLEMENT_BUILTIN_V_VV(NAME, float4 , lo, hi) \ |
1900 | + IMPLEMENT_BUILTIN_V_VV(NAME, float8 , lo, hi) \ |
1901 | + IMPLEMENT_BUILTIN_V_VV(NAME, float16 , lo, hi) \ |
1902 | + __IF_FP64( \ |
1903 | double __attribute__ ((overloadable)) \ |
1904 | NAME(double a, double b) \ |
1905 | { \ |
1906 | return __builtin_##NAME(a, b); \ |
1907 | } \ |
1908 | - IMPLEMENT_BUILTIN_V_VV(NAME, float2 , lo, hi) \ |
1909 | - IMPLEMENT_BUILTIN_V_VV(NAME, float3 , lo, s2) \ |
1910 | - IMPLEMENT_BUILTIN_V_VV(NAME, float4 , lo, hi) \ |
1911 | - IMPLEMENT_BUILTIN_V_VV(NAME, float8 , lo, hi) \ |
1912 | - IMPLEMENT_BUILTIN_V_VV(NAME, float16 , lo, hi) \ |
1913 | IMPLEMENT_BUILTIN_V_VV(NAME, double2 , lo, hi) \ |
1914 | IMPLEMENT_BUILTIN_V_VV(NAME, double3 , lo, s2) \ |
1915 | IMPLEMENT_BUILTIN_V_VV(NAME, double4 , lo, hi) \ |
1916 | IMPLEMENT_BUILTIN_V_VV(NAME, double8 , lo, hi) \ |
1917 | - IMPLEMENT_BUILTIN_V_VV(NAME, double16, lo, hi) |
1918 | -#else |
1919 | -#define DEFINE_BUILTIN_V_VV(NAME) \ |
1920 | - float __attribute__ ((overloadable)) \ |
1921 | - NAME(float a, float b) \ |
1922 | - { \ |
1923 | - return __builtin_##NAME##f(a, b); \ |
1924 | - } \ |
1925 | - IMPLEMENT_BUILTIN_V_VV(NAME, float2 , lo, hi) \ |
1926 | - IMPLEMENT_BUILTIN_V_VV(NAME, float3 , lo, s2) \ |
1927 | - IMPLEMENT_BUILTIN_V_VV(NAME, float4 , lo, hi) \ |
1928 | - IMPLEMENT_BUILTIN_V_VV(NAME, float8 , lo, hi) \ |
1929 | - IMPLEMENT_BUILTIN_V_VV(NAME, float16 , lo, hi) |
1930 | -#endif |
1931 | + IMPLEMENT_BUILTIN_V_VV(NAME, double16, lo, hi)) |
1932 | |
1933 | #define IMPLEMENT_BUILTIN_V_VVV(NAME, VTYPE, LO, HI) \ |
1934 | VTYPE __attribute__ ((overloadable)) \ |
1935 | @@ -111,41 +85,28 @@ |
1936 | { \ |
1937 | return (VTYPE)(NAME(a.LO, b.LO, c.LO), NAME(a.HI, b.HI, c.HI)); \ |
1938 | } |
1939 | -#ifdef cl_khr_fp64 |
1940 | #define DEFINE_BUILTIN_V_VVV(NAME) \ |
1941 | float __attribute__ ((overloadable)) \ |
1942 | NAME(float a, float b, float c) \ |
1943 | { \ |
1944 | return __builtin_##NAME##f(a, b, c); \ |
1945 | } \ |
1946 | + IMPLEMENT_BUILTIN_V_VVV(NAME, float2 , lo, hi) \ |
1947 | + IMPLEMENT_BUILTIN_V_VVV(NAME, float3 , lo, s2) \ |
1948 | + IMPLEMENT_BUILTIN_V_VVV(NAME, float4 , lo, hi) \ |
1949 | + IMPLEMENT_BUILTIN_V_VVV(NAME, float8 , lo, hi) \ |
1950 | + IMPLEMENT_BUILTIN_V_VVV(NAME, float16 , lo, hi) \ |
1951 | + __IF_FP64( \ |
1952 | double __attribute__ ((overloadable)) \ |
1953 | NAME(double a, double b, double c) \ |
1954 | { \ |
1955 | return __builtin_##NAME(a, b, c); \ |
1956 | } \ |
1957 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float2 , lo, hi) \ |
1958 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float3 , lo, s2) \ |
1959 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float4 , lo, hi) \ |
1960 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float8 , lo, hi) \ |
1961 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float16 , lo, hi) \ |
1962 | IMPLEMENT_BUILTIN_V_VVV(NAME, double2 , lo, hi) \ |
1963 | IMPLEMENT_BUILTIN_V_VVV(NAME, double3 , lo, s2) \ |
1964 | IMPLEMENT_BUILTIN_V_VVV(NAME, double4 , lo, hi) \ |
1965 | IMPLEMENT_BUILTIN_V_VVV(NAME, double8 , lo, hi) \ |
1966 | - IMPLEMENT_BUILTIN_V_VVV(NAME, double16, lo, hi) |
1967 | -#else |
1968 | -#define DEFINE_BUILTIN_V_VVV(NAME) \ |
1969 | - float __attribute__ ((overloadable)) \ |
1970 | - NAME(float a, float b, float c) \ |
1971 | - { \ |
1972 | - return __builtin_##NAME##f(a, b, c); \ |
1973 | - } \ |
1974 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float2 , lo, hi) \ |
1975 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float3 , lo, s2) \ |
1976 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float4 , lo, hi) \ |
1977 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float8 , lo, hi) \ |
1978 | - IMPLEMENT_BUILTIN_V_VVV(NAME, float16 , lo, hi) |
1979 | -#endif |
1980 | + IMPLEMENT_BUILTIN_V_VVV(NAME, double16, lo, hi)) |
1981 | |
1982 | #define IMPLEMENT_BUILTIN_V_U(NAME, VTYPE, UTYPE, LO, HI) \ |
1983 | VTYPE __attribute__ ((overloadable)) \ |
1984 | @@ -153,41 +114,28 @@ |
1985 | { \ |
1986 | return (VTYPE)(NAME(a.LO), NAME(a.HI)); \ |
1987 | } |
1988 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
1989 | #define DEFINE_BUILTIN_V_U(NAME) \ |
1990 | float __attribute__ ((overloadable)) \ |
1991 | NAME(uint a) \ |
1992 | { \ |
1993 | return __builtin_##NAME##f(a); \ |
1994 | } \ |
1995 | + IMPLEMENT_BUILTIN_V_U(NAME, float2 , uint2 , lo, hi) \ |
1996 | + IMPLEMENT_BUILTIN_V_U(NAME, float3 , uint3 , lo, s2) \ |
1997 | + IMPLEMENT_BUILTIN_V_U(NAME, float4 , uint4 , lo, hi) \ |
1998 | + IMPLEMENT_BUILTIN_V_U(NAME, float8 , uint8 , lo, hi) \ |
1999 | + IMPLEMENT_BUILTIN_V_U(NAME, float16 , uint16 , lo, hi) \ |
2000 | + __IF_FP64( \ |
2001 | double __attribute__ ((overloadable)) \ |
2002 | NAME(ulong a) \ |
2003 | { \ |
2004 | return __builtin_##NAME(a); \ |
2005 | } \ |
2006 | - IMPLEMENT_BUILTIN_V_U(NAME, float2 , uint2 , lo, hi) \ |
2007 | - IMPLEMENT_BUILTIN_V_U(NAME, float3 , uint3 , lo, s2) \ |
2008 | - IMPLEMENT_BUILTIN_V_U(NAME, float4 , uint4 , lo, hi) \ |
2009 | - IMPLEMENT_BUILTIN_V_U(NAME, float8 , uint8 , lo, hi) \ |
2010 | - IMPLEMENT_BUILTIN_V_U(NAME, float16 , uint16 , lo, hi) \ |
2011 | IMPLEMENT_BUILTIN_V_U(NAME, double2 , ulong2 , lo, hi) \ |
2012 | IMPLEMENT_BUILTIN_V_U(NAME, double3 , ulong3 , lo, s2) \ |
2013 | IMPLEMENT_BUILTIN_V_U(NAME, double4 , ulong4 , lo, hi) \ |
2014 | IMPLEMENT_BUILTIN_V_U(NAME, double8 , ulong8 , lo, hi) \ |
2015 | - IMPLEMENT_BUILTIN_V_U(NAME, double16, ulong16, lo, hi) |
2016 | -#else |
2017 | -#define DEFINE_BUILTIN_V_U(NAME) \ |
2018 | - float __attribute__ ((overloadable)) \ |
2019 | - NAME(uint a) \ |
2020 | - { \ |
2021 | - return __builtin_##NAME##f(a); \ |
2022 | - } \ |
2023 | - IMPLEMENT_BUILTIN_V_U(NAME, float2 , uint2 , lo, hi) \ |
2024 | - IMPLEMENT_BUILTIN_V_U(NAME, float3 , uint3 , lo, s2) \ |
2025 | - IMPLEMENT_BUILTIN_V_U(NAME, float4 , uint4 , lo, hi) \ |
2026 | - IMPLEMENT_BUILTIN_V_U(NAME, float8 , uint8 , lo, hi) \ |
2027 | - IMPLEMENT_BUILTIN_V_U(NAME, float16 , uint16 , lo, hi) |
2028 | -#endif |
2029 | + IMPLEMENT_BUILTIN_V_U(NAME, double16, ulong16, lo, hi)) |
2030 | |
2031 | #define IMPLEMENT_BUILTIN_J_VV(NAME, VTYPE, JTYPE, LO, HI) \ |
2032 | JTYPE __attribute__ ((overloadable)) \ |
2033 | @@ -195,58 +143,29 @@ |
2034 | { \ |
2035 | return (JTYPE)(NAME(a.LO, b.LO), NAME(a.HI, b.HI)); \ |
2036 | } |
2037 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
2038 | #define DEFINE_BUILTIN_J_VV(NAME) \ |
2039 | int __attribute__ ((overloadable)) \ |
2040 | NAME(float a, float b) \ |
2041 | { \ |
2042 | return __builtin_##NAME##f(a, b); \ |
2043 | } \ |
2044 | - int __attribute__ ((overloadable)) \ |
2045 | - NAME(double a, double b) \ |
2046 | - { \ |
2047 | - return __builtin_##NAME(a, b); \ |
2048 | - } \ |
2049 | IMPLEMENT_BUILTIN_J_VV(NAME, float2 , int2 , lo, hi) \ |
2050 | IMPLEMENT_BUILTIN_J_VV(NAME, float3 , int3 , lo, s2) \ |
2051 | IMPLEMENT_BUILTIN_J_VV(NAME, float4 , int4 , lo, hi) \ |
2052 | IMPLEMENT_BUILTIN_J_VV(NAME, float8 , int8 , lo, hi) \ |
2053 | IMPLEMENT_BUILTIN_J_VV(NAME, float16 , int16 , lo, hi) \ |
2054 | + __IF_FP64( \ |
2055 | + int __attribute__ ((overloadable)) \ |
2056 | + NAME(double a, double b) \ |
2057 | + { \ |
2058 | + return __builtin_##NAME(a, b); \ |
2059 | + } \ |
2060 | + __IF_INT64( \ |
2061 | IMPLEMENT_BUILTIN_J_VV(NAME, double2 , long2 , lo, hi) \ |
2062 | IMPLEMENT_BUILTIN_J_VV(NAME, double3 , long3 , lo, s2) \ |
2063 | IMPLEMENT_BUILTIN_J_VV(NAME, double4 , long4 , lo, hi) \ |
2064 | IMPLEMENT_BUILTIN_J_VV(NAME, double8 , long8 , lo, hi) \ |
2065 | - IMPLEMENT_BUILTIN_J_VV(NAME, double16, long16, lo, hi) |
2066 | -#elif defined(cl_khr_fp64) |
2067 | -#define DEFINE_BUILTIN_J_VV(NAME) \ |
2068 | - int __attribute__ ((overloadable)) \ |
2069 | - NAME(float a, float b) \ |
2070 | - { \ |
2071 | - return __builtin_##NAME##f(a, b); \ |
2072 | - } \ |
2073 | - int __attribute__ ((overloadable)) \ |
2074 | - NAME(double a, double b) \ |
2075 | - { \ |
2076 | - return __builtin_##NAME(a, b); \ |
2077 | - } \ |
2078 | - IMPLEMENT_BUILTIN_J_VV(NAME, float2 , int2 , lo, hi) \ |
2079 | - IMPLEMENT_BUILTIN_J_VV(NAME, float3 , int3 , lo, s2) \ |
2080 | - IMPLEMENT_BUILTIN_J_VV(NAME, float4 , int4 , lo, hi) \ |
2081 | - IMPLEMENT_BUILTIN_J_VV(NAME, float8 , int8 , lo, hi) \ |
2082 | - IMPLEMENT_BUILTIN_J_VV(NAME, float16 , int16 , lo, hi) |
2083 | -#else |
2084 | -#define DEFINE_BUILTIN_J_VV(NAME) \ |
2085 | - int __attribute__ ((overloadable)) \ |
2086 | - NAME(float a, float b) \ |
2087 | - { \ |
2088 | - return __builtin_##NAME##f(a, b); \ |
2089 | - } \ |
2090 | - IMPLEMENT_BUILTIN_J_VV(NAME, float2 , int2 , lo, hi) \ |
2091 | - IMPLEMENT_BUILTIN_J_VV(NAME, float3 , int3 , lo, s2) \ |
2092 | - IMPLEMENT_BUILTIN_J_VV(NAME, float4 , int4 , lo, hi) \ |
2093 | - IMPLEMENT_BUILTIN_J_VV(NAME, float8 , int8 , lo, hi) \ |
2094 | - IMPLEMENT_BUILTIN_J_VV(NAME, float16 , int16 , lo, hi) |
2095 | -#endif |
2096 | + IMPLEMENT_BUILTIN_J_VV(NAME, double16, long16, lo, hi))) |
2097 | |
2098 | #define IMPLEMENT_BUILTIN_V_VJ(NAME, VTYPE, JTYPE, LO, HI) \ |
2099 | VTYPE __attribute__ ((overloadable)) \ |
2100 | @@ -254,41 +173,28 @@ |
2101 | { \ |
2102 | return (VTYPE)(NAME(a.LO, b.LO), NAME(a.HI, b.HI)); \ |
2103 | } |
2104 | -#ifdef cl_khr_fp64 |
2105 | #define DEFINE_BUILTIN_V_VJ(NAME) \ |
2106 | float __attribute__ ((overloadable)) \ |
2107 | NAME(float a, int b) \ |
2108 | { \ |
2109 | return __builtin_##NAME##f(a, b); \ |
2110 | } \ |
2111 | + IMPLEMENT_BUILTIN_V_VJ(NAME, float2 , int2 , lo, hi) \ |
2112 | + IMPLEMENT_BUILTIN_V_VJ(NAME, float3 , int3 , lo, s2) \ |
2113 | + IMPLEMENT_BUILTIN_V_VJ(NAME, float4 , int4 , lo, hi) \ |
2114 | + IMPLEMENT_BUILTIN_V_VJ(NAME, float8 , int8 , lo, hi) \ |
2115 | + IMPLEMENT_BUILTIN_V_VJ(NAME, float16 , int16, lo, hi) \ |
2116 | + __IF_FP64( \ |
2117 | double __attribute__ ((overloadable)) \ |
2118 | NAME(double a, int b) \ |
2119 | { \ |
2120 | return __builtin_##NAME(a, b); \ |
2121 | } \ |
2122 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float2 , int2 , lo, hi) \ |
2123 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float3 , int3 , lo, s2) \ |
2124 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float4 , int4 , lo, hi) \ |
2125 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float8 , int8 , lo, hi) \ |
2126 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float16 , int16, lo, hi) \ |
2127 | IMPLEMENT_BUILTIN_V_VJ(NAME, double2 , int2 , lo, hi) \ |
2128 | IMPLEMENT_BUILTIN_V_VJ(NAME, double3 , int3 , lo, s2) \ |
2129 | IMPLEMENT_BUILTIN_V_VJ(NAME, double4 , int4 , lo, hi) \ |
2130 | IMPLEMENT_BUILTIN_V_VJ(NAME, double8 , int8 , lo, hi) \ |
2131 | - IMPLEMENT_BUILTIN_V_VJ(NAME, double16, int16, lo, hi) |
2132 | -#else |
2133 | -#define DEFINE_BUILTIN_V_VJ(NAME) \ |
2134 | - float __attribute__ ((overloadable)) \ |
2135 | - NAME(float a, int b) \ |
2136 | - { \ |
2137 | - return __builtin_##NAME##f(a, b); \ |
2138 | - } \ |
2139 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float2 , int2 , lo, hi) \ |
2140 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float3 , int3 , lo, s2) \ |
2141 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float4 , int4 , lo, hi) \ |
2142 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float8 , int8 , lo, hi) \ |
2143 | - IMPLEMENT_BUILTIN_V_VJ(NAME, float16 , int16, lo, hi) |
2144 | -#endif |
2145 | + IMPLEMENT_BUILTIN_V_VJ(NAME, double16, int16, lo, hi)) |
2146 | |
2147 | #define IMPLEMENT_BUILTIN_V_VI(NAME, VTYPE, ITYPE, LO, HI) \ |
2148 | VTYPE __attribute__ ((overloadable)) \ |
2149 | @@ -296,26 +202,18 @@ |
2150 | { \ |
2151 | return (VTYPE)(NAME(a.LO, b), NAME(a.HI, b)); \ |
2152 | } |
2153 | -#ifdef cl_khr_fp64 |
2154 | #define DEFINE_BUILTIN_V_VI(NAME) \ |
2155 | IMPLEMENT_BUILTIN_V_VI(NAME, float2 , int, lo, hi) \ |
2156 | IMPLEMENT_BUILTIN_V_VI(NAME, float3 , int, lo, s2) \ |
2157 | IMPLEMENT_BUILTIN_V_VI(NAME, float4 , int, lo, hi) \ |
2158 | IMPLEMENT_BUILTIN_V_VI(NAME, float8 , int, lo, hi) \ |
2159 | IMPLEMENT_BUILTIN_V_VI(NAME, float16 , int, lo, hi) \ |
2160 | + __IF_FP64( \ |
2161 | IMPLEMENT_BUILTIN_V_VI(NAME, double2 , int, lo, hi) \ |
2162 | IMPLEMENT_BUILTIN_V_VI(NAME, double3 , int, lo, s2) \ |
2163 | IMPLEMENT_BUILTIN_V_VI(NAME, double4 , int, lo, hi) \ |
2164 | IMPLEMENT_BUILTIN_V_VI(NAME, double8 , int, lo, hi) \ |
2165 | - IMPLEMENT_BUILTIN_V_VI(NAME, double16, int, lo, hi) |
2166 | -#else |
2167 | -#define DEFINE_BUILTIN_V_VI(NAME) \ |
2168 | - IMPLEMENT_BUILTIN_V_VI(NAME, float2 , int, lo, hi) \ |
2169 | - IMPLEMENT_BUILTIN_V_VI(NAME, float3 , int, lo, s2) \ |
2170 | - IMPLEMENT_BUILTIN_V_VI(NAME, float4 , int, lo, hi) \ |
2171 | - IMPLEMENT_BUILTIN_V_VI(NAME, float8 , int, lo, hi) \ |
2172 | - IMPLEMENT_BUILTIN_V_VI(NAME, float16 , int, lo, hi) |
2173 | -#endif |
2174 | + IMPLEMENT_BUILTIN_V_VI(NAME, double16, int, lo, hi)) |
2175 | |
2176 | #define IMPLEMENT_BUILTIN_J_V(NAME, JTYPE, VTYPE, LO, HI) \ |
2177 | JTYPE __attribute__ ((overloadable)) \ |
2178 | @@ -323,41 +221,28 @@ |
2179 | { \ |
2180 | return (JTYPE)(NAME(a.LO), NAME(a.HI)); \ |
2181 | } |
2182 | -#ifdef cl_khr_fp64 |
2183 | #define DEFINE_BUILTIN_J_V(NAME) \ |
2184 | int __attribute__ ((overloadable)) \ |
2185 | NAME(float a) \ |
2186 | { \ |
2187 | return __builtin_##NAME##f(a); \ |
2188 | } \ |
2189 | - int __attribute__ ((overloadable)) \ |
2190 | - NAME(double a) \ |
2191 | - { \ |
2192 | - return __builtin_##NAME(a); \ |
2193 | - } \ |
2194 | IMPLEMENT_BUILTIN_J_V(NAME, int2 , float2 , lo, hi) \ |
2195 | IMPLEMENT_BUILTIN_J_V(NAME, int3 , float3 , lo, s2) \ |
2196 | IMPLEMENT_BUILTIN_J_V(NAME, int4 , float4 , lo, hi) \ |
2197 | IMPLEMENT_BUILTIN_J_V(NAME, int8 , float8 , lo, hi) \ |
2198 | IMPLEMENT_BUILTIN_J_V(NAME, int16, float16 , lo, hi) \ |
2199 | + __IF_FP64( \ |
2200 | + int __attribute__ ((overloadable)) \ |
2201 | + NAME(double a) \ |
2202 | + { \ |
2203 | + return __builtin_##NAME(a); \ |
2204 | + } \ |
2205 | IMPLEMENT_BUILTIN_J_V(NAME, int2 , double2 , lo, hi) \ |
2206 | IMPLEMENT_BUILTIN_J_V(NAME, int3 , double3 , lo, s2) \ |
2207 | IMPLEMENT_BUILTIN_J_V(NAME, int4 , double4 , lo, hi) \ |
2208 | IMPLEMENT_BUILTIN_J_V(NAME, int8 , double8 , lo, hi) \ |
2209 | - IMPLEMENT_BUILTIN_J_V(NAME, int16, double16, lo, hi) |
2210 | -#else |
2211 | -#define DEFINE_BUILTIN_J_V(NAME) \ |
2212 | - int __attribute__ ((overloadable)) \ |
2213 | - NAME(float a) \ |
2214 | - { \ |
2215 | - return __builtin_##NAME##f(a); \ |
2216 | - } \ |
2217 | - IMPLEMENT_BUILTIN_J_V(NAME, int2 , float2 , lo, hi) \ |
2218 | - IMPLEMENT_BUILTIN_J_V(NAME, int3 , float3 , lo, s2) \ |
2219 | - IMPLEMENT_BUILTIN_J_V(NAME, int4 , float4 , lo, hi) \ |
2220 | - IMPLEMENT_BUILTIN_J_V(NAME, int8 , float8 , lo, hi) \ |
2221 | - IMPLEMENT_BUILTIN_J_V(NAME, int16, float16 , lo, hi) |
2222 | -#endif |
2223 | + IMPLEMENT_BUILTIN_J_V(NAME, int16, double16, lo, hi)) |
2224 | |
2225 | #define IMPLEMENT_BUILTIN_K_V(NAME, JTYPE, VTYPE, LO, HI) \ |
2226 | JTYPE __attribute__ ((overloadable)) \ |
2227 | @@ -365,41 +250,31 @@ |
2228 | { \ |
2229 | return (JTYPE)(NAME(a.LO), NAME(a.HI)); \ |
2230 | } |
2231 | -#ifdef cl_khr_fp64 |
2232 | #define DEFINE_BUILTIN_K_V(NAME) \ |
2233 | int __attribute__ ((overloadable)) \ |
2234 | NAME(float a) \ |
2235 | { \ |
2236 | return __builtin_##NAME##f(a); \ |
2237 | } \ |
2238 | - int __attribute__ ((overloadable)) \ |
2239 | - NAME(double a) \ |
2240 | - { \ |
2241 | - return __builtin_##NAME(a); \ |
2242 | - } \ |
2243 | IMPLEMENT_BUILTIN_K_V(NAME, int2 , float2 , lo, hi) \ |
2244 | IMPLEMENT_BUILTIN_K_V(NAME, int3 , float3 , lo, s2) \ |
2245 | IMPLEMENT_BUILTIN_K_V(NAME, int4 , float4 , lo, hi) \ |
2246 | IMPLEMENT_BUILTIN_K_V(NAME, int8 , float8 , lo, hi) \ |
2247 | IMPLEMENT_BUILTIN_K_V(NAME, int16 , float16 , lo, hi) \ |
2248 | + __IF_FP64( \ |
2249 | + int __attribute__ ((overloadable)) \ |
2250 | + NAME(double a) \ |
2251 | + { \ |
2252 | + return __builtin_##NAME(a); \ |
2253 | + } \ |
2254 | + __IF_INT64( \ |
2255 | IMPLEMENT_BUILTIN_K_V(NAME, long2 , double2 , lo, hi) \ |
2256 | IMPLEMENT_BUILTIN_K_V(NAME, long3 , double3 , lo, s2) \ |
2257 | IMPLEMENT_BUILTIN_K_V(NAME, long4 , double4 , lo, hi) \ |
2258 | IMPLEMENT_BUILTIN_K_V(NAME, long8 , double8 , lo, hi) \ |
2259 | - IMPLEMENT_BUILTIN_K_V(NAME, long16, double16, lo, hi) |
2260 | -#else |
2261 | -#define DEFINE_BUILTIN_K_V(NAME) \ |
2262 | - int __attribute__ ((overloadable)) \ |
2263 | - NAME(float a) \ |
2264 | - { \ |
2265 | - return __builtin_##NAME##f(a); \ |
2266 | - } \ |
2267 | - IMPLEMENT_BUILTIN_K_V(NAME, int2 , float2 , lo, hi) \ |
2268 | - IMPLEMENT_BUILTIN_K_V(NAME, int3 , float3 , lo, s2) \ |
2269 | - IMPLEMENT_BUILTIN_K_V(NAME, int4 , float4 , lo, hi) \ |
2270 | - IMPLEMENT_BUILTIN_K_V(NAME, int8 , float8 , lo, hi) \ |
2271 | - IMPLEMENT_BUILTIN_K_V(NAME, int16, float16 , lo, hi) |
2272 | -#endif |
2273 | + IMPLEMENT_BUILTIN_K_V(NAME, long16, double16, lo, hi))) |
2274 | + |
2275 | +/******************************************************************************/ |
2276 | |
2277 | #define IMPLEMENT_EXPR_V_V(NAME, EXPR, VTYPE, STYPE) \ |
2278 | VTYPE __attribute__ ((overloadable)) \ |
2279 | @@ -409,7 +284,6 @@ |
2280 | typedef STYPE stype; \ |
2281 | return EXPR; \ |
2282 | } |
2283 | -#ifdef cl_khr_fp64 |
2284 | #define DEFINE_EXPR_V_V(NAME, EXPR) \ |
2285 | IMPLEMENT_EXPR_V_V(NAME, EXPR, float , float ) \ |
2286 | IMPLEMENT_EXPR_V_V(NAME, EXPR, float2 , float ) \ |
2287 | @@ -417,21 +291,13 @@ |
2288 | IMPLEMENT_EXPR_V_V(NAME, EXPR, float4 , float ) \ |
2289 | IMPLEMENT_EXPR_V_V(NAME, EXPR, float8 , float ) \ |
2290 | IMPLEMENT_EXPR_V_V(NAME, EXPR, float16 , float ) \ |
2291 | + __IF_FP64( \ |
2292 | IMPLEMENT_EXPR_V_V(NAME, EXPR, double , double) \ |
2293 | IMPLEMENT_EXPR_V_V(NAME, EXPR, double2 , double) \ |
2294 | IMPLEMENT_EXPR_V_V(NAME, EXPR, double3 , double) \ |
2295 | IMPLEMENT_EXPR_V_V(NAME, EXPR, double4 , double) \ |
2296 | IMPLEMENT_EXPR_V_V(NAME, EXPR, double8 , double) \ |
2297 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, double16, double) |
2298 | -#else |
2299 | -#define DEFINE_EXPR_V_V(NAME, EXPR) \ |
2300 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float , float ) \ |
2301 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float2 , float ) \ |
2302 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float3 , float ) \ |
2303 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float4 , float ) \ |
2304 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float8 , float ) \ |
2305 | - IMPLEMENT_EXPR_V_V(NAME, EXPR, float16 , float ) |
2306 | -#endif |
2307 | + IMPLEMENT_EXPR_V_V(NAME, EXPR, double16, double)) |
2308 | |
2309 | #define IMPLEMENT_EXPR_V_VV(NAME, EXPR, VTYPE, STYPE, JTYPE) \ |
2310 | VTYPE __attribute__ ((overloadable)) \ |
2311 | @@ -442,7 +308,6 @@ |
2312 | typedef JTYPE jtype; \ |
2313 | return EXPR; \ |
2314 | } |
2315 | -#ifdef cl_khr_fp64 |
2316 | #define DEFINE_EXPR_V_VV(NAME, EXPR) \ |
2317 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, float , float , int ) \ |
2318 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, float2 , float , int2 ) \ |
2319 | @@ -450,21 +315,13 @@ |
2320 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, float4 , float , int4 ) \ |
2321 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, float8 , float , int8 ) \ |
2322 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, float16 , float , int16 ) \ |
2323 | + __IF_FP64( \ |
2324 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, double , double, long ) \ |
2325 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, double2 , double, long2 ) \ |
2326 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, double3 , double, long3 ) \ |
2327 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, double4 , double, long4 ) \ |
2328 | IMPLEMENT_EXPR_V_VV(NAME, EXPR, double8 , double, long8 ) \ |
2329 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, double16, double, long16) |
2330 | -#else |
2331 | -#define DEFINE_EXPR_V_VV(NAME, EXPR) \ |
2332 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float , float , int ) \ |
2333 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float2 , float , int2 ) \ |
2334 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float3 , float , int3 ) \ |
2335 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float4 , float , int4 ) \ |
2336 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float8 , float , int8 ) \ |
2337 | - IMPLEMENT_EXPR_V_VV(NAME, EXPR, float16 , float , int16 ) |
2338 | -#endif |
2339 | + IMPLEMENT_EXPR_V_VV(NAME, EXPR, double16, double, long16)) |
2340 | |
2341 | #define IMPLEMENT_EXPR_V_VVV(NAME, EXPR, VTYPE, STYPE, JTYPE) \ |
2342 | VTYPE __attribute__ ((overloadable)) \ |
2343 | @@ -475,7 +332,6 @@ |
2344 | typedef JTYPE jtype; \ |
2345 | return EXPR; \ |
2346 | } |
2347 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
2348 | #define DEFINE_EXPR_V_VVV(NAME, EXPR) \ |
2349 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float , float , int ) \ |
2350 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float2 , float , int2 ) \ |
2351 | @@ -483,21 +339,13 @@ |
2352 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float4 , float , int4 ) \ |
2353 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float8 , float , int8 ) \ |
2354 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float16 , float , int16 ) \ |
2355 | + __IF_FP64( \ |
2356 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double , double, long ) \ |
2357 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double2 , double, long2 ) \ |
2358 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double3 , double, long3 ) \ |
2359 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double4 , double, long4 ) \ |
2360 | IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double8 , double, long8 ) \ |
2361 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double16, double, long16) |
2362 | -#else |
2363 | -#define DEFINE_EXPR_V_VVV(NAME, EXPR) \ |
2364 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float , float , int ) \ |
2365 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float2 , float , int2 ) \ |
2366 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float3 , float , int3 ) \ |
2367 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float4 , float , int4 ) \ |
2368 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float8 , float , int8 ) \ |
2369 | - IMPLEMENT_EXPR_V_VVV(NAME, EXPR, float16 , float , int16 ) |
2370 | -#endif |
2371 | + IMPLEMENT_EXPR_V_VVV(NAME, EXPR, double16, double, long16)) |
2372 | |
2373 | #define IMPLEMENT_EXPR_S_VV(NAME, EXPR, VTYPE, STYPE, JTYPE) \ |
2374 | STYPE __attribute__ ((overloadable)) \ |
2375 | @@ -508,7 +356,6 @@ |
2376 | typedef JTYPE jtype; \ |
2377 | return EXPR; \ |
2378 | } |
2379 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
2380 | #define DEFINE_EXPR_S_VV(NAME, EXPR) \ |
2381 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, float , float , int ) \ |
2382 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, float2 , float , int2 ) \ |
2383 | @@ -516,21 +363,13 @@ |
2384 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, float4 , float , int4 ) \ |
2385 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, float8 , float , int8 ) \ |
2386 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, float16 , float , int16 ) \ |
2387 | + __IF_FP64( \ |
2388 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, double , double, long ) \ |
2389 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, double2 , double, long2 ) \ |
2390 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, double3 , double, long3 ) \ |
2391 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, double4 , double, long4 ) \ |
2392 | IMPLEMENT_EXPR_S_VV(NAME, EXPR, double8 , double, long8 ) \ |
2393 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, double16, double, long16) |
2394 | -#else |
2395 | -#define DEFINE_EXPR_S_VV(NAME, EXPR) \ |
2396 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float , float , int ) \ |
2397 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float2 , float , int2 ) \ |
2398 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float3 , float , int3 ) \ |
2399 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float4 , float , int4 ) \ |
2400 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float8 , float , int8 ) \ |
2401 | - IMPLEMENT_EXPR_S_VV(NAME, EXPR, float16 , float , int16 ) |
2402 | -#endif |
2403 | + IMPLEMENT_EXPR_S_VV(NAME, EXPR, double16, double, long16)) |
2404 | |
2405 | #define IMPLEMENT_EXPR_V_VVS(NAME, EXPR, VTYPE, STYPE) \ |
2406 | VTYPE __attribute__ ((overloadable)) \ |
2407 | @@ -540,26 +379,18 @@ |
2408 | typedef STYPE stype; \ |
2409 | return EXPR; \ |
2410 | } |
2411 | -#ifdef cl_khr_fp64 |
2412 | #define DEFINE_EXPR_V_VVS(NAME, EXPR) \ |
2413 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float2 , float ) \ |
2414 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float3 , float ) \ |
2415 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float4 , float ) \ |
2416 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float8 , float ) \ |
2417 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float16 , float ) \ |
2418 | + __IF_FP64( \ |
2419 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double2 , double) \ |
2420 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double3 , double) \ |
2421 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double4 , double) \ |
2422 | IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double8 , double) \ |
2423 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double16, double) |
2424 | -#else |
2425 | -#define DEFINE_EXPR_V_VVS(NAME, EXPR) \ |
2426 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float2 , float ) \ |
2427 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float3 , float ) \ |
2428 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float4 , float ) \ |
2429 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float8 , float ) \ |
2430 | - IMPLEMENT_EXPR_V_VVS(NAME, EXPR, float16 , float ) |
2431 | -#endif |
2432 | + IMPLEMENT_EXPR_V_VVS(NAME, EXPR, double16, double)) |
2433 | |
2434 | #define IMPLEMENT_EXPR_V_VSS(NAME, EXPR, VTYPE, STYPE) \ |
2435 | VTYPE __attribute__ ((overloadable)) \ |
2436 | @@ -569,26 +400,18 @@ |
2437 | typedef STYPE stype; \ |
2438 | return EXPR; \ |
2439 | } |
2440 | -#ifdef cl_khr_fp64 |
2441 | #define DEFINE_EXPR_V_VSS(NAME, EXPR) \ |
2442 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float2 , float ) \ |
2443 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float3 , float ) \ |
2444 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float4 , float ) \ |
2445 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float8 , float ) \ |
2446 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float16 , float ) \ |
2447 | + __IF_FP64( \ |
2448 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double2 , double) \ |
2449 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double3 , double) \ |
2450 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double4 , double) \ |
2451 | IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double8 , double) \ |
2452 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double16, double) |
2453 | -#else |
2454 | -#define DEFINE_EXPR_V_VSS(NAME, EXPR) \ |
2455 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float2 , float ) \ |
2456 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float3 , float ) \ |
2457 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float4 , float ) \ |
2458 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float8 , float ) \ |
2459 | - IMPLEMENT_EXPR_V_VSS(NAME, EXPR, float16 , float ) |
2460 | -#endif |
2461 | + IMPLEMENT_EXPR_V_VSS(NAME, EXPR, double16, double)) |
2462 | |
2463 | #define IMPLEMENT_EXPR_V_SSV(NAME, EXPR, VTYPE, STYPE) \ |
2464 | VTYPE __attribute__ ((overloadable)) \ |
2465 | @@ -598,26 +421,18 @@ |
2466 | typedef STYPE stype; \ |
2467 | return EXPR; \ |
2468 | } |
2469 | -#ifdef cl_khr_fp64 |
2470 | #define DEFINE_EXPR_V_SSV(NAME, EXPR) \ |
2471 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float2 , float ) \ |
2472 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float3 , float ) \ |
2473 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float4 , float ) \ |
2474 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float8 , float ) \ |
2475 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float16 , float ) \ |
2476 | + __IF_FP64( \ |
2477 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double2 , double) \ |
2478 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double3 , double) \ |
2479 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double4 , double) \ |
2480 | IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double8 , double) \ |
2481 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double16, double) |
2482 | -#else |
2483 | -#define DEFINE_EXPR_V_SSV(NAME, EXPR) \ |
2484 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float2 , float ) \ |
2485 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float3 , float ) \ |
2486 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float4 , float ) \ |
2487 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float8 , float ) \ |
2488 | - IMPLEMENT_EXPR_V_SSV(NAME, EXPR, float16 , float ) |
2489 | -#endif |
2490 | + IMPLEMENT_EXPR_V_SSV(NAME, EXPR, double16, double)) |
2491 | |
2492 | #define IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, VTYPE, STYPE, JTYPE) \ |
2493 | VTYPE __attribute__ ((overloadable)) \ |
2494 | @@ -628,7 +443,6 @@ |
2495 | typedef JTYPE jtype; \ |
2496 | return EXPR; \ |
2497 | } |
2498 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
2499 | #define DEFINE_EXPR_V_VVJ(NAME, EXPR) \ |
2500 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float , float , int ) \ |
2501 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float2 , float , int2 ) \ |
2502 | @@ -636,21 +450,13 @@ |
2503 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float4 , float , int4 ) \ |
2504 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float8 , float , int8 ) \ |
2505 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float16 , float , int16 ) \ |
2506 | + __IF_INT64(__IF_FP64( \ |
2507 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double , double, long ) \ |
2508 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double2 , double, long2 ) \ |
2509 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double3 , double, long3 ) \ |
2510 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double4 , double, long4 ) \ |
2511 | IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double8 , double, long8 ) \ |
2512 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double16, double, long16) |
2513 | -#else |
2514 | -#define DEFINE_EXPR_V_VVJ(NAME, EXPR) \ |
2515 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float , float , int ) \ |
2516 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float2 , float , int2 ) \ |
2517 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float3 , float , int3 ) \ |
2518 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float4 , float , int4 ) \ |
2519 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float8 , float , int8 ) \ |
2520 | - IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, float16 , float , int16 ) |
2521 | -#endif |
2522 | + IMPLEMENT_EXPR_V_VVJ(NAME, EXPR, double16, double, long16))) |
2523 | |
2524 | #define IMPLEMENT_EXPR_V_U(NAME, EXPR, VTYPE, STYPE, UTYPE) \ |
2525 | VTYPE __attribute__ ((overloadable)) \ |
2526 | @@ -661,7 +467,6 @@ |
2527 | typedef UTYPE utype; \ |
2528 | return EXPR; \ |
2529 | } |
2530 | -#if defined(cl_khr_int64) && defined(cl_khr_fp64) |
2531 | #define DEFINE_EXPR_V_U(NAME, EXPR) \ |
2532 | IMPLEMENT_EXPR_V_U(NAME, EXPR, float , float , uint ) \ |
2533 | IMPLEMENT_EXPR_V_U(NAME, EXPR, float2 , float , uint2 ) \ |
2534 | @@ -669,21 +474,13 @@ |
2535 | IMPLEMENT_EXPR_V_U(NAME, EXPR, float4 , float , uint4 ) \ |
2536 | IMPLEMENT_EXPR_V_U(NAME, EXPR, float8 , float , uint8 ) \ |
2537 | IMPLEMENT_EXPR_V_U(NAME, EXPR, float16 , float , uint16 ) \ |
2538 | + __IF_INT64(__IF_FP64( \ |
2539 | IMPLEMENT_EXPR_V_U(NAME, EXPR, double , double, ulong ) \ |
2540 | IMPLEMENT_EXPR_V_U(NAME, EXPR, double2 , double, ulong2 ) \ |
2541 | IMPLEMENT_EXPR_V_U(NAME, EXPR, double3 , double, ulong3 ) \ |
2542 | IMPLEMENT_EXPR_V_U(NAME, EXPR, double4 , double, ulong4 ) \ |
2543 | IMPLEMENT_EXPR_V_U(NAME, EXPR, double8 , double, ulong8 ) \ |
2544 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, double16, double, ulong16) |
2545 | -#else |
2546 | -#define DEFINE_EXPR_V_U(NAME, EXPR) \ |
2547 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float , float , uint ) \ |
2548 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float2 , float , uint2 ) \ |
2549 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float3 , float , uint3 ) \ |
2550 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float4 , float , uint4 ) \ |
2551 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float8 , float , uint8 ) \ |
2552 | - IMPLEMENT_EXPR_V_U(NAME, EXPR, float16 , float , uint16 ) |
2553 | -#endif |
2554 | + IMPLEMENT_EXPR_V_U(NAME, EXPR, double16, double, ulong16))) |
2555 | |
2556 | #define IMPLEMENT_EXPR_V_VS(NAME, EXPR, VTYPE, STYPE) \ |
2557 | VTYPE __attribute__ ((overloadable)) \ |
2558 | @@ -693,26 +490,18 @@ |
2559 | typedef STYPE stype; \ |
2560 | return EXPR; \ |
2561 | } |
2562 | -#ifdef cl_khr_fp64 |
2563 | #define DEFINE_EXPR_V_VS(NAME, EXPR) \ |
2564 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, float2 , float ) \ |
2565 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, float3 , float ) \ |
2566 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, float4 , float ) \ |
2567 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, float8 , float ) \ |
2568 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, float16 , float ) \ |
2569 | + __IF_FP64( \ |
2570 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, double2 , double) \ |
2571 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, double3 , double) \ |
2572 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, double4 , double) \ |
2573 | IMPLEMENT_EXPR_V_VS(NAME, EXPR, double8 , double) \ |
2574 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, double16, double) |
2575 | -#else |
2576 | -#define DEFINE_EXPR_V_VS(NAME, EXPR) \ |
2577 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, float2 , float ) \ |
2578 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, float3 , float ) \ |
2579 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, float4 , float ) \ |
2580 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, float8 , float ) \ |
2581 | - IMPLEMENT_EXPR_V_VS(NAME, EXPR, float16 , float ) |
2582 | -#endif |
2583 | + IMPLEMENT_EXPR_V_VS(NAME, EXPR, double16, double)) |
2584 | |
2585 | #define IMPLEMENT_EXPR_V_VJ(NAME, EXPR, VTYPE, STYPE, JTYPE) \ |
2586 | VTYPE __attribute__ ((overloadable)) \ |
2587 | @@ -723,7 +512,6 @@ |
2588 | typedef JTYPE jtype; \ |
2589 | return EXPR; \ |
2590 | } |
2591 | -#ifdef cl_khr_fp64 |
2592 | #define DEFINE_EXPR_V_VJ(NAME, EXPR) \ |
2593 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float , float , int ) \ |
2594 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float2 , float , int2 ) \ |
2595 | @@ -731,21 +519,13 @@ |
2596 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float4 , float , int4 ) \ |
2597 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float8 , float , int8 ) \ |
2598 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float16 , float , int16) \ |
2599 | + __IF_FP64( \ |
2600 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double , double, int ) \ |
2601 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double2 , double, int2 ) \ |
2602 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double3 , double, int3 ) \ |
2603 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double4 , double, int4 ) \ |
2604 | IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double8 , double, int8 ) \ |
2605 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double16, double, int16) |
2606 | -#else |
2607 | -#define DEFINE_EXPR_V_VJ(NAME, EXPR) \ |
2608 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float , float , int ) \ |
2609 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float2 , float , int2 ) \ |
2610 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float3 , float , int3 ) \ |
2611 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float4 , float , int4 ) \ |
2612 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float8 , float , int8 ) \ |
2613 | - IMPLEMENT_EXPR_V_VJ(NAME, EXPR, float16 , float , int16) |
2614 | -#endif |
2615 | + IMPLEMENT_EXPR_V_VJ(NAME, EXPR, double16, double, int16)) |
2616 | |
2617 | #define IMPLEMENT_EXPR_V_VI(NAME, EXPR, VTYPE, STYPE, ITYPE) \ |
2618 | VTYPE __attribute__ ((overloadable)) \ |
2619 | @@ -756,26 +536,18 @@ |
2620 | typedef ITYPE itype; \ |
2621 | return EXPR; \ |
2622 | } |
2623 | -#ifdef cl_khr_fp64 |
2624 | #define DEFINE_EXPR_V_VI(NAME, EXPR) \ |
2625 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, float2 , float , int) \ |
2626 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, float3 , float , int) \ |
2627 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, float4 , float , int) \ |
2628 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, float8 , float , int) \ |
2629 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, float16 , float , int) \ |
2630 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, double2 , double , int) \ |
2631 | + __IF_FP64( \ |
2632 | + IMPLEMENT_EXPR_V_VI(NAME, EXPR, double2 , double, int) \ |
2633 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, double3 , double, int) \ |
2634 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, double4 , double, int) \ |
2635 | IMPLEMENT_EXPR_V_VI(NAME, EXPR, double8 , double, int) \ |
2636 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, double16, double, int) |
2637 | -#else |
2638 | -#define DEFINE_EXPR_V_VI(NAME, EXPR) \ |
2639 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, float2 , float , int) \ |
2640 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, float3 , float , int) \ |
2641 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, float4 , float , int) \ |
2642 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, float8 , float , int) \ |
2643 | - IMPLEMENT_EXPR_V_VI(NAME, EXPR, float16 , float , int) |
2644 | -#endif |
2645 | + IMPLEMENT_EXPR_V_VI(NAME, EXPR, double16, double, int)) |
2646 | |
2647 | #define IMPLEMENT_EXPR_V_VPV(NAME, EXPR, VTYPE, STYPE) \ |
2648 | VTYPE __attribute__ ((overloadable)) \ |
2649 | @@ -801,7 +573,6 @@ |
2650 | return EXPR; \ |
2651 | } \ |
2652 | */ |
2653 | -#ifdef cl_khr_fp64 |
2654 | #define DEFINE_EXPR_V_VPV(NAME, EXPR) \ |
2655 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float , float ) \ |
2656 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float2 , float ) \ |
2657 | @@ -809,21 +580,13 @@ |
2658 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float4 , float ) \ |
2659 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float8 , float ) \ |
2660 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float16 , float ) \ |
2661 | + __IF_FP64( \ |
2662 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double , double) \ |
2663 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double2 , double) \ |
2664 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double3 , double) \ |
2665 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double4 , double) \ |
2666 | IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double8 , double) \ |
2667 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double16, double) |
2668 | -#else |
2669 | -#define DEFINE_EXPR_V_VPV(NAME, EXPR) \ |
2670 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float , float ) \ |
2671 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float2 , float ) \ |
2672 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float3 , float ) \ |
2673 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float4 , float ) \ |
2674 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float8 , float ) \ |
2675 | - IMPLEMENT_EXPR_V_VPV(NAME, EXPR, float16 , float ) |
2676 | -#endif |
2677 | + IMPLEMENT_EXPR_V_VPV(NAME, EXPR, double16, double)) |
2678 | |
2679 | #define IMPLEMENT_EXPR_V_SV(NAME, EXPR, VTYPE, STYPE) \ |
2680 | VTYPE __attribute__ ((overloadable)) \ |
2681 | @@ -833,26 +596,19 @@ |
2682 | typedef STYPE stype; \ |
2683 | return EXPR; \ |
2684 | } |
2685 | -#ifdef cl_khr_fp64 |
2686 | #define DEFINE_EXPR_V_SV(NAME, EXPR) \ |
2687 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, float2 , float ) \ |
2688 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, float3 , float ) \ |
2689 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, float4 , float ) \ |
2690 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, float8 , float ) \ |
2691 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, float16 , float ) \ |
2692 | + __IF_FP64( \ |
2693 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, double2 , double) \ |
2694 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, double3 , double) \ |
2695 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, double4 , double) \ |
2696 | IMPLEMENT_EXPR_V_SV(NAME, EXPR, double8 , double) \ |
2697 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, double16, double) |
2698 | -#else |
2699 | -#define DEFINE_EXPR_V_SV(NAME, EXPR) \ |
2700 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, float2 , float ) \ |
2701 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, float3 , float ) \ |
2702 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, float4 , float ) \ |
2703 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, float8 , float ) \ |
2704 | - IMPLEMENT_EXPR_V_SV(NAME, EXPR, float16 , float ) |
2705 | -#endif |
2706 | + IMPLEMENT_EXPR_V_SV(NAME, EXPR, double16, double)) |
2707 | + |
2708 | |
2709 | |
2710 | #define IMPLEMENT_BUILTIN_G_G(NAME, GTYPE, UGTYPE, LO, HI) \ |
2711 | @@ -861,7 +617,6 @@ |
2712 | { \ |
2713 | return (GTYPE)(NAME(a.LO), NAME(a.HI)); \ |
2714 | } |
2715 | -#ifdef cl_khr_int64 |
2716 | #define DEFINE_BUILTIN_G_G(NAME) \ |
2717 | char __attribute__ ((overloadable)) \ |
2718 | NAME(char a) \ |
2719 | @@ -893,6 +648,7 @@ |
2720 | { \ |
2721 | return __builtin_##NAME##u(a); \ |
2722 | } \ |
2723 | + __IF_INT64( \ |
2724 | long __attribute__ ((overloadable)) \ |
2725 | NAME(long a) \ |
2726 | { \ |
2727 | @@ -902,7 +658,7 @@ |
2728 | NAME(ulong a) \ |
2729 | { \ |
2730 | return __builtin_##NAME##ul(a); \ |
2731 | - } \ |
2732 | + }) \ |
2733 | IMPLEMENT_BUILTIN_G_G(NAME, char2 , uchar2 , lo, hi) \ |
2734 | IMPLEMENT_BUILTIN_G_G(NAME, char3 , uchar3 , lo, s2) \ |
2735 | IMPLEMENT_BUILTIN_G_G(NAME, char4 , uchar4 , lo, hi) \ |
2736 | @@ -933,6 +689,7 @@ |
2737 | IMPLEMENT_BUILTIN_G_G(NAME, uint4 , uint4 , lo, hi) \ |
2738 | IMPLEMENT_BUILTIN_G_G(NAME, uint8 , uint8 , lo, hi) \ |
2739 | IMPLEMENT_BUILTIN_G_G(NAME, uint16 , uint16 , lo, hi) \ |
2740 | + __IF_INT64( \ |
2741 | IMPLEMENT_BUILTIN_G_G(NAME, long2 , ulong2 , lo, hi) \ |
2742 | IMPLEMENT_BUILTIN_G_G(NAME, long3 , ulong3 , lo, s2) \ |
2743 | IMPLEMENT_BUILTIN_G_G(NAME, long4 , ulong4 , lo, hi) \ |
2744 | @@ -942,70 +699,7 @@ |
2745 | IMPLEMENT_BUILTIN_G_G(NAME, ulong3 , ulong3 , lo, s2) \ |
2746 | IMPLEMENT_BUILTIN_G_G(NAME, ulong4 , ulong4 , lo, hi) \ |
2747 | IMPLEMENT_BUILTIN_G_G(NAME, ulong8 , ulong8 , lo, hi) \ |
2748 | - IMPLEMENT_BUILTIN_G_G(NAME, ulong16 , ulong16 , lo, hi) |
2749 | -#else |
2750 | -#define DEFINE_BUILTIN_G_G(NAME) \ |
2751 | - char __attribute__ ((overloadable)) \ |
2752 | - NAME(char a) \ |
2753 | - { \ |
2754 | - return __builtin_##NAME##hh(a); \ |
2755 | - } \ |
2756 | - uchar __attribute__ ((overloadable)) \ |
2757 | - NAME(uchar a) \ |
2758 | - { \ |
2759 | - return __builtin_##NAME##uhh(a); \ |
2760 | - } \ |
2761 | - short __attribute__ ((overloadable)) \ |
2762 | - NAME(short a) \ |
2763 | - { \ |
2764 | - return __builtin_##NAME##h(a); \ |
2765 | - } \ |
2766 | - ushort __attribute__ ((overloadable)) \ |
2767 | - NAME(ushort a) \ |
2768 | - { \ |
2769 | - return __builtin_##NAME##uh(a); \ |
2770 | - } \ |
2771 | - int __attribute__ ((overloadable)) \ |
2772 | - NAME(int a) \ |
2773 | - { \ |
2774 | - return __builtin_##NAME(a); \ |
2775 | - } \ |
2776 | - uint __attribute__ ((overloadable)) \ |
2777 | - NAME(uint a) \ |
2778 | - { \ |
2779 | - return __builtin_##NAME##u(a); \ |
2780 | - } \ |
2781 | - IMPLEMENT_BUILTIN_G_G(NAME, char2 , uchar2 , lo, hi) \ |
2782 | - IMPLEMENT_BUILTIN_G_G(NAME, char3 , uchar3 , lo, s2) \ |
2783 | - IMPLEMENT_BUILTIN_G_G(NAME, char4 , uchar4 , lo, hi) \ |
2784 | - IMPLEMENT_BUILTIN_G_G(NAME, char8 , uchar8 , lo, hi) \ |
2785 | - IMPLEMENT_BUILTIN_G_G(NAME, char16 , uchar16 , lo, hi) \ |
2786 | - IMPLEMENT_BUILTIN_G_G(NAME, uchar2 , uchar2 , lo, hi) \ |
2787 | - IMPLEMENT_BUILTIN_G_G(NAME, uchar3 , uchar3 , lo, s2) \ |
2788 | - IMPLEMENT_BUILTIN_G_G(NAME, uchar4 , uchar4 , lo, hi) \ |
2789 | - IMPLEMENT_BUILTIN_G_G(NAME, uchar8 , uchar8 , lo, hi) \ |
2790 | - IMPLEMENT_BUILTIN_G_G(NAME, uchar16 , uchar16 , lo, hi) \ |
2791 | - IMPLEMENT_BUILTIN_G_G(NAME, short2 , ushort2 , lo, hi) \ |
2792 | - IMPLEMENT_BUILTIN_G_G(NAME, short3 , ushort3 , lo, s2) \ |
2793 | - IMPLEMENT_BUILTIN_G_G(NAME, short4 , ushort4 , lo, hi) \ |
2794 | - IMPLEMENT_BUILTIN_G_G(NAME, short8 , ushort8 , lo, hi) \ |
2795 | - IMPLEMENT_BUILTIN_G_G(NAME, short16 , ushort16, lo, hi) \ |
2796 | - IMPLEMENT_BUILTIN_G_G(NAME, ushort2 , ushort2 , lo, hi) \ |
2797 | - IMPLEMENT_BUILTIN_G_G(NAME, ushort3 , ushort3 , lo, s2) \ |
2798 | - IMPLEMENT_BUILTIN_G_G(NAME, ushort4 , ushort4 , lo, hi) \ |
2799 | - IMPLEMENT_BUILTIN_G_G(NAME, ushort8 , ushort8 , lo, hi) \ |
2800 | - IMPLEMENT_BUILTIN_G_G(NAME, ushort16, ushort16, lo, hi) \ |
2801 | - IMPLEMENT_BUILTIN_G_G(NAME, int2 , uint2 , lo, hi) \ |
2802 | - IMPLEMENT_BUILTIN_G_G(NAME, int3 , uint3 , lo, s2) \ |
2803 | - IMPLEMENT_BUILTIN_G_G(NAME, int4 , uint4 , lo, hi) \ |
2804 | - IMPLEMENT_BUILTIN_G_G(NAME, int8 , uint8 , lo, hi) \ |
2805 | - IMPLEMENT_BUILTIN_G_G(NAME, int16 , uint16 , lo, hi) \ |
2806 | - IMPLEMENT_BUILTIN_G_G(NAME, uint2 , uint2 , lo, hi) \ |
2807 | - IMPLEMENT_BUILTIN_G_G(NAME, uint3 , uint3 , lo, s2) \ |
2808 | - IMPLEMENT_BUILTIN_G_G(NAME, uint4 , uint4 , lo, hi) \ |
2809 | - IMPLEMENT_BUILTIN_G_G(NAME, uint8 , uint8 , lo, hi) \ |
2810 | - IMPLEMENT_BUILTIN_G_G(NAME, uint16 , uint16 , lo, hi) |
2811 | -#endif |
2812 | + IMPLEMENT_BUILTIN_G_G(NAME, ulong16 , ulong16 , lo, hi)) |
2813 | |
2814 | #define IMPLEMENT_BUILTIN_UG_G(NAME, GTYPE, UGTYPE, LO, HI) \ |
2815 | UGTYPE __attribute__ ((overloadable)) \ |
2816 | @@ -1013,7 +707,6 @@ |
2817 | { \ |
2818 | return (UGTYPE)(NAME(a.LO), NAME(a.HI)); \ |
2819 | } |
2820 | -#ifdef cl_khr_int64 |
2821 | #define DEFINE_BUILTIN_UG_G(NAME) \ |
2822 | uchar __attribute__ ((overloadable)) \ |
2823 | NAME(char a) \ |
2824 | @@ -1045,6 +738,7 @@ |
2825 | { \ |
2826 | return __builtin_##NAME##u(a); \ |
2827 | } \ |
2828 | + __IF_INT64( \ |
2829 | ulong __attribute__ ((overloadable)) \ |
2830 | NAME(long a) \ |
2831 | { \ |
2832 | @@ -1054,7 +748,7 @@ |
2833 | NAME(ulong a) \ |
2834 | { \ |
2835 | return __builtin_##NAME##ul(a); \ |
2836 | - } \ |
2837 | + }) \ |
2838 | IMPLEMENT_BUILTIN_UG_G(NAME, char2 , uchar2 , lo, hi) \ |
2839 | IMPLEMENT_BUILTIN_UG_G(NAME, char3 , uchar3 , lo, s2) \ |
2840 | IMPLEMENT_BUILTIN_UG_G(NAME, char4 , uchar4 , lo, hi) \ |
2841 | @@ -1085,6 +779,7 @@ |
2842 | IMPLEMENT_BUILTIN_UG_G(NAME, uint4 , uint4 , lo, hi) \ |
2843 | IMPLEMENT_BUILTIN_UG_G(NAME, uint8 , uint8 , lo, hi) \ |
2844 | IMPLEMENT_BUILTIN_UG_G(NAME, uint16 , uint16 , lo, hi) \ |
2845 | + __IF_INT64( \ |
2846 | IMPLEMENT_BUILTIN_UG_G(NAME, long2 , ulong2 , lo, hi) \ |
2847 | IMPLEMENT_BUILTIN_UG_G(NAME, long3 , ulong3 , lo, s2) \ |
2848 | IMPLEMENT_BUILTIN_UG_G(NAME, long4 , ulong4 , lo, hi) \ |
2849 | @@ -1094,70 +789,7 @@ |
2850 | IMPLEMENT_BUILTIN_UG_G(NAME, ulong3 , ulong3 , lo, s2) \ |
2851 | IMPLEMENT_BUILTIN_UG_G(NAME, ulong4 , ulong4 , lo, hi) \ |
2852 | IMPLEMENT_BUILTIN_UG_G(NAME, ulong8 , ulong8 , lo, hi) \ |
2853 | - IMPLEMENT_BUILTIN_UG_G(NAME, ulong16 , ulong16 , lo, hi) |
2854 | -#else |
2855 | -#define DEFINE_BUILTIN_UG_G(NAME) \ |
2856 | - uchar __attribute__ ((overloadable)) \ |
2857 | - NAME(char a) \ |
2858 | - { \ |
2859 | - return __builtin_##NAME##h(a); \ |
2860 | - } \ |
2861 | - uchar __attribute__ ((overloadable)) \ |
2862 | - NAME(uchar a) \ |
2863 | - { \ |
2864 | - return __builtin_##NAME##uhh(a); \ |
2865 | - } \ |
2866 | - ushort __attribute__ ((overloadable)) \ |
2867 | - NAME(short a) \ |
2868 | - { \ |
2869 | - return __builtin_##NAME##h(a); \ |
2870 | - } \ |
2871 | - ushort __attribute__ ((overloadable)) \ |
2872 | - NAME(ushort a) \ |
2873 | - { \ |
2874 | - return __builtin_##NAME##uh(a); \ |
2875 | - } \ |
2876 | - uint __attribute__ ((overloadable)) \ |
2877 | - NAME(int a) \ |
2878 | - { \ |
2879 | - return __builtin_##NAME(a); \ |
2880 | - } \ |
2881 | - uint __attribute__ ((overloadable)) \ |
2882 | - NAME(uint a) \ |
2883 | - { \ |
2884 | - return __builtin_##NAME##u(a); \ |
2885 | - } \ |
2886 | - IMPLEMENT_BUILTIN_UG_G(NAME, char2 , uchar2 , lo, hi) \ |
2887 | - IMPLEMENT_BUILTIN_UG_G(NAME, char3 , uchar3 , lo, s2) \ |
2888 | - IMPLEMENT_BUILTIN_UG_G(NAME, char4 , uchar4 , lo, hi) \ |
2889 | - IMPLEMENT_BUILTIN_UG_G(NAME, char8 , uchar8 , lo, hi) \ |
2890 | - IMPLEMENT_BUILTIN_UG_G(NAME, char16 , uchar16 , lo, hi) \ |
2891 | - IMPLEMENT_BUILTIN_UG_G(NAME, uchar2 , uchar2 , lo, hi) \ |
2892 | - IMPLEMENT_BUILTIN_UG_G(NAME, uchar3 , uchar3 , lo, s2) \ |
2893 | - IMPLEMENT_BUILTIN_UG_G(NAME, uchar4 , uchar4 , lo, hi) \ |
2894 | - IMPLEMENT_BUILTIN_UG_G(NAME, uchar8 , uchar8 , lo, hi) \ |
2895 | - IMPLEMENT_BUILTIN_UG_G(NAME, uchar16 , uchar16 , lo, hi) \ |
2896 | - IMPLEMENT_BUILTIN_UG_G(NAME, short2 , ushort2 , lo, hi) \ |
2897 | - IMPLEMENT_BUILTIN_UG_G(NAME, short3 , ushort3 , lo, s2) \ |
2898 | - IMPLEMENT_BUILTIN_UG_G(NAME, short4 , ushort4 , lo, hi) \ |
2899 | - IMPLEMENT_BUILTIN_UG_G(NAME, short8 , ushort8 , lo, hi) \ |
2900 | - IMPLEMENT_BUILTIN_UG_G(NAME, short16 , ushort16, lo, hi) \ |
2901 | - IMPLEMENT_BUILTIN_UG_G(NAME, ushort2 , ushort2 , lo, hi) \ |
2902 | - IMPLEMENT_BUILTIN_UG_G(NAME, ushort3 , ushort3 , lo, s2) \ |
2903 | - IMPLEMENT_BUILTIN_UG_G(NAME, ushort4 , ushort4 , lo, hi) \ |
2904 | - IMPLEMENT_BUILTIN_UG_G(NAME, ushort8 , ushort8 , lo, hi) \ |
2905 | - IMPLEMENT_BUILTIN_UG_G(NAME, ushort16, ushort16, lo, hi) \ |
2906 | - IMPLEMENT_BUILTIN_UG_G(NAME, int2 , uint2 , lo, hi) \ |
2907 | - IMPLEMENT_BUILTIN_UG_G(NAME, int3 , uint3 , lo, s2) \ |
2908 | - IMPLEMENT_BUILTIN_UG_G(NAME, int4 , uint4 , lo, hi) \ |
2909 | - IMPLEMENT_BUILTIN_UG_G(NAME, int8 , uint8 , lo, hi) \ |
2910 | - IMPLEMENT_BUILTIN_UG_G(NAME, int16 , uint16 , lo, hi) \ |
2911 | - IMPLEMENT_BUILTIN_UG_G(NAME, uint2 , uint2 , lo, hi) \ |
2912 | - IMPLEMENT_BUILTIN_UG_G(NAME, uint3 , uint3 , lo, s2) \ |
2913 | - IMPLEMENT_BUILTIN_UG_G(NAME, uint4 , uint4 , lo, hi) \ |
2914 | - IMPLEMENT_BUILTIN_UG_G(NAME, uint8 , uint8 , lo, hi) \ |
2915 | - IMPLEMENT_BUILTIN_UG_G(NAME, uint16 , uint16 , lo, hi) |
2916 | -#endif |
2917 | + IMPLEMENT_BUILTIN_UG_G(NAME, ulong16 , ulong16 , lo, hi)) |
2918 | |
2919 | #define IMPLEMENT_EXPR_G_G(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
2920 | GTYPE __attribute__ ((overloadable)) \ |
2921 | @@ -1169,7 +801,6 @@ |
2922 | typedef SUGTYPE sugtype; \ |
2923 | return EXPR; \ |
2924 | } |
2925 | -#ifdef cl_khr_int64 |
2926 | #define DEFINE_EXPR_G_G(NAME, EXPR) \ |
2927 | IMPLEMENT_EXPR_G_G(NAME, EXPR, char , char , uchar , uchar ) \ |
2928 | IMPLEMENT_EXPR_G_G(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
2929 | @@ -1207,6 +838,7 @@ |
2930 | IMPLEMENT_EXPR_G_G(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
2931 | IMPLEMENT_EXPR_G_G(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
2932 | IMPLEMENT_EXPR_G_G(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
2933 | + __IF_INT64( \ |
2934 | IMPLEMENT_EXPR_G_G(NAME, EXPR, long , long , ulong , ulong ) \ |
2935 | IMPLEMENT_EXPR_G_G(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
2936 | IMPLEMENT_EXPR_G_G(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
2937 | @@ -1218,46 +850,7 @@ |
2938 | IMPLEMENT_EXPR_G_G(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
2939 | IMPLEMENT_EXPR_G_G(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
2940 | IMPLEMENT_EXPR_G_G(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
2941 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
2942 | -#else |
2943 | -#define DEFINE_EXPR_G_G(NAME, EXPR) \ |
2944 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char , char , uchar , uchar ) \ |
2945 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
2946 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
2947 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
2948 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
2949 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
2950 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar , uchar , uchar , uchar ) \ |
2951 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
2952 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
2953 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
2954 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
2955 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
2956 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short , short , ushort , ushort) \ |
2957 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
2958 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
2959 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
2960 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
2961 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, short16 , short , ushort16, ushort) \ |
2962 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort , ushort, ushort , ushort) \ |
2963 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
2964 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
2965 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
2966 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
2967 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
2968 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int , int , uint , uint ) \ |
2969 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int2 , int , uint2 , uint ) \ |
2970 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int3 , int , uint3 , uint ) \ |
2971 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int4 , int , uint4 , uint ) \ |
2972 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int8 , int , uint8 , uint ) \ |
2973 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, int16 , int , uint16 , uint ) \ |
2974 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint , uint , uint , uint ) \ |
2975 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
2976 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
2977 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
2978 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
2979 | - IMPLEMENT_EXPR_G_G(NAME, EXPR, uint16 , uint , uint16 , uint ) |
2980 | -#endif |
2981 | + IMPLEMENT_EXPR_G_G(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
2982 | |
2983 | #define IMPLEMENT_EXPR_UG_G(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
2984 | UGTYPE __attribute__ ((overloadable)) \ |
2985 | @@ -1269,7 +862,6 @@ |
2986 | typedef SUGTYPE sugtype; \ |
2987 | return EXPR; \ |
2988 | } |
2989 | -#ifdef cl_khr_int64 |
2990 | #define DEFINE_EXPR_UG_G(NAME, EXPR) \ |
2991 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, char , char , uchar , uchar ) \ |
2992 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
2993 | @@ -1307,6 +899,7 @@ |
2994 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
2995 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
2996 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
2997 | + __IF_INT64( \ |
2998 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, long , long , ulong , ulong ) \ |
2999 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
3000 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
3001 | @@ -1318,46 +911,7 @@ |
3002 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
3003 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
3004 | IMPLEMENT_EXPR_UG_G(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
3005 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
3006 | -#else |
3007 | -#define DEFINE_EXPR_UG_G(NAME, EXPR) \ |
3008 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char , char , uchar , uchar ) \ |
3009 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3010 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3011 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
3012 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
3013 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
3014 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar , uchar , uchar , uchar ) \ |
3015 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
3016 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
3017 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
3018 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
3019 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
3020 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short , short , ushort , ushort) \ |
3021 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
3022 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
3023 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
3024 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
3025 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, short16 , short , ushort16, ushort) \ |
3026 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort , ushort, ushort , ushort) \ |
3027 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
3028 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
3029 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
3030 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
3031 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
3032 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int , int , uint , uint ) \ |
3033 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int2 , int , uint2 , uint ) \ |
3034 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int3 , int , uint3 , uint ) \ |
3035 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int4 , int , uint4 , uint ) \ |
3036 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int8 , int , uint8 , uint ) \ |
3037 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, int16 , int , uint16 , uint ) \ |
3038 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint , uint , uint , uint ) \ |
3039 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
3040 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
3041 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3042 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3043 | - IMPLEMENT_EXPR_UG_G(NAME, EXPR, uint16 , uint , uint16 , uint ) |
3044 | -#endif |
3045 | + IMPLEMENT_EXPR_UG_G(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
3046 | |
3047 | #define IMPLEMENT_EXPR_G_GG(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
3048 | GTYPE __attribute__ ((overloadable)) \ |
3049 | @@ -1369,7 +923,6 @@ |
3050 | typedef SUGTYPE sugtype; \ |
3051 | return EXPR; \ |
3052 | } |
3053 | -#ifdef cl_khr_int64 |
3054 | #define DEFINE_EXPR_G_GG(NAME, EXPR) \ |
3055 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, char , char , uchar , uchar ) \ |
3056 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3057 | @@ -1407,6 +960,7 @@ |
3058 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3059 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3060 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
3061 | + __IF_INT64( \ |
3062 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, long , long , ulong , ulong ) \ |
3063 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
3064 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
3065 | @@ -1418,46 +972,7 @@ |
3066 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
3067 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
3068 | IMPLEMENT_EXPR_G_GG(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
3069 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
3070 | -#else |
3071 | -#define DEFINE_EXPR_G_GG(NAME, EXPR) \ |
3072 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char , char , uchar , uchar ) \ |
3073 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3074 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3075 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
3076 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
3077 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
3078 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar , uchar , uchar , uchar ) \ |
3079 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
3080 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
3081 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
3082 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
3083 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
3084 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short , short , ushort , ushort) \ |
3085 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
3086 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
3087 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
3088 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
3089 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, short16 , short , ushort16, ushort) \ |
3090 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort , ushort, ushort , ushort) \ |
3091 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
3092 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
3093 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
3094 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
3095 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
3096 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int , int , uint , uint ) \ |
3097 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int2 , int , uint2 , uint ) \ |
3098 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int3 , int , uint3 , uint ) \ |
3099 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int4 , int , uint4 , uint ) \ |
3100 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int8 , int , uint8 , uint ) \ |
3101 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, int16 , int , uint16 , uint ) \ |
3102 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint , uint , uint , uint ) \ |
3103 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
3104 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
3105 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3106 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3107 | - IMPLEMENT_EXPR_G_GG(NAME, EXPR, uint16 , uint , uint16 , uint ) |
3108 | -#endif |
3109 | + IMPLEMENT_EXPR_G_GG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
3110 | |
3111 | #define IMPLEMENT_EXPR_G_GGG(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
3112 | GTYPE __attribute__ ((overloadable)) \ |
3113 | @@ -1469,7 +984,6 @@ |
3114 | typedef SUGTYPE sugtype; \ |
3115 | return EXPR; \ |
3116 | } |
3117 | -#ifdef cl_khr_int64 |
3118 | #define DEFINE_EXPR_G_GGG(NAME, EXPR) \ |
3119 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char , char , uchar , uchar ) \ |
3120 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3121 | @@ -1507,6 +1021,7 @@ |
3122 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3123 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3124 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
3125 | + __IF_INT64( \ |
3126 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, long , long , ulong , ulong ) \ |
3127 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
3128 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
3129 | @@ -1518,46 +1033,7 @@ |
3130 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
3131 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
3132 | IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
3133 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
3134 | -#else |
3135 | -#define DEFINE_EXPR_G_GGG(NAME, EXPR) \ |
3136 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char , char , uchar , uchar ) \ |
3137 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3138 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3139 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
3140 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
3141 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
3142 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar , uchar , uchar , uchar ) \ |
3143 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
3144 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
3145 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
3146 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
3147 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
3148 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short , short , ushort , ushort) \ |
3149 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
3150 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
3151 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
3152 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
3153 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, short16 , short , ushort16, ushort) \ |
3154 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort , ushort, ushort , ushort) \ |
3155 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
3156 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
3157 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
3158 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
3159 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
3160 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int , int , uint , uint ) \ |
3161 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int2 , int , uint2 , uint ) \ |
3162 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int3 , int , uint3 , uint ) \ |
3163 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int4 , int , uint4 , uint ) \ |
3164 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int8 , int , uint8 , uint ) \ |
3165 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, int16 , int , uint16 , uint ) \ |
3166 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint , uint , uint , uint ) \ |
3167 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
3168 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
3169 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3170 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3171 | - IMPLEMENT_EXPR_G_GGG(NAME, EXPR, uint16 , uint , uint16 , uint ) |
3172 | -#endif |
3173 | + IMPLEMENT_EXPR_G_GGG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
3174 | |
3175 | #define IMPLEMENT_EXPR_G_GS(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
3176 | GTYPE __attribute__ ((overloadable)) \ |
3177 | @@ -1569,7 +1045,6 @@ |
3178 | typedef SUGTYPE sugtype; \ |
3179 | return EXPR; \ |
3180 | } |
3181 | -#ifdef cl_khr_int64 |
3182 | #define DEFINE_EXPR_G_GS(NAME, EXPR) \ |
3183 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3184 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3185 | @@ -1601,6 +1076,7 @@ |
3186 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3187 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3188 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
3189 | + __IF_INT64( \ |
3190 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
3191 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
3192 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, long4 , long , ulong4 , ulong ) \ |
3193 | @@ -1610,40 +1086,7 @@ |
3194 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
3195 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
3196 | IMPLEMENT_EXPR_G_GS(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
3197 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
3198 | -#else |
3199 | -#define DEFINE_EXPR_G_GS(NAME, EXPR) \ |
3200 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3201 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3202 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
3203 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
3204 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
3205 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
3206 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
3207 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
3208 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
3209 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
3210 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
3211 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
3212 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
3213 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
3214 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, short16 , short , ushort16, ushort) \ |
3215 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
3216 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
3217 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
3218 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
3219 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
3220 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, int2 , int , uint2 , uint ) \ |
3221 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, int3 , int , uint3 , uint ) \ |
3222 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, int4 , int , uint4 , uint ) \ |
3223 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, int8 , int , uint8 , uint ) \ |
3224 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, int16 , int , uint16 , uint ) \ |
3225 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
3226 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
3227 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3228 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3229 | - IMPLEMENT_EXPR_G_GS(NAME, EXPR, uint16 , uint , uint16 , uint ) |
3230 | -#endif |
3231 | + IMPLEMENT_EXPR_G_GS(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
3232 | |
3233 | #define IMPLEMENT_EXPR_UG_GG(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, SUGTYPE) \ |
3234 | UGTYPE __attribute__ ((overloadable)) \ |
3235 | @@ -1655,7 +1098,6 @@ |
3236 | typedef SUGTYPE sugtype; \ |
3237 | return EXPR; \ |
3238 | } |
3239 | -#ifdef cl_khr_int64 |
3240 | #define DEFINE_EXPR_UG_GG(NAME, EXPR) \ |
3241 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char , char , uchar , uchar ) \ |
3242 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3243 | @@ -1693,6 +1135,7 @@ |
3244 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3245 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3246 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint16 , uint , uint16 , uint ) \ |
3247 | + __IF_INT64( \ |
3248 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, long , long , ulong , ulong ) \ |
3249 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, long2 , long , ulong2 , ulong ) \ |
3250 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, long3 , long , ulong3 , ulong ) \ |
3251 | @@ -1704,46 +1147,7 @@ |
3252 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ulong3 , ulong , ulong3 , ulong ) \ |
3253 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ulong4 , ulong , ulong4 , ulong ) \ |
3254 | IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ulong8 , ulong , ulong8 , ulong ) \ |
3255 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong ) |
3256 | -#else |
3257 | -#define DEFINE_EXPR_UG_GG(NAME, EXPR) \ |
3258 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char , char , uchar , uchar ) \ |
3259 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char2 , char , uchar2 , uchar ) \ |
3260 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char3 , char , uchar3 , uchar ) \ |
3261 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char4 , char , uchar4 , uchar ) \ |
3262 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char8 , char , uchar8 , uchar ) \ |
3263 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, char16 , char , uchar16 , uchar ) \ |
3264 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar , uchar , uchar , uchar ) \ |
3265 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar2 , uchar , uchar2 , uchar ) \ |
3266 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar3 , uchar , uchar3 , uchar ) \ |
3267 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar4 , uchar , uchar4 , uchar ) \ |
3268 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar8 , uchar , uchar8 , uchar ) \ |
3269 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uchar16 , uchar , uchar16 , uchar ) \ |
3270 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short , short , ushort , ushort) \ |
3271 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short2 , short , ushort2 , ushort) \ |
3272 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short3 , short , ushort3 , ushort) \ |
3273 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short4 , short , ushort4 , ushort) \ |
3274 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short8 , short , ushort8 , ushort) \ |
3275 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, short16 , short , ushort16, ushort) \ |
3276 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort , ushort, ushort , ushort) \ |
3277 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort2 , ushort, ushort2 , ushort) \ |
3278 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort3 , ushort, ushort3 , ushort) \ |
3279 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort4 , ushort, ushort4 , ushort) \ |
3280 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort8 , ushort, ushort8 , ushort) \ |
3281 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ushort16, ushort, ushort16, ushort) \ |
3282 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int , int , uint , uint ) \ |
3283 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int2 , int , uint2 , uint ) \ |
3284 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int3 , int , uint3 , uint ) \ |
3285 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int4 , int , uint4 , uint ) \ |
3286 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int8 , int , uint8 , uint ) \ |
3287 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, int16 , int , uint16 , uint ) \ |
3288 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint , uint , uint , uint ) \ |
3289 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint2 , uint , uint2 , uint ) \ |
3290 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint3 , uint , uint3 , uint ) \ |
3291 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint4 , uint , uint4 , uint ) \ |
3292 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint8 , uint , uint8 , uint ) \ |
3293 | - IMPLEMENT_EXPR_UG_GG(NAME, EXPR, uint16 , uint , uint16 , uint ) |
3294 | -#endif |
3295 | + IMPLEMENT_EXPR_UG_GG(NAME, EXPR, ulong16 , ulong , ulong16 , ulong )) |
3296 | |
3297 | #define IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, GTYPE, SGTYPE, UGTYPE, LGTYPE) \ |
3298 | LGTYPE __attribute__ ((overloadable)) \ |
3299 | @@ -1755,7 +1159,6 @@ |
3300 | typedef LGTYPE lgtype; \ |
3301 | return EXPR; \ |
3302 | } |
3303 | -#ifdef cl_khr_int64 |
3304 | #define DEFINE_EXPR_LG_GUG(NAME, EXPR) \ |
3305 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char , char , uchar , short ) \ |
3306 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char2 , char , uchar2 , short2 ) \ |
3307 | @@ -1781,6 +1184,7 @@ |
3308 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort4 , ushort, ushort4 , uint4 ) \ |
3309 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort8 , ushort, ushort8 , uint8 ) \ |
3310 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort16, ushort, ushort16, uint16 ) \ |
3311 | + __IF_INT64( \ |
3312 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, int , int , uint , long ) \ |
3313 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, int2 , int , uint2 , long2 ) \ |
3314 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, int3 , int , uint3 , long3 ) \ |
3315 | @@ -1792,34 +1196,7 @@ |
3316 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uint3 , uint , uint3 , ulong3 ) \ |
3317 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uint4 , uint , uint4 , ulong4 ) \ |
3318 | IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uint8 , uint , uint8 , ulong8 ) \ |
3319 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uint16 , uint , uint16 , ulong16 ) |
3320 | -#else |
3321 | -#define DEFINE_EXPR_LG_GUG(NAME, EXPR) \ |
3322 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char , char , uchar , short ) \ |
3323 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char2 , char , uchar2 , short2 ) \ |
3324 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char3 , char , uchar3 , short3 ) \ |
3325 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char4 , char , uchar4 , short4 ) \ |
3326 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char8 , char , uchar8 , short8 ) \ |
3327 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, char16 , char , uchar16 , short16 ) \ |
3328 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar , uchar , uchar , ushort ) \ |
3329 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar2 , uchar , uchar2 , ushort2 ) \ |
3330 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar3 , uchar , uchar3 , ushort3 ) \ |
3331 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar4 , uchar , uchar4 , ushort4 ) \ |
3332 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar8 , uchar , uchar8 , ushort8 ) \ |
3333 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uchar16 , uchar , uchar16 , ushort16) \ |
3334 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short , short , ushort , int ) \ |
3335 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short2 , short , ushort2 , int2 ) \ |
3336 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short3 , short , ushort3 , int3 ) \ |
3337 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short4 , short , ushort4 , int4 ) \ |
3338 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short8 , short , ushort8 , int8 ) \ |
3339 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, short16 , short , ushort16, int16 ) \ |
3340 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort , ushort, ushort , uint ) \ |
3341 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort2 , ushort, ushort2 , uint2 ) \ |
3342 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort3 , ushort, ushort3 , uint3 ) \ |
3343 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort4 , ushort, ushort4 , uint4 ) \ |
3344 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort8 , ushort, ushort8 , uint8 ) \ |
3345 | - IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, ushort16, ushort, ushort16, uint16 ) |
3346 | -#endif |
3347 | + IMPLEMENT_EXPR_LG_GUG(NAME, EXPR, uint16 , uint , uint16 , ulong16 )) |
3348 | |
3349 | #define IMPLEMENT_EXPR_J_JJ(NAME, EXPR, JTYPE, SJTYPE, UJTYPE, SUJTYPE) \ |
3350 | JTYPE __attribute__ ((overloadable)) \ |
3351 | |
3352 | === modified file 'lib/kernel/x86_64/Makefile.am' |
3353 | --- lib/kernel/x86_64/Makefile.am 2011-11-09 15:30:32 +0000 |
3354 | +++ lib/kernel/x86_64/Makefile.am 2011-11-14 18:40:38 +0000 |
3355 | @@ -43,5 +43,5 @@ |
3356 | .ll.o: |
3357 | $(LLVM_AS) -o $@ $< |
3358 | |
3359 | -$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
3360 | +$(libkernel_a_SOURCES:.c=.o): $(top_srcdir)/include/_kernel.h |
3361 | $(libkernel_a_SOURCES:.cl=.o): $(top_srcdir)/include/_kernel.h ../templates.h |
Please do not assume that the target has either both or none of int64&double support. For example, ARM NEON accelerator supports 64 bit integers but only single precision floats. And the TCE target is completely customizable, that is, the TTAs designed with TCE can (in the future, at least when 64 bit words are supported) have whatever combinations of instruction set support.