cl_platform.h 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082
  1. /**********************************************************************************
  2. * Copyright (c) 2008-2009 The Khronos Group Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and/or associated documentation files (the
  6. * "Materials"), to deal in the Materials without restriction, including
  7. * without limitation the rights to use, copy, modify, merge, publish,
  8. * distribute, sublicense, and/or sell copies of the Materials, and to
  9. * permit persons to whom the Materials are furnished to do so, subject to
  10. * the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be included
  13. * in all copies or substantial portions of the Materials.
  14. *
  15. * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  18. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  19. * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  20. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  21. * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  22. **********************************************************************************/
  23. /* $Revision: 10424 $ on $Date: 2010-02-17 14:34:49 -0800 (Wed, 17 Feb 2010) $ */
  24. #ifndef __CL_PLATFORM_H
  25. #define __CL_PLATFORM_H
  26. #ifdef __APPLE__
  27. /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */
  28. #include <AvailabilityMacros.h>
  29. #endif
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. #if defined(_WIN32)
  34. #define CL_API_ENTRY
  35. #define CL_API_CALL __stdcall
  36. #else
  37. #define CL_API_ENTRY
  38. #define CL_API_CALL
  39. #endif
  40. #ifdef __APPLE__
  41. #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
  42. #define CL_API_SUFFIX__VERSION_1_1
  43. #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import))
  44. #else
  45. #define CL_API_SUFFIX__VERSION_1_0
  46. #define CL_API_SUFFIX__VERSION_1_1
  47. #define CL_EXTENSION_WEAK_LINK
  48. #endif
  49. #if (defined (_WIN32) && defined(_MSC_VER))
  50. /* scalar types */
  51. typedef signed __int8 cl_char;
  52. typedef unsigned __int8 cl_uchar;
  53. typedef signed __int16 cl_short;
  54. typedef unsigned __int16 cl_ushort;
  55. typedef signed __int32 cl_int;
  56. typedef unsigned __int32 cl_uint;
  57. typedef signed __int64 cl_long;
  58. typedef unsigned __int64 cl_ulong;
  59. typedef unsigned __int16 cl_half;
  60. typedef float cl_float;
  61. typedef double cl_double;
  62. /* Macro names and corresponding values defined by OpenCL */
  63. #define CL_CHAR_BIT 8
  64. #define CL_SCHAR_MAX 127
  65. #define CL_SCHAR_MIN (-127-1)
  66. #define CL_CHAR_MAX CL_SCHAR_MAX
  67. #define CL_CHAR_MIN CL_SCHAR_MIN
  68. #define CL_UCHAR_MAX 255
  69. #define CL_SHRT_MAX 32767
  70. #define CL_SHRT_MIN (-32767-1)
  71. #define CL_USHRT_MAX 65535
  72. #define CL_INT_MAX 2147483647
  73. #define CL_INT_MIN (-2147483647-1)
  74. #define CL_UINT_MAX 0xffffffffU
  75. #define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL)
  76. #define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL)
  77. #define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL)
  78. #define CL_FLT_DIG 6
  79. #define CL_FLT_MANT_DIG 24
  80. #define CL_FLT_MAX_10_EXP +38
  81. #define CL_FLT_MAX_EXP +128
  82. #define CL_FLT_MIN_10_EXP -37
  83. #define CL_FLT_MIN_EXP -125
  84. #define CL_FLT_RADIX 2
  85. #define CL_FLT_MAX 340282346638528859811704183484516925440.0f
  86. #define CL_FLT_MIN 1.175494350822287507969e-38f
  87. #define CL_FLT_EPSILON 0x1.0p-23f
  88. #define CL_DBL_DIG 15
  89. #define CL_DBL_MANT_DIG 53
  90. #define CL_DBL_MAX_10_EXP +308
  91. #define CL_DBL_MAX_EXP +1024
  92. #define CL_DBL_MIN_10_EXP -307
  93. #define CL_DBL_MIN_EXP -1021
  94. #define CL_DBL_RADIX 2
  95. #define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0
  96. #define CL_DBL_MIN 2.225073858507201383090e-308
  97. #define CL_DBL_EPSILON 2.220446049250313080847e-16
  98. #define CL_NAN (CL_INFINITY - CL_INFINITY)
  99. #define CL_HUGE_VALF ((cl_float) 1e50)
  100. #define CL_HUGE_VAL ((cl_double) 1e500)
  101. #define CL_MAXFLOAT CL_FLT_MAX
  102. #define CL_INFINITY CL_HUGE_VALF
  103. #else
  104. #include <stdint.h>
  105. /* scalar types */
  106. typedef int8_t cl_char;
  107. typedef uint8_t cl_uchar;
  108. typedef int16_t cl_short __attribute__((aligned(2)));
  109. typedef uint16_t cl_ushort __attribute__((aligned(2)));
  110. typedef int32_t cl_int __attribute__((aligned(4)));
  111. typedef uint32_t cl_uint __attribute__((aligned(4)));
  112. typedef int64_t cl_long __attribute__((aligned(8)));
  113. typedef uint64_t cl_ulong __attribute__((aligned(8)));
  114. typedef uint16_t cl_half __attribute__((aligned(2)));
  115. typedef float cl_float __attribute__((aligned(4)));
  116. typedef double cl_double __attribute__((aligned(8)));
  117. /* Macro names and corresponding values defined by OpenCL */
  118. #define CL_CHAR_BIT 8
  119. #define CL_SCHAR_MAX 127
  120. #define CL_SCHAR_MIN (-127-1)
  121. #define CL_CHAR_MAX CL_SCHAR_MAX
  122. #define CL_CHAR_MIN CL_SCHAR_MIN
  123. #define CL_UCHAR_MAX 255
  124. #define CL_SHRT_MAX 32767
  125. #define CL_SHRT_MIN (-32767-1)
  126. #define CL_USHRT_MAX 65535
  127. #define CL_INT_MAX 2147483647
  128. #define CL_INT_MIN (-2147483647-1)
  129. #define CL_UINT_MAX 0xffffffffU
  130. #define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL)
  131. #define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL)
  132. #define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL)
  133. #define CL_FLT_DIG 6
  134. #define CL_FLT_MANT_DIG 24
  135. #define CL_FLT_MAX_10_EXP +38
  136. #define CL_FLT_MAX_EXP +128
  137. #define CL_FLT_MIN_10_EXP -37
  138. #define CL_FLT_MIN_EXP -125
  139. #define CL_FLT_RADIX 2
  140. #define CL_FLT_MAX 0x1.fffffep127f
  141. #define CL_FLT_MIN 0x1.0p-126f
  142. #define CL_FLT_EPSILON 0x1.0p-23f
  143. #define CL_DBL_DIG 15
  144. #define CL_DBL_MANT_DIG 53
  145. #define CL_DBL_MAX_10_EXP +308
  146. #define CL_DBL_MAX_EXP +1024
  147. #define CL_DBL_MIN_10_EXP -307
  148. #define CL_DBL_MIN_EXP -1021
  149. #define CL_DBL_RADIX 2
  150. #define CL_DBL_MAX 0x1.fffffffffffffp1023
  151. #define CL_DBL_MIN 0x1.0p-1022
  152. #define CL_DBL_EPSILON 0x1.0p-52
  153. #if defined( __GNUC__ )
  154. #define CL_HUGE_VALF __builtin_huge_valf()
  155. #define CL_HUGE_VAL __builtin_huge_val()
  156. #define CL_NAN __builtin_nanf( "" )
  157. #else
  158. #define CL_HUGE_VALF ((cl_float) 1e50)
  159. #define CL_HUGE_VAL ((cl_double) 1e500)
  160. float nanf( const char * );
  161. #define CL_NAN nanf( "" )
  162. #endif
  163. #define CL_MAXFLOAT CL_FLT_MAX
  164. #define CL_INFINITY CL_HUGE_VALF
  165. #endif
  166. #include <stddef.h>
  167. /* Mirror types to GL types. Mirror types allow us to avoid deciding which headers to load based on whether we are using GL or GLES here. */
  168. typedef unsigned int cl_GLuint;
  169. typedef int cl_GLint;
  170. typedef unsigned int cl_GLenum;
  171. /*
  172. * Vector types
  173. *
  174. * Note: OpenCL requires that all types be naturally aligned.
  175. * This means that vector types must be naturally aligned.
  176. * For example, a vector of four floats must be aligned to
  177. * a 16 byte boundary (calculated as 4 * the natural 4-byte
  178. * alignment of the float). The alignment qualifiers here
  179. * will only function properly if your compiler supports them
  180. * and if you don't actively work to defeat them. For example,
  181. * in order for a cl_float4 to be 16 byte aligned in a struct,
  182. * the start of the struct must itself be 16-byte aligned.
  183. *
  184. * Maintaining proper alignment is the user's responsibility.
  185. */
  186. /* Define basic vector types */
  187. #if defined( __VEC__ )
  188. #include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
  189. typedef vector unsigned char __cl_uchar16;
  190. typedef vector signed char __cl_char16;
  191. typedef vector unsigned short __cl_ushort8;
  192. typedef vector signed short __cl_short8;
  193. typedef vector unsigned int __cl_uint4;
  194. typedef vector signed int __cl_int4;
  195. typedef vector float __cl_float4;
  196. #define __CL_UCHAR16__ 1
  197. #define __CL_CHAR16__ 1
  198. #define __CL_USHORT8__ 1
  199. #define __CL_SHORT8__ 1
  200. #define __CL_UINT4__ 1
  201. #define __CL_INT4__ 1
  202. #define __CL_FLOAT4__ 1
  203. #endif
  204. #if defined( __SSE__ )
  205. #if defined( __MINGW64__ )
  206. #include <intrin.h>
  207. #else
  208. #include <xmmintrin.h>
  209. #endif
  210. #if defined( __GNUC__ )
  211. typedef float __cl_float4 __attribute__((vector_size(16)));
  212. #else
  213. typedef __m128 __cl_float4;
  214. #endif
  215. #define __CL_FLOAT4__ 1
  216. #endif
  217. #if defined( __SSE2__ )
  218. #if defined( __MINGW64__ )
  219. #include <intrin.h>
  220. #else
  221. #include <emmintrin.h>
  222. #endif
  223. #if defined( __GNUC__ )
  224. typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16)));
  225. typedef cl_char __cl_char16 __attribute__((vector_size(16)));
  226. typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16)));
  227. typedef cl_short __cl_short8 __attribute__((vector_size(16)));
  228. typedef cl_uint __cl_uint4 __attribute__((vector_size(16)));
  229. typedef cl_int __cl_int4 __attribute__((vector_size(16)));
  230. typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16)));
  231. typedef cl_long __cl_long2 __attribute__((vector_size(16)));
  232. typedef cl_double __cl_double2 __attribute__((vector_size(16)));
  233. #else
  234. typedef __m128i __cl_uchar16;
  235. typedef __m128i __cl_char16;
  236. typedef __m128i __cl_ushort8;
  237. typedef __m128i __cl_short8;
  238. typedef __m128i __cl_uint4;
  239. typedef __m128i __cl_int4;
  240. typedef __m128i __cl_ulong2;
  241. typedef __m128i __cl_long2;
  242. typedef __m128d __cl_double2;
  243. #endif
  244. #define __CL_UCHAR16__ 1
  245. #define __CL_CHAR16__ 1
  246. #define __CL_USHORT8__ 1
  247. #define __CL_SHORT8__ 1
  248. #define __CL_INT4__ 1
  249. #define __CL_UINT4__ 1
  250. #define __CL_ULONG2__ 1
  251. #define __CL_LONG2__ 1
  252. #define __CL_DOUBLE2__ 1
  253. #endif
  254. #if defined( __MMX__ )
  255. #include <mmintrin.h>
  256. #if defined( __GNUC__ )
  257. typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8)));
  258. typedef cl_char __cl_char8 __attribute__((vector_size(8)));
  259. typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8)));
  260. typedef cl_short __cl_short4 __attribute__((vector_size(8)));
  261. typedef cl_uint __cl_uint2 __attribute__((vector_size(8)));
  262. typedef cl_int __cl_int2 __attribute__((vector_size(8)));
  263. typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8)));
  264. typedef cl_long __cl_long1 __attribute__((vector_size(8)));
  265. typedef cl_float __cl_float2 __attribute__((vector_size(8)));
  266. #else
  267. typedef __m64 __cl_uchar8;
  268. typedef __m64 __cl_char8;
  269. typedef __m64 __cl_ushort4;
  270. typedef __m64 __cl_short4;
  271. typedef __m64 __cl_uint2;
  272. typedef __m64 __cl_int2;
  273. typedef __m64 __cl_ulong1;
  274. typedef __m64 __cl_long1;
  275. typedef __m64 __cl_float2;
  276. #endif
  277. #define __CL_UCHAR8__ 1
  278. #define __CL_CHAR8__ 1
  279. #define __CL_USHORT4__ 1
  280. #define __CL_SHORT4__ 1
  281. #define __CL_INT2__ 1
  282. #define __CL_UINT2__ 1
  283. #define __CL_ULONG1__ 1
  284. #define __CL_LONG1__ 1
  285. #define __CL_FLOAT2__ 1
  286. #endif
  287. #if defined( __AVX__ )
  288. #if defined( __MINGW64__ )
  289. #include <intrin.h>
  290. #else
  291. #include <immintrin.h>
  292. #endif
  293. #if defined( __GNUC__ )
  294. typedef cl_float __cl_float8 __attribute__((vector_size(32)));
  295. typedef cl_double __cl_double4 __attribute__((vector_size(32)));
  296. #else
  297. typedef __m256 __cl_float8;
  298. typedef __m256d __cl_double4;
  299. #endif
  300. #define __CL_FLOAT8__ 1
  301. #define __CL_DOUBLE4__ 1
  302. #endif
  303. /* Define alignment keys */
  304. #if defined( __GNUC__ )
  305. #define CL_ALIGNED(_x) __attribute__ ((aligned(_x)))
  306. #elif defined( _WIN32) && (_MSC_VER)
  307. /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */
  308. /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */
  309. /* #include <crtdefs.h> */
  310. /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */
  311. #define CL_ALIGNED(_x)
  312. #else
  313. #warning Need to implement some method to align data here
  314. #define CL_ALIGNED(_x)
  315. #endif
  316. /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */
  317. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  318. /* .xyzw and .s0123...{f|F} are supported */
  319. #define CL_HAS_NAMED_VECTOR_FIELDS 1
  320. /* .hi and .lo are supported */
  321. #define CL_HAS_HI_LO_VECTOR_FIELDS 1
  322. #endif
  323. /* Define cl_vector types */
  324. /* ---- cl_charn ---- */
  325. typedef union
  326. {
  327. cl_char CL_ALIGNED(2) s[2];
  328. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  329. __extension__ struct{ cl_char x, y; };
  330. __extension__ struct{ cl_char s0, s1; };
  331. __extension__ struct{ cl_char lo, hi; };
  332. #endif
  333. #if defined( __CL_CHAR2__)
  334. __cl_char2 v2;
  335. #endif
  336. }cl_char2;
  337. typedef union
  338. {
  339. cl_char CL_ALIGNED(4) s[4];
  340. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  341. __extension__ struct{ cl_char x, y, z, w; };
  342. __extension__ struct{ cl_char s0, s1, s2, s3; };
  343. __extension__ struct{ cl_char2 lo, hi; };
  344. #endif
  345. #if defined( __CL_CHAR2__)
  346. __cl_char2 v2[2];
  347. #endif
  348. #if defined( __CL_CHAR4__)
  349. __cl_char4 v4;
  350. #endif
  351. }cl_char4;
  352. typedef union
  353. {
  354. cl_char CL_ALIGNED(8) s[8];
  355. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  356. __extension__ struct{ cl_char x, y, z, w; };
  357. __extension__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; };
  358. __extension__ struct{ cl_char4 lo, hi; };
  359. #endif
  360. #if defined( __CL_CHAR2__)
  361. __cl_char2 v2[4];
  362. #endif
  363. #if defined( __CL_CHAR4__)
  364. __cl_char4 v4[2];
  365. #endif
  366. #if defined( __CL_CHAR8__ )
  367. __cl_char8 v8;
  368. #endif
  369. }cl_char8;
  370. typedef union
  371. {
  372. cl_char CL_ALIGNED(16) s[16];
  373. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  374. __extension__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  375. __extension__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  376. __extension__ struct{ cl_char8 lo, hi; };
  377. #endif
  378. #if defined( __CL_CHAR2__)
  379. __cl_char2 v2[8];
  380. #endif
  381. #if defined( __CL_CHAR4__)
  382. __cl_char4 v4[4];
  383. #endif
  384. #if defined( __CL_CHAR8__ )
  385. __cl_char8 v8[2];
  386. #endif
  387. #if defined( __CL_CHAR16__ )
  388. __cl_char16 v16;
  389. #endif
  390. }cl_char16;
  391. /* ---- cl_ucharn ---- */
  392. typedef union
  393. {
  394. cl_uchar CL_ALIGNED(2) s[2];
  395. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  396. __extension__ struct{ cl_uchar x, y; };
  397. __extension__ struct{ cl_uchar s0, s1; };
  398. __extension__ struct{ cl_uchar lo, hi; };
  399. #endif
  400. #if defined( __cl_uchar2__)
  401. __cl_uchar2 v2;
  402. #endif
  403. }cl_uchar2;
  404. typedef union
  405. {
  406. cl_uchar CL_ALIGNED(4) s[4];
  407. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  408. __extension__ struct{ cl_uchar x, y, z, w; };
  409. __extension__ struct{ cl_uchar s0, s1, s2, s3; };
  410. __extension__ struct{ cl_uchar2 lo, hi; };
  411. #endif
  412. #if defined( __CL_UCHAR2__)
  413. __cl_uchar2 v2[2];
  414. #endif
  415. #if defined( __CL_UCHAR4__)
  416. __cl_uchar4 v4;
  417. #endif
  418. }cl_uchar4;
  419. typedef union
  420. {
  421. cl_uchar CL_ALIGNED(8) s[8];
  422. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  423. __extension__ struct{ cl_uchar x, y, z, w; };
  424. __extension__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; };
  425. __extension__ struct{ cl_uchar4 lo, hi; };
  426. #endif
  427. #if defined( __CL_UCHAR2__)
  428. __cl_uchar2 v2[4];
  429. #endif
  430. #if defined( __CL_UCHAR4__)
  431. __cl_uchar4 v4[2];
  432. #endif
  433. #if defined( __CL_UCHAR8__ )
  434. __cl_uchar8 v8;
  435. #endif
  436. }cl_uchar8;
  437. typedef union
  438. {
  439. cl_uchar CL_ALIGNED(16) s[16];
  440. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  441. __extension__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  442. __extension__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  443. __extension__ struct{ cl_uchar8 lo, hi; };
  444. #endif
  445. #if defined( __CL_UCHAR2__)
  446. __cl_uchar2 v2[8];
  447. #endif
  448. #if defined( __CL_UCHAR4__)
  449. __cl_uchar4 v4[4];
  450. #endif
  451. #if defined( __CL_UCHAR8__ )
  452. __cl_uchar8 v8[2];
  453. #endif
  454. #if defined( __CL_UCHAR16__ )
  455. __cl_uchar16 v16;
  456. #endif
  457. }cl_uchar16;
  458. /* ---- cl_shortn ---- */
  459. typedef union
  460. {
  461. cl_short CL_ALIGNED(4) s[2];
  462. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  463. __extension__ struct{ cl_short x, y; };
  464. __extension__ struct{ cl_short s0, s1; };
  465. __extension__ struct{ cl_short lo, hi; };
  466. #endif
  467. #if defined( __CL_SHORT2__)
  468. __cl_short2 v2;
  469. #endif
  470. }cl_short2;
  471. typedef union
  472. {
  473. cl_short CL_ALIGNED(8) s[4];
  474. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  475. __extension__ struct{ cl_short x, y, z, w; };
  476. __extension__ struct{ cl_short s0, s1, s2, s3; };
  477. __extension__ struct{ cl_short2 lo, hi; };
  478. #endif
  479. #if defined( __CL_SHORT2__)
  480. __cl_short2 v2[2];
  481. #endif
  482. #if defined( __CL_SHORT4__)
  483. __cl_short4 v4;
  484. #endif
  485. }cl_short4;
  486. typedef union
  487. {
  488. cl_short CL_ALIGNED(16) s[8];
  489. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  490. __extension__ struct{ cl_short x, y, z, w; };
  491. __extension__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; };
  492. __extension__ struct{ cl_short4 lo, hi; };
  493. #endif
  494. #if defined( __CL_SHORT2__)
  495. __cl_short2 v2[4];
  496. #endif
  497. #if defined( __CL_SHORT4__)
  498. __cl_short4 v4[2];
  499. #endif
  500. #if defined( __CL_SHORT8__ )
  501. __cl_short8 v8;
  502. #endif
  503. }cl_short8;
  504. typedef union
  505. {
  506. cl_short CL_ALIGNED(32) s[16];
  507. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  508. __extension__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  509. __extension__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  510. __extension__ struct{ cl_short8 lo, hi; };
  511. #endif
  512. #if defined( __CL_SHORT2__)
  513. __cl_short2 v2[8];
  514. #endif
  515. #if defined( __CL_SHORT4__)
  516. __cl_short4 v4[4];
  517. #endif
  518. #if defined( __CL_SHORT8__ )
  519. __cl_short8 v8[2];
  520. #endif
  521. #if defined( __CL_SHORT16__ )
  522. __cl_short16 v16;
  523. #endif
  524. }cl_short16;
  525. /* ---- cl_ushortn ---- */
  526. typedef union
  527. {
  528. cl_ushort CL_ALIGNED(4) s[2];
  529. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  530. __extension__ struct{ cl_ushort x, y; };
  531. __extension__ struct{ cl_ushort s0, s1; };
  532. __extension__ struct{ cl_ushort lo, hi; };
  533. #endif
  534. #if defined( __CL_USHORT2__)
  535. __cl_ushort2 v2;
  536. #endif
  537. }cl_ushort2;
  538. typedef union
  539. {
  540. cl_ushort CL_ALIGNED(8) s[4];
  541. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  542. __extension__ struct{ cl_ushort x, y, z, w; };
  543. __extension__ struct{ cl_ushort s0, s1, s2, s3; };
  544. __extension__ struct{ cl_ushort2 lo, hi; };
  545. #endif
  546. #if defined( __CL_USHORT2__)
  547. __cl_ushort2 v2[2];
  548. #endif
  549. #if defined( __CL_USHORT4__)
  550. __cl_ushort4 v4;
  551. #endif
  552. }cl_ushort4;
  553. typedef union
  554. {
  555. cl_ushort CL_ALIGNED(16) s[8];
  556. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  557. __extension__ struct{ cl_ushort x, y, z, w; };
  558. __extension__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; };
  559. __extension__ struct{ cl_ushort4 lo, hi; };
  560. #endif
  561. #if defined( __CL_USHORT2__)
  562. __cl_ushort2 v2[4];
  563. #endif
  564. #if defined( __CL_USHORT4__)
  565. __cl_ushort4 v4[2];
  566. #endif
  567. #if defined( __CL_USHORT8__ )
  568. __cl_ushort8 v8;
  569. #endif
  570. }cl_ushort8;
  571. typedef union
  572. {
  573. cl_ushort CL_ALIGNED(32) s[16];
  574. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  575. __extension__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  576. __extension__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  577. __extension__ struct{ cl_ushort8 lo, hi; };
  578. #endif
  579. #if defined( __CL_USHORT2__)
  580. __cl_ushort2 v2[8];
  581. #endif
  582. #if defined( __CL_USHORT4__)
  583. __cl_ushort4 v4[4];
  584. #endif
  585. #if defined( __CL_USHORT8__ )
  586. __cl_ushort8 v8[2];
  587. #endif
  588. #if defined( __CL_USHORT16__ )
  589. __cl_ushort16 v16;
  590. #endif
  591. }cl_ushort16;
  592. /* ---- cl_intn ---- */
  593. typedef union
  594. {
  595. cl_int CL_ALIGNED(8) s[2];
  596. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  597. __extension__ struct{ cl_int x, y; };
  598. __extension__ struct{ cl_int s0, s1; };
  599. __extension__ struct{ cl_int lo, hi; };
  600. #endif
  601. #if defined( __CL_INT2__)
  602. __cl_int2 v2;
  603. #endif
  604. }cl_int2;
  605. typedef union
  606. {
  607. cl_int CL_ALIGNED(16) s[4];
  608. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  609. __extension__ struct{ cl_int x, y, z, w; };
  610. __extension__ struct{ cl_int s0, s1, s2, s3; };
  611. __extension__ struct{ cl_int2 lo, hi; };
  612. #endif
  613. #if defined( __CL_INT2__)
  614. __cl_int2 v2[2];
  615. #endif
  616. #if defined( __CL_INT4__)
  617. __cl_int4 v4;
  618. #endif
  619. }cl_int4;
  620. typedef union
  621. {
  622. cl_int CL_ALIGNED(32) s[8];
  623. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  624. __extension__ struct{ cl_int x, y, z, w; };
  625. __extension__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; };
  626. __extension__ struct{ cl_int4 lo, hi; };
  627. #endif
  628. #if defined( __CL_INT2__)
  629. __cl_int2 v2[4];
  630. #endif
  631. #if defined( __CL_INT4__)
  632. __cl_int4 v4[2];
  633. #endif
  634. #if defined( __CL_INT8__ )
  635. __cl_int8 v8;
  636. #endif
  637. }cl_int8;
  638. typedef union
  639. {
  640. cl_int CL_ALIGNED(64) s[16];
  641. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  642. __extension__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  643. __extension__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  644. __extension__ struct{ cl_int8 lo, hi; };
  645. #endif
  646. #if defined( __CL_INT2__)
  647. __cl_int2 v2[8];
  648. #endif
  649. #if defined( __CL_INT4__)
  650. __cl_int4 v4[4];
  651. #endif
  652. #if defined( __CL_INT8__ )
  653. __cl_int8 v8[2];
  654. #endif
  655. #if defined( __CL_INT16__ )
  656. __cl_int16 v16;
  657. #endif
  658. }cl_int16;
  659. /* ---- cl_uintn ---- */
  660. typedef union
  661. {
  662. cl_uint CL_ALIGNED(8) s[2];
  663. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  664. __extension__ struct{ cl_uint x, y; };
  665. __extension__ struct{ cl_uint s0, s1; };
  666. __extension__ struct{ cl_uint lo, hi; };
  667. #endif
  668. #if defined( __CL_UINT2__)
  669. __cl_uint2 v2;
  670. #endif
  671. }cl_uint2;
  672. typedef union
  673. {
  674. cl_uint CL_ALIGNED(16) s[4];
  675. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  676. __extension__ struct{ cl_uint x, y, z, w; };
  677. __extension__ struct{ cl_uint s0, s1, s2, s3; };
  678. __extension__ struct{ cl_uint2 lo, hi; };
  679. #endif
  680. #if defined( __CL_UINT2__)
  681. __cl_uint2 v2[2];
  682. #endif
  683. #if defined( __CL_UINT4__)
  684. __cl_uint4 v4;
  685. #endif
  686. }cl_uint4;
  687. typedef union
  688. {
  689. cl_uint CL_ALIGNED(32) s[8];
  690. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  691. __extension__ struct{ cl_uint x, y, z, w; };
  692. __extension__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; };
  693. __extension__ struct{ cl_uint4 lo, hi; };
  694. #endif
  695. #if defined( __CL_UINT2__)
  696. __cl_uint2 v2[4];
  697. #endif
  698. #if defined( __CL_UINT4__)
  699. __cl_uint4 v4[2];
  700. #endif
  701. #if defined( __CL_UINT8__ )
  702. __cl_uint8 v8;
  703. #endif
  704. }cl_uint8;
  705. typedef union
  706. {
  707. cl_uint CL_ALIGNED(64) s[16];
  708. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  709. __extension__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  710. __extension__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  711. __extension__ struct{ cl_uint8 lo, hi; };
  712. #endif
  713. #if defined( __CL_UINT2__)
  714. __cl_uint2 v2[8];
  715. #endif
  716. #if defined( __CL_UINT4__)
  717. __cl_uint4 v4[4];
  718. #endif
  719. #if defined( __CL_UINT8__ )
  720. __cl_uint8 v8[2];
  721. #endif
  722. #if defined( __CL_UINT16__ )
  723. __cl_uint16 v16;
  724. #endif
  725. }cl_uint16;
  726. /* ---- cl_longn ---- */
  727. typedef union
  728. {
  729. cl_long CL_ALIGNED(16) s[2];
  730. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  731. __extension__ struct{ cl_long x, y; };
  732. __extension__ struct{ cl_long s0, s1; };
  733. __extension__ struct{ cl_long lo, hi; };
  734. #endif
  735. #if defined( __CL_LONG2__)
  736. __cl_long2 v2;
  737. #endif
  738. }cl_long2;
  739. typedef union
  740. {
  741. cl_long CL_ALIGNED(32) s[4];
  742. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  743. __extension__ struct{ cl_long x, y, z, w; };
  744. __extension__ struct{ cl_long s0, s1, s2, s3; };
  745. __extension__ struct{ cl_long2 lo, hi; };
  746. #endif
  747. #if defined( __CL_LONG2__)
  748. __cl_long2 v2[2];
  749. #endif
  750. #if defined( __CL_LONG4__)
  751. __cl_long4 v4;
  752. #endif
  753. }cl_long4;
  754. typedef union
  755. {
  756. cl_long CL_ALIGNED(64) s[8];
  757. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  758. __extension__ struct{ cl_long x, y, z, w; };
  759. __extension__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; };
  760. __extension__ struct{ cl_long4 lo, hi; };
  761. #endif
  762. #if defined( __CL_LONG2__)
  763. __cl_long2 v2[4];
  764. #endif
  765. #if defined( __CL_LONG4__)
  766. __cl_long4 v4[2];
  767. #endif
  768. #if defined( __CL_LONG8__ )
  769. __cl_long8 v8;
  770. #endif
  771. }cl_long8;
  772. typedef union
  773. {
  774. cl_long CL_ALIGNED(128) s[16];
  775. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  776. __extension__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  777. __extension__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  778. __extension__ struct{ cl_long8 lo, hi; };
  779. #endif
  780. #if defined( __CL_LONG2__)
  781. __cl_long2 v2[8];
  782. #endif
  783. #if defined( __CL_LONG4__)
  784. __cl_long4 v4[4];
  785. #endif
  786. #if defined( __CL_LONG8__ )
  787. __cl_long8 v8[2];
  788. #endif
  789. #if defined( __CL_LONG16__ )
  790. __cl_long16 v16;
  791. #endif
  792. }cl_long16;
  793. /* ---- cl_ulongn ---- */
  794. typedef union
  795. {
  796. cl_ulong CL_ALIGNED(16) s[2];
  797. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  798. __extension__ struct{ cl_ulong x, y; };
  799. __extension__ struct{ cl_ulong s0, s1; };
  800. __extension__ struct{ cl_ulong lo, hi; };
  801. #endif
  802. #if defined( __CL_ULONG2__)
  803. __cl_ulong2 v2;
  804. #endif
  805. }cl_ulong2;
  806. typedef union
  807. {
  808. cl_ulong CL_ALIGNED(32) s[4];
  809. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  810. __extension__ struct{ cl_ulong x, y, z, w; };
  811. __extension__ struct{ cl_ulong s0, s1, s2, s3; };
  812. __extension__ struct{ cl_ulong2 lo, hi; };
  813. #endif
  814. #if defined( __CL_ULONG2__)
  815. __cl_ulong2 v2[2];
  816. #endif
  817. #if defined( __CL_ULONG4__)
  818. __cl_ulong4 v4;
  819. #endif
  820. }cl_ulong4;
  821. typedef union
  822. {
  823. cl_ulong CL_ALIGNED(64) s[8];
  824. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  825. __extension__ struct{ cl_ulong x, y, z, w; };
  826. __extension__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; };
  827. __extension__ struct{ cl_ulong4 lo, hi; };
  828. #endif
  829. #if defined( __CL_ULONG2__)
  830. __cl_ulong2 v2[4];
  831. #endif
  832. #if defined( __CL_ULONG4__)
  833. __cl_ulong4 v4[2];
  834. #endif
  835. #if defined( __CL_ULONG8__ )
  836. __cl_ulong8 v8;
  837. #endif
  838. }cl_ulong8;
  839. typedef union
  840. {
  841. cl_ulong CL_ALIGNED(128) s[16];
  842. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  843. __extension__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  844. __extension__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  845. __extension__ struct{ cl_ulong8 lo, hi; };
  846. #endif
  847. #if defined( __CL_ULONG2__)
  848. __cl_ulong2 v2[8];
  849. #endif
  850. #if defined( __CL_ULONG4__)
  851. __cl_ulong4 v4[4];
  852. #endif
  853. #if defined( __CL_ULONG8__ )
  854. __cl_ulong8 v8[2];
  855. #endif
  856. #if defined( __CL_ULONG16__ )
  857. __cl_ulong16 v16;
  858. #endif
  859. }cl_ulong16;
  860. /* --- cl_floatn ---- */
  861. typedef union
  862. {
  863. cl_float CL_ALIGNED(8) s[2];
  864. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  865. __extension__ struct{ cl_float x, y; };
  866. __extension__ struct{ cl_float s0, s1; };
  867. __extension__ struct{ cl_float lo, hi; };
  868. #endif
  869. #if defined( __CL_FLOAT2__)
  870. __cl_float2 v2;
  871. #endif
  872. }cl_float2;
  873. typedef union
  874. {
  875. cl_float CL_ALIGNED(16) s[4];
  876. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  877. __extension__ struct{ cl_float x, y, z, w; };
  878. __extension__ struct{ cl_float s0, s1, s2, s3; };
  879. __extension__ struct{ cl_float2 lo, hi; };
  880. #endif
  881. #if defined( __CL_FLOAT2__)
  882. __cl_float2 v2[2];
  883. #endif
  884. #if defined( __CL_FLOAT4__)
  885. __cl_float4 v4;
  886. #endif
  887. }cl_float4;
  888. typedef union
  889. {
  890. cl_float CL_ALIGNED(32) s[8];
  891. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  892. __extension__ struct{ cl_float x, y, z, w; };
  893. __extension__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; };
  894. __extension__ struct{ cl_float4 lo, hi; };
  895. #endif
  896. #if defined( __CL_FLOAT2__)
  897. __cl_float2 v2[4];
  898. #endif
  899. #if defined( __CL_FLOAT4__)
  900. __cl_float4 v4[2];
  901. #endif
  902. #if defined( __CL_FLOAT8__ )
  903. __cl_float8 v8;
  904. #endif
  905. }cl_float8;
  906. typedef union
  907. {
  908. cl_float CL_ALIGNED(64) s[16];
  909. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  910. __extension__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  911. __extension__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  912. __extension__ struct{ cl_float8 lo, hi; };
  913. #endif
  914. #if defined( __CL_FLOAT2__)
  915. __cl_float2 v2[8];
  916. #endif
  917. #if defined( __CL_FLOAT4__)
  918. __cl_float4 v4[4];
  919. #endif
  920. #if defined( __CL_FLOAT8__ )
  921. __cl_float8 v8[2];
  922. #endif
  923. #if defined( __CL_FLOAT16__ )
  924. __cl_float16 v16;
  925. #endif
  926. }cl_float16;
  927. /* --- cl_doublen ---- */
  928. typedef union
  929. {
  930. cl_double CL_ALIGNED(16) s[2];
  931. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  932. __extension__ struct{ cl_double x, y; };
  933. __extension__ struct{ cl_double s0, s1; };
  934. __extension__ struct{ cl_double lo, hi; };
  935. #endif
  936. #if defined( __CL_DOUBLE2__)
  937. __cl_double2 v2;
  938. #endif
  939. }cl_double2;
  940. typedef union
  941. {
  942. cl_double CL_ALIGNED(32) s[4];
  943. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  944. __extension__ struct{ cl_double x, y, z, w; };
  945. __extension__ struct{ cl_double s0, s1, s2, s3; };
  946. __extension__ struct{ cl_double2 lo, hi; };
  947. #endif
  948. #if defined( __CL_DOUBLE2__)
  949. __cl_double2 v2[2];
  950. #endif
  951. #if defined( __CL_DOUBLE4__)
  952. __cl_double4 v4;
  953. #endif
  954. }cl_double4;
  955. typedef union
  956. {
  957. cl_double CL_ALIGNED(64) s[8];
  958. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  959. __extension__ struct{ cl_double x, y, z, w; };
  960. __extension__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; };
  961. __extension__ struct{ cl_double4 lo, hi; };
  962. #endif
  963. #if defined( __CL_DOUBLE2__)
  964. __cl_double2 v2[4];
  965. #endif
  966. #if defined( __CL_DOUBLE4__)
  967. __cl_double4 v4[2];
  968. #endif
  969. #if defined( __CL_DOUBLE8__ )
  970. __cl_double8 v8;
  971. #endif
  972. }cl_double8;
  973. typedef union
  974. {
  975. cl_double CL_ALIGNED(128) s[16];
  976. #if defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
  977. __extension__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
  978. __extension__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
  979. __extension__ struct{ cl_double8 lo, hi; };
  980. #endif
  981. #if defined( __CL_DOUBLE2__)
  982. __cl_double2 v2[8];
  983. #endif
  984. #if defined( __CL_DOUBLE4__)
  985. __cl_double4 v4[4];
  986. #endif
  987. #if defined( __CL_DOUBLE8__ )
  988. __cl_double8 v8[2];
  989. #endif
  990. #if defined( __CL_DOUBLE16__ )
  991. __cl_double16 v16;
  992. #endif
  993. }cl_double16;
  994. #ifdef __cplusplus
  995. }
  996. #endif
  997. #endif /* __CL_PLATFORM_H */