xref: /illumos-gate/usr/src/tools/smatch/src/validation/optim/cast-kinds.c (revision 74e12c43fe52f2c30f36e65a4d0fb0e8dfd7068a)
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  */
399