1*3cc25752SFrank Piva //
2*3cc25752SFrank Piva // Copyright (c) 2020-2022 The Khronos Group Inc.
3*3cc25752SFrank Piva //
4*3cc25752SFrank Piva // Licensed under the Apache License, Version 2.0 (the "License");
5*3cc25752SFrank Piva // you may not use this file except in compliance with the License.
6*3cc25752SFrank Piva // You may obtain a copy of the License at
7*3cc25752SFrank Piva //
8*3cc25752SFrank Piva // http://www.apache.org/licenses/LICENSE-2.0
9*3cc25752SFrank Piva //
10*3cc25752SFrank Piva // Unless required by applicable law or agreed to in writing, software
11*3cc25752SFrank Piva // distributed under the License is distributed on an "AS IS" BASIS,
12*3cc25752SFrank Piva // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*3cc25752SFrank Piva // See the License for the specific language governing permissions and
14*3cc25752SFrank Piva // limitations under the License.
15*3cc25752SFrank Piva //
16*3cc25752SFrank Piva
17*3cc25752SFrank Piva /*
18*3cc25752SFrank Piva Some versions of inttypes.h required defining the macro __STDC_FORMAT_MACROS to
19*3cc25752SFrank Piva use the format macros for C++ compiles, but not all. To improve robustness we
20*3cc25752SFrank Piva will use inttypes.h for C compiles and cinttypes for C++ compiles.
21*3cc25752SFrank Piva */
22*3cc25752SFrank Piva #if defined(__cplusplus)
23*3cc25752SFrank Piva #include <cinttypes>
24*3cc25752SFrank Piva #else
25*3cc25752SFrank Piva #include <inttypes.h>
26*3cc25752SFrank Piva #endif
27*3cc25752SFrank Piva
28*3cc25752SFrank Piva #include <stdio.h>
29*3cc25752SFrank Piva
30*3cc25752SFrank Piva #include "CL/cl.h"
31*3cc25752SFrank Piva
test_char()32*3cc25752SFrank Piva int test_char()
33*3cc25752SFrank Piva {
34*3cc25752SFrank Piva /* char */
35*3cc25752SFrank Piva /* Constructor */
36*3cc25752SFrank Piva cl_char a = 0;
37*3cc25752SFrank Piva cl_char2 a2 = {{ 0, 1 }};
38*3cc25752SFrank Piva cl_char4 a4 = {{ 0, 1, 2, 3 }};
39*3cc25752SFrank Piva cl_char8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
40*3cc25752SFrank Piva cl_char16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
41*3cc25752SFrank Piva
42*3cc25752SFrank Piva /* assignment */
43*3cc25752SFrank Piva cl_char b = a;
44*3cc25752SFrank Piva cl_char2 b2 = a2;
45*3cc25752SFrank Piva cl_char4 b4 = a4;
46*3cc25752SFrank Piva cl_char8 b8 = a8;
47*3cc25752SFrank Piva cl_char16 b16 = a16;
48*3cc25752SFrank Piva
49*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
50*3cc25752SFrank Piva printf("b: %d\n", b );
51*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
52*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
53*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
54*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
55*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
56*3cc25752SFrank Piva
57*3cc25752SFrank Piva /* vector access */
58*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
59*3cc25752SFrank Piva #if defined( __CL_CHAR2__ )
60*3cc25752SFrank Piva __cl_char2 v2 = b2.v2;
61*3cc25752SFrank Piva printf("__cl_char2: %d %d \n", ((cl_char*)&v2)[0], ((cl_char*)&v2)[1] );
62*3cc25752SFrank Piva #else
63*3cc25752SFrank Piva printf( "__cl_char2 SIMD vectors not supported on this architecture.\n" );
64*3cc25752SFrank Piva #endif
65*3cc25752SFrank Piva
66*3cc25752SFrank Piva #if defined( __CL_CHAR4__ )
67*3cc25752SFrank Piva __cl_char4 v4 = b4.v4;
68*3cc25752SFrank Piva printf("__cl_char4: %d %d %d %d \n", ((cl_char*)&v4)[0], ((cl_char*)&v4)[1], ((cl_char*)&v4)[2], ((cl_char*)&v4)[3] );
69*3cc25752SFrank Piva #else
70*3cc25752SFrank Piva printf( "__cl_char4 SIMD vectors not supported on this architecture.\n" );
71*3cc25752SFrank Piva #endif
72*3cc25752SFrank Piva
73*3cc25752SFrank Piva #if defined( __CL_CHAR8__ )
74*3cc25752SFrank Piva __cl_char8 v8 = b8.v8;
75*3cc25752SFrank Piva printf("__cl_char8: %d %d %d %d %d %d %d %d \n", ((cl_char*)&v8)[0], ((cl_char*)&v8)[1], ((cl_char*)&v8)[2], ((cl_char*)&v8)[3], ((cl_char*)&v8)[4], ((cl_char*)&v8)[5], ((cl_char*)&v8)[6], ((cl_char*)&v8)[7] );
76*3cc25752SFrank Piva #else
77*3cc25752SFrank Piva printf( "__cl_char8 SIMD vectors not supported on this architecture.\n" );
78*3cc25752SFrank Piva #endif
79*3cc25752SFrank Piva
80*3cc25752SFrank Piva #if defined( __CL_CHAR16__ )
81*3cc25752SFrank Piva __cl_char16 v16 = b16.v16;
82*3cc25752SFrank Piva printf("__cl_char16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_char*)&v16)[0], ((cl_char*)&v16)[1], ((cl_char*)&v16)[2], ((cl_char*)&v16)[3], ((cl_char*)&v16)[4], ((cl_char*)&v16)[5], ((cl_char*)&v16)[6], ((cl_char*)&v16)[7],
83*3cc25752SFrank Piva ((cl_char*)&v16)[8], ((cl_char*)&v16)[9], ((cl_char*)&v16)[10], ((cl_char*)&v16)[11], ((cl_char*)&v16)[12], ((cl_char*)&v16)[13], ((cl_char*)&v16)[14], ((cl_char*)&v16)[15]);
84*3cc25752SFrank Piva #else
85*3cc25752SFrank Piva printf( "__cl_char16 SIMD vectors not supported on this architecture.\n" );
86*3cc25752SFrank Piva #endif
87*3cc25752SFrank Piva
88*3cc25752SFrank Piva printf( "\n" );
89*3cc25752SFrank Piva return 0;
90*3cc25752SFrank Piva }
91*3cc25752SFrank Piva
test_uchar()92*3cc25752SFrank Piva int test_uchar()
93*3cc25752SFrank Piva {
94*3cc25752SFrank Piva /* uchar */
95*3cc25752SFrank Piva /* Constructor */
96*3cc25752SFrank Piva cl_uchar a = 0;
97*3cc25752SFrank Piva cl_uchar2 a2 = {{ 0, 1 }};
98*3cc25752SFrank Piva cl_uchar4 a4 = {{ 0, 1, 2, 3 }};
99*3cc25752SFrank Piva cl_uchar8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
100*3cc25752SFrank Piva cl_uchar16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
101*3cc25752SFrank Piva
102*3cc25752SFrank Piva /* assignment */
103*3cc25752SFrank Piva cl_uchar b = a;
104*3cc25752SFrank Piva cl_uchar2 b2 = a2;
105*3cc25752SFrank Piva cl_uchar4 b4 = a4;
106*3cc25752SFrank Piva cl_uchar8 b8 = a8;
107*3cc25752SFrank Piva cl_uchar16 b16 = a16;
108*3cc25752SFrank Piva
109*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
110*3cc25752SFrank Piva printf("b: %d\n", b );
111*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
112*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
113*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
114*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
115*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
116*3cc25752SFrank Piva
117*3cc25752SFrank Piva /* vector access */
118*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
119*3cc25752SFrank Piva #if defined( __CL_UCHAR2__ )
120*3cc25752SFrank Piva __cl_uchar2 v2 = b2.v2;
121*3cc25752SFrank Piva printf("__cl_uchar2: %d %d \n", ((uchar*)&v2)[0], ((cl_uchar*)&v2)[1] );
122*3cc25752SFrank Piva #else
123*3cc25752SFrank Piva printf( "__cl_uchar2 SIMD vectors not supported on this architecture.\n" );
124*3cc25752SFrank Piva #endif
125*3cc25752SFrank Piva
126*3cc25752SFrank Piva #if defined( __CL_UCHAR4__ )
127*3cc25752SFrank Piva __cl_uchar4 v4 = b4.v4;
128*3cc25752SFrank Piva printf("__cl_uchar4: %d %d %d %d \n", ((uchar*)&v4)[0], ((cl_uchar*)&v4)[1], ((cl_uchar*)&v4)[2], ((cl_uchar*)&v4)[3] );
129*3cc25752SFrank Piva #else
130*3cc25752SFrank Piva printf( "__cl_uchar4 SIMD vectors not supported on this architecture.\n" );
131*3cc25752SFrank Piva #endif
132*3cc25752SFrank Piva
133*3cc25752SFrank Piva #if defined( __CL_UCHAR8__ )
134*3cc25752SFrank Piva __cl_uchar8 v8 = b8.v8;
135*3cc25752SFrank Piva printf("__cl_uchar8: %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v8)[0], ((cl_uchar*)&v8)[1], ((cl_uchar*)&v8)[2], ((cl_uchar*)&v8)[3], ((cl_uchar*)&v8)[4], ((cl_uchar*)&v8)[5], ((cl_uchar*)&v8)[6], ((cl_uchar*)&v8)[7] );
136*3cc25752SFrank Piva #else
137*3cc25752SFrank Piva printf( "__cl_uchar8 SIMD vectors not supported on this architecture.\n" );
138*3cc25752SFrank Piva #endif
139*3cc25752SFrank Piva
140*3cc25752SFrank Piva #if defined( __CL_UCHAR16__ )
141*3cc25752SFrank Piva __cl_uchar16 v16 = b16.v16;
142*3cc25752SFrank Piva printf("__cl_uchar16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v16)[0], ((cl_uchar*)&v16)[1], ((cl_uchar*)&v16)[2], ((cl_uchar*)&v16)[3], ((cl_uchar*)&v16)[4], ((cl_uchar*)&v16)[5], ((cl_uchar*)&v16)[6], ((cl_uchar*)&v16)[7],
143*3cc25752SFrank Piva ((cl_uchar*)&v16)[8], ((cl_uchar*)&v16)[9], ((cl_uchar*)&v16)[10], ((cl_uchar*)&v16)[11], ((cl_uchar*)&v16)[12], ((cl_uchar*)&v16)[13], ((cl_uchar*)&v16)[14], ((cl_uchar*)&v16)[15]);
144*3cc25752SFrank Piva #else
145*3cc25752SFrank Piva printf( "__cl_uchar16 SIMD vectors not supported on this architecture.\n" );
146*3cc25752SFrank Piva #endif
147*3cc25752SFrank Piva
148*3cc25752SFrank Piva printf( "\n" );
149*3cc25752SFrank Piva return 0;
150*3cc25752SFrank Piva }
151*3cc25752SFrank Piva
test_short()152*3cc25752SFrank Piva int test_short()
153*3cc25752SFrank Piva {
154*3cc25752SFrank Piva /* short */
155*3cc25752SFrank Piva /* Constructor */
156*3cc25752SFrank Piva cl_short a = 0;
157*3cc25752SFrank Piva cl_short2 a2 = {{ 0, 1 }};
158*3cc25752SFrank Piva cl_short4 a4 = {{ 0, 1, 2, 3 }};
159*3cc25752SFrank Piva cl_short8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
160*3cc25752SFrank Piva cl_short16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
161*3cc25752SFrank Piva
162*3cc25752SFrank Piva /* assignment */
163*3cc25752SFrank Piva cl_short b = a;
164*3cc25752SFrank Piva cl_short2 b2 = a2;
165*3cc25752SFrank Piva cl_short4 b4 = a4;
166*3cc25752SFrank Piva cl_short8 b8 = a8;
167*3cc25752SFrank Piva cl_short16 b16 = a16;
168*3cc25752SFrank Piva
169*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
170*3cc25752SFrank Piva printf("b: %d\n", b );
171*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
172*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
173*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
174*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
175*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
176*3cc25752SFrank Piva
177*3cc25752SFrank Piva /* vector access */
178*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
179*3cc25752SFrank Piva #if defined( __CL_SHORT2__ )
180*3cc25752SFrank Piva __cl_short2 v2 = b2.v2;
181*3cc25752SFrank Piva printf("__cl_short2: %d %d \n", ((cl_short*)&v2)[0], ((cl_short*)&v2)[1] );
182*3cc25752SFrank Piva #else
183*3cc25752SFrank Piva printf( "__cl_short2 SIMD vectors not supported on this architecture.\n" );
184*3cc25752SFrank Piva #endif
185*3cc25752SFrank Piva
186*3cc25752SFrank Piva #if defined( __CL_SHORT4__ )
187*3cc25752SFrank Piva __cl_short4 v4 = b4.v4;
188*3cc25752SFrank Piva printf("__cl_short4: %d %d %d %d \n", ((cl_short*)&v4)[0], ((cl_short*)&v4)[1], ((cl_short*)&v4)[2], ((cl_short*)&v4)[3] );
189*3cc25752SFrank Piva #else
190*3cc25752SFrank Piva printf( "__cl_short4 SIMD vectors not supported on this architecture.\n" );
191*3cc25752SFrank Piva #endif
192*3cc25752SFrank Piva
193*3cc25752SFrank Piva #if defined( __CL_SHORT8__ )
194*3cc25752SFrank Piva __cl_short8 v8 = b8.v8;
195*3cc25752SFrank Piva printf("__cl_short8: %d %d %d %d %d %d %d %d \n", ((cl_short*)&v8)[0], ((cl_short*)&v8)[1], ((cl_short*)&v8)[2], ((cl_short*)&v8)[3], ((cl_short*)&v8)[4], ((cl_short*)&v8)[5], ((cl_short*)&v8)[6], ((cl_short*)&v8)[7] );
196*3cc25752SFrank Piva #else
197*3cc25752SFrank Piva printf( "__cl_short8 SIMD vectors not supported on this architecture.\n" );
198*3cc25752SFrank Piva #endif
199*3cc25752SFrank Piva
200*3cc25752SFrank Piva #if defined( __CL_SHORT16__ )
201*3cc25752SFrank Piva __cl_short16 v16 = b16.v16;
202*3cc25752SFrank Piva printf("__cl_short16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_short*)&v16)[0], ((cl_short*)&v16)[1], ((cl_short*)&v16)[2], ((cl_short*)&v16)[3], ((cl_short*)&v16)[4], ((cl_short*)&v16)[5], ((cl_short*)&v16)[6], ((cl_short*)&v16)[7],
203*3cc25752SFrank Piva ((cl_short*)&v16)[8], ((cl_short*)&v16)[9], ((cl_short*)&v16)[10], ((cl_short*)&v16)[11], ((cl_short*)&v16)[12], ((cl_short*)&v16)[13], ((cl_short*)&v16)[14], ((cl_short*)&v16)[15]);
204*3cc25752SFrank Piva #else
205*3cc25752SFrank Piva printf( "__cl_short16 SIMD vectors not supported on this architecture.\n" );
206*3cc25752SFrank Piva #endif
207*3cc25752SFrank Piva
208*3cc25752SFrank Piva printf( "\n" );
209*3cc25752SFrank Piva return 0;
210*3cc25752SFrank Piva }
211*3cc25752SFrank Piva
test_ushort()212*3cc25752SFrank Piva int test_ushort()
213*3cc25752SFrank Piva {
214*3cc25752SFrank Piva /* ushort */
215*3cc25752SFrank Piva /* Constructor */
216*3cc25752SFrank Piva cl_ushort a = 0;
217*3cc25752SFrank Piva cl_ushort2 a2 = {{ 0, 1 }};
218*3cc25752SFrank Piva cl_ushort4 a4 = {{ 0, 1, 2, 3 }};
219*3cc25752SFrank Piva cl_ushort8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
220*3cc25752SFrank Piva cl_ushort16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
221*3cc25752SFrank Piva
222*3cc25752SFrank Piva /* assignment */
223*3cc25752SFrank Piva cl_ushort b = a;
224*3cc25752SFrank Piva cl_ushort2 b2 = a2;
225*3cc25752SFrank Piva cl_ushort4 b4 = a4;
226*3cc25752SFrank Piva cl_ushort8 b8 = a8;
227*3cc25752SFrank Piva cl_ushort16 b16 = a16;
228*3cc25752SFrank Piva
229*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
230*3cc25752SFrank Piva printf("b: %d\n", b );
231*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
232*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
233*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
234*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
235*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
236*3cc25752SFrank Piva
237*3cc25752SFrank Piva /* vector access */
238*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
239*3cc25752SFrank Piva #if defined( __CL_USHORT2__ )
240*3cc25752SFrank Piva __cl_ushort2 v2 = b2.v2;
241*3cc25752SFrank Piva printf("__cl_ushort2: %d %d \n", ((unsigned short*)&v2)[0], ((unsigned short*)&v2)[1] );
242*3cc25752SFrank Piva #else
243*3cc25752SFrank Piva printf( "__cl_ushort2 SIMD vectors not supported on this architecture.\n" );
244*3cc25752SFrank Piva #endif
245*3cc25752SFrank Piva
246*3cc25752SFrank Piva #if defined( __CL_USHORT4__ )
247*3cc25752SFrank Piva __cl_ushort4 v4 = b4.v4;
248*3cc25752SFrank Piva printf("__cl_ushort4: %d %d %d %d \n", ((unsigned short*)&v4)[0], ((unsigned short*)&v4)[1], ((unsigned short*)&v4)[2], ((unsigned short*)&v4)[3] );
249*3cc25752SFrank Piva #else
250*3cc25752SFrank Piva printf( "__cl_ushort4 SIMD vectors not supported on this architecture.\n" );
251*3cc25752SFrank Piva #endif
252*3cc25752SFrank Piva
253*3cc25752SFrank Piva #if defined( __CL_USHORT8__ )
254*3cc25752SFrank Piva __cl_ushort8 v8 = b8.v8;
255*3cc25752SFrank Piva printf("__cl_ushort8: %d %d %d %d %d %d %d %d \n", ((unsigned short*)&v8)[0], ((unsigned short*)&v8)[1], ((unsigned short*)&v8)[2], ((unsigned short*)&v8)[3], ((unsigned short*)&v8)[4], ((unsigned short*)&v8)[5], ((unsigned short*)&v8)[6], ((unsigned short*)&v8)[7] );
256*3cc25752SFrank Piva #else
257*3cc25752SFrank Piva printf( "__cl_ushort8 SIMD vectors not supported on this architecture.\n" );
258*3cc25752SFrank Piva #endif
259*3cc25752SFrank Piva
260*3cc25752SFrank Piva #if defined( __CL_USHORT16__ )
261*3cc25752SFrank Piva __cl_ushort16 v16 = b16.v16;
262*3cc25752SFrank Piva printf("__cl_ushort16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((unsigned short*)&v16)[0], ((unsigned short*)&v16)[1], ((unsigned short*)&v16)[2], ((unsigned short*)&v16)[3], ((unsigned short*)&v16)[4], ((unsigned short*)&v16)[5], ((unsigned short*)&v16)[6], ((unsigned short*)&v16)[7],
263*3cc25752SFrank Piva ((unsigned short*)&v16)[8], ((unsigned short*)&v16)[9], ((unsigned short*)&v16)[10], ((unsigned short*)&v16)[11], ((unsigned short*)&v16)[12], ((unsigned short*)&v16)[13], ((unsigned short*)&v16)[14], ((unsigned short*)&v16)[15]);
264*3cc25752SFrank Piva #else
265*3cc25752SFrank Piva printf( "__cl_ushort16 SIMD vectors not supported on this architecture.\n" );
266*3cc25752SFrank Piva #endif
267*3cc25752SFrank Piva
268*3cc25752SFrank Piva printf( "\n" );
269*3cc25752SFrank Piva return 0;
270*3cc25752SFrank Piva }
271*3cc25752SFrank Piva
test_int()272*3cc25752SFrank Piva int test_int()
273*3cc25752SFrank Piva {
274*3cc25752SFrank Piva /* int */
275*3cc25752SFrank Piva /* Constructor */
276*3cc25752SFrank Piva cl_int a = 0;
277*3cc25752SFrank Piva cl_int2 a2 = {{ 0, 1 }};
278*3cc25752SFrank Piva cl_int4 a4 = {{ 0, 1, 2, 3 }};
279*3cc25752SFrank Piva cl_int8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
280*3cc25752SFrank Piva cl_int16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
281*3cc25752SFrank Piva
282*3cc25752SFrank Piva /* assignment */
283*3cc25752SFrank Piva cl_int b = a;
284*3cc25752SFrank Piva cl_int2 b2 = a2;
285*3cc25752SFrank Piva cl_int4 b4 = a4;
286*3cc25752SFrank Piva cl_int8 b8 = a8;
287*3cc25752SFrank Piva cl_int16 b16 = a16;
288*3cc25752SFrank Piva
289*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
290*3cc25752SFrank Piva printf("b: %d\n", b );
291*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
292*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
293*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
294*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
295*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
296*3cc25752SFrank Piva
297*3cc25752SFrank Piva /* vector access */
298*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
299*3cc25752SFrank Piva #if defined( __CL_INT2__ )
300*3cc25752SFrank Piva __cl_int2 v2 = b2.v2;
301*3cc25752SFrank Piva printf("__cl_int2: %d %d \n", ((cl_int*)&v2)[0], ((cl_int*)&v2)[1] );
302*3cc25752SFrank Piva #else
303*3cc25752SFrank Piva printf( "__cl_int2 SIMD vectors not supported on this architecture.\n" );
304*3cc25752SFrank Piva #endif
305*3cc25752SFrank Piva
306*3cc25752SFrank Piva #if defined( __CL_INT4__ )
307*3cc25752SFrank Piva __cl_int4 v4 = b4.v4;
308*3cc25752SFrank Piva printf("__cl_int4: %d %d %d %d \n", ((cl_int*)&v4)[0], ((cl_int*)&v4)[1], ((cl_int*)&v4)[2], ((cl_int*)&v4)[3] );
309*3cc25752SFrank Piva #else
310*3cc25752SFrank Piva printf( "__cl_int4 SIMD vectors not supported on this architecture.\n" );
311*3cc25752SFrank Piva #endif
312*3cc25752SFrank Piva
313*3cc25752SFrank Piva #if defined( __CL_INT8__ )
314*3cc25752SFrank Piva __cl_int8 v8 = b8.v8;
315*3cc25752SFrank Piva printf("__cl_int8: %d %d %d %d %d %d %d %d \n", ((cl_int*)&v8)[0], ((cl_int*)&v8)[1], ((cl_int*)&v8)[2], ((cl_int*)&v8)[3], ((cl_int*)&v8)[4], ((cl_int*)&v8)[5], ((cl_int*)&v8)[6], ((cl_int*)&v8)[7] );
316*3cc25752SFrank Piva #else
317*3cc25752SFrank Piva printf( "__cl_int8 SIMD vectors not supported on this architecture.\n" );
318*3cc25752SFrank Piva #endif
319*3cc25752SFrank Piva
320*3cc25752SFrank Piva #if defined( __CL_INT16__ )
321*3cc25752SFrank Piva __cl_int16 v16 = b16.v16;
322*3cc25752SFrank Piva printf("__cl_int16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_int*)&v16)[0], ((cl_int*)&v16)[1], ((cl_int*)&v16)[2], ((cl_int*)&v16)[3], ((cl_int*)&v16)[4], ((cl_int*)&v16)[5], ((cl_int*)&v16)[6], ((cl_int*)&v16)[7],
323*3cc25752SFrank Piva ((cl_int*)&v16)[8], ((cl_int*)&v16)[9], ((cl_int*)&v16)[10], ((cl_int*)&v16)[11], ((cl_int*)&v16)[12], ((cl_int*)&v16)[13], ((cl_int*)&v16)[14], ((cl_int*)&v16)[15]);
324*3cc25752SFrank Piva #else
325*3cc25752SFrank Piva printf( "__cl_int16 SIMD vectors not supported on this architecture.\n" );
326*3cc25752SFrank Piva #endif
327*3cc25752SFrank Piva
328*3cc25752SFrank Piva printf( "\n" );
329*3cc25752SFrank Piva return 0;
330*3cc25752SFrank Piva }
331*3cc25752SFrank Piva
test_uint()332*3cc25752SFrank Piva int test_uint()
333*3cc25752SFrank Piva {
334*3cc25752SFrank Piva /* uint */
335*3cc25752SFrank Piva /* Constructor */
336*3cc25752SFrank Piva cl_uint a = 0;
337*3cc25752SFrank Piva cl_uint2 a2 = {{ 0, 1 }};
338*3cc25752SFrank Piva cl_uint4 a4 = {{ 0, 1, 2, 3 }};
339*3cc25752SFrank Piva cl_uint8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
340*3cc25752SFrank Piva cl_uint16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
341*3cc25752SFrank Piva
342*3cc25752SFrank Piva /* assignment */
343*3cc25752SFrank Piva cl_uint b = a;
344*3cc25752SFrank Piva cl_uint2 b2 = a2;
345*3cc25752SFrank Piva cl_uint4 b4 = a4;
346*3cc25752SFrank Piva cl_uint8 b8 = a8;
347*3cc25752SFrank Piva cl_uint16 b16 = a16;
348*3cc25752SFrank Piva
349*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
350*3cc25752SFrank Piva printf("b: %d\n", b );
351*3cc25752SFrank Piva printf("b2: %d %d \n", b2.s[0], b2.s[1] );
352*3cc25752SFrank Piva printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
353*3cc25752SFrank Piva printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
354*3cc25752SFrank Piva printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
355*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
356*3cc25752SFrank Piva
357*3cc25752SFrank Piva /* vector access */
358*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
359*3cc25752SFrank Piva #if defined( __CL_UINT2__ )
360*3cc25752SFrank Piva __cl_uint2 v2 = b2.v2;
361*3cc25752SFrank Piva printf("__cl_uint2: %d %d \n", ((cl_uint*)&v2)[0], ((cl_uint*)&v2)[1] );
362*3cc25752SFrank Piva #else
363*3cc25752SFrank Piva printf( "__cl_uint2 SIMD vectors not supported on this architecture.\n" );
364*3cc25752SFrank Piva #endif
365*3cc25752SFrank Piva
366*3cc25752SFrank Piva #if defined( __CL_UINT4__ )
367*3cc25752SFrank Piva __cl_uint4 v4 = b4.v4;
368*3cc25752SFrank Piva printf("__cl_uint4: %d %d %d %d \n", ((cl_uint*)&v4)[0], ((cl_uint*)&v4)[1], ((cl_uint*)&v4)[2], ((cl_uint*)&v4)[3] );
369*3cc25752SFrank Piva #else
370*3cc25752SFrank Piva printf( "__cl_uint4 SIMD vectors not supported on this architecture.\n" );
371*3cc25752SFrank Piva #endif
372*3cc25752SFrank Piva
373*3cc25752SFrank Piva #if defined( __CL_UINT8__ )
374*3cc25752SFrank Piva __cl_uint8 v8 = b8.v8;
375*3cc25752SFrank Piva printf("__cl_uint8: %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v8)[0], ((cl_uint*)&v8)[1], ((cl_uint*)&v8)[2], ((cl_uint*)&v8)[3], ((cl_uint*)&v8)[4], ((cl_uint*)&v8)[5], ((cl_uint*)&v8)[6], ((cl_uint*)&v8)[7] );
376*3cc25752SFrank Piva #else
377*3cc25752SFrank Piva printf( "__cl_uint8 SIMD vectors not supported on this architecture.\n" );
378*3cc25752SFrank Piva #endif
379*3cc25752SFrank Piva
380*3cc25752SFrank Piva #if defined( __CL_UINT16__ )
381*3cc25752SFrank Piva __cl_uint16 v16 = b16.v16;
382*3cc25752SFrank Piva printf("__cl_uint16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v16)[0], ((cl_uint*)&v16)[1], ((cl_uint*)&v16)[2], ((cl_uint*)&v16)[3], ((cl_uint*)&v16)[4], ((cl_uint*)&v16)[5], ((cl_uint*)&v16)[6], ((cl_uint*)&v16)[7],
383*3cc25752SFrank Piva ((cl_uint*)&v16)[8], ((cl_uint*)&v16)[9], ((cl_uint*)&v16)[10], ((cl_uint*)&v16)[11], ((cl_uint*)&v16)[12], ((cl_uint*)&v16)[13], ((cl_uint*)&v16)[14], ((cl_uint*)&v16)[15]);
384*3cc25752SFrank Piva #else
385*3cc25752SFrank Piva printf( "__cl_uint16 SIMD vectors not supported on this architecture.\n" );
386*3cc25752SFrank Piva #endif
387*3cc25752SFrank Piva
388*3cc25752SFrank Piva printf( "\n" );
389*3cc25752SFrank Piva return 0;
390*3cc25752SFrank Piva }
391*3cc25752SFrank Piva
test_long()392*3cc25752SFrank Piva int test_long()
393*3cc25752SFrank Piva {
394*3cc25752SFrank Piva /* long */
395*3cc25752SFrank Piva /* Constructor */
396*3cc25752SFrank Piva cl_long a = 0;
397*3cc25752SFrank Piva cl_long2 a2 = {{ 0, 1 }};
398*3cc25752SFrank Piva cl_long4 a4 = {{ 0, 1, 2, 3 }};
399*3cc25752SFrank Piva cl_long8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
400*3cc25752SFrank Piva cl_long16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
401*3cc25752SFrank Piva
402*3cc25752SFrank Piva /* assignment */
403*3cc25752SFrank Piva cl_long b = a;
404*3cc25752SFrank Piva cl_long2 b2 = a2;
405*3cc25752SFrank Piva cl_long4 b4 = a4;
406*3cc25752SFrank Piva cl_long8 b8 = a8;
407*3cc25752SFrank Piva cl_long16 b16 = a16;
408*3cc25752SFrank Piva
409*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
410*3cc25752SFrank Piva printf("b: %" PRId64 "\n", b );
411*3cc25752SFrank Piva printf("b2: %" PRId64 " %" PRId64 " \n", b2.s[0], b2.s[1] );
412*3cc25752SFrank Piva printf("b4: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 "\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
413*3cc25752SFrank Piva printf("b8: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 "\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
414*3cc25752SFrank Piva printf("b16: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 "\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
415*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
416*3cc25752SFrank Piva
417*3cc25752SFrank Piva /* vector access */
418*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
419*3cc25752SFrank Piva #if defined( __CL_LONG2__ )
420*3cc25752SFrank Piva __cl_long2 v2 = b2.v2;
421*3cc25752SFrank Piva printf("__cl_long2: %" PRId64 " %" PRId64 " \n", ((cl_long*)&v2)[0], ((cl_long*)&v2)[1] );
422*3cc25752SFrank Piva #else
423*3cc25752SFrank Piva printf( "__cl_long2 SIMD vectors not supported on this architecture.\n" );
424*3cc25752SFrank Piva #endif
425*3cc25752SFrank Piva
426*3cc25752SFrank Piva #if defined( __CL_LONG4__ )
427*3cc25752SFrank Piva __cl_long4 v4 = b4.v4;
428*3cc25752SFrank Piva printf("__cl_long4: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " \n", ((cl_long*)&v4)[0], ((cl_long*)&v4)[1], ((cl_long*)&v4)[2], ((cl_long*)&v4)[3] );
429*3cc25752SFrank Piva #else
430*3cc25752SFrank Piva printf( "__cl_long4 SIMD vectors not supported on this architecture.\n" );
431*3cc25752SFrank Piva #endif
432*3cc25752SFrank Piva
433*3cc25752SFrank Piva #if defined( __CL_LONG8__ )
434*3cc25752SFrank Piva __cl_long8 v8 = b8.v8;
435*3cc25752SFrank Piva printf("__cl_long8: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " \n", ((cl_long*)&v8)[0], ((cl_long*)&v8)[1], ((cl_long*)&v8)[2], ((cl_long*)&v8)[3], ((cl_long*)&v8)[4], ((cl_long*)&v8)[5], ((cl_long*)&v8)[6], ((cl_long*)&v8)[7] );
436*3cc25752SFrank Piva #else
437*3cc25752SFrank Piva printf( "__cl_long8 SIMD vectors not supported on this architecture.\n" );
438*3cc25752SFrank Piva #endif
439*3cc25752SFrank Piva
440*3cc25752SFrank Piva #if defined( __CL_LONG16__ )
441*3cc25752SFrank Piva __cl_long16 v16 = b16.v16;
442*3cc25752SFrank Piva printf("__cl_long16: %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " \n", ((cl_long*)&v16)[0], ((cl_long*)&v16)[1], ((cl_long*)&v16)[2], ((cl_long*)&v16)[3], ((cl_long*)&v16)[4], ((cl_long*)&v16)[5], ((cl_long*)&v16)[6], ((cl_long*)&v16)[7],
443*3cc25752SFrank Piva ((cl_long*)&v16)[8], ((cl_long*)&v16)[9], ((cl_long*)&v16)[10], ((cl_long*)&v16)[11], ((cl_long*)&v16)[12], ((cl_long*)&v16)[13], ((cl_long*)&v16)[14], ((cl_long*)&v16)[15]);
444*3cc25752SFrank Piva #else
445*3cc25752SFrank Piva printf( "__cl_long16 SIMD vectors not supported on this architecture.\n" );
446*3cc25752SFrank Piva #endif
447*3cc25752SFrank Piva
448*3cc25752SFrank Piva printf( "\n" );
449*3cc25752SFrank Piva return 0;
450*3cc25752SFrank Piva }
451*3cc25752SFrank Piva
test_ulong()452*3cc25752SFrank Piva int test_ulong()
453*3cc25752SFrank Piva {
454*3cc25752SFrank Piva /* ulong */
455*3cc25752SFrank Piva /* Constructor */
456*3cc25752SFrank Piva cl_ulong a = 0;
457*3cc25752SFrank Piva cl_ulong2 a2 = {{ 0, 1 }};
458*3cc25752SFrank Piva cl_ulong4 a4 = {{ 0, 1, 2, 3 }};
459*3cc25752SFrank Piva cl_ulong8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }};
460*3cc25752SFrank Piva cl_ulong16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }};
461*3cc25752SFrank Piva
462*3cc25752SFrank Piva /* assignment */
463*3cc25752SFrank Piva cl_ulong b = a;
464*3cc25752SFrank Piva cl_ulong2 b2 = a2;
465*3cc25752SFrank Piva cl_ulong4 b4 = a4;
466*3cc25752SFrank Piva cl_ulong8 b8 = a8;
467*3cc25752SFrank Piva cl_ulong16 b16 = a16;
468*3cc25752SFrank Piva
469*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
470*3cc25752SFrank Piva printf("b: %" PRIu64 "\n", b );
471*3cc25752SFrank Piva printf("b2: %" PRIu64 " %" PRIu64 " \n", b2.s[0], b2.s[1] );
472*3cc25752SFrank Piva printf("b4: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
473*3cc25752SFrank Piva printf("b8: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
474*3cc25752SFrank Piva printf("b16: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
475*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
476*3cc25752SFrank Piva
477*3cc25752SFrank Piva /* vector access */
478*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
479*3cc25752SFrank Piva #if defined( __CL_ULONG2__ )
480*3cc25752SFrank Piva __cl_ulong2 v2 = b2.v2;
481*3cc25752SFrank Piva printf("__cl_ulong2: %" PRIu64 " %" PRIu64 " \n", ((cl_ulong*)&v2)[0], ((cl_ulong*)&v2)[1] );
482*3cc25752SFrank Piva #else
483*3cc25752SFrank Piva printf( "__cl_ulong2 SIMD vectors not supported on this architecture.\n" );
484*3cc25752SFrank Piva #endif
485*3cc25752SFrank Piva
486*3cc25752SFrank Piva #if defined( __CL_ULONG4__ )
487*3cc25752SFrank Piva __cl_ulong4 v4 = b4.v4;
488*3cc25752SFrank Piva printf("__cl_ulong4: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " \n", ((cl_ulong*)&v4)[0], ((cl_ulong*)&v4)[1], ((cl_ulong*)&v4)[2], ((cl_ulong*)&v4)[3] );
489*3cc25752SFrank Piva #else
490*3cc25752SFrank Piva printf( "__cl_ulong4 SIMD vectors not supported on this architecture.\n" );
491*3cc25752SFrank Piva #endif
492*3cc25752SFrank Piva
493*3cc25752SFrank Piva #if defined( __CL_ULONG8__ )
494*3cc25752SFrank Piva __cl_ulong8 v8 = b8.v8;
495*3cc25752SFrank Piva printf("__cl_ulong8: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " \n", ((cl_ulong*)&v8)[0], ((cl_ulong*)&v8)[1], ((cl_ulong*)&v8)[2], ((cl_ulong*)&v8)[3], ((cl_ulong*)&v8)[4], ((cl_ulong*)&v8)[5], ((cl_ulong*)&v8)[6], ((cl_ulong*)&v8)[7] );
496*3cc25752SFrank Piva #else
497*3cc25752SFrank Piva printf( "__cl_ulong8 SIMD vectors not supported on this architecture.\n" );
498*3cc25752SFrank Piva #endif
499*3cc25752SFrank Piva
500*3cc25752SFrank Piva #if defined( __CL_ULONG16__ )
501*3cc25752SFrank Piva __cl_ulong16 v16 = b16.v16;
502*3cc25752SFrank Piva printf("__cl_ulong16: %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " \n", ((cl_ulong*)&v16)[0], ((cl_ulong*)&v16)[1], ((cl_ulong*)&v16)[2], ((cl_ulong*)&v16)[3], ((cl_ulong*)&v16)[4], ((cl_ulong*)&v16)[5], ((cl_ulong*)&v16)[6], ((cl_ulong*)&v16)[7],
503*3cc25752SFrank Piva ((cl_ulong*)&v16)[8], ((cl_ulong*)&v16)[9], ((cl_ulong*)&v16)[10], ((cl_ulong*)&v16)[11], ((cl_ulong*)&v16)[12], ((cl_ulong*)&v16)[13], ((cl_ulong*)&v16)[14], ((cl_ulong*)&v16)[15]);
504*3cc25752SFrank Piva #else
505*3cc25752SFrank Piva printf( "__cl_ulong16 SIMD vectors not supported on this architecture.\n" );
506*3cc25752SFrank Piva #endif
507*3cc25752SFrank Piva
508*3cc25752SFrank Piva printf( "\n" );
509*3cc25752SFrank Piva return 0;
510*3cc25752SFrank Piva }
511*3cc25752SFrank Piva
test_float()512*3cc25752SFrank Piva int test_float()
513*3cc25752SFrank Piva {
514*3cc25752SFrank Piva /* float */
515*3cc25752SFrank Piva /* Constructor */
516*3cc25752SFrank Piva cl_float a = 0.0f;
517*3cc25752SFrank Piva cl_float2 a2 = {{ 0.0f, 1.0f }};
518*3cc25752SFrank Piva cl_float4 a4 = {{ 0.0f, 1.0f, 2.0f, 3.0f }};
519*3cc25752SFrank Piva cl_float8 a8 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }};
520*3cc25752SFrank Piva cl_float16 a16 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }};
521*3cc25752SFrank Piva
522*3cc25752SFrank Piva /* assignment */
523*3cc25752SFrank Piva cl_float b = a;
524*3cc25752SFrank Piva cl_float2 b2 = a2;
525*3cc25752SFrank Piva cl_float4 b4 = a4;
526*3cc25752SFrank Piva cl_float8 b8 = a8;
527*3cc25752SFrank Piva cl_float16 b16 = a16;
528*3cc25752SFrank Piva
529*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
530*3cc25752SFrank Piva printf("b: %f\n", b );
531*3cc25752SFrank Piva printf("b2: %f %f \n", b2.s[0], b2.s[1] );
532*3cc25752SFrank Piva printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
533*3cc25752SFrank Piva printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
534*3cc25752SFrank Piva printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
535*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
536*3cc25752SFrank Piva
537*3cc25752SFrank Piva /* vector access */
538*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
539*3cc25752SFrank Piva #if defined( __CL_FLOAT2__ )
540*3cc25752SFrank Piva __cl_float2 v2 = b2.v2;
541*3cc25752SFrank Piva printf("__cl_float2: %f %f \n", ((cl_float*)&v2)[0], ((cl_float*)&v2)[1] );
542*3cc25752SFrank Piva #else
543*3cc25752SFrank Piva printf( "__cl_float2 SIMD vectors not supported on this architecture.\n" );
544*3cc25752SFrank Piva #endif
545*3cc25752SFrank Piva
546*3cc25752SFrank Piva #if defined( __CL_FLOAT4__ )
547*3cc25752SFrank Piva {
548*3cc25752SFrank Piva __cl_float4 v4 = b4.v4;
549*3cc25752SFrank Piva printf("__cl_float4: %f %f %f %f \n", ((cl_float*)&v4)[0], ((cl_float*)&v4)[1], ((cl_float*)&v4)[2], ((cl_float*)&v4)[3] );
550*3cc25752SFrank Piva }
551*3cc25752SFrank Piva #else
552*3cc25752SFrank Piva printf( "__cl_float4 SIMD vectors not supported on this architecture.\n" );
553*3cc25752SFrank Piva #endif
554*3cc25752SFrank Piva
555*3cc25752SFrank Piva #if defined( __CL_FLOAT8__ )
556*3cc25752SFrank Piva __cl_float8 v8 = b8.v8;
557*3cc25752SFrank Piva printf("__cl_float8: %f %f %f %f %f %f %f %f \n", ((cl_float*)&v8)[0], ((cl_float*)&v8)[1], ((cl_float*)&v8)[2], ((cl_float*)&v8)[3], ((cl_float*)&v8)[4], ((cl_float*)&v8)[5], ((cl_float*)&v8)[6], ((cl_float*)&v8)[7] );
558*3cc25752SFrank Piva #else
559*3cc25752SFrank Piva printf( "__cl_float8 SIMD vectors not supported on this architecture.\n" );
560*3cc25752SFrank Piva #endif
561*3cc25752SFrank Piva
562*3cc25752SFrank Piva #if defined( __CL_FLOAT16__ )
563*3cc25752SFrank Piva __cl_float16 v16 = b16.v16;
564*3cc25752SFrank Piva printf("__cl_float16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_float*)&v16)[0], ((cl_float*)&v16)[1], ((cl_float*)&v16)[2], ((cl_float*)&v16)[3], ((cl_float*)&v16)[4], ((cl_float*)&v16)[5], ((cl_float*)&v16)[6], ((cl_float*)&v16)[7],
565*3cc25752SFrank Piva ((cl_float*)&v16)[8], ((cl_float*)&v16)[9], ((cl_float*)&v16)[10], ((cl_float*)&v16)[11], ((cl_float*)&v16)[12], ((cl_float*)&v16)[13], ((cl_float*)&v16)[14], ((cl_float*)&v16)[15]);
566*3cc25752SFrank Piva #else
567*3cc25752SFrank Piva printf( "__cl_float16 SIMD vectors not supported on this architecture.\n" );
568*3cc25752SFrank Piva #endif
569*3cc25752SFrank Piva
570*3cc25752SFrank Piva printf( "\n" );
571*3cc25752SFrank Piva return 0;
572*3cc25752SFrank Piva }
573*3cc25752SFrank Piva
test_double()574*3cc25752SFrank Piva int test_double()
575*3cc25752SFrank Piva {
576*3cc25752SFrank Piva /* double */
577*3cc25752SFrank Piva /* Constructor */
578*3cc25752SFrank Piva cl_double a = 0.0f;
579*3cc25752SFrank Piva cl_double2 a2 = {{ 0.0f, 1.0f }};
580*3cc25752SFrank Piva cl_double4 a4 = {{ 0.0f, 1.0f, 2.0f, 3.0f }};
581*3cc25752SFrank Piva cl_double8 a8 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }};
582*3cc25752SFrank Piva cl_double16 a16 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }};
583*3cc25752SFrank Piva
584*3cc25752SFrank Piva /* assignment */
585*3cc25752SFrank Piva cl_double b = a;
586*3cc25752SFrank Piva cl_double2 b2 = a2;
587*3cc25752SFrank Piva cl_double4 b4 = a4;
588*3cc25752SFrank Piva cl_double8 b8 = a8;
589*3cc25752SFrank Piva cl_double16 b16 = a16;
590*3cc25752SFrank Piva
591*3cc25752SFrank Piva printf("\nVerifying assignment:\n" );
592*3cc25752SFrank Piva printf("b: %f\n", b );
593*3cc25752SFrank Piva printf("b2: %f %f \n", b2.s[0], b2.s[1] );
594*3cc25752SFrank Piva printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] );
595*3cc25752SFrank Piva printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] );
596*3cc25752SFrank Piva printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7],
597*3cc25752SFrank Piva b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]);
598*3cc25752SFrank Piva
599*3cc25752SFrank Piva /* vector access */
600*3cc25752SFrank Piva printf("\nVerifying vector access:\n" );
601*3cc25752SFrank Piva #if defined( __CL_DOUBLE2__ )
602*3cc25752SFrank Piva __cl_double2 v2 = b2.v2;
603*3cc25752SFrank Piva printf("__cl_double2: %f %f \n", ((cl_double*)&v2)[0], ((cl_double*)&v2)[1] );
604*3cc25752SFrank Piva #else
605*3cc25752SFrank Piva printf( "__cl_double2 SIMD vectors not supported on this architecture.\n" );
606*3cc25752SFrank Piva #endif
607*3cc25752SFrank Piva
608*3cc25752SFrank Piva #if defined( __CL_DOUBLE4__ )
609*3cc25752SFrank Piva __cl_double4 v4 = b4.v4;
610*3cc25752SFrank Piva printf("__cl_double4: %f %f %f %f \n", ((cl_double*)&v4)[0], ((cl_double*)&v4)[1], ((cl_double*)&v4)[2], ((cl_double*)&v4)[3] );
611*3cc25752SFrank Piva #else
612*3cc25752SFrank Piva printf( "__cl_double4 SIMD vectors not supported on this architecture.\n" );
613*3cc25752SFrank Piva #endif
614*3cc25752SFrank Piva
615*3cc25752SFrank Piva #if defined( __CL_DOUBLE8__ )
616*3cc25752SFrank Piva __cl_double8 v8 = b8.v8;
617*3cc25752SFrank Piva printf("__cl_double8: %f %f %f %f %f %f %f %f \n", ((cl_double*)&v8)[0], ((cl_double*)&v8)[1], ((cl_double*)&v8)[2], ((cl_double*)&v8)[3], ((cl_double*)&v8)[4], ((cl_double*)&v8)[5], ((cl_double*)&v8)[6], ((cl_double*)&v8)[7] );
618*3cc25752SFrank Piva #else
619*3cc25752SFrank Piva printf( "__cl_double8 SIMD vectors not supported on this architecture.\n" );
620*3cc25752SFrank Piva #endif
621*3cc25752SFrank Piva
622*3cc25752SFrank Piva #if defined( __CL_DOUBLE16__ )
623*3cc25752SFrank Piva __cl_double16 v16 = b16.v16;
624*3cc25752SFrank Piva printf("__cl_double16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_double*)&v16)[0], ((cl_double*)&v16)[1], ((cl_double*)&v16)[2], ((cl_double*)&v16)[3], ((cl_double*)&v16)[4], ((cl_double*)&v16)[5], ((cl_double*)&v16)[6], ((cl_double*)&v16)[7],
625*3cc25752SFrank Piva ((cl_double*)&v16)[8], ((cl_double*)&v16)[9], ((cl_double*)&v16)[10], ((cl_double*)&v16)[11], ((cl_double*)&v16)[12], ((cl_double*)&v16)[13], ((cl_double*)&v16)[14], ((cl_double*)&v16)[15]);
626*3cc25752SFrank Piva #else
627*3cc25752SFrank Piva printf( "__cl_double16 SIMD vectors not supported on this architecture.\n" );
628*3cc25752SFrank Piva #endif
629*3cc25752SFrank Piva
630*3cc25752SFrank Piva printf( "\n" );
631*3cc25752SFrank Piva return 0;
632*3cc25752SFrank Piva }
633*3cc25752SFrank Piva
main(void)634*3cc25752SFrank Piva int main(void)
635*3cc25752SFrank Piva {
636*3cc25752SFrank Piva printf( "\nChecking operations on cl_types.\nNumbers, where presented, should walk upward from 0, with step of 1:\n" );
637*3cc25752SFrank Piva
638*3cc25752SFrank Piva test_char();
639*3cc25752SFrank Piva test_uchar();
640*3cc25752SFrank Piva test_short();
641*3cc25752SFrank Piva test_ushort();
642*3cc25752SFrank Piva test_long();
643*3cc25752SFrank Piva test_ulong();
644*3cc25752SFrank Piva test_float();
645*3cc25752SFrank Piva test_double();
646*3cc25752SFrank Piva
647*3cc25752SFrank Piva return 0;
648*3cc25752SFrank Piva }
649