Merge lp:~schnetter/pocl/main into lp:~pocl/pocl/trunk
- main
- Merge into trunk
Proposed by
Erik Schnetter
Status: | Merged |
---|---|
Merge reported by: | Pekka Jääskeläinen |
Merged at revision: | not available |
Proposed branch: | lp:~schnetter/pocl/main |
Merge into: | lp:~pocl/pocl/trunk |
Diff against target: |
1318 lines (+318/-749) 10 files modified
include/_kernel.h (+80/-163) include/arm/types.h (+7/-7) include/tce/types.h (+7/-7) include/types.h (+15/-15) include/x86_64/types.h (+8/-8) lib/kernel/as_type.cl (+73/-192) lib/kernel/convert_type.cl (+114/-356) lib/kernel/sources.mk (+2/-1) lib/kernel/vload.cl (+6/-0) lib/kernel/vstore.cl (+6/-0) |
To merge this branch: | bzr merge lp:~schnetter/pocl/main |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Pekka Jääskeläinen | Pending | ||
Review via email:
|
Commit message
Description of the change
Cleanup
Simplify #ifdef and #defines in many spots; reduce code size.
To post a comment you must log in.
lp:~schnetter/pocl/main
updated
- 93. By Erik Schnetter
-
Remove vec_step, which is already a Clang intrinsic
- 94. By Erik Schnetter
-
Merge from trunk
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'include/_kernel.h' |
2 | --- include/_kernel.h 2011-11-29 16:59:14 +0000 |
3 | +++ include/_kernel.h 2011-12-04 22:04:24 +0000 |
4 | @@ -48,6 +48,9 @@ |
5 | # define __IF_FP64(x) |
6 | #endif |
7 | |
8 | +/* A static assert statement to catch inconsistencies at build time */ |
9 | +#define _cl_static_assert(_t, _x) typedef int ai##_t[(_x) ? 1 : -1] |
10 | + |
11 | #define __global __attribute__ ((address_space(3))) |
12 | #define __local __attribute__ ((address_space(4))) |
13 | #define __constant __attribute__ ((address_space(5))) |
14 | @@ -64,6 +67,18 @@ |
15 | |
16 | |
17 | /* Data types */ |
18 | |
19 | +/* Disable undefined datatypes */ |
20 | +#ifndef cles_khr_int64 |
21 | +typedef struct error_undefined_type_long error_undefined_type_long; |
22 | +# define long error_undefined_type_long |
23 | +typedef struct error_undefined_type_ulong error_undefined_type_ulong; |
24 | +# define ulong error_undefined_type_ulong |
25 | +#endif |
26 | +#ifndef cl_khr_fp64 |
27 | +typedef struct error_undefined_type_double error_undefined_type_double; |
28 | +# define double error_undefined_type_double |
29 | +#endif |
30 | + |
31 | // We align the 3-vectors, so that their sizeof is correct. Is there a |
32 | // better way? Should we also align the other vectors? |
33 | |
34 | @@ -115,10 +130,6 @@ |
35 | typedef ulong ulong4 __attribute__((__ext_vector_type__(4))); |
36 | typedef ulong ulong8 __attribute__((__ext_vector_type__(8))); |
37 | typedef ulong ulong16 __attribute__((__ext_vector_type__(16))); |
38 | -#else |
39 | -/* Disable datatype */ |
40 | -struct error_undefined_type_long; |
41 | -#define long struct error_undefined_type_long |
42 | #endif |
43 | |
44 | typedef float float2 __attribute__((__ext_vector_type__(2))); |
45 | @@ -133,15 +144,9 @@ |
46 | typedef double double4 __attribute__((__ext_vector_type__(4))); |
47 | typedef double double8 __attribute__((__ext_vector_type__(8))); |
48 | typedef double double16 __attribute__((__ext_vector_type__(16))); |
49 | -#else |
50 | -/* Disable datatype */ |
51 | -struct error_undefined_type_double; |
52 | -#define double struct error_undefined_type_double |
53 | #endif |
54 | |
55 | /* Ensure the data types have the right sizes */ |
56 | -#define _cl_static_assert(_t, _x) typedef int ai##_t[(_x) ? 1 : -1] |
57 | - |
58 | _cl_static_assert(char , sizeof(char ) == 1); |
59 | _cl_static_assert(char2 , sizeof(char2 ) == 2 *sizeof(char)); |
60 | _cl_static_assert(char3 , sizeof(char3 ) == 4 *sizeof(char)); |
61 | @@ -354,146 +359,62 @@ |
62 | __IF_INT64(_CL_DECLARE_AS_TYPE_128(ulong16)) |
63 | __IF_FP64(_CL_DECLARE_AS_TYPE_128(double16)) |
64 | |
65 | -#define _CL_DECLARE_CONVERT_TYPE(SRC, DST) \ |
66 | - DST _cl_overloadable convert_##DST(SRC a); |
67 | - |
68 | -/* 1 element */ |
69 | -#define _CL_DECLARE_CONVERT_TYPE_1(SRC) \ |
70 | - _CL_DECLARE_CONVERT_TYPE(SRC, char) \ |
71 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar) \ |
72 | - _CL_DECLARE_CONVERT_TYPE(SRC, short) \ |
73 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort) \ |
74 | - _CL_DECLARE_CONVERT_TYPE(SRC, int) \ |
75 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint) \ |
76 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long)) \ |
77 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong)) \ |
78 | - _CL_DECLARE_CONVERT_TYPE(SRC, float) \ |
79 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double)) |
80 | -_CL_DECLARE_CONVERT_TYPE_1(char) |
81 | -_CL_DECLARE_CONVERT_TYPE_1(uchar) |
82 | -_CL_DECLARE_CONVERT_TYPE_1(short) |
83 | -_CL_DECLARE_CONVERT_TYPE_1(ushort) |
84 | -_CL_DECLARE_CONVERT_TYPE_1(int) |
85 | -_CL_DECLARE_CONVERT_TYPE_1(uint) |
86 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_1(long)) |
87 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_1(ulong)) |
88 | -_CL_DECLARE_CONVERT_TYPE_1(float) |
89 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_1(double)) |
90 | - |
91 | -/* 2 elements */ |
92 | -#define _CL_DECLARE_CONVERT_TYPE_2(SRC) \ |
93 | - _CL_DECLARE_CONVERT_TYPE(SRC, char2) \ |
94 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar2) \ |
95 | - _CL_DECLARE_CONVERT_TYPE(SRC, short2) \ |
96 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort2) \ |
97 | - _CL_DECLARE_CONVERT_TYPE(SRC, int2) \ |
98 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint2) \ |
99 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long2)) \ |
100 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong2)) \ |
101 | - _CL_DECLARE_CONVERT_TYPE(SRC, float2) \ |
102 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double2)) |
103 | -_CL_DECLARE_CONVERT_TYPE_2(char2) |
104 | -_CL_DECLARE_CONVERT_TYPE_2(uchar2) |
105 | -_CL_DECLARE_CONVERT_TYPE_2(short2) |
106 | -_CL_DECLARE_CONVERT_TYPE_2(ushort2) |
107 | -_CL_DECLARE_CONVERT_TYPE_2(int2) |
108 | -_CL_DECLARE_CONVERT_TYPE_2(uint2) |
109 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_2(long2)) |
110 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_2(ulong2)) |
111 | -_CL_DECLARE_CONVERT_TYPE_2(float2) |
112 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_2(double2)) |
113 | - |
114 | -/* 3 elements */ |
115 | -#define _CL_DECLARE_CONVERT_TYPE_3(SRC) \ |
116 | - _CL_DECLARE_CONVERT_TYPE(SRC, char3) \ |
117 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar3) \ |
118 | - _CL_DECLARE_CONVERT_TYPE(SRC, short3) \ |
119 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort3) \ |
120 | - _CL_DECLARE_CONVERT_TYPE(SRC, int3) \ |
121 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint3) \ |
122 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long3)) \ |
123 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong3)) \ |
124 | - _CL_DECLARE_CONVERT_TYPE(SRC, float3) \ |
125 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double3)) |
126 | -_CL_DECLARE_CONVERT_TYPE_3(char3) |
127 | -_CL_DECLARE_CONVERT_TYPE_3(uchar3) |
128 | -_CL_DECLARE_CONVERT_TYPE_3(short3) |
129 | -_CL_DECLARE_CONVERT_TYPE_3(ushort3) |
130 | -_CL_DECLARE_CONVERT_TYPE_3(int3) |
131 | -_CL_DECLARE_CONVERT_TYPE_3(uint3) |
132 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_3(long3)) |
133 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_3(ulong3)) |
134 | -_CL_DECLARE_CONVERT_TYPE_3(float3) |
135 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_3(double3)) |
136 | - |
137 | -/* 4 elements */ |
138 | -#define _CL_DECLARE_CONVERT_TYPE_4(SRC) \ |
139 | - _CL_DECLARE_CONVERT_TYPE(SRC, char4) \ |
140 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar4) \ |
141 | - _CL_DECLARE_CONVERT_TYPE(SRC, short4) \ |
142 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort4) \ |
143 | - _CL_DECLARE_CONVERT_TYPE(SRC, int4) \ |
144 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint4) \ |
145 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long4)) \ |
146 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong4)) \ |
147 | - _CL_DECLARE_CONVERT_TYPE(SRC, float4) \ |
148 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double4)) |
149 | -_CL_DECLARE_CONVERT_TYPE_4(char4) |
150 | -_CL_DECLARE_CONVERT_TYPE_4(uchar4) |
151 | -_CL_DECLARE_CONVERT_TYPE_4(short4) |
152 | -_CL_DECLARE_CONVERT_TYPE_4(ushort4) |
153 | -_CL_DECLARE_CONVERT_TYPE_4(int4) |
154 | -_CL_DECLARE_CONVERT_TYPE_4(uint4) |
155 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_4(long4)) |
156 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_4(ulong4)) |
157 | -_CL_DECLARE_CONVERT_TYPE_4(float4) |
158 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_4(double4)) |
159 | - |
160 | -/* 8 elements */ |
161 | -#define _CL_DECLARE_CONVERT_TYPE_8(SRC) \ |
162 | - _CL_DECLARE_CONVERT_TYPE(SRC, char8) \ |
163 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar8) \ |
164 | - _CL_DECLARE_CONVERT_TYPE(SRC, short8) \ |
165 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort8) \ |
166 | - _CL_DECLARE_CONVERT_TYPE(SRC, int8) \ |
167 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint8) \ |
168 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long8)) \ |
169 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong8)) \ |
170 | - _CL_DECLARE_CONVERT_TYPE(SRC, float8) \ |
171 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double8)) |
172 | -_CL_DECLARE_CONVERT_TYPE_8(char8) |
173 | -_CL_DECLARE_CONVERT_TYPE_8(uchar8) |
174 | -_CL_DECLARE_CONVERT_TYPE_8(short8) |
175 | -_CL_DECLARE_CONVERT_TYPE_8(ushort8) |
176 | -_CL_DECLARE_CONVERT_TYPE_8(int8) |
177 | -_CL_DECLARE_CONVERT_TYPE_8(uint8) |
178 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_8(long8)) |
179 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_8(ulong8)) |
180 | -_CL_DECLARE_CONVERT_TYPE_8(float8) |
181 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_8(double8)) |
182 | - |
183 | -/* 16 elements */ |
184 | -#define _CL_DECLARE_CONVERT_TYPE_16(SRC) \ |
185 | - _CL_DECLARE_CONVERT_TYPE(SRC, char16) \ |
186 | - _CL_DECLARE_CONVERT_TYPE(SRC, uchar16) \ |
187 | - _CL_DECLARE_CONVERT_TYPE(SRC, short16) \ |
188 | - _CL_DECLARE_CONVERT_TYPE(SRC, ushort16) \ |
189 | - _CL_DECLARE_CONVERT_TYPE(SRC, int16) \ |
190 | - _CL_DECLARE_CONVERT_TYPE(SRC, uint16) \ |
191 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, long16)) \ |
192 | - __IF_INT64(_CL_DECLARE_CONVERT_TYPE(SRC, ulong16)) \ |
193 | - _CL_DECLARE_CONVERT_TYPE(SRC, float16) \ |
194 | - __IF_FP64(_CL_DECLARE_CONVERT_TYPE(SRC, double16)) |
195 | -_CL_DECLARE_CONVERT_TYPE_16(char16) |
196 | -_CL_DECLARE_CONVERT_TYPE_16(uchar16) |
197 | -_CL_DECLARE_CONVERT_TYPE_16(short16) |
198 | -_CL_DECLARE_CONVERT_TYPE_16(ushort16) |
199 | -_CL_DECLARE_CONVERT_TYPE_16(int16) |
200 | -_CL_DECLARE_CONVERT_TYPE_16(uint16) |
201 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_16(long16)) |
202 | -__IF_INT64(_CL_DECLARE_CONVERT_TYPE_16(ulong16)) |
203 | -_CL_DECLARE_CONVERT_TYPE_16(float16) |
204 | -__IF_FP64(_CL_DECLARE_CONVERT_TYPE_16(double16)) |
205 | +#define _CL_DECLARE_CONVERT_TYPE(SRC, DST, SIZE, INTSUFFIX, FLOATSUFFIX) \ |
206 | + DST##SIZE _cl_overloadable \ |
207 | + convert_##DST##SIZE##INTSUFFIX##FLOATSUFFIX(SRC##SIZE a); |
208 | + |
209 | +/* conversions to int may have a suffix: _sat */ |
210 | +#define _CL_DECLARE_CONVERT_TYPE_DST(SRC, SIZE, FLOATSUFFIX) \ |
211 | + _CL_DECLARE_CONVERT_TYPE(SRC, char , SIZE, , FLOATSUFFIX) \ |
212 | + _CL_DECLARE_CONVERT_TYPE(SRC, char , SIZE, _sat, FLOATSUFFIX) \ |
213 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar , SIZE, , FLOATSUFFIX) \ |
214 | + _CL_DECLARE_CONVERT_TYPE(SRC, uchar , SIZE, _sat, FLOATSUFFIX) \ |
215 | + _CL_DECLARE_CONVERT_TYPE(SRC, short , SIZE, , FLOATSUFFIX) \ |
216 | + _CL_DECLARE_CONVERT_TYPE(SRC, short , SIZE, _sat, FLOATSUFFIX) \ |
217 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort, SIZE, , FLOATSUFFIX) \ |
218 | + _CL_DECLARE_CONVERT_TYPE(SRC, ushort, SIZE, _sat, FLOATSUFFIX) \ |
219 | + _CL_DECLARE_CONVERT_TYPE(SRC, int , SIZE, , FLOATSUFFIX) \ |
220 | + _CL_DECLARE_CONVERT_TYPE(SRC, int , SIZE, _sat, FLOATSUFFIX) \ |
221 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint , SIZE, , FLOATSUFFIX) \ |
222 | + _CL_DECLARE_CONVERT_TYPE(SRC, uint , SIZE, _sat, FLOATSUFFIX) \ |
223 | + __IF_INT64( \ |
224 | + _CL_DECLARE_CONVERT_TYPE(SRC, long , SIZE, , FLOATSUFFIX) \ |
225 | + _CL_DECLARE_CONVERT_TYPE(SRC, long , SIZE, _sat, FLOATSUFFIX) \ |
226 | + _CL_DECLARE_CONVERT_TYPE(SRC, ulong , SIZE, , FLOATSUFFIX) \ |
227 | + _CL_DECLARE_CONVERT_TYPE(SRC, ulong , SIZE, _sat, FLOATSUFFIX)) \ |
228 | + _CL_DECLARE_CONVERT_TYPE(SRC, float , SIZE, , FLOATSUFFIX) \ |
229 | + __IF_FP64( \ |
230 | + _CL_DECLARE_CONVERT_TYPE(SRC, double, SIZE, , FLOATSUFFIX)) |
231 | + |
232 | +/* conversions from float may have a suffix: _rte _rtz _rtp _rtn */ |
233 | +#define _CL_DECLARE_CONVERT_TYPE_SRC_DST(SIZE) \ |
234 | + _CL_DECLARE_CONVERT_TYPE_DST(char , SIZE, ) \ |
235 | + _CL_DECLARE_CONVERT_TYPE_DST(uchar , SIZE, ) \ |
236 | + _CL_DECLARE_CONVERT_TYPE_DST(short , SIZE, ) \ |
237 | + _CL_DECLARE_CONVERT_TYPE_DST(ushort, SIZE, ) \ |
238 | + _CL_DECLARE_CONVERT_TYPE_DST(int , SIZE, ) \ |
239 | + _CL_DECLARE_CONVERT_TYPE_DST(uint , SIZE, ) \ |
240 | + __IF_INT64( \ |
241 | + _CL_DECLARE_CONVERT_TYPE_DST(long , SIZE, ) \ |
242 | + _CL_DECLARE_CONVERT_TYPE_DST(ulong , SIZE, )) \ |
243 | + _CL_DECLARE_CONVERT_TYPE_DST(float , SIZE, ) \ |
244 | + _CL_DECLARE_CONVERT_TYPE_DST(float , SIZE, _rte) \ |
245 | + _CL_DECLARE_CONVERT_TYPE_DST(float , SIZE, _rtz) \ |
246 | + _CL_DECLARE_CONVERT_TYPE_DST(float , SIZE, _rtp) \ |
247 | + _CL_DECLARE_CONVERT_TYPE_DST(float , SIZE, _rtn) \ |
248 | + __IF_FP64( \ |
249 | + _CL_DECLARE_CONVERT_TYPE_DST(double, SIZE, ) \ |
250 | + _CL_DECLARE_CONVERT_TYPE_DST(double, SIZE, _rte) \ |
251 | + _CL_DECLARE_CONVERT_TYPE_DST(double, SIZE, _rtz) \ |
252 | + _CL_DECLARE_CONVERT_TYPE_DST(double, SIZE, _rtp) \ |
253 | + _CL_DECLARE_CONVERT_TYPE_DST(double, SIZE, _rtn)) |
254 | + |
255 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST( ) |
256 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST( 2) |
257 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST( 3) |
258 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST( 4) |
259 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST( 8) |
260 | +_CL_DECLARE_CONVERT_TYPE_SRC_DST(16) |
261 | |
262 | |
263 | |
264 | /* Work-Item Functions */ |
265 | @@ -668,13 +589,13 @@ |
266 | float4 _cl_overloadable NAME(float4 , float4 , int4 ); \ |
267 | float8 _cl_overloadable NAME(float8 , float8 , int8 ); \ |
268 | float16 _cl_overloadable NAME(float16 , float16 , int16 ); \ |
269 | - __IF_INT64(__IF_FP64( \ |
270 | + __IF_FP64( \ |
271 | double _cl_overloadable NAME(double , double , long ); \ |
272 | double2 _cl_overloadable NAME(double2 , double2 , long2 ); \ |
273 | double3 _cl_overloadable NAME(double3 , double3 , long3 ); \ |
274 | double4 _cl_overloadable NAME(double4 , double4 , long4 ); \ |
275 | double8 _cl_overloadable NAME(double8 , double8 , long8 ); \ |
276 | - double16 _cl_overloadable NAME(double16, double16, long16);)) |
277 | + double16 _cl_overloadable NAME(double16, double16, long16);) |
278 | #define _CL_DECLARE_FUNC_V_U(NAME) \ |
279 | float _cl_overloadable NAME(uint ); \ |
280 | float2 _cl_overloadable NAME(uint2 ); \ |
281 | @@ -682,13 +603,13 @@ |
282 | float4 _cl_overloadable NAME(uint4 ); \ |
283 | float8 _cl_overloadable NAME(uint8 ); \ |
284 | float16 _cl_overloadable NAME(uint16 ); \ |
285 | - __IF_INT64(__IF_FP64( \ |
286 | + __IF_FP64( \ |
287 | double _cl_overloadable NAME(ulong ); \ |
288 | double2 _cl_overloadable NAME(ulong2 ); \ |
289 | double3 _cl_overloadable NAME(ulong3 ); \ |
290 | double4 _cl_overloadable NAME(ulong4 ); \ |
291 | double8 _cl_overloadable NAME(ulong8 ); \ |
292 | - double16 _cl_overloadable NAME(ulong16);)) |
293 | + double16 _cl_overloadable NAME(ulong16);) |
294 | #define _CL_DECLARE_FUNC_V_VS(NAME) \ |
295 | float2 _cl_overloadable NAME(float2 , float ); \ |
296 | float3 _cl_overloadable NAME(float3 , float ); \ |
297 | @@ -724,12 +645,11 @@ |
298 | int16 _cl_overloadable NAME(float16 , float16 ); \ |
299 | __IF_FP64( \ |
300 | int _cl_overloadable NAME(double , double ); \ |
301 | - __IF_INT64( \ |
302 | long2 _cl_overloadable NAME(double2 , double2 ); \ |
303 | long3 _cl_overloadable NAME(double3 , double3 ); \ |
304 | long4 _cl_overloadable NAME(double4 , double4 ); \ |
305 | long8 _cl_overloadable NAME(double8 , double8 ); \ |
306 | - long16 _cl_overloadable NAME(double16, double16);)) |
307 | + long16 _cl_overloadable NAME(double16, double16);) |
308 | #define _CL_DECLARE_FUNC_V_VI(NAME) \ |
309 | float2 _cl_overloadable NAME(float2 , int); \ |
310 | float3 _cl_overloadable NAME(float3 , int); \ |
311 | @@ -1572,13 +1492,6 @@ |
312 | |
313 | |
314 | /* Miscellaneous Vector Functions */ |
315 | |
316 | -// convert a vector type to a scalar type |
317 | -_CL_DECLARE_FUNC_I_IG(_cl_scalar) |
318 | -_CL_DECLARE_FUNC_S_V(_cl_scalar) |
319 | -#define vec_step(a) (sizeof(a) / sizeof(_cl_scalar(a))) |
320 | - |
321 | - |
322 | - |
323 | // This code leads to an ICE in Clang |
324 | |
325 | // #define _CL_DECLARE_SHUFFLE_2(GTYPE, UGTYPE, STYPE, M) \ |
326 | @@ -1693,3 +1606,7 @@ |
327 | // _CL_DECLARE_SHUFFLE(double, ulong , double, 16) |
328 | |
329 | // shuffle2 |
330 | + |
331 | + |
332 | |
333 | +/* printf */ |
334 | +// int printf(constant char * restrict format, ...); |
335 | |
336 | === modified file 'include/arm/types.h' |
337 | --- include/arm/types.h 2011-11-29 16:59:14 +0000 |
338 | +++ include/arm/types.h 2011-12-04 22:04:24 +0000 |
339 | @@ -1,12 +1,12 @@ |
340 | -#define uchar unsigned char |
341 | -#define ushort unsigned short |
342 | -#define uint unsigned int |
343 | +typedef unsigned char uchar; |
344 | +typedef unsigned short ushort; |
345 | +typedef unsigned int uint; |
346 | |
347 | #define __EMBEDDED_PROFILE__ 1 |
348 | #undef cles_khr_int64 |
349 | #undef cl_khr_fp64 |
350 | |
351 | -#define size_t uint |
352 | -#define ptrdiff_t int |
353 | -#define intptr_t int |
354 | -#define uintptr_t uint |
355 | +typedef uint size_t; |
356 | +typedef int ptrdiff_t; |
357 | +typedef int intptr_t; |
358 | +typedef uint uintptr_t; |
359 | |
360 | === modified file 'include/tce/types.h' |
361 | --- include/tce/types.h 2011-11-29 16:59:14 +0000 |
362 | +++ include/tce/types.h 2011-12-04 22:04:24 +0000 |
363 | @@ -1,12 +1,12 @@ |
364 | -#define uchar unsigned char |
365 | -#define ushort unsigned short |
366 | -#define uint unsigned int |
367 | +typedef unsigned char uchar; |
368 | +typedef unsigned short ushort; |
369 | +typedef unsigned int uint; |
370 | |
371 | #define __EMBEDDED_PROFILE__ 1 |
372 | #undef cles_khr_int64 |
373 | #undef cl_khr_fp64 |
374 | |
375 | -#define size_t uint |
376 | -#define ptrdiff_t int |
377 | -#define intptr_t int |
378 | -#define uintptr_t uint |
379 | +typedef uint size_t; |
380 | +typedef int ptrdiff_t; |
381 | +typedef int intptr_t; |
382 | +typedef uint uintptr_t; |
383 | |
384 | === modified file 'include/types.h' |
385 | --- include/types.h 2011-11-29 19:13:26 +0000 |
386 | +++ include/types.h 2011-12-04 22:04:24 +0000 |
387 | @@ -6,23 +6,23 @@ |
388 | |
389 | #include "clconfig.h" |
390 | |
391 | -#define uchar unsigned char |
392 | -#define ushort unsigned short |
393 | -#define uint unsigned int |
394 | -#define ulong unsigned long |
395 | +typedef unsigned char uchar; |
396 | +typedef unsigned short ushort; |
397 | +typedef unsigned int uint; |
398 | +typedef unsigned long ulong; |
399 | |
400 | #if SIZEOF_LONG == 8 |
401 | -#define cles_khr_int64 |
402 | -#if SIZEOF_DOUBLE == 8 |
403 | -#define cl_khr_fp64 |
404 | -#else |
405 | -#undef cl_khr_fp64 |
406 | -#endif |
407 | -#else /* SIZEOF_LONG == 8 */ |
408 | -#define __EMBEDDED_PROFILE__ 1 |
409 | -#undef cles_khr_int64 |
410 | -#undef cl_khr_fp64 |
411 | -#endif /* SIZEOF_LONG == 8 */ |
412 | +# define cles_khr_int64 |
413 | +# if SIZEOF_DOUBLE == 8 |
414 | +# define cl_khr_fp64 |
415 | +# else |
416 | +# undef cl_khr_fp64 |
417 | +# endif |
418 | +#else /* SIZEOF_LONG != 8 */ |
419 | +# define __EMBEDDED_PROFILE__ 1 |
420 | +# undef cles_khr_int64 |
421 | +# undef cl_khr_fp64 |
422 | +#endif /* SIZEOF_LONG != 8 */ |
423 | |
424 | #if SIZEOF_VOID_P == 8 |
425 | typedef ulong size_t; |
426 | |
427 | === modified file 'include/x86_64/types.h' |
428 | --- include/x86_64/types.h 2011-11-29 16:59:14 +0000 |
429 | +++ include/x86_64/types.h 2011-12-04 22:04:24 +0000 |
430 | @@ -1,12 +1,12 @@ |
431 | -#define uchar unsigned char |
432 | -#define ushort unsigned short |
433 | -#define uint unsigned int |
434 | -#define ulong unsigned long |
435 | +typedef unsigned char uchar; |
436 | +typedef unsigned shor ushort; |
437 | +typedef unsigned int uint; |
438 | +typedef unsigned long ulong; |
439 | |
440 | #define cles_khr_int64 |
441 | #define cl_khr_fp64 |
442 | |
443 | -#define size_t ulong |
444 | -#define ptrdiff_t long |
445 | -#define intptr_t long |
446 | -#define uintptr_t ulong |
447 | +typedef ulong size_t; |
448 | +typedef long ptrdiff_t; |
449 | +typedef long intptr_t; |
450 | +typedef ulong uintptr_t; |
451 | |
452 | === modified file 'lib/kernel/as_type.cl' |
453 | --- lib/kernel/as_type.cl 2011-11-24 15:56:10 +0000 |
454 | +++ lib/kernel/as_type.cl 2011-12-04 22:04:24 +0000 |
455 | @@ -22,7 +22,7 @@ |
456 | */ |
457 | |
458 | #define DEFINE_AS_TYPE(SRC, DST) \ |
459 | - DST __attribute__ ((__overloadable__)) \ |
460 | + DST __attribute__ ((__overloadable__)) \ |
461 | as_##DST(SRC a) \ |
462 | { \ |
463 | return *(DST*)&a; \ |
464 | @@ -72,49 +72,19 @@ |
465 | |
466 | /* 8 bytes */ |
467 | |
468 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
469 | -#define DEFINE_AS_TYPE_8(DST) \ |
470 | - DEFINE_AS_TYPE(DST, char8) \ |
471 | - DEFINE_AS_TYPE(DST, uchar8) \ |
472 | - DEFINE_AS_TYPE(DST, short4) \ |
473 | - DEFINE_AS_TYPE(DST, ushort4) \ |
474 | - DEFINE_AS_TYPE(DST, int2) \ |
475 | - DEFINE_AS_TYPE(DST, uint2) \ |
476 | - DEFINE_AS_TYPE(DST, long) \ |
477 | - DEFINE_AS_TYPE(DST, ulong) \ |
478 | - DEFINE_AS_TYPE(DST, float2) \ |
479 | - DEFINE_AS_TYPE(DST, double) |
480 | -#elif defined(cles_khr_int64) |
481 | -#define DEFINE_AS_TYPE_8(DST) \ |
482 | - DEFINE_AS_TYPE(DST, char8) \ |
483 | - DEFINE_AS_TYPE(DST, uchar8) \ |
484 | - DEFINE_AS_TYPE(DST, short4) \ |
485 | - DEFINE_AS_TYPE(DST, ushort4) \ |
486 | - DEFINE_AS_TYPE(DST, int2) \ |
487 | - DEFINE_AS_TYPE(DST, uint2) \ |
488 | - DEFINE_AS_TYPE(DST, long) \ |
489 | - DEFINE_AS_TYPE(DST, ulong) \ |
490 | - DEFINE_AS_TYPE(DST, float2) |
491 | -#elif defined(cl_khr_fp64) |
492 | -#define DEFINE_AS_TYPE_8(DST) \ |
493 | - DEFINE_AS_TYPE(DST, char8) \ |
494 | - DEFINE_AS_TYPE(DST, uchar8) \ |
495 | - DEFINE_AS_TYPE(DST, short4) \ |
496 | - DEFINE_AS_TYPE(DST, ushort4) \ |
497 | - DEFINE_AS_TYPE(DST, int2) \ |
498 | - DEFINE_AS_TYPE(DST, uint2) \ |
499 | - DEFINE_AS_TYPE(DST, float2) \ |
500 | - DEFINE_AS_TYPE(DST, double) |
501 | -#else |
502 | -#define DEFINE_AS_TYPE_8(DST) \ |
503 | - DEFINE_AS_TYPE(DST, char8) \ |
504 | - DEFINE_AS_TYPE(DST, uchar8) \ |
505 | - DEFINE_AS_TYPE(DST, short4) \ |
506 | - DEFINE_AS_TYPE(DST, ushort4) \ |
507 | - DEFINE_AS_TYPE(DST, int2) \ |
508 | - DEFINE_AS_TYPE(DST, uint2) \ |
509 | - DEFINE_AS_TYPE(DST, float2) |
510 | -#endif |
511 | +#define DEFINE_AS_TYPE_8(DST) \ |
512 | + DEFINE_AS_TYPE(DST, char8) \ |
513 | + DEFINE_AS_TYPE(DST, uchar8) \ |
514 | + DEFINE_AS_TYPE(DST, short4) \ |
515 | + DEFINE_AS_TYPE(DST, ushort4) \ |
516 | + DEFINE_AS_TYPE(DST, int2) \ |
517 | + DEFINE_AS_TYPE(DST, uint2) \ |
518 | + __IF_INT64( \ |
519 | + DEFINE_AS_TYPE(DST, long) \ |
520 | + DEFINE_AS_TYPE(DST, ulong)) \ |
521 | + DEFINE_AS_TYPE(DST, float2) \ |
522 | + __IF_FP64( \ |
523 | + DEFINE_AS_TYPE(DST, double)) |
524 | |
525 | DEFINE_AS_TYPE_8(char8) |
526 | DEFINE_AS_TYPE_8(uchar8) |
527 | @@ -122,60 +92,28 @@ |
528 | DEFINE_AS_TYPE_8(ushort4) |
529 | DEFINE_AS_TYPE_8(int2) |
530 | DEFINE_AS_TYPE_8(uint2) |
531 | -#ifdef cles_khr_int64 |
532 | +__IF_INT64( |
533 | DEFINE_AS_TYPE_8(long) |
534 | -DEFINE_AS_TYPE_8(ulong) |
535 | -#endif |
536 | +DEFINE_AS_TYPE_8(ulong)) |
537 | DEFINE_AS_TYPE_8(float2) |
538 | -#ifdef cl_khr_fp64 |
539 | -DEFINE_AS_TYPE_8(double) |
540 | -#endif |
541 | +__IF_FP64( |
542 | +DEFINE_AS_TYPE_8(double)) |
543 | |
544 | /* 16 bytes */ |
545 | |
546 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
547 | -#define DEFINE_AS_TYPE_16(DST) \ |
548 | - DEFINE_AS_TYPE(DST, char16) \ |
549 | - DEFINE_AS_TYPE(DST, uchar16) \ |
550 | - DEFINE_AS_TYPE(DST, short8) \ |
551 | - DEFINE_AS_TYPE(DST, ushort8) \ |
552 | - DEFINE_AS_TYPE(DST, int4) \ |
553 | - DEFINE_AS_TYPE(DST, uint4) \ |
554 | - DEFINE_AS_TYPE(DST, long2) \ |
555 | - DEFINE_AS_TYPE(DST, ulong2) \ |
556 | - DEFINE_AS_TYPE(DST, float4) \ |
557 | - DEFINE_AS_TYPE(DST, double2) |
558 | -#elif defined(cles_khr_int64) |
559 | -#define DEFINE_AS_TYPE_16(DST) \ |
560 | - DEFINE_AS_TYPE(DST, char16) \ |
561 | - DEFINE_AS_TYPE(DST, uchar16) \ |
562 | - DEFINE_AS_TYPE(DST, short8) \ |
563 | - DEFINE_AS_TYPE(DST, ushort8) \ |
564 | - DEFINE_AS_TYPE(DST, int4) \ |
565 | - DEFINE_AS_TYPE(DST, uint4) \ |
566 | - DEFINE_AS_TYPE(DST, long2) \ |
567 | - DEFINE_AS_TYPE(DST, ulong2) \ |
568 | - DEFINE_AS_TYPE(DST, float4) |
569 | -#elif defined(cl_khr_fp64) |
570 | -#define DEFINE_AS_TYPE_16(DST) \ |
571 | - DEFINE_AS_TYPE(DST, char16) \ |
572 | - DEFINE_AS_TYPE(DST, uchar16) \ |
573 | - DEFINE_AS_TYPE(DST, short8) \ |
574 | - DEFINE_AS_TYPE(DST, ushort8) \ |
575 | - DEFINE_AS_TYPE(DST, int4) \ |
576 | - DEFINE_AS_TYPE(DST, uint4) \ |
577 | - DEFINE_AS_TYPE(DST, float4) \ |
578 | - DEFINE_AS_TYPE(DST, double2) |
579 | -#else |
580 | -#define DEFINE_AS_TYPE_16(DST) \ |
581 | - DEFINE_AS_TYPE(DST, char16) \ |
582 | - DEFINE_AS_TYPE(DST, uchar16) \ |
583 | - DEFINE_AS_TYPE(DST, short8) \ |
584 | - DEFINE_AS_TYPE(DST, ushort8) \ |
585 | - DEFINE_AS_TYPE(DST, int4) \ |
586 | - DEFINE_AS_TYPE(DST, uint4) \ |
587 | - DEFINE_AS_TYPE(DST, float4) |
588 | -#endif |
589 | +#define DEFINE_AS_TYPE_16(DST) \ |
590 | + DEFINE_AS_TYPE(DST, char16) \ |
591 | + DEFINE_AS_TYPE(DST, uchar16) \ |
592 | + DEFINE_AS_TYPE(DST, short8) \ |
593 | + DEFINE_AS_TYPE(DST, ushort8) \ |
594 | + DEFINE_AS_TYPE(DST, int4) \ |
595 | + DEFINE_AS_TYPE(DST, uint4) \ |
596 | + __IF_INT64( \ |
597 | + DEFINE_AS_TYPE(DST, long2) \ |
598 | + DEFINE_AS_TYPE(DST, ulong2)) \ |
599 | + DEFINE_AS_TYPE(DST, float4) \ |
600 | + __IF_FP64( \ |
601 | + DEFINE_AS_TYPE(DST, double2)) |
602 | |
603 | DEFINE_AS_TYPE_16(char16) |
604 | DEFINE_AS_TYPE_16(uchar16) |
605 | @@ -183,127 +121,70 @@ |
606 | DEFINE_AS_TYPE_16(ushort8) |
607 | DEFINE_AS_TYPE_16(int4) |
608 | DEFINE_AS_TYPE_16(uint4) |
609 | -#ifdef cles_khr_int64 |
610 | +__IF_INT64( |
611 | DEFINE_AS_TYPE_16(long2) |
612 | -DEFINE_AS_TYPE_16(ulong2) |
613 | -#endif |
614 | +DEFINE_AS_TYPE_16(ulong2)) |
615 | DEFINE_AS_TYPE_16(float4) |
616 | -#ifdef cl_khr_fp64 |
617 | -DEFINE_AS_TYPE_16(double2) |
618 | -#endif |
619 | +__IF_FP64( |
620 | +DEFINE_AS_TYPE_16(double2)) |
621 | |
622 | /* 32 bytes */ |
623 | |
624 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
625 | -#define DEFINE_AS_TYPE_32(DST) \ |
626 | - DEFINE_AS_TYPE(DST, short16) \ |
627 | - DEFINE_AS_TYPE(DST, ushort16) \ |
628 | - DEFINE_AS_TYPE(DST, int8) \ |
629 | - DEFINE_AS_TYPE(DST, uint8) \ |
630 | - DEFINE_AS_TYPE(DST, long4) \ |
631 | - DEFINE_AS_TYPE(DST, ulong4) \ |
632 | - DEFINE_AS_TYPE(DST, float8) \ |
633 | - DEFINE_AS_TYPE(DST, double4) |
634 | -#elif defined(cles_khr_int64) |
635 | -#define DEFINE_AS_TYPE_32(DST) \ |
636 | - DEFINE_AS_TYPE(DST, short16) \ |
637 | - DEFINE_AS_TYPE(DST, ushort16) \ |
638 | - DEFINE_AS_TYPE(DST, int8) \ |
639 | - DEFINE_AS_TYPE(DST, uint8) \ |
640 | - DEFINE_AS_TYPE(DST, long4) \ |
641 | - DEFINE_AS_TYPE(DST, ulong4) \ |
642 | - DEFINE_AS_TYPE(DST, float8) |
643 | -#elif defined(cl_khr_fp64) |
644 | -#define DEFINE_AS_TYPE_32(DST) \ |
645 | - DEFINE_AS_TYPE(DST, short16) \ |
646 | - DEFINE_AS_TYPE(DST, ushort16) \ |
647 | - DEFINE_AS_TYPE(DST, int8) \ |
648 | - DEFINE_AS_TYPE(DST, uint8) \ |
649 | - DEFINE_AS_TYPE(DST, float8) \ |
650 | - DEFINE_AS_TYPE(DST, double4) |
651 | -#else |
652 | -#define DEFINE_AS_TYPE_32(DST) \ |
653 | - DEFINE_AS_TYPE(DST, short16) \ |
654 | - DEFINE_AS_TYPE(DST, ushort16) \ |
655 | - DEFINE_AS_TYPE(DST, int8) \ |
656 | - DEFINE_AS_TYPE(DST, uint8) \ |
657 | - DEFINE_AS_TYPE(DST, float8) |
658 | -#endif |
659 | +#define DEFINE_AS_TYPE_32(DST) \ |
660 | + DEFINE_AS_TYPE(DST, short16) \ |
661 | + DEFINE_AS_TYPE(DST, ushort16) \ |
662 | + DEFINE_AS_TYPE(DST, int8) \ |
663 | + DEFINE_AS_TYPE(DST, uint8) \ |
664 | + __IF_INT64( \ |
665 | + DEFINE_AS_TYPE(DST, long4) \ |
666 | + DEFINE_AS_TYPE(DST, ulong4)) \ |
667 | + DEFINE_AS_TYPE(DST, float8) \ |
668 | + __IF_FP64( \ |
669 | + DEFINE_AS_TYPE(DST, double4)) |
670 | |
671 | DEFINE_AS_TYPE_32(short16) |
672 | DEFINE_AS_TYPE_32(ushort16) |
673 | DEFINE_AS_TYPE_32(int8) |
674 | DEFINE_AS_TYPE_32(uint8) |
675 | -#ifdef cles_khr_int64 |
676 | +__IF_INT64( |
677 | DEFINE_AS_TYPE_32(long4) |
678 | -DEFINE_AS_TYPE_32(ulong4) |
679 | -#endif |
680 | +DEFINE_AS_TYPE_32(ulong4)) |
681 | DEFINE_AS_TYPE_32(float8) |
682 | -#ifdef cl_khr_fp64 |
683 | -DEFINE_AS_TYPE_32(double4) |
684 | -#endif |
685 | +__IF_FP64( |
686 | +DEFINE_AS_TYPE_32(double4)) |
687 | |
688 | /* 64 bytes */ |
689 | |
690 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
691 | -#define DEFINE_AS_TYPE_64(DST) \ |
692 | - DEFINE_AS_TYPE(DST, int16) \ |
693 | - DEFINE_AS_TYPE(DST, uint16) \ |
694 | - DEFINE_AS_TYPE(DST, long8) \ |
695 | - DEFINE_AS_TYPE(DST, ulong8) \ |
696 | - DEFINE_AS_TYPE(DST, float16) \ |
697 | - DEFINE_AS_TYPE(DST, double8) |
698 | -#elif defined(cles_khr_int64) |
699 | -#define DEFINE_AS_TYPE_64(DST) \ |
700 | - DEFINE_AS_TYPE(DST, int16) \ |
701 | - DEFINE_AS_TYPE(DST, uint16) \ |
702 | - DEFINE_AS_TYPE(DST, long8) \ |
703 | - DEFINE_AS_TYPE(DST, ulong8) \ |
704 | - DEFINE_AS_TYPE(DST, float16) |
705 | -#elif defined(cl_khr_fp64) |
706 | -#define DEFINE_AS_TYPE_64(DST) \ |
707 | - DEFINE_AS_TYPE(DST, int16) \ |
708 | - DEFINE_AS_TYPE(DST, uint16) \ |
709 | - DEFINE_AS_TYPE(DST, float16) \ |
710 | - DEFINE_AS_TYPE(DST, double8) |
711 | -#else |
712 | -#define DEFINE_AS_TYPE_64(DST) \ |
713 | - DEFINE_AS_TYPE(DST, int16) \ |
714 | - DEFINE_AS_TYPE(DST, uint16) \ |
715 | - DEFINE_AS_TYPE(DST, float16) |
716 | -#endif |
717 | +#define DEFINE_AS_TYPE_64(DST) \ |
718 | + DEFINE_AS_TYPE(DST, int16) \ |
719 | + DEFINE_AS_TYPE(DST, uint16) \ |
720 | + __IF_INT64( \ |
721 | + DEFINE_AS_TYPE(DST, long8) \ |
722 | + DEFINE_AS_TYPE(DST, ulong8)) \ |
723 | + DEFINE_AS_TYPE(DST, float16) \ |
724 | + __IF_FP64( \ |
725 | + DEFINE_AS_TYPE(DST, double8)) |
726 | |
727 | DEFINE_AS_TYPE_64(int16) |
728 | DEFINE_AS_TYPE_64(uint16) |
729 | -#ifdef cles_khr_int64 |
730 | +__IF_INT64( |
731 | DEFINE_AS_TYPE_64(long8) |
732 | -DEFINE_AS_TYPE_64(ulong8) |
733 | -#endif |
734 | +DEFINE_AS_TYPE_64(ulong8)) |
735 | DEFINE_AS_TYPE_64(float16) |
736 | -#ifdef cl_khr_fp64 |
737 | -DEFINE_AS_TYPE_64(double8) |
738 | -#endif |
739 | +__IF_FP64( |
740 | +DEFINE_AS_TYPE_64(double8)) |
741 | |
742 | /* 128 bytes */ |
743 | |
744 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
745 | -#define DEFINE_AS_TYPE_128(DST) \ |
746 | - DEFINE_AS_TYPE(DST, long16) \ |
747 | - DEFINE_AS_TYPE(DST, ulong16) \ |
748 | - DEFINE_AS_TYPE(DST, double16) |
749 | -#elif defined(cles_khr_int64) |
750 | -#define DEFINE_AS_TYPE_128(DST) \ |
751 | - DEFINE_AS_TYPE(DST, long16) \ |
752 | - DEFINE_AS_TYPE(DST, ulong16) |
753 | -#elif defined(cl_khr_fp64) |
754 | -#define DEFINE_AS_TYPE_128(DST) \ |
755 | - DEFINE_AS_TYPE(DST, double16) |
756 | -#endif |
757 | +#define DEFINE_AS_TYPE_128(DST) \ |
758 | + __IF_INT64( \ |
759 | + DEFINE_AS_TYPE(DST, long16) \ |
760 | + DEFINE_AS_TYPE(DST, ulong16)) \ |
761 | + __IF_FP64( \ |
762 | + DEFINE_AS_TYPE(DST, double16)) |
763 | |
764 | -#ifdef cles_khr_int64 |
765 | +__IF_INT64( |
766 | DEFINE_AS_TYPE_128(long16) |
767 | -DEFINE_AS_TYPE_128(ulong16) |
768 | -#endif |
769 | -#ifdef cl_khr_fp64 |
770 | -DEFINE_AS_TYPE_128(double16) |
771 | -#endif |
772 | +DEFINE_AS_TYPE_128(ulong16)) |
773 | +__IF_FP64( |
774 | +DEFINE_AS_TYPE_128(double16)) |
775 | |
776 | === modified file 'lib/kernel/convert_type.cl' |
777 | --- lib/kernel/convert_type.cl 2011-11-24 15:56:10 +0000 |
778 | +++ lib/kernel/convert_type.cl 2011-12-04 22:04:24 +0000 |
779 | @@ -23,374 +23,132 @@ |
780 | |
781 | #include "templates.h" |
782 | |
783 | +/* SRC and DST must be scalars */ |
784 | #define DEFINE_CONVERT_TYPE(SRC, DST) \ |
785 | - DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
786 | + DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
787 | { \ |
788 | return (DST)a; \ |
789 | } |
790 | |
791 | +/* implementing vector SRC and DST in terms of scalars */ |
792 | #define DEFINE_CONVERT_TYPE_HALF(SRC, DST, HALFDST) \ |
793 | - DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
794 | + DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
795 | { \ |
796 | return (DST)(convert_##HALFDST(a.lo), convert_##HALFDST(a.hi)); \ |
797 | } |
798 | |
799 | #define DEFINE_CONVERT_TYPE_012(SRC, DST, DST01, DST2) \ |
800 | - DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
801 | + DST __attribute__ ((__overloadable__)) convert_##DST(SRC a) \ |
802 | { \ |
803 | return (DST)(convert_##DST01(a.s01), convert_##DST2(a.s2)); \ |
804 | } |
805 | |
806 | -/* 1 element */ |
807 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
808 | -#define DEFINE_CONVERT_TYPE_1(SRC) \ |
809 | - DEFINE_CONVERT_TYPE(SRC, char ) \ |
810 | - DEFINE_CONVERT_TYPE(SRC, uchar ) \ |
811 | - DEFINE_CONVERT_TYPE(SRC, short ) \ |
812 | - DEFINE_CONVERT_TYPE(SRC, ushort) \ |
813 | - DEFINE_CONVERT_TYPE(SRC, int ) \ |
814 | - DEFINE_CONVERT_TYPE(SRC, uint ) \ |
815 | - DEFINE_CONVERT_TYPE(SRC, long ) \ |
816 | - DEFINE_CONVERT_TYPE(SRC, ulong ) \ |
817 | - DEFINE_CONVERT_TYPE(SRC, float ) \ |
818 | - DEFINE_CONVERT_TYPE(SRC, double) |
819 | -#elif defined(cles_khr_int64) |
820 | -#define DEFINE_CONVERT_TYPE_1(SRC) \ |
821 | - DEFINE_CONVERT_TYPE(SRC, char ) \ |
822 | - DEFINE_CONVERT_TYPE(SRC, uchar ) \ |
823 | - DEFINE_CONVERT_TYPE(SRC, short ) \ |
824 | - DEFINE_CONVERT_TYPE(SRC, ushort) \ |
825 | - DEFINE_CONVERT_TYPE(SRC, int ) \ |
826 | - DEFINE_CONVERT_TYPE(SRC, uint ) \ |
827 | - DEFINE_CONVERT_TYPE(SRC, long ) \ |
828 | - DEFINE_CONVERT_TYPE(SRC, ulong ) \ |
829 | - DEFINE_CONVERT_TYPE(SRC, float ) |
830 | -#elif defined(cl_khr_fp64) |
831 | -#define DEFINE_CONVERT_TYPE_1(SRC) \ |
832 | - DEFINE_CONVERT_TYPE(SRC, char ) \ |
833 | - DEFINE_CONVERT_TYPE(SRC, uchar ) \ |
834 | - DEFINE_CONVERT_TYPE(SRC, short ) \ |
835 | - DEFINE_CONVERT_TYPE(SRC, ushort) \ |
836 | - DEFINE_CONVERT_TYPE(SRC, int ) \ |
837 | - DEFINE_CONVERT_TYPE(SRC, uint ) \ |
838 | - DEFINE_CONVERT_TYPE(SRC, float ) \ |
839 | - DEFINE_CONVERT_TYPE(SRC, double) |
840 | -#else |
841 | -#define DEFINE_CONVERT_TYPE_1(SRC) \ |
842 | - DEFINE_CONVERT_TYPE(SRC, char ) \ |
843 | - DEFINE_CONVERT_TYPE(SRC, uchar ) \ |
844 | - DEFINE_CONVERT_TYPE(SRC, short ) \ |
845 | - DEFINE_CONVERT_TYPE(SRC, ushort) \ |
846 | - DEFINE_CONVERT_TYPE(SRC, int ) \ |
847 | - DEFINE_CONVERT_TYPE(SRC, uint ) \ |
848 | - DEFINE_CONVERT_TYPE(SRC, float ) |
849 | -#endif |
850 | -DEFINE_CONVERT_TYPE_1(char ) |
851 | -DEFINE_CONVERT_TYPE_1(uchar ) |
852 | -DEFINE_CONVERT_TYPE_1(short ) |
853 | -DEFINE_CONVERT_TYPE_1(ushort) |
854 | -DEFINE_CONVERT_TYPE_1(int ) |
855 | -DEFINE_CONVERT_TYPE_1(uint ) |
856 | -#ifdef cles_khr_int64 |
857 | -DEFINE_CONVERT_TYPE_1(long ) |
858 | -DEFINE_CONVERT_TYPE_1(ulong ) |
859 | -#endif |
860 | -DEFINE_CONVERT_TYPE_1(float ) |
861 | -#ifdef cl_khr_fp64 |
862 | -DEFINE_CONVERT_TYPE_1(double) |
863 | -#endif |
864 | - |
865 | -/* 2 elements */ |
866 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
867 | -#define DEFINE_CONVERT_TYPE_2(SRC) \ |
868 | - DEFINE_CONVERT_TYPE_HALF(SRC, char2 , char ) \ |
869 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar2 , uchar ) \ |
870 | - DEFINE_CONVERT_TYPE_HALF(SRC, short2 , short ) \ |
871 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort2, ushort) \ |
872 | - DEFINE_CONVERT_TYPE_HALF(SRC, int2 , int ) \ |
873 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint2 , uint ) \ |
874 | - DEFINE_CONVERT_TYPE_HALF(SRC, long2 , long ) \ |
875 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong2 , ulong ) \ |
876 | - DEFINE_CONVERT_TYPE_HALF(SRC, float2 , float ) \ |
877 | - DEFINE_CONVERT_TYPE_HALF(SRC, double2, double) |
878 | -#elif defined(cles_khr_int64) |
879 | -#define DEFINE_CONVERT_TYPE_2(SRC) \ |
880 | - DEFINE_CONVERT_TYPE_HALF(SRC, char2 , char ) \ |
881 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar2 , uchar ) \ |
882 | - DEFINE_CONVERT_TYPE_HALF(SRC, short2 , short ) \ |
883 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort2, ushort) \ |
884 | - DEFINE_CONVERT_TYPE_HALF(SRC, int2 , int ) \ |
885 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint2 , uint ) \ |
886 | - DEFINE_CONVERT_TYPE_HALF(SRC, long2 , long ) \ |
887 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong2 , ulong ) \ |
888 | - DEFINE_CONVERT_TYPE_HALF(SRC, float2 , float ) |
889 | -#elif defined(cl_khr_fp64) |
890 | -#define DEFINE_CONVERT_TYPE_2(SRC) \ |
891 | - DEFINE_CONVERT_TYPE_HALF(SRC, char2 , char ) \ |
892 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar2 , uchar ) \ |
893 | - DEFINE_CONVERT_TYPE_HALF(SRC, short2 , short ) \ |
894 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort2, ushort) \ |
895 | - DEFINE_CONVERT_TYPE_HALF(SRC, int2 , int ) \ |
896 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint2 , uint ) \ |
897 | - DEFINE_CONVERT_TYPE_HALF(SRC, float2 , float ) \ |
898 | - DEFINE_CONVERT_TYPE_HALF(SRC, double2, double) |
899 | -#else |
900 | -#define DEFINE_CONVERT_TYPE_2(SRC) \ |
901 | - DEFINE_CONVERT_TYPE_HALF(SRC, char2 , char ) \ |
902 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar2 , uchar ) \ |
903 | - DEFINE_CONVERT_TYPE_HALF(SRC, short2 , short ) \ |
904 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort2, ushort) \ |
905 | - DEFINE_CONVERT_TYPE_HALF(SRC, int2 , int ) \ |
906 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint2 , uint ) \ |
907 | - DEFINE_CONVERT_TYPE_HALF(SRC, float2 , float ) |
908 | -#endif |
909 | -DEFINE_CONVERT_TYPE_2(char2 ) |
910 | -DEFINE_CONVERT_TYPE_2(uchar2 ) |
911 | -DEFINE_CONVERT_TYPE_2(short2 ) |
912 | -DEFINE_CONVERT_TYPE_2(ushort2) |
913 | -DEFINE_CONVERT_TYPE_2(int2 ) |
914 | -DEFINE_CONVERT_TYPE_2(uint2 ) |
915 | -#ifdef cl_kht_int64 |
916 | -DEFINE_CONVERT_TYPE_2(long2 ) |
917 | -DEFINE_CONVERT_TYPE_2(ulong2 ) |
918 | -#endif |
919 | -DEFINE_CONVERT_TYPE_2(float2 ) |
920 | -#ifdef cl_khr_fp64 |
921 | -DEFINE_CONVERT_TYPE_2(double2) |
922 | -#endif |
923 | - |
924 | -/* 3 elements */ |
925 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
926 | -#define DEFINE_CONVERT_TYPE_3(SRC) \ |
927 | - DEFINE_CONVERT_TYPE_012(SRC, char3 , char2 , char ) \ |
928 | - DEFINE_CONVERT_TYPE_012(SRC, uchar3 , uchar2 , uchar ) \ |
929 | - DEFINE_CONVERT_TYPE_012(SRC, short3 , short2 , short ) \ |
930 | - DEFINE_CONVERT_TYPE_012(SRC, ushort3, ushort2, ushort) \ |
931 | - DEFINE_CONVERT_TYPE_012(SRC, int3 , int2 , int ) \ |
932 | - DEFINE_CONVERT_TYPE_012(SRC, uint3 , uint2 , uint ) \ |
933 | - DEFINE_CONVERT_TYPE_012(SRC, long3 , long2 , long ) \ |
934 | - DEFINE_CONVERT_TYPE_012(SRC, ulong3 , ulong2 , ulong ) \ |
935 | - DEFINE_CONVERT_TYPE_012(SRC, float3 , float2 , float ) \ |
936 | - DEFINE_CONVERT_TYPE_012(SRC, double3, double2, double) |
937 | -#elif defined(cles_khr_int64) |
938 | -#define DEFINE_CONVERT_TYPE_3(SRC) \ |
939 | - DEFINE_CONVERT_TYPE_012(SRC, char3 , char2 , char ) \ |
940 | - DEFINE_CONVERT_TYPE_012(SRC, uchar3 , uchar2 , uchar ) \ |
941 | - DEFINE_CONVERT_TYPE_012(SRC, short3 , short2 , short ) \ |
942 | - DEFINE_CONVERT_TYPE_012(SRC, ushort3, ushort2, ushort) \ |
943 | - DEFINE_CONVERT_TYPE_012(SRC, int3 , int2 , int ) \ |
944 | - DEFINE_CONVERT_TYPE_012(SRC, uint3 , uint2 , uint ) \ |
945 | - DEFINE_CONVERT_TYPE_012(SRC, long3 , long2 , long ) \ |
946 | - DEFINE_CONVERT_TYPE_012(SRC, ulong3 , ulong2 , ulong ) \ |
947 | - DEFINE_CONVERT_TYPE_012(SRC, float3 , float2 , float ) |
948 | -#elif defined(cl_khr_fp64) |
949 | -#define DEFINE_CONVERT_TYPE_3(SRC) \ |
950 | - DEFINE_CONVERT_TYPE_012(SRC, char3 , char2 , char ) \ |
951 | - DEFINE_CONVERT_TYPE_012(SRC, uchar3 , uchar2 , uchar ) \ |
952 | - DEFINE_CONVERT_TYPE_012(SRC, short3 , short2 , short ) \ |
953 | - DEFINE_CONVERT_TYPE_012(SRC, ushort3, ushort2, ushort) \ |
954 | - DEFINE_CONVERT_TYPE_012(SRC, int3 , int2 , int ) \ |
955 | - DEFINE_CONVERT_TYPE_012(SRC, uint3 , uint2 , uint ) \ |
956 | - DEFINE_CONVERT_TYPE_012(SRC, float3 , float2 , float ) \ |
957 | - DEFINE_CONVERT_TYPE_012(SRC, double3, double2, double) |
958 | -#else |
959 | -#define DEFINE_CONVERT_TYPE_3(SRC) \ |
960 | - DEFINE_CONVERT_TYPE_012(SRC, char3 , char2 , char ) \ |
961 | - DEFINE_CONVERT_TYPE_012(SRC, uchar3 , uchar2 , uchar ) \ |
962 | - DEFINE_CONVERT_TYPE_012(SRC, short3 , short2 , short ) \ |
963 | - DEFINE_CONVERT_TYPE_012(SRC, ushort3, ushort2, ushort) \ |
964 | - DEFINE_CONVERT_TYPE_012(SRC, int3 , int2 , int ) \ |
965 | - DEFINE_CONVERT_TYPE_012(SRC, uint3 , uint2 , uint ) \ |
966 | - DEFINE_CONVERT_TYPE_012(SRC, float3 , float2 , float ) |
967 | -#endif |
968 | -DEFINE_CONVERT_TYPE_3(char3 ) |
969 | -DEFINE_CONVERT_TYPE_3(uchar3 ) |
970 | -DEFINE_CONVERT_TYPE_3(short3 ) |
971 | -DEFINE_CONVERT_TYPE_3(ushort3) |
972 | -DEFINE_CONVERT_TYPE_3(int3 ) |
973 | -DEFINE_CONVERT_TYPE_3(uint3 ) |
974 | -#ifdef cl_kht_int64 |
975 | -DEFINE_CONVERT_TYPE_3(long3 ) |
976 | -DEFINE_CONVERT_TYPE_3(ulong3 ) |
977 | -#endif |
978 | -DEFINE_CONVERT_TYPE_3(float3 ) |
979 | -#ifdef cl_khr_fp64 |
980 | -DEFINE_CONVERT_TYPE_3(double3) |
981 | -#endif |
982 | - |
983 | -/* 4 elements */ |
984 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
985 | -#define DEFINE_CONVERT_TYPE_4(SRC) \ |
986 | - DEFINE_CONVERT_TYPE_HALF(SRC, char4 , char2 ) \ |
987 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar4 , uchar2 ) \ |
988 | - DEFINE_CONVERT_TYPE_HALF(SRC, short4 , short2 ) \ |
989 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort4, ushort2) \ |
990 | - DEFINE_CONVERT_TYPE_HALF(SRC, int4 , int2 ) \ |
991 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint4 , uint2 ) \ |
992 | - DEFINE_CONVERT_TYPE_HALF(SRC, long4 , long2 ) \ |
993 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong4 , ulong2 ) \ |
994 | - DEFINE_CONVERT_TYPE_HALF(SRC, float4 , float2 ) \ |
995 | - DEFINE_CONVERT_TYPE_HALF(SRC, double4, double2) |
996 | -#elif defined(cles_khr_int64) |
997 | -#define DEFINE_CONVERT_TYPE_4(SRC) \ |
998 | - DEFINE_CONVERT_TYPE_HALF(SRC, char4 , char2 ) \ |
999 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar4 , uchar2 ) \ |
1000 | - DEFINE_CONVERT_TYPE_HALF(SRC, short4 , short2 ) \ |
1001 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort4, ushort2) \ |
1002 | - DEFINE_CONVERT_TYPE_HALF(SRC, int4 , int2 ) \ |
1003 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint4 , uint2 ) \ |
1004 | - DEFINE_CONVERT_TYPE_HALF(SRC, long4 , long2 ) \ |
1005 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong4 , ulong2 ) \ |
1006 | - DEFINE_CONVERT_TYPE_HALF(SRC, float4 , float2 ) |
1007 | -#elif defined(cl_khr_fp64) |
1008 | -#define DEFINE_CONVERT_TYPE_4(SRC) \ |
1009 | - DEFINE_CONVERT_TYPE_HALF(SRC, char4 , char2 ) \ |
1010 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar4 , uchar2 ) \ |
1011 | - DEFINE_CONVERT_TYPE_HALF(SRC, short4 , short2 ) \ |
1012 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort4, ushort2) \ |
1013 | - DEFINE_CONVERT_TYPE_HALF(SRC, int4 , int2 ) \ |
1014 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint4 , uint2 ) \ |
1015 | - DEFINE_CONVERT_TYPE_HALF(SRC, float4 , float2 ) \ |
1016 | - DEFINE_CONVERT_TYPE_HALF(SRC, double4, double2) |
1017 | -#else |
1018 | -#define DEFINE_CONVERT_TYPE_4(SRC) \ |
1019 | - DEFINE_CONVERT_TYPE_HALF(SRC, char4 , char2 ) \ |
1020 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar4 , uchar2 ) \ |
1021 | - DEFINE_CONVERT_TYPE_HALF(SRC, short4 , short2 ) \ |
1022 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort4, ushort2) \ |
1023 | - DEFINE_CONVERT_TYPE_HALF(SRC, int4 , int2 ) \ |
1024 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint4 , uint2 ) \ |
1025 | - DEFINE_CONVERT_TYPE_HALF(SRC, float4 , float2 ) |
1026 | -#endif |
1027 | -DEFINE_CONVERT_TYPE_4(char4 ) |
1028 | -DEFINE_CONVERT_TYPE_4(uchar4 ) |
1029 | -DEFINE_CONVERT_TYPE_4(short4 ) |
1030 | -DEFINE_CONVERT_TYPE_4(ushort4) |
1031 | -DEFINE_CONVERT_TYPE_4(int4 ) |
1032 | -DEFINE_CONVERT_TYPE_4(uint4 ) |
1033 | -#ifdef cl_kht_int64 |
1034 | -DEFINE_CONVERT_TYPE_4(long4 ) |
1035 | -DEFINE_CONVERT_TYPE_4(ulong4 ) |
1036 | -#endif |
1037 | -DEFINE_CONVERT_TYPE_4(float4 ) |
1038 | -#ifdef cl_khr_fp64 |
1039 | -DEFINE_CONVERT_TYPE_4(double4) |
1040 | -#endif |
1041 | - |
1042 | -/* 8 elements */ |
1043 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
1044 | -#define DEFINE_CONVERT_TYPE_8(SRC) \ |
1045 | - DEFINE_CONVERT_TYPE_HALF(SRC, char8 , char4 ) \ |
1046 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar8 , uchar4 ) \ |
1047 | - DEFINE_CONVERT_TYPE_HALF(SRC, short8 , short4 ) \ |
1048 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort8, ushort4) \ |
1049 | - DEFINE_CONVERT_TYPE_HALF(SRC, int8 , int4 ) \ |
1050 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint8 , uint4 ) \ |
1051 | - DEFINE_CONVERT_TYPE_HALF(SRC, long8 , long4 ) \ |
1052 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong8 , ulong4 ) \ |
1053 | - DEFINE_CONVERT_TYPE_HALF(SRC, float8 , float4 ) \ |
1054 | - DEFINE_CONVERT_TYPE_HALF(SRC, double8, double4) |
1055 | -#elif defined(cles_khr_int64) |
1056 | -#define DEFINE_CONVERT_TYPE_8(SRC) \ |
1057 | - DEFINE_CONVERT_TYPE_HALF(SRC, char8 , char4 ) \ |
1058 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar8 , uchar4 ) \ |
1059 | - DEFINE_CONVERT_TYPE_HALF(SRC, short8 , short4 ) \ |
1060 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort8, ushort4) \ |
1061 | - DEFINE_CONVERT_TYPE_HALF(SRC, int8 , int4 ) \ |
1062 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint8 , uint4 ) \ |
1063 | - DEFINE_CONVERT_TYPE_HALF(SRC, long8 , long4 ) \ |
1064 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong8 , ulong4 ) \ |
1065 | - DEFINE_CONVERT_TYPE_HALF(SRC, float8 , float4 ) |
1066 | -#elif defined(cl_khr_fp64) |
1067 | -#define DEFINE_CONVERT_TYPE_8(SRC) \ |
1068 | - DEFINE_CONVERT_TYPE_HALF(SRC, char8 , char4 ) \ |
1069 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar8 , uchar4 ) \ |
1070 | - DEFINE_CONVERT_TYPE_HALF(SRC, short8 , short4 ) \ |
1071 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort8, ushort4) \ |
1072 | - DEFINE_CONVERT_TYPE_HALF(SRC, int8 , int4 ) \ |
1073 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint8 , uint4 ) \ |
1074 | - DEFINE_CONVERT_TYPE_HALF(SRC, float8 , float4 ) \ |
1075 | - DEFINE_CONVERT_TYPE_HALF(SRC, double8, double4) |
1076 | -#else |
1077 | -#define DEFINE_CONVERT_TYPE_8(SRC) \ |
1078 | - DEFINE_CONVERT_TYPE_HALF(SRC, char8 , char4 ) \ |
1079 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar8 , uchar4 ) \ |
1080 | - DEFINE_CONVERT_TYPE_HALF(SRC, short8 , short4 ) \ |
1081 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort8, ushort4) \ |
1082 | - DEFINE_CONVERT_TYPE_HALF(SRC, int8 , int4 ) \ |
1083 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint8 , uint4 ) \ |
1084 | - DEFINE_CONVERT_TYPE_HALF(SRC, float8 , float4 ) |
1085 | -#endif |
1086 | -DEFINE_CONVERT_TYPE_8(char8 ) |
1087 | -DEFINE_CONVERT_TYPE_8(uchar8 ) |
1088 | -DEFINE_CONVERT_TYPE_8(short8 ) |
1089 | -DEFINE_CONVERT_TYPE_8(ushort8) |
1090 | -DEFINE_CONVERT_TYPE_8(int8 ) |
1091 | -DEFINE_CONVERT_TYPE_8(uint8 ) |
1092 | -#ifdef cl_kht_int64 |
1093 | -DEFINE_CONVERT_TYPE_8(long8 ) |
1094 | -DEFINE_CONVERT_TYPE_8(ulong8 ) |
1095 | -#endif |
1096 | -DEFINE_CONVERT_TYPE_8(float8 ) |
1097 | -#ifdef cl_khr_fp64 |
1098 | -DEFINE_CONVERT_TYPE_8(double8) |
1099 | -#endif |
1100 | - |
1101 | -/* 16 elements */ |
1102 | -#if defined(cles_khr_int64) && defined(cl_khr_fp64) |
1103 | -#define DEFINE_CONVERT_TYPE_16(SRC) \ |
1104 | - DEFINE_CONVERT_TYPE_HALF(SRC, char16 , char8 ) \ |
1105 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar16 , uchar8 ) \ |
1106 | - DEFINE_CONVERT_TYPE_HALF(SRC, short16 , short8 ) \ |
1107 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort16, ushort8) \ |
1108 | - DEFINE_CONVERT_TYPE_HALF(SRC, int16 , int8 ) \ |
1109 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint16 , uint8 ) \ |
1110 | - DEFINE_CONVERT_TYPE_HALF(SRC, long16 , long8 ) \ |
1111 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong16 , ulong8 ) \ |
1112 | - DEFINE_CONVERT_TYPE_HALF(SRC, float16 , float8 ) \ |
1113 | - DEFINE_CONVERT_TYPE_HALF(SRC, double16, double8) |
1114 | -#elif defined(cles_khr_int64) |
1115 | -#define DEFINE_CONVERT_TYPE_16(SRC) \ |
1116 | - DEFINE_CONVERT_TYPE_HALF(SRC, char16 , char8 ) \ |
1117 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar16 , uchar8 ) \ |
1118 | - DEFINE_CONVERT_TYPE_HALF(SRC, short16 , short8 ) \ |
1119 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort16, ushort8) \ |
1120 | - DEFINE_CONVERT_TYPE_HALF(SRC, int16 , int8 ) \ |
1121 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint16 , uint8 ) \ |
1122 | - DEFINE_CONVERT_TYPE_HALF(SRC, long16 , long8 ) \ |
1123 | - DEFINE_CONVERT_TYPE_HALF(SRC, ulong16 , ulong8 ) \ |
1124 | - DEFINE_CONVERT_TYPE_HALF(SRC, float16 , float8 ) |
1125 | -#elif defined(cl_khr_fp64) |
1126 | -#define DEFINE_CONVERT_TYPE_16(SRC) \ |
1127 | - DEFINE_CONVERT_TYPE_HALF(SRC, char16 , char8 ) \ |
1128 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar16 , uchar8 ) \ |
1129 | - DEFINE_CONVERT_TYPE_HALF(SRC, short16 , short8 ) \ |
1130 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort16, ushort8) \ |
1131 | - DEFINE_CONVERT_TYPE_HALF(SRC, int16 , int8 ) \ |
1132 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint16 , uint8 ) \ |
1133 | - DEFINE_CONVERT_TYPE_HALF(SRC, float16 , float8 ) \ |
1134 | - DEFINE_CONVERT_TYPE_HALF(SRC, double16, double8) |
1135 | -#else |
1136 | -#define DEFINE_CONVERT_TYPE_16(SRC) \ |
1137 | - DEFINE_CONVERT_TYPE_HALF(SRC, char16 , char8 ) \ |
1138 | - DEFINE_CONVERT_TYPE_HALF(SRC, uchar16 , uchar8 ) \ |
1139 | - DEFINE_CONVERT_TYPE_HALF(SRC, short16 , short8 ) \ |
1140 | - DEFINE_CONVERT_TYPE_HALF(SRC, ushort16, ushort8) \ |
1141 | - DEFINE_CONVERT_TYPE_HALF(SRC, int16 , int8 ) \ |
1142 | - DEFINE_CONVERT_TYPE_HALF(SRC, uint16 , uint8 ) \ |
1143 | - DEFINE_CONVERT_TYPE_HALF(SRC, float16 , float8 ) |
1144 | -#endif |
1145 | -DEFINE_CONVERT_TYPE_16(char16 ) |
1146 | -DEFINE_CONVERT_TYPE_16(uchar16 ) |
1147 | -DEFINE_CONVERT_TYPE_16(short16 ) |
1148 | -DEFINE_CONVERT_TYPE_16(ushort16) |
1149 | -DEFINE_CONVERT_TYPE_16(int16 ) |
1150 | -DEFINE_CONVERT_TYPE_16(uint16 ) |
1151 | -#ifdef cl_kht_int64 |
1152 | -DEFINE_CONVERT_TYPE_16(long16 ) |
1153 | -DEFINE_CONVERT_TYPE_16(ulong16 ) |
1154 | -#endif |
1155 | -DEFINE_CONVERT_TYPE_16(float16 ) |
1156 | -#ifdef cl_khr_fp64 |
1157 | -DEFINE_CONVERT_TYPE_16(double16) |
1158 | -#endif |
1159 | +/* SRC and DST may be vectors */ |
1160 | +#define DEFINE_CONVERT_TYPE_SAT(SRC, DST, SIZE) \ |
1161 | + DST##SIZE __attribute__ ((__overloadable__)) \ |
1162 | + convert_##DST##SIZE##_sat(SRC##SIZE a) \ |
1163 | + { \ |
1164 | + int const src_float = (SRC)0.1f > (SRC)0; \ |
1165 | + int const src_unsigned = -(SRC)1 > (SRC)0; \ |
1166 | + int const dst_unsigned = -(DST)1 > (DST)0; \ |
1167 | + int const src_size = sizeof(SRC); \ |
1168 | + int const dst_size = sizeof(DST); \ |
1169 | + if (src_float) { \ |
1170 | + if (dst_unsigned) { \ |
1171 | + DST const DST_MAX = (DST)0 - (DST)1; \ |
1172 | + return (convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1173 | + convert_##DST##SIZE(a)); \ |
1174 | + } else { /* dst is signed */ \ |
1175 | + DST const DST_MIN = (DST)1 << (DST)(CHAR_BIT * dst_size - 1); \ |
1176 | + DST const DST_MAX = DST_MIN - (DST)1; \ |
1177 | + return (convert_##DST##SIZE(a < (SRC)DST_MIN) ? (DST##SIZE)DST_MIN : \ |
1178 | + convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1179 | + convert_##DST##SIZE(a)); \ |
1180 | + } \ |
1181 | + } else if (src_unsigned) { \ |
1182 | + if (dst_unsigned) { \ |
1183 | + if (dst_size >= src_size) return convert_##DST##SIZE(a); \ |
1184 | + DST const DST_MAX = (DST)0 - (DST)1; \ |
1185 | + return (convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1186 | + convert_##DST##SIZE(a)); \ |
1187 | + } else { /* dst is signed */ \ |
1188 | + if (dst_size > src_size) return convert_##DST##SIZE(a); \ |
1189 | + DST const DST_MAX = (DST)1 << (DST)(CHAR_BIT * dst_size); \ |
1190 | + return (convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1191 | + convert_##DST##SIZE(a)); \ |
1192 | + } \ |
1193 | + } else { /* src is signed */ \ |
1194 | + if (dst_unsigned) { \ |
1195 | + if (dst_size >= src_size) { \ |
1196 | + return (convert_##DST##SIZE(a < (SRC)0) ? (DST##SIZE)0 : \ |
1197 | + convert_##DST##SIZE(a)); \ |
1198 | + } \ |
1199 | + DST const DST_MAX = (DST)0 - (DST)1; \ |
1200 | + return (convert_##DST##SIZE(a < (SRC)0 ) ? (DST##SIZE)0 : \ |
1201 | + convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1202 | + convert_##DST##SIZE(a)); \ |
1203 | + } else { /* dst is signed */ \ |
1204 | + if (dst_size >= src_size) return convert_##DST##SIZE(a); \ |
1205 | + DST const DST_MIN = (DST)1 << (DST)(CHAR_BIT * dst_size - 1); \ |
1206 | + DST const DST_MAX = DST_MIN - (DST)1; \ |
1207 | + return (convert_##DST##SIZE(a < (SRC)DST_MIN) ? (DST##SIZE)DST_MIN : \ |
1208 | + convert_##DST##SIZE(a > (SRC)DST_MAX) ? (DST##SIZE)DST_MAX : \ |
1209 | + convert_##DST##SIZE(a)); \ |
1210 | + } \ |
1211 | + } \ |
1212 | + } |
1213 | + |
1214 | + |
1215 | + |
1216 | +#define DEFINE_CONVERT_TYPE_ALL(SRC, DST) \ |
1217 | + DEFINE_CONVERT_TYPE (SRC , DST ) \ |
1218 | + DEFINE_CONVERT_TYPE_HALF(SRC##2 , DST##2 , DST) \ |
1219 | + DEFINE_CONVERT_TYPE_012 (SRC##3 , DST##3 , DST##2, DST) \ |
1220 | + DEFINE_CONVERT_TYPE_HALF(SRC##4 , DST##4 , DST##2) \ |
1221 | + DEFINE_CONVERT_TYPE_HALF(SRC##8 , DST##8 , DST##4) \ |
1222 | + DEFINE_CONVERT_TYPE_HALF(SRC##16, DST##16, DST##8) |
1223 | + |
1224 | +#define DEFINE_CONVERT_TYPE_SAT_ALL(SRC, DST) \ |
1225 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, ) \ |
1226 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, 2) \ |
1227 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, 3) \ |
1228 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, 4) \ |
1229 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, 8) \ |
1230 | + DEFINE_CONVERT_TYPE_SAT(SRC, DST, 16) |
1231 | + |
1232 | + |
1233 | + |
1234 | +#define DEFINE_CONVERT_TYPE_ALL_DST(SRC) \ |
1235 | + DEFINE_CONVERT_TYPE_ALL (SRC, uchar ) \ |
1236 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, uchar ) \ |
1237 | + DEFINE_CONVERT_TYPE_ALL (SRC, char ) \ |
1238 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, char ) \ |
1239 | + DEFINE_CONVERT_TYPE_ALL (SRC, ushort) \ |
1240 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, ushort) \ |
1241 | + DEFINE_CONVERT_TYPE_ALL (SRC, short ) \ |
1242 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, short ) \ |
1243 | + DEFINE_CONVERT_TYPE_ALL (SRC, uint ) \ |
1244 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, uint ) \ |
1245 | + DEFINE_CONVERT_TYPE_ALL (SRC, int ) \ |
1246 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, int ) \ |
1247 | + __IF_INT64( \ |
1248 | + DEFINE_CONVERT_TYPE_ALL (SRC, ulong ) \ |
1249 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, ulong ) \ |
1250 | + DEFINE_CONVERT_TYPE_ALL (SRC, long ) \ |
1251 | + DEFINE_CONVERT_TYPE_SAT_ALL(SRC, long )) \ |
1252 | + DEFINE_CONVERT_TYPE_ALL (SRC, float ) \ |
1253 | + __IF_FP64( \ |
1254 | + DEFINE_CONVERT_TYPE_ALL (SRC, double)) |
1255 | + |
1256 | +DEFINE_CONVERT_TYPE_ALL_DST(uchar ) |
1257 | +DEFINE_CONVERT_TYPE_ALL_DST(char ) |
1258 | +DEFINE_CONVERT_TYPE_ALL_DST(ushort) |
1259 | +DEFINE_CONVERT_TYPE_ALL_DST(short ) |
1260 | +DEFINE_CONVERT_TYPE_ALL_DST(uint ) |
1261 | +DEFINE_CONVERT_TYPE_ALL_DST(int ) |
1262 | +__IF_INT64( |
1263 | +DEFINE_CONVERT_TYPE_ALL_DST(ulong ) |
1264 | +DEFINE_CONVERT_TYPE_ALL_DST(long )) |
1265 | +DEFINE_CONVERT_TYPE_ALL_DST(float ) |
1266 | +__IF_FP64( |
1267 | +DEFINE_CONVERT_TYPE_ALL_DST(double)) |
1268 | |
1269 | === modified file 'lib/kernel/sources.mk' |
1270 | --- lib/kernel/sources.mk 2011-11-08 18:34:25 +0000 |
1271 | +++ lib/kernel/sources.mk 2011-12-04 22:04:24 +0000 |
1272 | @@ -1,4 +1,5 @@ |
1273 | -libkernel_a_SOURCES = barrier.c \ |
1274 | +libkernel_a_SOURCES = templates.h \ |
1275 | + barrier.c \ |
1276 | get_global_size.c \ |
1277 | get_global_id.c \ |
1278 | get_local_id.c \ |
1279 | |
1280 | === modified file 'lib/kernel/vload.cl' |
1281 | --- lib/kernel/vload.cl 2011-11-24 15:56:10 +0000 |
1282 | +++ lib/kernel/vload.cl 2011-12-04 22:04:24 +0000 |
1283 | @@ -108,11 +108,17 @@ |
1284 | IMPLEMENT_VLOAD(char , __private) |
1285 | IMPLEMENT_VLOAD(short , __private) |
1286 | IMPLEMENT_VLOAD(int , __private) |
1287 | +#if defined(cles_khr_int64) |
1288 | IMPLEMENT_VLOAD(long , __private) |
1289 | +#endif |
1290 | IMPLEMENT_VLOAD(uchar , __private) |
1291 | IMPLEMENT_VLOAD(ushort, __private) |
1292 | IMPLEMENT_VLOAD(uint , __private) |
1293 | +#if defined(cles_khr_int64) |
1294 | IMPLEMENT_VLOAD(ulong , __private) |
1295 | +#endif |
1296 | IMPLEMENT_VLOAD(float , __private) |
1297 | +#if defined(cl_khr_fp64) |
1298 | IMPLEMENT_VLOAD(double, __private) |
1299 | +#endif |
1300 | */ |
1301 | |
1302 | === modified file 'lib/kernel/vstore.cl' |
1303 | --- lib/kernel/vstore.cl 2011-11-24 15:56:10 +0000 |
1304 | +++ lib/kernel/vstore.cl 2011-12-04 22:04:24 +0000 |
1305 | @@ -98,11 +98,17 @@ |
1306 | IMPLEMENT_VSTORE(char , __private) |
1307 | IMPLEMENT_VSTORE(short , __private) |
1308 | IMPLEMENT_VSTORE(int , __private) |
1309 | +#if defined(cles_khr_int64) |
1310 | IMPLEMENT_VSTORE(long , __private) |
1311 | +#endif |
1312 | IMPLEMENT_VSTORE(uchar , __private) |
1313 | IMPLEMENT_VSTORE(ushort, __private) |
1314 | IMPLEMENT_VSTORE(uint , __private) |
1315 | +#if defined(cles_khr_int64) |
1316 | IMPLEMENT_VSTORE(ulong , __private) |
1317 | +#endif |
1318 | IMPLEMENT_VSTORE(float , __private) |
1319 | +#if defined(cl_khr_fpt64) |
1320 | IMPLEMENT_VSTORE(double, __private) |
1321 | +#endif |
1322 | */ |