OLD | NEW |
1 ; RUN: opt < %s -nacl-promote-ints -S | FileCheck %s | 1 ; RUN: opt < %s -nacl-promote-ints -S | FileCheck %s |
2 | 2 |
3 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64
:64:64-p:32:32:32-v128:32:32" | 3 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64
:64:64-p:32:32:32-v128:32:32" |
4 | 4 |
5 declare void @consume_i16(i16 %a) | 5 declare void @consume_i16(i16 %a) |
6 | 6 |
7 ; CHECK-LABEL: @sext_to_illegal( | 7 ; CHECK-LABEL: @sext_to_illegal( |
8 ; CHECK-NEXT: %a40 = sext i32 %a to i64 | 8 ; CHECK-NEXT: %a40 = sext i32 %a to i64 |
9 ; (0xFFFFFFFFFF) | 9 ; (0xFFFFFFFFFF) |
10 define void @sext_to_illegal(i32 %a) { | 10 define void @sext_to_illegal(i32 %a) { |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 %s40 = select i1 true, i40 %a40, i40 -1 | 332 %s40 = select i1 true, i40 %a40, i40 -1 |
333 ret void | 333 ret void |
334 } | 334 } |
335 | 335 |
336 ; Allocas are left unchanged. | 336 ; Allocas are left unchanged. |
337 ; CHECK-LABEL: @alloca40( | 337 ; CHECK-LABEL: @alloca40( |
338 ; CHECK: %a = alloca i40, align 8 | 338 ; CHECK: %a = alloca i40, align 8 |
339 define void @alloca40() { | 339 define void @alloca40() { |
340 %a = alloca i40, align 8 | 340 %a = alloca i40, align 8 |
341 %b = bitcast i40* %a to i8* | 341 %b = bitcast i40* %a to i8* |
342 %c = load i8* %b | 342 %c = load i8, i8* %b |
343 ret void | 343 ret void |
344 } | 344 } |
345 | 345 |
346 ; CHECK-LABEL: @load24( | 346 ; CHECK-LABEL: @load24( |
347 ; CHECK: %bc.loty = bitcast i8* %a to i16* | 347 ; CHECK: %bc.loty = bitcast i8* %a to i16* |
348 ; CHECK-NEXT: %load.lo = load i16* %bc.loty, align 8 | 348 ; CHECK-NEXT: %load.lo = load i16, i16* %bc.loty, align 8 |
349 ; CHECK-NEXT: %load.lo.ext = zext i16 %load.lo to i32 | 349 ; CHECK-NEXT: %load.lo.ext = zext i16 %load.lo to i32 |
350 ; CHECK-NEXT: %bc.hi = getelementptr i16* %bc.loty, i32 1 | 350 ; CHECK-NEXT: %bc.hi = getelementptr i16, i16* %bc.loty, i32 1 |
351 ; CHECK-NEXT: %bc.hity = bitcast i16* %bc.hi to i8* | 351 ; CHECK-NEXT: %bc.hity = bitcast i16* %bc.hi to i8* |
352 ; CHECK-NEXT: %load.hi = load i8* %bc.hity, align 2 | 352 ; CHECK-NEXT: %load.hi = load i8, i8* %bc.hity, align 2 |
353 ; CHECK-NEXT: %load.hi.ext = zext i8 %load.hi to i32 | 353 ; CHECK-NEXT: %load.hi.ext = zext i8 %load.hi to i32 |
354 ; CHECK-NEXT: %load.hi.ext.sh = shl i32 %load.hi.ext, 16 | 354 ; CHECK-NEXT: %load.hi.ext.sh = shl i32 %load.hi.ext, 16 |
355 ; CHECK-NEXT: %load = or i32 %load.lo.ext, %load.hi.ext.sh | 355 ; CHECK-NEXT: %load = or i32 %load.lo.ext, %load.hi.ext.sh |
356 define void @load24(i8* %a) { | 356 define void @load24(i8* %a) { |
357 %bc = bitcast i8* %a to i24* | 357 %bc = bitcast i8* %a to i24* |
358 %load = load i24* %bc, align 8 | 358 %load = load i24, i24* %bc, align 8 |
359 ret void | 359 ret void |
360 } | 360 } |
361 | 361 |
362 ; CHECK-LABEL: @load24_overaligned( | 362 ; CHECK-LABEL: @load24_overaligned( |
363 ; CHECK: %load.lo = load i16* %bc.loty, align 32 | 363 ; CHECK: %load.lo = load i16, i16* %bc.loty, align 32 |
364 ; CHECK: %load.hi = load i8* %bc.hity, align 2 | 364 ; CHECK: %load.hi = load i8, i8* %bc.hity, align 2 |
365 define void @load24_overaligned(i8* %a) { | 365 define void @load24_overaligned(i8* %a) { |
366 %bc = bitcast i8* %a to i24* | 366 %bc = bitcast i8* %a to i24* |
367 %load = load i24* %bc, align 32 | 367 %load = load i24, i24* %bc, align 32 |
368 ret void | 368 ret void |
369 } | 369 } |
370 | 370 |
371 ; CHECK-LABEL: @load48( | 371 ; CHECK-LABEL: @load48( |
372 ; CHECK: %load.lo = load i32* %a, align 8 | 372 ; CHECK: %load.lo = load i32, i32* %a, align 8 |
373 ; CHECK-NEXT: %load.lo.ext = zext i32 %load.lo to i64 | 373 ; CHECK-NEXT: %load.lo.ext = zext i32 %load.lo to i64 |
374 ; CHECK-NEXT: %bc.hi = getelementptr i32* %a, i32 1 | 374 ; CHECK-NEXT: %bc.hi = getelementptr i32, i32* %a, i32 1 |
375 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i16* | 375 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i16* |
376 ; CHECK-NEXT: %load.hi = load i16* %bc.hity, align 4 | 376 ; CHECK-NEXT: %load.hi = load i16, i16* %bc.hity, align 4 |
377 ; CHECK-NEXT: %load.hi.ext = zext i16 %load.hi to i64 | 377 ; CHECK-NEXT: %load.hi.ext = zext i16 %load.hi to i64 |
378 ; CHECK-NEXT: %load.hi.ext.sh = shl i64 %load.hi.ext, 32 | 378 ; CHECK-NEXT: %load.hi.ext.sh = shl i64 %load.hi.ext, 32 |
379 ; CHECK-NEXT: %load = or i64 %load.lo.ext, %load.hi.ext.sh | 379 ; CHECK-NEXT: %load = or i64 %load.lo.ext, %load.hi.ext.sh |
380 define void @load48(i32* %a) { | 380 define void @load48(i32* %a) { |
381 %bc = bitcast i32* %a to i48* | 381 %bc = bitcast i32* %a to i48* |
382 %load = load i48* %bc, align 8 | 382 %load = load i48, i48* %bc, align 8 |
383 ret void | 383 ret void |
384 } | 384 } |
385 | 385 |
386 ; CHECK-LABEL: @load56( | 386 ; CHECK-LABEL: @load56( |
387 ; CHECK: %bc = bitcast i32* %a to i56* | 387 ; CHECK: %bc = bitcast i32* %a to i56* |
388 ; CHECK-NEXT: %load.lo = load i32* %a, align 8 | 388 ; CHECK-NEXT: %load.lo = load i32, i32* %a, align 8 |
389 ; CHECK-NEXT: %load.lo.ext = zext i32 %load.lo to i64 | 389 ; CHECK-NEXT: %load.lo.ext = zext i32 %load.lo to i64 |
390 ; CHECK-NEXT: %bc.hi = getelementptr i32* %a, i32 1 | 390 ; CHECK-NEXT: %bc.hi = getelementptr i32, i32* %a, i32 1 |
391 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i24* | 391 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i24* |
392 ; CHECK-NEXT: %bc.hity.loty = bitcast i32* %bc.hi to i16* | 392 ; CHECK-NEXT: %bc.hity.loty = bitcast i32* %bc.hi to i16* |
393 ; CHECK-NEXT: %load.hi.lo = load i16* %bc.hity.loty, align 4 | 393 ; CHECK-NEXT: %load.hi.lo = load i16, i16* %bc.hity.loty, align 4 |
394 ; CHECK-NEXT: %load.hi.lo.ext = zext i16 %load.hi.lo to i32 | 394 ; CHECK-NEXT: %load.hi.lo.ext = zext i16 %load.hi.lo to i32 |
395 ; CHECK-NEXT: %bc.hity.hi = getelementptr i16* %bc.hity.loty, i32 1 | 395 ; CHECK-NEXT: %bc.hity.hi = getelementptr i16, i16* %bc.hity.loty, i32 1 |
396 ; CHECK-NEXT: %bc.hity.hity = bitcast i16* %bc.hity.hi to i8* | 396 ; CHECK-NEXT: %bc.hity.hity = bitcast i16* %bc.hity.hi to i8* |
397 ; CHECK-NEXT: %load.hi.hi = load i8* %bc.hity.hity, align 2 | 397 ; CHECK-NEXT: %load.hi.hi = load i8, i8* %bc.hity.hity, align 2 |
398 ; CHECK-NEXT: %load.hi.hi.ext = zext i8 %load.hi.hi to i32 | 398 ; CHECK-NEXT: %load.hi.hi.ext = zext i8 %load.hi.hi to i32 |
399 ; CHECK-NEXT: %load.hi.hi.ext.sh = shl i32 %load.hi.hi.ext, 16 | 399 ; CHECK-NEXT: %load.hi.hi.ext.sh = shl i32 %load.hi.hi.ext, 16 |
400 ; CHECK-NEXT: %load.hi = or i32 %load.hi.lo.ext, %load.hi.hi.ext.sh | 400 ; CHECK-NEXT: %load.hi = or i32 %load.hi.lo.ext, %load.hi.hi.ext.sh |
401 ; CHECK-NEXT: %load.hi.ext = zext i32 %load.hi to i64 | 401 ; CHECK-NEXT: %load.hi.ext = zext i32 %load.hi to i64 |
402 ; CHECK-NEXT: %load.hi.ext.sh = shl i64 %load.hi.ext, 32 | 402 ; CHECK-NEXT: %load.hi.ext.sh = shl i64 %load.hi.ext, 32 |
403 ; CHECK-NEXT: %load = or i64 %load.lo.ext, %load.hi.ext.sh | 403 ; CHECK-NEXT: %load = or i64 %load.lo.ext, %load.hi.ext.sh |
404 define void @load56(i32* %a) { | 404 define void @load56(i32* %a) { |
405 %bc = bitcast i32* %a to i56* | 405 %bc = bitcast i32* %a to i56* |
406 %load = load i56* %bc | 406 %load = load i56, i56* %bc |
407 ret void | 407 ret void |
408 } | 408 } |
409 | 409 |
410 ; Ensure that types just above and just below large powers of 2 can be compiled. | 410 ; Ensure that types just above and just below large powers of 2 can be compiled. |
411 ; CHECK-LABEL: @load_large( | 411 ; CHECK-LABEL: @load_large( |
412 define void @load_large(i32* %a) { | 412 define void @load_large(i32* %a) { |
413 %bc1 = bitcast i32* %a to i2056* | 413 %bc1 = bitcast i32* %a to i2056* |
414 %load1 = load i2056* %bc1 | 414 %load1 = load i2056, i2056* %bc1 |
415 %bc2 = bitcast i32* %a to i4088* | 415 %bc2 = bitcast i32* %a to i4088* |
416 %load2 = load i4088* %bc2 | 416 %load2 = load i4088, i4088* %bc2 |
417 ret void | 417 ret void |
418 } | 418 } |
419 | 419 |
420 ; CHECK-LABEL: @store24( | 420 ; CHECK-LABEL: @store24( |
421 ; CHECK: %b24 = zext i8 %b to i32 | 421 ; CHECK: %b24 = zext i8 %b to i32 |
422 ; CHECK-NEXT: %bc.loty = bitcast i8* %a to i16* | 422 ; CHECK-NEXT: %bc.loty = bitcast i8* %a to i16* |
423 ; CHECK-NEXT: %b24.lo = trunc i32 %b24 to i16 | 423 ; CHECK-NEXT: %b24.lo = trunc i32 %b24 to i16 |
424 ; CHECK-NEXT: store i16 %b24.lo, i16* %bc.loty, align 4 | 424 ; CHECK-NEXT: store i16 %b24.lo, i16* %bc.loty, align 4 |
425 ; CHECK-NEXT: %b24.hi.sh = lshr i32 %b24, 16 | 425 ; CHECK-NEXT: %b24.hi.sh = lshr i32 %b24, 16 |
426 ; CHECK-NEXT: %bc.hi = getelementptr i16* %bc.loty, i32 1 | 426 ; CHECK-NEXT: %bc.hi = getelementptr i16, i16* %bc.loty, i32 1 |
427 ; CHECK-NEXT: %b24.hi = trunc i32 %b24.hi.sh to i8 | 427 ; CHECK-NEXT: %b24.hi = trunc i32 %b24.hi.sh to i8 |
428 ; CHECK-NEXT: %bc.hity = bitcast i16* %bc.hi to i8* | 428 ; CHECK-NEXT: %bc.hity = bitcast i16* %bc.hi to i8* |
429 ; CHECK-NEXT: store i8 %b24.hi, i8* %bc.hity, align 2 | 429 ; CHECK-NEXT: store i8 %b24.hi, i8* %bc.hity, align 2 |
430 define void @store24(i8* %a, i8 %b) { | 430 define void @store24(i8* %a, i8 %b) { |
431 %bc = bitcast i8* %a to i24* | 431 %bc = bitcast i8* %a to i24* |
432 %b24 = zext i8 %b to i24 | 432 %b24 = zext i8 %b to i24 |
433 store i24 %b24, i24* %bc | 433 store i24 %b24, i24* %bc |
434 ret void | 434 ret void |
435 } | 435 } |
436 | 436 |
437 ; CHECK-LABEL: @store24_overaligned( | 437 ; CHECK-LABEL: @store24_overaligned( |
438 ; CHECK: store i16 %b24.lo, i16* %bc.loty, align 32 | 438 ; CHECK: store i16 %b24.lo, i16* %bc.loty, align 32 |
439 ; CHECK: store i8 %b24.hi, i8* %bc.hity, align 2 | 439 ; CHECK: store i8 %b24.hi, i8* %bc.hity, align 2 |
440 define void @store24_overaligned(i8* %a, i8 %b) { | 440 define void @store24_overaligned(i8* %a, i8 %b) { |
441 %bc = bitcast i8* %a to i24* | 441 %bc = bitcast i8* %a to i24* |
442 %b24 = zext i8 %b to i24 | 442 %b24 = zext i8 %b to i24 |
443 store i24 %b24, i24* %bc, align 32 | 443 store i24 %b24, i24* %bc, align 32 |
444 ret void | 444 ret void |
445 } | 445 } |
446 | 446 |
447 ; CHECK-LABEL: @store56( | 447 ; CHECK-LABEL: @store56( |
448 ; CHECK: %b56 = zext i8 %b to i64 | 448 ; CHECK: %b56 = zext i8 %b to i64 |
449 ; CHECK-NEXT: %bc.loty = bitcast i8* %a to i32* | 449 ; CHECK-NEXT: %bc.loty = bitcast i8* %a to i32* |
450 ; CHECK-NEXT: %b56.lo = trunc i64 %b56 to i32 | 450 ; CHECK-NEXT: %b56.lo = trunc i64 %b56 to i32 |
451 ; CHECK-NEXT: store i32 %b56.lo, i32* %bc.loty, align 8 | 451 ; CHECK-NEXT: store i32 %b56.lo, i32* %bc.loty, align 8 |
452 ; CHECK-NEXT: %b56.hi.sh = lshr i64 %b56, 32 | 452 ; CHECK-NEXT: %b56.hi.sh = lshr i64 %b56, 32 |
453 ; CHECK-NEXT: %bc.hi = getelementptr i32* %bc.loty, i32 1 | 453 ; CHECK-NEXT: %bc.hi = getelementptr i32, i32* %bc.loty, i32 1 |
454 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i24* | 454 ; CHECK-NEXT: %bc.hity = bitcast i32* %bc.hi to i24* |
455 ; CHECK-NEXT: %bc.hity.loty = bitcast i32* %bc.hi to i16* | 455 ; CHECK-NEXT: %bc.hity.loty = bitcast i32* %bc.hi to i16* |
456 ; CHECK-NEXT: %b56.hi.sh.lo = trunc i64 %b56.hi.sh to i16 | 456 ; CHECK-NEXT: %b56.hi.sh.lo = trunc i64 %b56.hi.sh to i16 |
457 ; CHECK-NEXT: store i16 %b56.hi.sh.lo, i16* %bc.hity.loty, align 4 | 457 ; CHECK-NEXT: store i16 %b56.hi.sh.lo, i16* %bc.hity.loty, align 4 |
458 ; CHECK-NEXT: %b56.hi.sh.hi.sh = lshr i64 %b56.hi.sh, 16 | 458 ; CHECK-NEXT: %b56.hi.sh.hi.sh = lshr i64 %b56.hi.sh, 16 |
459 ; CHECK-NEXT: %bc.hity.hi = getelementptr i16* %bc.hity.loty, i32 1 | 459 ; CHECK-NEXT: %bc.hity.hi = getelementptr i16, i16* %bc.hity.loty, i32 1 |
460 ; CHECK-NEXT: %b56.hi.sh.hi = trunc i64 %b56.hi.sh.hi.sh to i8 | 460 ; CHECK-NEXT: %b56.hi.sh.hi = trunc i64 %b56.hi.sh.hi.sh to i8 |
461 ; CHECK-NEXT: %bc.hity.hity = bitcast i16* %bc.hity.hi to i8* | 461 ; CHECK-NEXT: %bc.hity.hity = bitcast i16* %bc.hity.hi to i8* |
462 ; CHECK-NEXT: store i8 %b56.hi.sh.hi, i8* %bc.hity.hity, align 2 | 462 ; CHECK-NEXT: store i8 %b56.hi.sh.hi, i8* %bc.hity.hity, align 2 |
463 define void @store56(i8* %a, i8 %b) { | 463 define void @store56(i8* %a, i8 %b) { |
464 %bc = bitcast i8* %a to i56* | 464 %bc = bitcast i8* %a to i56* |
465 %b56 = zext i8 %b to i56 | 465 %b56 = zext i8 %b to i56 |
466 store i56 %b56, i56* %bc | 466 store i56 %b56, i56* %bc |
467 ret void | 467 ret void |
468 } | 468 } |
469 | 469 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 ret void | 514 ret void |
515 if2: | 515 if2: |
516 ret void | 516 ret void |
517 end: | 517 end: |
518 ret void | 518 ret void |
519 } | 519 } |
520 | 520 |
521 | 521 |
522 ; The getelementptr here should be handled unchanged. | 522 ; The getelementptr here should be handled unchanged. |
523 ; CHECK-LABEL: @pointer_to_array( | 523 ; CHECK-LABEL: @pointer_to_array( |
524 ; CHECK: %element_ptr = getelementptr [2 x i40]* %ptr, i32 0, i32 0 | 524 ; CHECK: %element_ptr = getelementptr [2 x i40], [2 x i40]* %ptr, i32 0, i32 0 |
525 define void @pointer_to_array([2 x i40]* %ptr) { | 525 define void @pointer_to_array([2 x i40]* %ptr) { |
526 %element_ptr = getelementptr [2 x i40]* %ptr, i32 0, i32 0 | 526 %element_ptr = getelementptr [2 x i40], [2 x i40]* %ptr, i32 0, i32 0 |
527 load i40* %element_ptr | 527 load i40, i40* %element_ptr |
528 ret void | 528 ret void |
529 } | 529 } |
530 | 530 |
531 ; Store 0x1222277777777 and make sure it's split up into 3 stores of each part. | 531 ; Store 0x1222277777777 and make sure it's split up into 3 stores of each part. |
532 ; CHECK-LABEL: @constants( | 532 ; CHECK-LABEL: @constants( |
533 ; CHECK: store i32 2004318071, i32* %{{.*}}, align 4 | 533 ; CHECK: store i32 2004318071, i32* %{{.*}}, align 4 |
534 ; CHECK: store i16 8738, i16* %{{.*}} | 534 ; CHECK: store i16 8738, i16* %{{.*}} |
535 ; CHECK: store i8 1, i8* %{{.*}} | 535 ; CHECK: store i8 1, i8* %{{.*}} |
536 define void @constants(i56* %ptr) { | 536 define void @constants(i56* %ptr) { |
537 store i56 319006405261175, i56* %ptr, align 4 | 537 store i56 319006405261175, i56* %ptr, align 4 |
538 ret void | 538 ret void |
539 } | 539 } |
540 | 540 |
541 @from = external global [300 x i8], align 4 | 541 @from = external global [300 x i8], align 4 |
542 @to = external global [300 x i8], align 4 | 542 @to = external global [300 x i8], align 4 |
543 | 543 |
544 ; CHECK-LABEL: @load_bc_to_i80( | 544 ; CHECK-LABEL: @load_bc_to_i80( |
545 ; CHECK-NEXT: %expanded = bitcast [300 x i8]* @from to i64* | 545 ; CHECK-NEXT: %expanded = bitcast [300 x i8]* @from to i64* |
546 ; CHECK-NEXT: %loaded.short.lo = load i64* %expanded, align 4 | 546 ; CHECK-NEXT: %loaded.short.lo = load i64, i64* %expanded, align 4 |
547 ; CHECK-NEXT: %loaded.short.lo.ext = zext i64 %loaded.short.lo to i128 | 547 ; CHECK-NEXT: %loaded.short.lo.ext = zext i64 %loaded.short.lo to i128 |
548 ; CHECK-NEXT: %expanded5 = bitcast [300 x i8]* @from to i64* | 548 ; CHECK-NEXT: %expanded5 = bitcast [300 x i8]* @from to i64* |
549 ; CHECK-NEXT: %expanded4 = getelementptr i64* %expanded5, i32 1 | 549 ; CHECK-NEXT: %expanded4 = getelementptr i64, i64* %expanded5, i32 1 |
550 ; CHECK-NEXT: %expanded3 = bitcast i64* %expanded4 to i16* | 550 ; CHECK-NEXT: %expanded3 = bitcast i64* %expanded4 to i16* |
551 ; CHECK-NEXT: %loaded.short.hi = load i16* %expanded3, align 4 | 551 ; CHECK-NEXT: %loaded.short.hi = load i16, i16* %expanded3, align 4 |
552 ; CHECK-NEXT: %loaded.short.hi.ext = zext i16 %loaded.short.hi to i128 | 552 ; CHECK-NEXT: %loaded.short.hi.ext = zext i16 %loaded.short.hi to i128 |
553 ; CHECK-NEXT: %loaded.short.hi.ext.sh = shl i128 %loaded.short.hi.ext, 64 | 553 ; CHECK-NEXT: %loaded.short.hi.ext.sh = shl i128 %loaded.short.hi.ext, 64 |
554 ; CHECK-NEXT: %loaded.short = or i128 %loaded.short.lo.ext, %loaded.short.hi.ex
t.sh | 554 ; CHECK-NEXT: %loaded.short = or i128 %loaded.short.lo.ext, %loaded.short.hi.ex
t.sh |
555 ; CHECK-NEXT: %loaded.short.lo1 = trunc i128 %loaded.short to i64 | 555 ; CHECK-NEXT: %loaded.short.lo1 = trunc i128 %loaded.short to i64 |
556 ; CHECK-NEXT: %expanded6 = bitcast [300 x i8]* @to to i64* | 556 ; CHECK-NEXT: %expanded6 = bitcast [300 x i8]* @to to i64* |
557 ; CHECK-NEXT: store i64 %loaded.short.lo1, i64* %expanded6, align 4 | 557 ; CHECK-NEXT: store i64 %loaded.short.lo1, i64* %expanded6, align 4 |
558 ; CHECK-NEXT: %loaded.short.hi.sh = lshr i128 %loaded.short, 64 | 558 ; CHECK-NEXT: %loaded.short.hi.sh = lshr i128 %loaded.short, 64 |
559 ; CHECK-NEXT: %loaded.short.hi2 = trunc i128 %loaded.short.hi.sh to i16 | 559 ; CHECK-NEXT: %loaded.short.hi2 = trunc i128 %loaded.short.hi.sh to i16 |
560 ; CHECK-NEXT: %expanded9 = bitcast [300 x i8]* @to to i64* | 560 ; CHECK-NEXT: %expanded9 = bitcast [300 x i8]* @to to i64* |
561 ; CHECK-NEXT: %expanded8 = getelementptr i64* %expanded9, i32 1 | 561 ; CHECK-NEXT: %expanded8 = getelementptr i64, i64* %expanded9, i32 1 |
562 ; CHECK-NEXT: %expanded7 = bitcast i64* %expanded8 to i16* | 562 ; CHECK-NEXT: %expanded7 = bitcast i64* %expanded8 to i16* |
563 ; CHECK-NEXT: store i16 %loaded.short.hi2, i16* %expanded7, align 4 | 563 ; CHECK-NEXT: store i16 %loaded.short.hi2, i16* %expanded7, align 4 |
564 define void @load_bc_to_i80() { | 564 define void @load_bc_to_i80() { |
565 %loaded.short = load i80* bitcast ([300 x i8]* @from to i80*), align 4 | 565 %loaded.short = load i80, i80* bitcast ([300 x i8]* @from to i80*), align 4 |
566 store i80 %loaded.short, i80* bitcast ([300 x i8]* @to to i80*), align 4 | 566 store i80 %loaded.short, i80* bitcast ([300 x i8]* @to to i80*), align 4 |
567 ret void | 567 ret void |
568 } | 568 } |
OLD | NEW |