annotate opencl/c/platform.d @ 0:3cea44337083

initial commit
author Trass3r
date Wed, 02 Dec 2009 17:40:59 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3cea44337083 initial commit
Trass3r
parents:
diff changeset
1 /**********************************************************************************
3cea44337083 initial commit
Trass3r
parents:
diff changeset
2 * Copyright (c) 2008-2009 The Khronos Group Inc.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
3 *
3cea44337083 initial commit
Trass3r
parents:
diff changeset
4 * Permission is hereby granted, free of charge, to any person obtaining a
3cea44337083 initial commit
Trass3r
parents:
diff changeset
5 * copy of this software and/or associated documentation files (the
3cea44337083 initial commit
Trass3r
parents:
diff changeset
6 * "Materials"), to deal in the Materials without restriction, including
3cea44337083 initial commit
Trass3r
parents:
diff changeset
7 * without limitation the rights to use, copy, modify, merge, publish,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
8 * distribute, sublicense, and/or sell copies of the Materials, and to
3cea44337083 initial commit
Trass3r
parents:
diff changeset
9 * permit persons to whom the Materials are furnished to do so, subject to
3cea44337083 initial commit
Trass3r
parents:
diff changeset
10 * the following conditions:
3cea44337083 initial commit
Trass3r
parents:
diff changeset
11 *
3cea44337083 initial commit
Trass3r
parents:
diff changeset
12 * The above copyright notice and this permission notice shall be included
3cea44337083 initial commit
Trass3r
parents:
diff changeset
13 * in all copies or substantial portions of the Materials.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
14 *
3cea44337083 initial commit
Trass3r
parents:
diff changeset
15 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
3cea44337083 initial commit
Trass3r
parents:
diff changeset
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
3cea44337083 initial commit
Trass3r
parents:
diff changeset
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
3cea44337083 initial commit
Trass3r
parents:
diff changeset
21 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
22 **********************************************************************************/
3cea44337083 initial commit
Trass3r
parents:
diff changeset
23
3cea44337083 initial commit
Trass3r
parents:
diff changeset
24 // $Revision: 9283 $ on $Date: 2009-10-14 10:18:57 -0700 (Wed, 14 Oct 2009) $
3cea44337083 initial commit
Trass3r
parents:
diff changeset
25
3cea44337083 initial commit
Trass3r
parents:
diff changeset
26 module opencl.c.platform;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
27
3cea44337083 initial commit
Trass3r
parents:
diff changeset
28 /* scalar types */
3cea44337083 initial commit
Trass3r
parents:
diff changeset
29 alias byte cl_char;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
30 alias ubyte cl_uchar;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
31 alias short cl_short;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
32 alias ushort cl_ushort;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
33 alias int cl_int;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
34 alias uint cl_uint;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
35 alias long cl_long;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
36 alias ulong cl_ulong;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
37
3cea44337083 initial commit
Trass3r
parents:
diff changeset
38 alias ushort cl_half;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
39 alias float cl_float;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
40 alias double cl_double;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
41
3cea44337083 initial commit
Trass3r
parents:
diff changeset
42 /*
3cea44337083 initial commit
Trass3r
parents:
diff changeset
43 * Vector types
3cea44337083 initial commit
Trass3r
parents:
diff changeset
44 *
3cea44337083 initial commit
Trass3r
parents:
diff changeset
45 * Note: OpenCL requires that all types be naturally aligned.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
46 * This means that vector types must be naturally aligned.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
47 * For example, a vector of four floats must be aligned to
3cea44337083 initial commit
Trass3r
parents:
diff changeset
48 * a 16 byte boundary (calculated as 4 * the natural 4-byte
3cea44337083 initial commit
Trass3r
parents:
diff changeset
49 * alignment of the float). The alignment qualifiers here
3cea44337083 initial commit
Trass3r
parents:
diff changeset
50 * will only function properly if your compiler supports them
3cea44337083 initial commit
Trass3r
parents:
diff changeset
51 * and if you don't actively work to defeat them. For example,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
52 * in order for a cl_float4 to be 16 byte aligned in a struct,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
53 * the start of the struct must itself be 16-byte aligned.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
54 *
3cea44337083 initial commit
Trass3r
parents:
diff changeset
55 * Maintaining proper alignment is the user's responsibility.
3cea44337083 initial commit
Trass3r
parents:
diff changeset
56 */
3cea44337083 initial commit
Trass3r
parents:
diff changeset
57
3cea44337083 initial commit
Trass3r
parents:
diff changeset
58 alias byte[2] cl_char2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
59 alias byte[4] cl_char4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
60 alias byte[8] cl_char8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
61 alias byte[16] cl_char16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
62 alias ubyte[2] cl_uchar2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
63 alias ubyte[4] cl_uchar4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
64 alias ubyte[8] cl_uchar8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
65 alias ubyte[16] cl_uchar16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
66
3cea44337083 initial commit
Trass3r
parents:
diff changeset
67 alias short[2] cl_short2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
68 alias short[4] cl_short4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
69 alias short[8] cl_short8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
70 alias short[16] cl_short16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
71 alias ushort[2] cl_ushort2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
72 alias ushort[4] cl_ushort4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
73 alias ushort[8] cl_ushort8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
74 alias ushort[16] cl_ushort16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
75
3cea44337083 initial commit
Trass3r
parents:
diff changeset
76 alias int[2] cl_int2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
77 alias int[4] cl_int4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
78 alias int[8] cl_int8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
79 alias int[16] cl_int16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
80 alias uint[2] cl_uint2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
81 alias uint[4] cl_uint4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
82 alias uint[8] cl_uint8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
83 alias uint[16] cl_uint16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
84
3cea44337083 initial commit
Trass3r
parents:
diff changeset
85 alias long[2] cl_long2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
86 alias long[4] cl_long4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
87 alias long[8] cl_long8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
88 alias long[16] cl_long16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
89 alias ulong[2] cl_ulong2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
90 alias ulong[4] cl_ulong4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
91 alias ulong[8] cl_ulong8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
92 alias ulong[16] cl_ulong16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
93
3cea44337083 initial commit
Trass3r
parents:
diff changeset
94 alias float[2] cl_float2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
95 alias float[4] cl_float4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
96 alias float[8] cl_float8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
97 alias float[16] cl_float16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
98
3cea44337083 initial commit
Trass3r
parents:
diff changeset
99 alias double[2] cl_double2;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
100 alias double[4] cl_double4;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
101 alias double[8] cl_double8;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
102 alias double[16] cl_double16;
3cea44337083 initial commit
Trass3r
parents:
diff changeset
103
3cea44337083 initial commit
Trass3r
parents:
diff changeset
104 /* There are no vector types for half */
3cea44337083 initial commit
Trass3r
parents:
diff changeset
105
3cea44337083 initial commit
Trass3r
parents:
diff changeset
106 enum
3cea44337083 initial commit
Trass3r
parents:
diff changeset
107 {
3cea44337083 initial commit
Trass3r
parents:
diff changeset
108 CL_CHAR_BIT = 8,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
109 CL_SCHAR_MAX = 127,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
110 CL_SCHAR_MIN = (-127-1),
3cea44337083 initial commit
Trass3r
parents:
diff changeset
111 CL_CHAR_MAX = CL_SCHAR_MAX,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
112 CL_CHAR_MIN = CL_SCHAR_MIN,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
113 CL_UCHAR_MAX = 255,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
114 CL_SHRT_MAX = 32767,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
115 CL_SHRT_MIN = (-32767-1),
3cea44337083 initial commit
Trass3r
parents:
diff changeset
116 CL_USHRT_MAX = 65535,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
117 CL_INT_MAX = 2147483647,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
118 CL_INT_MIN = (-2147483647-1),
3cea44337083 initial commit
Trass3r
parents:
diff changeset
119 CL_UINT_MAX = 0xffffffffU,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
120 CL_LONG_MAX = 0x7FFFFFFFFFFFFFFFL,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
121 CL_LONG_MIN = -0x7FFFFFFFFFFFFFFFL - 1L,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
122 CL_ULONG_MAX = 0xFFFFFFFFFFFFFFFFUL,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
123
3cea44337083 initial commit
Trass3r
parents:
diff changeset
124 CL_FLT_DIG = 6,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
125 CL_FLT_MANT_DIG = 24,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
126 CL_FLT_MAX_10_EXP = +38,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
127 CL_FLT_MAX_EXP = +128,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
128 CL_FLT_MIN_10_EXP = -37,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
129 CL_FLT_MIN_EXP = -125,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
130 CL_FLT_RADIX = 2,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
131 CL_FLT_MAX = 0x1.fffffep127f,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
132 CL_FLT_MIN = 0x1.0p-126f,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
133 CL_FLT_EPSILON = 0x1.0p-23f,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
134
3cea44337083 initial commit
Trass3r
parents:
diff changeset
135 CL_DBL_DIG = 15,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
136 CL_DBL_MANT_DIG = 53,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
137 CL_DBL_MAX_10_EXP = +308,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
138 CL_DBL_MAX_EXP = +1024,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
139 CL_DBL_MIN_10_EXP = -307,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
140 CL_DBL_MIN_EXP = -1021,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
141 CL_DBL_RADIX = 2,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
142 CL_DBL_MAX = 0x1.fffffffffffffp1023,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
143 CL_DBL_MIN = 0x1.0p-1022,
3cea44337083 initial commit
Trass3r
parents:
diff changeset
144 CL_DBL_EPSILON = 0x1.0p-52
3cea44337083 initial commit
Trass3r
parents:
diff changeset
145 }