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