1 typedef unsigned int uint;
2 typedef unsigned long ulong;
3
4 static int uint_2_int(uint a) { return (int)a; }
5 static int long_2_int(long a) { return (int)a; }
6 static int ulong_2_int(ulong a) { return (int)a; }
7 static int vptr_2_int(void *a) { return (int)a; }
8 static int iptr_2_int(int *a) { return (int)a; }
9 static int float_2_int(float a) { return (int)a; }
10 static int double_2_int(double a) { return (int)a; }
11 static uint int_2_uint(int a) { return (uint)a; }
12 static uint long_2_uint(long a) { return (uint)a; }
13 static uint ulong_2_uint(ulong a) { return (uint)a; }
14 static uint vptr_2_uint(void *a) { return (uint)a; }
15 static uint iptr_2_uint(int *a) { return (uint)a; }
16 static uint float_2_uint(float a) { return (uint)a; }
17 static uint double_2_uint(double a) { return (uint)a; }
18 static long int_2_long(int a) { return (long)a; }
19 static long uint_2_long(uint a) { return (long)a; }
20 static long ulong_2_long(ulong a) { return (long)a; }
21 static long vptr_2_long(void *a) { return (long)a; }
22 static long iptr_2_long(int *a) { return (long)a; }
23 static long float_2_long(float a) { return (long)a; }
24 static long double_2_long(double a) { return (long)a; }
25 static ulong int_2_ulong(int a) { return (ulong)a; }
26 static ulong uint_2_ulong(uint a) { return (ulong)a; }
27 static ulong long_2_ulong(long a) { return (ulong)a; }
28 static ulong vptr_2_ulong(void *a) { return (ulong)a; }
29 static ulong iptr_2_ulong(int *a) { return (ulong)a; }
30 static ulong float_2_ulong(float a) { return (ulong)a; }
31 static ulong double_2_ulong(double a) { return (ulong)a; }
32 static void * int_2_vptr(int a) { return (void *)a; }
33 static void * uint_2_vptr(uint a) { return (void *)a; }
34 static void * long_2_vptr(long a) { return (void *)a; }
35 static void * ulong_2_vptr(ulong a) { return (void *)a; }
36 static void * iptr_2_vptr(int *a) { return (void *)a; }
37 static int * int_2_iptr(int a) { return (int *)a; }
38 static int * uint_2_iptr(uint a) { return (int *)a; }
39 static int * long_2_iptr(long a) { return (int *)a; }
40 static int * ulong_2_iptr(ulong a) { return (int *)a; }
41 static int * vptr_2_iptr(void *a) { return (int *)a; }
42 static float int_2_float(int a) { return (float)a; }
43 static float uint_2_float(uint a) { return (float)a; }
44 static float long_2_float(long a) { return (float)a; }
45 static float ulong_2_float(ulong a) { return (float)a; }
46 static float double_2_float(double a) { return (float)a; }
47 static double int_2_double(int a) { return (double)a; }
48 static double uint_2_double(uint a) { return (double)a; }
49 static double long_2_double(long a) { return (double)a; }
50 static double ulong_2_double(ulong a) { return (double)a; }
51 static double float_2_double(float a) { return (double)a; }
52
53 static float float_2_float(float a) { return a; }
54 static double double_2_double(double a) { return a; }
55
56 /*
57 * check-name: cast-kinds
58 * check-command: test-linearize -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -m64 $file
59 * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8
60 *
61 * check-output-start
62 uint_2_int:
63 .L0:
64 <entry-point>
65 ret.32 %arg1
66
67
68 long_2_int:
69 .L2:
70 <entry-point>
71 trunc.32 %r4 <- (64) %arg1
72 ret.32 %r4
73
74
75 ulong_2_int:
76 .L4:
77 <entry-point>
78 trunc.32 %r7 <- (64) %arg1
79 ret.32 %r7
80
81
82 vptr_2_int:
83 .L6:
84 <entry-point>
85 trunc.32 %r10 <- (64) %arg1
86 ret.32 %r10
87
88
89 iptr_2_int:
90 .L8:
91 <entry-point>
92 trunc.32 %r14 <- (64) %arg1
93 ret.32 %r14
94
95
96 float_2_int:
97 .L10:
98 <entry-point>
99 fcvts.32 %r17 <- (32) %arg1
100 ret.32 %r17
101
102
103 double_2_int:
104 .L12:
105 <entry-point>
106 fcvts.32 %r20 <- (64) %arg1
107 ret.32 %r20
108
109
110 int_2_uint:
111 .L14:
112 <entry-point>
113 ret.32 %arg1
114
115
116 long_2_uint:
117 .L16:
118 <entry-point>
119 trunc.32 %r25 <- (64) %arg1
120 ret.32 %r25
121
122
123 ulong_2_uint:
124 .L18:
125 <entry-point>
126 trunc.32 %r28 <- (64) %arg1
127 ret.32 %r28
128
129
130 vptr_2_uint:
131 .L20:
132 <entry-point>
133 trunc.32 %r31 <- (64) %arg1
134 ret.32 %r31
135
136
137 iptr_2_uint:
138 .L22:
139 <entry-point>
140 trunc.32 %r35 <- (64) %arg1
141 ret.32 %r35
142
143
144 float_2_uint:
145 .L24:
146 <entry-point>
147 fcvtu.32 %r38 <- (32) %arg1
148 ret.32 %r38
149
150
151 double_2_uint:
152 .L26:
153 <entry-point>
154 fcvtu.32 %r41 <- (64) %arg1
155 ret.32 %r41
156
157
158 int_2_long:
159 .L28:
160 <entry-point>
161 sext.64 %r44 <- (32) %arg1
162 ret.64 %r44
163
164
165 uint_2_long:
166 .L30:
167 <entry-point>
168 zext.64 %r47 <- (32) %arg1
169 ret.64 %r47
170
171
172 ulong_2_long:
173 .L32:
174 <entry-point>
175 ret.64 %arg1
176
177
178 vptr_2_long:
179 .L34:
180 <entry-point>
181 ret.64 %arg1
182
183
184 iptr_2_long:
185 .L36:
186 <entry-point>
187 ret.64 %arg1
188
189
190 float_2_long:
191 .L38:
192 <entry-point>
193 fcvts.64 %r57 <- (32) %arg1
194 ret.64 %r57
195
196
197 double_2_long:
198 .L40:
199 <entry-point>
200 fcvts.64 %r60 <- (64) %arg1
201 ret.64 %r60
202
203
204 int_2_ulong:
205 .L42:
206 <entry-point>
207 sext.64 %r63 <- (32) %arg1
208 ret.64 %r63
209
210
211 uint_2_ulong:
212 .L44:
213 <entry-point>
214 zext.64 %r66 <- (32) %arg1
215 ret.64 %r66
216
217
218 long_2_ulong:
219 .L46:
220 <entry-point>
221 ret.64 %arg1
222
223
224 vptr_2_ulong:
225 .L48:
226 <entry-point>
227 ret.64 %arg1
228
229
230 iptr_2_ulong:
231 .L50:
232 <entry-point>
233 ret.64 %arg1
234
235
236 float_2_ulong:
237 .L52:
238 <entry-point>
239 fcvtu.64 %r76 <- (32) %arg1
240 ret.64 %r76
241
242
243 double_2_ulong:
244 .L54:
245 <entry-point>
246 fcvtu.64 %r79 <- (64) %arg1
247 ret.64 %r79
248
249
250 int_2_vptr:
251 .L56:
252 <entry-point>
253 sext.64 %r82 <- (32) %arg1
254 ret.64 %r82
255
256
257 uint_2_vptr:
258 .L58:
259 <entry-point>
260 zext.64 %r85 <- (32) %arg1
261 ret.64 %r85
262
263
264 long_2_vptr:
265 .L60:
266 <entry-point>
267 ret.64 %arg1
268
269
270 ulong_2_vptr:
271 .L62:
272 <entry-point>
273 ret.64 %arg1
274
275
276 iptr_2_vptr:
277 .L64:
278 <entry-point>
279 ret.64 %arg1
280
281
282 int_2_iptr:
283 .L66:
284 <entry-point>
285 sext.64 %r94 <- (32) %arg1
286 ret.64 %r94
287
288
289 uint_2_iptr:
290 .L68:
291 <entry-point>
292 zext.64 %r98 <- (32) %arg1
293 ret.64 %r98
294
295
296 long_2_iptr:
297 .L70:
298 <entry-point>
299 ret.64 %arg1
300
301
302 ulong_2_iptr:
303 .L72:
304 <entry-point>
305 ret.64 %arg1
306
307
308 vptr_2_iptr:
309 .L74:
310 <entry-point>
311 ptrcast.64 %r108 <- (64) %arg1
312 ret.64 %r108
313
314
315 int_2_float:
316 .L76:
317 <entry-point>
318 scvtf.32 %r111 <- (32) %arg1
319 ret.32 %r111
320
321
322 uint_2_float:
323 .L78:
324 <entry-point>
325 ucvtf.32 %r114 <- (32) %arg1
326 ret.32 %r114
327
328
329 long_2_float:
330 .L80:
331 <entry-point>
332 scvtf.32 %r117 <- (64) %arg1
333 ret.32 %r117
334
335
336 ulong_2_float:
337 .L82:
338 <entry-point>
339 ucvtf.32 %r120 <- (64) %arg1
340 ret.32 %r120
341
342
343 double_2_float:
344 .L84:
345 <entry-point>
346 fcvtf.32 %r123 <- (64) %arg1
347 ret.32 %r123
348
349
350 int_2_double:
351 .L86:
352 <entry-point>
353 scvtf.64 %r126 <- (32) %arg1
354 ret.64 %r126
355
356
357 uint_2_double:
358 .L88:
359 <entry-point>
360 ucvtf.64 %r129 <- (32) %arg1
361 ret.64 %r129
362
363
364 long_2_double:
365 .L90:
366 <entry-point>
367 scvtf.64 %r132 <- (64) %arg1
368 ret.64 %r132
369
370
371 ulong_2_double:
372 .L92:
373 <entry-point>
374 ucvtf.64 %r135 <- (64) %arg1
375 ret.64 %r135
376
377
378 float_2_double:
379 .L94:
380 <entry-point>
381 fcvtf.64 %r138 <- (32) %arg1
382 ret.64 %r138
383
384
385 float_2_float:
386 .L96:
387 <entry-point>
388 ret.32 %arg1
389
390
391 double_2_double:
392 .L98:
393 <entry-point>
394 ret.64 %arg1
395
396
397 * check-output-end
398 */