1 ; Tests if we can read cast operations. 2 3 ; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s 4 ; RUN: %p2i -i %s --args -notranslate -timing | \ 5 ; RUN: FileCheck --check-prefix=NOIR %s 6 7 ; TODO(kschimpf) Find way to test pointer conversions (since they in general 8 ; get removed by pnacl-freeze). 9 10 define internal i32 @TruncI64(i64 %v) { 11 %v1 = trunc i64 %v to i1 12 %v8 = trunc i64 %v to i8 13 %v16 = trunc i64 %v to i16 14 %v32 = trunc i64 %v to i32 15 ret i32 %v32 16 } 17 18 ; CHECK: define internal i32 @TruncI64(i64 %__0) { 19 ; CHECK-NEXT: __0: 20 ; CHECK-NEXT: %__1 = trunc i64 %__0 to i1 21 ; CHECK-NEXT: %__2 = trunc i64 %__0 to i8 22 ; CHECK-NEXT: %__3 = trunc i64 %__0 to i16 23 ; CHECK-NEXT: %__4 = trunc i64 %__0 to i32 24 ; CHECK-NEXT: ret i32 %__4 25 ; CHECK-NEXT: } 26 27 define internal void @TruncI32(i32 %v) { 28 %v1 = trunc i32 %v to i1 29 %v8 = trunc i32 %v to i8 30 %v16 = trunc i32 %v to i16 31 ret void 32 } 33 34 ; CHECK-NEXT: define internal void @TruncI32(i32 %__0) { 35 ; CHECK-NEXT: __0: 36 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1 37 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i8 38 ; CHECK-NEXT: %__3 = trunc i32 %__0 to i16 39 ; CHECK-NEXT: ret void 40 ; CHECK-NEXT: } 41 42 define internal void @TruncI16(i32 %p) { 43 %v = trunc i32 %p to i16 44 %v1 = trunc i16 %v to i1 45 %v8 = trunc i16 %v to i8 46 ret void 47 } 48 49 ; CHECK-NEXT: define internal void @TruncI16(i32 %__0) { 50 ; CHECK-NEXT: __0: 51 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16 52 ; CHECK-NEXT: %__2 = trunc i16 %__1 to i1 53 ; CHECK-NEXT: %__3 = trunc i16 %__1 to i8 54 ; CHECK-NEXT: ret void 55 ; CHECK-NEXT: } 56 57 define internal void @TruncI8(i32 %p) { 58 %v = trunc i32 %p to i8 59 %v1 = trunc i8 %v to i1 60 ret void 61 } 62 63 ; CHECK-NEXT: define internal void @TruncI8(i32 %__0) { 64 ; CHECK-NEXT: __0: 65 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8 66 ; CHECK-NEXT: %__2 = trunc i8 %__1 to i1 67 ; CHECK-NEXT: ret void 68 ; CHECK-NEXT: } 69 70 define internal i64 @ZextI1(i32 %p) { 71 %v = trunc i32 %p to i1 72 %v8 = zext i1 %v to i8 73 %v16 = zext i1 %v to i16 74 %v32 = zext i1 %v to i32 75 %v64 = zext i1 %v to i64 76 ret i64 %v64 77 } 78 79 ; CHECK-NEXT: define internal i64 @ZextI1(i32 %__0) { 80 ; CHECK-NEXT: __0: 81 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1 82 ; CHECK-NEXT: %__2 = zext i1 %__1 to i8 83 ; CHECK-NEXT: %__3 = zext i1 %__1 to i16 84 ; CHECK-NEXT: %__4 = zext i1 %__1 to i32 85 ; CHECK-NEXT: %__5 = zext i1 %__1 to i64 86 ; CHECK-NEXT: ret i64 %__5 87 ; CHECK-NEXT: } 88 89 define internal i32 @ZextI8(i32 %p) { 90 %v = trunc i32 %p to i8 91 %v16 = zext i8 %v to i16 92 %v32 = zext i8 %v to i32 93 %v64 = zext i8 %v to i64 94 ret i32 %v32 95 } 96 97 ; CHECK-NEXT: define internal i32 @ZextI8(i32 %__0) { 98 ; CHECK-NEXT: __0: 99 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8 100 ; CHECK-NEXT: %__2 = zext i8 %__1 to i16 101 ; CHECK-NEXT: %__3 = zext i8 %__1 to i32 102 ; CHECK-NEXT: %__4 = zext i8 %__1 to i64 103 ; CHECK-NEXT: ret i32 %__3 104 ; CHECK-NEXT: } 105 106 define internal i64 @ZextI16(i32 %p) { 107 %v = trunc i32 %p to i16 108 %v32 = zext i16 %v to i32 109 %v64 = zext i16 %v to i64 110 ret i64 %v64 111 } 112 113 ; CHECK-NEXT: define internal i64 @ZextI16(i32 %__0) { 114 ; CHECK-NEXT: __0: 115 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16 116 ; CHECK-NEXT: %__2 = zext i16 %__1 to i32 117 ; CHECK-NEXT: %__3 = zext i16 %__1 to i64 118 ; CHECK-NEXT: ret i64 %__3 119 ; CHECK-NEXT: } 120 121 define internal i64 @Zexti32(i32 %v) { 122 %v64 = zext i32 %v to i64 123 ret i64 %v64 124 } 125 126 ; CHECK-NEXT: define internal i64 @Zexti32(i32 %__0) { 127 ; CHECK-NEXT: __0: 128 ; CHECK-NEXT: %__1 = zext i32 %__0 to i64 129 ; CHECK-NEXT: ret i64 %__1 130 ; CHECK-NEXT: } 131 132 define internal i32 @SextI1(i32 %p) { 133 %v = trunc i32 %p to i1 134 %v8 = sext i1 %v to i8 135 %v16 = sext i1 %v to i16 136 %v32 = sext i1 %v to i32 137 %v64 = sext i1 %v to i64 138 ret i32 %v32 139 } 140 141 ; CHECK-NEXT: define internal i32 @SextI1(i32 %__0) { 142 ; CHECK-NEXT: __0: 143 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1 144 ; CHECK-NEXT: %__2 = sext i1 %__1 to i8 145 ; CHECK-NEXT: %__3 = sext i1 %__1 to i16 146 ; CHECK-NEXT: %__4 = sext i1 %__1 to i32 147 ; CHECK-NEXT: %__5 = sext i1 %__1 to i64 148 ; CHECK-NEXT: ret i32 %__4 149 ; CHECK-NEXT: } 150 151 define internal i64 @SextI8(i32 %p) { 152 %v = trunc i32 %p to i8 153 %v16 = sext i8 %v to i16 154 %v32 = sext i8 %v to i32 155 %v64 = sext i8 %v to i64 156 ret i64 %v64 157 } 158 159 ; CHECK-NEXT: define internal i64 @SextI8(i32 %__0) { 160 ; CHECK-NEXT: __0: 161 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8 162 ; CHECK-NEXT: %__2 = sext i8 %__1 to i16 163 ; CHECK-NEXT: %__3 = sext i8 %__1 to i32 164 ; CHECK-NEXT: %__4 = sext i8 %__1 to i64 165 ; CHECK-NEXT: ret i64 %__4 166 ; CHECK-NEXT: } 167 168 define internal i32 @SextI16(i32 %p) { 169 %v = trunc i32 %p to i16 170 %v32 = sext i16 %v to i32 171 %v64 = sext i16 %v to i64 172 ret i32 %v32 173 } 174 175 ; CHECK-NEXT: define internal i32 @SextI16(i32 %__0) { 176 ; CHECK-NEXT: __0: 177 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16 178 ; CHECK-NEXT: %__2 = sext i16 %__1 to i32 179 ; CHECK-NEXT: %__3 = sext i16 %__1 to i64 180 ; CHECK-NEXT: ret i32 %__2 181 ; CHECK-NEXT: } 182 183 define internal i64 @Sexti32(i32 %v) { 184 %v64 = sext i32 %v to i64 185 ret i64 %v64 186 } 187 188 ; CHECK-NEXT: define internal i64 @Sexti32(i32 %__0) { 189 ; CHECK-NEXT: __0: 190 ; CHECK-NEXT: %__1 = sext i32 %__0 to i64 191 ; CHECK-NEXT: ret i64 %__1 192 ; CHECK-NEXT: } 193 194 define internal float @Fptrunc(double %v) { 195 %vfloat = fptrunc double %v to float 196 ret float %vfloat 197 } 198 199 ; CHECK-NEXT: define internal float @Fptrunc(double %__0) { 200 ; CHECK-NEXT: __0: 201 ; CHECK-NEXT: %__1 = fptrunc double %__0 to float 202 ; CHECK-NEXT: ret float %__1 203 ; CHECK-NEXT: } 204 205 define internal double @Fpext(float %v) { 206 %vdouble = fpext float %v to double 207 ret double %vdouble 208 } 209 210 ; CHECK-NEXT: define internal double @Fpext(float %__0) { 211 ; CHECK-NEXT: __0: 212 ; CHECK-NEXT: %__1 = fpext float %__0 to double 213 ; CHECK-NEXT: ret double %__1 214 ; CHECK-NEXT: } 215 216 define internal i32 @FptouiFloat(float %v) { 217 %v1 = fptoui float %v to i1 218 %v8 = fptoui float %v to i8 219 %v16 = fptoui float %v to i16 220 %v32 = fptoui float %v to i32 221 %v64 = fptoui float %v to i64 222 ret i32 %v32 223 } 224 225 ; CHECK-NEXT: define internal i32 @FptouiFloat(float %__0) { 226 ; CHECK-NEXT: __0: 227 ; CHECK-NEXT: %__1 = fptoui float %__0 to i1 228 ; CHECK-NEXT: %__2 = fptoui float %__0 to i8 229 ; CHECK-NEXT: %__3 = fptoui float %__0 to i16 230 ; CHECK-NEXT: %__4 = fptoui float %__0 to i32 231 ; CHECK-NEXT: %__5 = fptoui float %__0 to i64 232 ; CHECK-NEXT: ret i32 %__4 233 ; CHECK-NEXT: } 234 235 define internal i32 @FptouiDouble(double %v) { 236 %v1 = fptoui double %v to i1 237 %v8 = fptoui double %v to i8 238 %v16 = fptoui double %v to i16 239 %v32 = fptoui double %v to i32 240 %v64 = fptoui double %v to i64 241 ret i32 %v32 242 } 243 244 ; CHECK-NEXT: define internal i32 @FptouiDouble(double %__0) { 245 ; CHECK-NEXT: __0: 246 ; CHECK-NEXT: %__1 = fptoui double %__0 to i1 247 ; CHECK-NEXT: %__2 = fptoui double %__0 to i8 248 ; CHECK-NEXT: %__3 = fptoui double %__0 to i16 249 ; CHECK-NEXT: %__4 = fptoui double %__0 to i32 250 ; CHECK-NEXT: %__5 = fptoui double %__0 to i64 251 ; CHECK-NEXT: ret i32 %__4 252 ; CHECK-NEXT: } 253 254 define internal i32 @FptosiFloat(float %v) { 255 %v1 = fptosi float %v to i1 256 %v8 = fptosi float %v to i8 257 %v16 = fptosi float %v to i16 258 %v32 = fptosi float %v to i32 259 %v64 = fptosi float %v to i64 260 ret i32 %v32 261 } 262 263 ; CHECK-NEXT: define internal i32 @FptosiFloat(float %__0) { 264 ; CHECK-NEXT: __0: 265 ; CHECK-NEXT: %__1 = fptosi float %__0 to i1 266 ; CHECK-NEXT: %__2 = fptosi float %__0 to i8 267 ; CHECK-NEXT: %__3 = fptosi float %__0 to i16 268 ; CHECK-NEXT: %__4 = fptosi float %__0 to i32 269 ; CHECK-NEXT: %__5 = fptosi float %__0 to i64 270 ; CHECK-NEXT: ret i32 %__4 271 ; CHECK-NEXT: } 272 273 define internal i32 @FptosiDouble(double %v) { 274 %v1 = fptosi double %v to i1 275 %v8 = fptosi double %v to i8 276 %v16 = fptosi double %v to i16 277 %v32 = fptosi double %v to i32 278 %v64 = fptosi double %v to i64 279 ret i32 %v32 280 } 281 282 ; CHECK-NEXT: define internal i32 @FptosiDouble(double %__0) { 283 ; CHECK-NEXT: __0: 284 ; CHECK-NEXT: %__1 = fptosi double %__0 to i1 285 ; CHECK-NEXT: %__2 = fptosi double %__0 to i8 286 ; CHECK-NEXT: %__3 = fptosi double %__0 to i16 287 ; CHECK-NEXT: %__4 = fptosi double %__0 to i32 288 ; CHECK-NEXT: %__5 = fptosi double %__0 to i64 289 ; CHECK-NEXT: ret i32 %__4 290 ; CHECK-NEXT: } 291 292 define internal float @UitofpI1(i32 %p) { 293 %v = trunc i32 %p to i1 294 %vfloat = uitofp i1 %v to float 295 %vdouble = uitofp i1 %v to double 296 ret float %vfloat 297 } 298 299 ; CHECK-NEXT: define internal float @UitofpI1(i32 %__0) { 300 ; CHECK-NEXT: __0: 301 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1 302 ; CHECK-NEXT: %__2 = uitofp i1 %__1 to float 303 ; CHECK-NEXT: %__3 = uitofp i1 %__1 to double 304 ; CHECK-NEXT: ret float %__2 305 ; CHECK-NEXT: } 306 307 define internal float @UitofpI8(i32 %p) { 308 %v = trunc i32 %p to i8 309 %vfloat = uitofp i8 %v to float 310 %vdouble = uitofp i8 %v to double 311 ret float %vfloat 312 } 313 314 ; CHECK-NEXT: define internal float @UitofpI8(i32 %__0) { 315 ; CHECK-NEXT: __0: 316 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8 317 ; CHECK-NEXT: %__2 = uitofp i8 %__1 to float 318 ; CHECK-NEXT: %__3 = uitofp i8 %__1 to double 319 ; CHECK-NEXT: ret float %__2 320 ; CHECK-NEXT: } 321 322 define internal float @UitofpI16(i32 %p) { 323 %v = trunc i32 %p to i16 324 %vfloat = uitofp i16 %v to float 325 %vdouble = uitofp i16 %v to double 326 ret float %vfloat 327 } 328 329 ; CHECK-NEXT: define internal float @UitofpI16(i32 %__0) { 330 ; CHECK-NEXT: __0: 331 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16 332 ; CHECK-NEXT: %__2 = uitofp i16 %__1 to float 333 ; CHECK-NEXT: %__3 = uitofp i16 %__1 to double 334 ; CHECK-NEXT: ret float %__2 335 ; CHECK-NEXT: } 336 337 define internal float @UitofpI32(i32 %v) { 338 %vfloat = uitofp i32 %v to float 339 %vdouble = uitofp i32 %v to double 340 ret float %vfloat 341 } 342 343 ; CHECK-NEXT: define internal float @UitofpI32(i32 %__0) { 344 ; CHECK-NEXT: __0: 345 ; CHECK-NEXT: %__1 = uitofp i32 %__0 to float 346 ; CHECK-NEXT: %__2 = uitofp i32 %__0 to double 347 ; CHECK-NEXT: ret float %__1 348 ; CHECK-NEXT: } 349 350 define internal float @UitofpI64(i64 %v) { 351 %vfloat = uitofp i64 %v to float 352 %vdouble = uitofp i64 %v to double 353 ret float %vfloat 354 } 355 356 ; CHECK-NEXT: define internal float @UitofpI64(i64 %__0) { 357 ; CHECK-NEXT: __0: 358 ; CHECK-NEXT: %__1 = uitofp i64 %__0 to float 359 ; CHECK-NEXT: %__2 = uitofp i64 %__0 to double 360 ; CHECK-NEXT: ret float %__1 361 ; CHECK-NEXT: } 362 363 define internal float @SitofpI1(i32 %p) { 364 %v = trunc i32 %p to i1 365 %vfloat = sitofp i1 %v to float 366 %vdouble = sitofp i1 %v to double 367 ret float %vfloat 368 } 369 370 ; CHECK-NEXT: define internal float @SitofpI1(i32 %__0) { 371 ; CHECK-NEXT: __0: 372 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1 373 ; CHECK-NEXT: %__2 = sitofp i1 %__1 to float 374 ; CHECK-NEXT: %__3 = sitofp i1 %__1 to double 375 ; CHECK-NEXT: ret float %__2 376 ; CHECK-NEXT: } 377 378 define internal float @SitofpI8(i32 %p) { 379 %v = trunc i32 %p to i8 380 %vfloat = sitofp i8 %v to float 381 %vdouble = sitofp i8 %v to double 382 ret float %vfloat 383 } 384 385 ; CHECK-NEXT: define internal float @SitofpI8(i32 %__0) { 386 ; CHECK-NEXT: __0: 387 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8 388 ; CHECK-NEXT: %__2 = sitofp i8 %__1 to float 389 ; CHECK-NEXT: %__3 = sitofp i8 %__1 to double 390 ; CHECK-NEXT: ret float %__2 391 ; CHECK-NEXT: } 392 393 define internal float @SitofpI16(i32 %p) { 394 %v = trunc i32 %p to i16 395 %vfloat = sitofp i16 %v to float 396 %vdouble = sitofp i16 %v to double 397 ret float %vfloat 398 } 399 400 ; CHECK-NEXT: define internal float @SitofpI16(i32 %__0) { 401 ; CHECK-NEXT: __0: 402 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16 403 ; CHECK-NEXT: %__2 = sitofp i16 %__1 to float 404 ; CHECK-NEXT: %__3 = sitofp i16 %__1 to double 405 ; CHECK-NEXT: ret float %__2 406 ; CHECK-NEXT: } 407 408 define internal float @SitofpI32(i32 %v) { 409 %vfloat = sitofp i32 %v to float 410 %vdouble = sitofp i32 %v to double 411 ret float %vfloat 412 } 413 414 ; CHECK-NEXT: define internal float @SitofpI32(i32 %__0) { 415 ; CHECK-NEXT: __0: 416 ; CHECK-NEXT: %__1 = sitofp i32 %__0 to float 417 ; CHECK-NEXT: %__2 = sitofp i32 %__0 to double 418 ; CHECK-NEXT: ret float %__1 419 ; CHECK-NEXT: } 420 421 define internal float @SitofpI64(i64 %v) { 422 %vfloat = sitofp i64 %v to float 423 %vdouble = sitofp i64 %v to double 424 ret float %vfloat 425 } 426 427 ; CHECK-NEXT: define internal float @SitofpI64(i64 %__0) { 428 ; CHECK-NEXT: __0: 429 ; CHECK-NEXT: %__1 = sitofp i64 %__0 to float 430 ; CHECK-NEXT: %__2 = sitofp i64 %__0 to double 431 ; CHECK-NEXT: ret float %__1 432 ; CHECK-NEXT: } 433 434 define internal float @BitcastI32(i32 %v) { 435 %vfloat = bitcast i32 %v to float 436 ret float %vfloat 437 } 438 439 ; CHECK-NEXT: define internal float @BitcastI32(i32 %__0) { 440 ; CHECK-NEXT: __0: 441 ; CHECK-NEXT: %__1 = bitcast i32 %__0 to float 442 ; CHECK-NEXT: ret float %__1 443 ; CHECK-NEXT: } 444 445 define internal double @BitcastI64(i64 %v) { 446 %vdouble = bitcast i64 %v to double 447 ret double %vdouble 448 } 449 450 ; CHECK-NEXT: define internal double @BitcastI64(i64 %__0) { 451 ; CHECK-NEXT: __0: 452 ; CHECK-NEXT: %__1 = bitcast i64 %__0 to double 453 ; CHECK-NEXT: ret double %__1 454 ; CHECK-NEXT: } 455 456 define internal i32 @BitcastFloat(float %v) { 457 %vi32 = bitcast float %v to i32 458 ret i32 %vi32 459 } 460 461 ; CHECK-NEXT: define internal i32 @BitcastFloat(float %__0) { 462 ; CHECK-NEXT: __0: 463 ; CHECK-NEXT: %__1 = bitcast float %__0 to i32 464 ; CHECK-NEXT: ret i32 %__1 465 ; CHECK-NEXT: } 466 467 define internal i64 @BitcastDouble(double %v) { 468 %vi64 = bitcast double %v to i64 469 ret i64 %vi64 470 } 471 472 ; CHECK-NEXT: define internal i64 @BitcastDouble(double %__0) { 473 ; CHECK-NEXT: __0: 474 ; CHECK-NEXT: %__1 = bitcast double %__0 to i64 475 ; CHECK-NEXT: ret i64 %__1 476 ; CHECK-NEXT: } 477 478 define internal void @BitcastV4xFloat(<4 x float> %v) { 479 %v4xi32 = bitcast <4 x float> %v to <4 x i32> 480 %v8xi16 = bitcast <4 x float> %v to <8 x i16> 481 %v16xi8 = bitcast <4 x float> %v to <16 x i8> 482 ret void 483 } 484 485 ; CHECK-NEXT: define internal void @BitcastV4xFloat(<4 x float> %__0) { 486 ; CHECK-NEXT: __0: 487 ; CHECK-NEXT: %__1 = bitcast <4 x float> %__0 to <4 x i32> 488 ; CHECK-NEXT: %__2 = bitcast <4 x float> %__0 to <8 x i16> 489 ; CHECK-NEXT: %__3 = bitcast <4 x float> %__0 to <16 x i8> 490 ; CHECK-NEXT: ret void 491 ; CHECK-NEXT: } 492 493 define internal void @BitcastV4xi32(<4 x i32> %v) { 494 %v4xfloat = bitcast <4 x i32> %v to <4 x float> 495 %v8xi16 = bitcast <4 x i32> %v to <8 x i16> 496 %v16xi8 = bitcast <4 x i32> %v to <16 x i8> 497 ret void 498 } 499 500 ; CHECK-NEXT: define internal void @BitcastV4xi32(<4 x i32> %__0) { 501 ; CHECK-NEXT: __0: 502 ; CHECK-NEXT: %__1 = bitcast <4 x i32> %__0 to <4 x float> 503 ; CHECK-NEXT: %__2 = bitcast <4 x i32> %__0 to <8 x i16> 504 ; CHECK-NEXT: %__3 = bitcast <4 x i32> %__0 to <16 x i8> 505 ; CHECK-NEXT: ret void 506 ; CHECK-NEXT: } 507 508 define internal void @BitcastV8xi16(<8 x i16> %v) { 509 %v4xfloat = bitcast <8 x i16> %v to <4 x float> 510 %v4xi32 = bitcast <8 x i16> %v to <4 x i32> 511 %v16xi8 = bitcast <8 x i16> %v to <16 x i8> 512 ret void 513 } 514 515 ; CHECK-NEXT: define internal void @BitcastV8xi16(<8 x i16> %__0) { 516 ; CHECK-NEXT: __0: 517 ; CHECK-NEXT: %__1 = bitcast <8 x i16> %__0 to <4 x float> 518 ; CHECK-NEXT: %__2 = bitcast <8 x i16> %__0 to <4 x i32> 519 ; CHECK-NEXT: %__3 = bitcast <8 x i16> %__0 to <16 x i8> 520 ; CHECK-NEXT: ret void 521 ; CHECK-NEXT: } 522 523 define internal void @BitcastV16xi8(<16 x i8> %v) { 524 %v4xfloat = bitcast <16 x i8> %v to <4 x float> 525 %v4xi32 = bitcast <16 x i8> %v to <4 x i32> 526 %v8xi16 = bitcast <16 x i8> %v to <8 x i16> 527 ret void 528 } 529 530 ; CHECK-NEXT: define internal void @BitcastV16xi8(<16 x i8> %__0) { 531 ; CHECK-NEXT: __0: 532 ; CHECK-NEXT: %__1 = bitcast <16 x i8> %__0 to <4 x float> 533 ; CHECK-NEXT: %__2 = bitcast <16 x i8> %__0 to <4 x i32> 534 ; CHECK-NEXT: %__3 = bitcast <16 x i8> %__0 to <8 x i16> 535 ; CHECK-NEXT: ret void 536 ; CHECK-NEXT: } 537 538 ; NOIR: Total across all functions 539