OLD | NEW |
1 ; Test encoding of MIPS32 floating point arithmetic instructions | 1 ; Test encoding of MIPS32 floating point arithmetic instructions |
2 | 2 |
3 ; REQUIRES: allow_dump | 3 ; REQUIRES: allow_dump |
4 | 4 |
5 ; Compile using standalone assembler. | 5 ; Compile using standalone assembler. |
6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ | 6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ |
7 ; RUN: --allow-externally-defined-symbols \ | 7 ; RUN: --allow-externally-defined-symbols \ |
8 ; RUN: | FileCheck %s --check-prefix=ASM | 8 ; RUN: | FileCheck %s --check-prefix=ASM |
9 | 9 |
10 ; Show bytes in assembled standalone code. | 10 ; Show bytes in assembled standalone code. |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 ; IASM-NEXT: .byte 0x0 | 471 ; IASM-NEXT: .byte 0x0 |
472 ; IASM-NEXT: .byte 0x0 | 472 ; IASM-NEXT: .byte 0x0 |
473 | 473 |
474 define internal i64 @cast_d2ll_const() { | 474 define internal i64 @cast_d2ll_const() { |
475 entry: | 475 entry: |
476 %v0 = bitcast double 0x12345678901234 to i64 | 476 %v0 = bitcast double 0x12345678901234 to i64 |
477 ret i64 %v0 | 477 ret i64 %v0 |
478 } | 478 } |
479 ; ASM-LABEL: cast_d2ll_const | 479 ; ASM-LABEL: cast_d2ll_const |
480 ; ASM-LABEL: .Lcast_d2ll_const$entry: | 480 ; ASM-LABEL: .Lcast_d2ll_const$entry: |
481 ; ASM-NEXT:» lui $[[REG:.*]], %hi({{.*}}) | 481 ; ASM:» lui $[[REG:.*]], %hi({{.*}}) |
482 ; ASM-NEXT: ldc1 $[[FREG:.*]], %lo({{.*}})($[[REG]]) | 482 ; ASM-NEXT: ldc1 $[[FREG:.*]], %lo({{.*}})($[[REG]]) |
483 | 483 |
484 ; DIS-LABEL: 000000c0 <cast_d2ll_const>: | 484 ; DIS-LABEL: <cast_d2ll_const>: |
485 ; DIS-NEXT: c0: 3c020000 lui v0,0x0 | 485 ; DIS: 3c020000 lui v0,0x0 |
486 ; DIS-NEXT: c4: d4400000 ldc1 $f0,0(v0) | 486 ; DIS-NEXT: d4400000 ldc1 $f0,0(v0) |
487 | 487 |
488 ; IASM-LABEL: cast_d2ll_const: | 488 ; IASM-LABEL: cast_d2ll_const: |
489 ; IASM-LABEL: .Lcast_d2ll_const$entry: | 489 ; IASM-LABEL: .Lcast_d2ll_const$entry: |
| 490 ; IASM-NEXT: .byte 0xf0 |
| 491 ; IASM-NEXT: .byte 0xff |
| 492 ; IASM-NEXT: .byte 0xbd |
| 493 ; IASM-NEXT: .byte 0x27 |
490 ; IASM-NEXT: .word 0x3c020000 # R_MIPS_HI16 [[LAB:.*]] | 494 ; IASM-NEXT: .word 0x3c020000 # R_MIPS_HI16 [[LAB:.*]] |
491 ; IASM-NEXT: .word 0xd4400000 # R_MIPS_LO16 [[LAB]] | 495 ; IASM-NEXT: .word 0xd4400000 # R_MIPS_LO16 [[LAB]] |
492 ; IASM-NEXT: .byte 0x0 | 496 ; IASM-NEXT: .byte 0x0 |
493 ; IASM-NEXT:» .byte 0x8 | 497 ; IASM-NEXT:» .byte 0x0 |
494 ; IASM-NEXT:» .byte 0x3 | 498 ; IASM-NEXT:» .byte 0xa1 |
495 ; IASM-NEXT:» .byte 0x44 | 499 ; IASM-NEXT:» .byte 0xe7 |
| 500 ; IASM-NEXT:» .byte 0x4 |
| 501 ; IASM-NEXT:» .byte 0x0 |
| 502 ; IASM-NEXT:» .byte 0xa0 |
| 503 ; IASM-NEXT:» .byte 0xe7 |
| 504 ; IASM-NEXT:» .byte 0x4 |
| 505 ; IASM-NEXT:» .byte 0x0 |
| 506 ; IASM-NEXT:» .byte 0xa2 |
| 507 ; IASM-NEXT:» .byte 0x8f |
496 ; IASM-NEXT: .byte 0x0 | 508 ; IASM-NEXT: .byte 0x0 |
497 ; IASM-NEXT: .byte 0x0 | 509 ; IASM-NEXT: .byte 0x0 |
498 ; IASM-NEXT:» .byte 0x2 | 510 ; IASM-NEXT:» .byte 0xa3 |
499 ; IASM-NEXT:» .byte 0x44 | 511 ; IASM-NEXT:» .byte 0x8f |
| 512 ; IASM-NEXT:» .byte 0x10 |
| 513 ; IASM-NEXT:» .byte 0x0 |
| 514 ; IASM-NEXT:» .byte 0xbd |
| 515 ; IASM-NEXT:» .byte 0x27 |
500 ; IASM-NEXT: .byte 0x8 | 516 ; IASM-NEXT: .byte 0x8 |
501 ; IASM-NEXT: .byte 0x0 | 517 ; IASM-NEXT: .byte 0x0 |
502 ; IASM-NEXT: .byte 0xe0 | 518 ; IASM-NEXT: .byte 0xe0 |
503 ; IASM-NEXT: .byte 0x3 | 519 ; IASM-NEXT: .byte 0x3 |
504 ; IASM-NEXT: .byte 0x0 | 520 ; IASM-NEXT: .byte 0x0 |
505 ; IASM-NEXT: .byte 0x0 | 521 ; IASM-NEXT: .byte 0x0 |
506 ; IASM-NEXT: .byte 0x0 | 522 ; IASM-NEXT: .byte 0x0 |
507 ; IASM-NEXT: .byte 0x0 | 523 ; IASM-NEXT: .byte 0x0 |
| 524 ; IASM-NEXT: .byte 0x34 |
| 525 ; IASM-NEXT: .byte 0x0 |
| 526 ; IASM-NEXT: .byte 0x0 |
| 527 ; IASM-NEXT: .byte 0x0 |
| 528 ; IASM-NEXT: .byte 0x34 |
| 529 ; IASM-NEXT: .byte 0x0 |
| 530 ; IASM-NEXT: .byte 0x0 |
| 531 ; IASM-NEXT: .byte 0x0 |
508 | 532 |
509 | |
510 declare void @bar(i32 %a1, i32 %a2) | 533 declare void @bar(i32 %a1, i32 %a2) |
511 define internal void @Call() { | 534 define internal void @Call() { |
512 call void @bar(i32 1, i32 2) | 535 call void @bar(i32 1, i32 2) |
513 ret void | 536 ret void |
514 } | 537 } |
515 ; ASM-LABEL: Call | 538 ; ASM-LABEL: Call |
516 ; ASM: jal bar | 539 ; ASM: jal bar |
517 | 540 |
518 ; DIS-LABEL: 000000e0 <Call>: | 541 ; DIS-LABEL: 000000f0 <Call>: |
519 ; DIS: f0: 0c000000 jal 0 | 542 ; DIS: 100:» 0c000000 jal 0 |
520 | 543 |
521 ; IASM-LABEL: Call: | 544 ; IASM-LABEL: Call: |
522 ; IASM: .word 0xc000000 # R_MIPS_26 bar | 545 ; IASM: .word 0xc000000 # R_MIPS_26 bar |
OLD | NEW |