1 /* This testcase is part of GDB
, the GNU debugger.
3 Copyright
2011-
2022 Free Software Foundation
, Inc.
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.
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.
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
/>.
18 Contributed by Ulrich Weigand
<ulrich.weigand.ibm.com
> */
20 __constant int opencl_version
= __OPENCL_VERSION__
;
22 #ifdef HAVE_cl_khr_fp64
23 #pragma OPENCL EXTENSION cl_khr_fp64
: enable
24 __constant int have_cl_khr_fp64
= 1;
26 __constant int have_cl_khr_fp64
= 0;
29 #ifdef HAVE_cl_khr_fp16
30 #pragma OPENCL EXTENSION cl_khr_fp16
: enable
31 __constant int have_cl_khr_fp16
= 1;
33 __constant int have_cl_khr_fp16
= 0;
36 #define def_call_func
(type) \
37 type call_
##type
(type a
, type b
) { return a
+ b
; }
40 #define def_call_family
(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)
48 #define def_call_family
(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)
57 def_call_family
(uchar)
58 def_call_family
(short)
59 def_call_family
(ushort)
63 def_call_family
(ulong)
67 def_call_family
(float)
69 def_call_family
(double)
72 #define call_func
(type, var
) \
73 var
= call_
##type
(var, var
);
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)
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)
92 __kernel void testkernel
(__global int
*data
)
97 char2 c2
= (char2) (1, 2);
99 char3 c3
= (char3) (1, 2, 3);
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);
106 uchar2 uc2
= (uchar2) (1, 2);
107 #ifdef CL_VERSION_1_1
108 uchar3 uc3
= (uchar3) (1, 2, 3);
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);
115 short2 s2
= (short2) (1, 2);
116 #ifdef CL_VERSION_1_1
117 short3 s3
= (short3) (1, 2, 3);
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);
124 ushort2 us2
= (ushort2) (1, 2);
125 #ifdef CL_VERSION_1_1
126 ushort3 us3
= (ushort3) (1, 2, 3);
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);
133 int2 i2
= (int2) (1, 2);
134 #ifdef CL_VERSION_1_1
135 int3 i3
= (int3) (1, 2, 3);
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);
142 uint2 ui2
= (uint2) (1, 2);
143 #ifdef CL_VERSION_1_1
144 uint3 ui3
= (uint3) (1, 2, 3);
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);
151 long2 l2
= (long2) (1, 2);
152 #ifdef CL_VERSION_1_1
153 long3 l3
= (long3) (1, 2, 3);
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);
160 ulong2 ul2
= (ulong2) (1, 2);
161 #ifdef CL_VERSION_1_1
162 ulong3 ul3
= (ulong3) (1, 2, 3);
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);
170 half2 h2
= (half2) (1.0
, 2.0);
171 #ifdef CL_VERSION_1_1
172 half3 h3
= (half3) (1.0
, 2.0, 3.0);
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);
180 float2 f2
= (float2) (1.0
, 2.0);
181 #ifdef CL_VERSION_1_1
182 float3 f3
= (float3) (1.0
, 2.0, 3.0);
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);
190 double2 d2
= (double2) (1.0
, 2.0);
191 #ifdef CL_VERSION_1_1
192 double3 d3
= (double3) (1.0
, 2.0, 3.0);
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);
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
);
210 call_family
(half, h
);
212 call_family
(float, f
);
214 call_family
(double, d
);
217 data
[get_global_id
(0)] = 1;