Commit | Line | Data |
---|---|---|
54fcddd0 UW |
1 | /* This testcase is part of GDB, the GNU debugger. |
2 | ||
3 | Copyright 2011 Free Software Foundation, Inc. | |
4 | ||
5 | This program is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License as published by | |
7 | the Free Software Foundation; either version 3 of the License, or | |
8 | (at your option) any later version. | |
9 | ||
10 | This program is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | ||
18 | Contributed by Ulrich Weigand <ulrich.weigand.ibm.com> */ | |
19 | ||
20 | __constant int opencl_version = __OPENCL_VERSION__; | |
21 | ||
22 | #ifdef HAVE_cl_khr_fp64 | |
23 | #pragma OPENCL EXTENSION cl_khr_fp64 : enable | |
24 | __constant int have_cl_khr_fp64 = 1; | |
25 | #else | |
26 | __constant int have_cl_khr_fp64 = 0; | |
27 | #endif | |
28 | ||
29 | #ifdef HAVE_cl_khr_fp16 | |
30 | #pragma OPENCL EXTENSION cl_khr_fp16 : enable | |
31 | __constant int have_cl_khr_fp16 = 1; | |
32 | #else | |
33 | __constant int have_cl_khr_fp16 = 0; | |
34 | #endif | |
35 | ||
36 | #define def_call_func(type) \ | |
37 | type call_##type (type a, type b) { return a + b; } | |
38 | ||
39 | #ifdef CL_VERSION_1_1 | |
40 | #define def_call_family(type) \ | |
41 | def_call_func(type) \ | |
42 | def_call_func(type##2) \ | |
43 | def_call_func(type##3) \ | |
44 | def_call_func(type##4) \ | |
45 | def_call_func(type##8) \ | |
46 | def_call_func(type##16) | |
47 | #else | |
48 | #define def_call_family(type) \ | |
49 | def_call_func(type) \ | |
50 | def_call_func(type##2) \ | |
51 | def_call_func(type##4) \ | |
52 | def_call_func(type##8) \ | |
53 | def_call_func(type##16) | |
54 | #endif | |
55 | ||
56 | def_call_family(char) | |
57 | def_call_family(uchar) | |
58 | def_call_family(short) | |
59 | def_call_family(ushort) | |
60 | def_call_family(int) | |
61 | def_call_family(uint) | |
62 | def_call_family(long) | |
63 | def_call_family(ulong) | |
64 | #ifdef cl_khr_fp16 | |
65 | def_call_family(half) | |
66 | #endif | |
67 | def_call_family(float) | |
68 | #ifdef cl_khr_fp64 | |
69 | def_call_family(double) | |
70 | #endif | |
71 | ||
72 | #define call_func(type, var) \ | |
73 | var = call_##type (var, var); | |
74 | ||
75 | #ifdef CL_VERSION_1_1 | |
76 | #define call_family(type, var) \ | |
77 | call_func(type, var) \ | |
78 | call_func(type##2, var##2) \ | |
79 | call_func(type##3, var##3) \ | |
80 | call_func(type##4, var##4) \ | |
81 | call_func(type##8, var##8) \ | |
82 | call_func(type##16, var##16) | |
83 | #else | |
84 | #define call_family(type, var) \ | |
85 | call_func(type, var) \ | |
86 | call_func(type##2, var##2) \ | |
87 | call_func(type##4, var##4) \ | |
88 | call_func(type##8, var##8) \ | |
89 | call_func(type##16, var##16) | |
90 | #endif | |
91 | ||
92 | __kernel void testkernel (__global int *data) | |
93 | { | |
94 | bool b = 0; | |
95 | ||
96 | char c = 1; | |
97 | char2 c2 = (char2) (1, 2); | |
98 | #ifdef CL_VERSION_1_1 | |
99 | char3 c3 = (char3) (1, 2, 3); | |
100 | #endif | |
101 | char4 c4 = (char4) (1, 2, 3, 4); | |
102 | char8 c8 = (char8) (1, 2, 3, 4, 5, 6, 7, 8); | |
103 | char16 c16 = (char16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
104 | ||
105 | uchar uc = 1; | |
106 | uchar2 uc2 = (uchar2) (1, 2); | |
107 | #ifdef CL_VERSION_1_1 | |
108 | uchar3 uc3 = (uchar3) (1, 2, 3); | |
109 | #endif | |
110 | uchar4 uc4 = (uchar4) (1, 2, 3, 4); | |
111 | uchar8 uc8 = (uchar8) (1, 2, 3, 4, 5, 6, 7, 8); | |
112 | uchar16 uc16 = (uchar16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
113 | ||
114 | short s = 1; | |
115 | short2 s2 = (short2) (1, 2); | |
116 | #ifdef CL_VERSION_1_1 | |
117 | short3 s3 = (short3) (1, 2, 3); | |
118 | #endif | |
119 | short4 s4 = (short4) (1, 2, 3, 4); | |
120 | short8 s8 = (short8) (1, 2, 3, 4, 5, 6, 7, 8); | |
121 | short16 s16 = (short16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
122 | ||
123 | ushort us = 1; | |
124 | ushort2 us2 = (ushort2) (1, 2); | |
125 | #ifdef CL_VERSION_1_1 | |
126 | ushort3 us3 = (ushort3) (1, 2, 3); | |
127 | #endif | |
128 | ushort4 us4 = (ushort4) (1, 2, 3, 4); | |
129 | ushort8 us8 = (ushort8) (1, 2, 3, 4, 5, 6, 7, 8); | |
130 | ushort16 us16 = (ushort16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
131 | ||
132 | int i = 1; | |
133 | int2 i2 = (int2) (1, 2); | |
134 | #ifdef CL_VERSION_1_1 | |
135 | int3 i3 = (int3) (1, 2, 3); | |
136 | #endif | |
137 | int4 i4 = (int4) (1, 2, 3, 4); | |
138 | int8 i8 = (int8) (1, 2, 3, 4, 5, 6, 7, 8); | |
139 | int16 i16 = (int16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
140 | ||
141 | uint ui = 1; | |
142 | uint2 ui2 = (uint2) (1, 2); | |
143 | #ifdef CL_VERSION_1_1 | |
144 | uint3 ui3 = (uint3) (1, 2, 3); | |
145 | #endif | |
146 | uint4 ui4 = (uint4) (1, 2, 3, 4); | |
147 | uint8 ui8 = (uint8) (1, 2, 3, 4, 5, 6, 7, 8); | |
148 | uint16 ui16 = (uint16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
149 | ||
150 | long l = 1; | |
151 | long2 l2 = (long2) (1, 2); | |
152 | #ifdef CL_VERSION_1_1 | |
153 | long3 l3 = (long3) (1, 2, 3); | |
154 | #endif | |
155 | long4 l4 = (long4) (1, 2, 3, 4); | |
156 | long8 l8 = (long8) (1, 2, 3, 4, 5, 6, 7, 8); | |
157 | long16 l16 = (long16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
158 | ||
159 | ulong ul = 1; | |
160 | ulong2 ul2 = (ulong2) (1, 2); | |
161 | #ifdef CL_VERSION_1_1 | |
162 | ulong3 ul3 = (ulong3) (1, 2, 3); | |
163 | #endif | |
164 | ulong4 ul4 = (ulong4) (1, 2, 3, 4); | |
165 | ulong8 ul8 = (ulong8) (1, 2, 3, 4, 5, 6, 7, 8); | |
166 | ulong16 ul16 = (ulong16)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); | |
167 | ||
168 | #ifdef cl_khr_fp16 | |
169 | half h = 1.0; | |
170 | half2 h2 = (half2) (1.0, 2.0); | |
171 | #ifdef CL_VERSION_1_1 | |
172 | half3 h3 = (half3) (1.0, 2.0, 3.0); | |
173 | #endif | |
174 | half4 h4 = (half4) (1.0, 2.0, 3.0, 4.0); | |
175 | half8 h8 = (half8) (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); | |
176 | half16 h16 = (half16)(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); | |
177 | #endif | |
178 | ||
179 | float f = 1.0; | |
180 | float2 f2 = (float2) (1.0, 2.0); | |
181 | #ifdef CL_VERSION_1_1 | |
182 | float3 f3 = (float3) (1.0, 2.0, 3.0); | |
183 | #endif | |
184 | float4 f4 = (float4) (1.0, 2.0, 3.0, 4.0); | |
185 | float8 f8 = (float8) (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); | |
186 | float16 f16 = (float16)(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); | |
187 | ||
188 | #ifdef cl_khr_fp64 | |
189 | double d = 1.0; | |
190 | double2 d2 = (double2) (1.0, 2.0); | |
191 | #ifdef CL_VERSION_1_1 | |
192 | double3 d3 = (double3) (1.0, 2.0, 3.0); | |
193 | #endif | |
194 | double4 d4 = (double4) (1.0, 2.0, 3.0, 4.0); | |
195 | double8 d8 = (double8) (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); | |
196 | double16 d16 = (double16)(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); | |
197 | #endif | |
198 | ||
199 | /* marker! */ | |
200 | ||
201 | call_family (char, c); | |
202 | call_family (uchar, uc); | |
203 | call_family (short, s); | |
204 | call_family (ushort, us); | |
205 | call_family (int, i); | |
206 | call_family (uint, ui); | |
207 | call_family (long, l); | |
208 | call_family (ulong, ul); | |
209 | #ifdef cl_khr_fp16 | |
210 | call_family (half, h); | |
211 | #endif | |
212 | call_family (float, f); | |
213 | #ifdef cl_khr_fp64 | |
214 | call_family (double, d); | |
215 | #endif | |
216 | ||
217 | data[get_global_id(0)] = 1; | |
218 | } |