Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(635)

Side by Side Diff: tests_lit/llvm2ice_tests/64bit.pnacl.ll

Issue 2359713003: [Subzero][MIPS32] Implements 64-bit shl, lshr, ashr for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Removed unnecessary change Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; This tries to be a comprehensive test of i64 operations, in 1 ; This tries to be a comprehensive test of i64 operations, in
2 ; particular the patterns for lowering i64 operations into constituent 2 ; particular the patterns for lowering i64 operations into constituent
3 ; i32 operations on x86-32. 3 ; i32 operations on x86-32.
4 4
5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
7 ; RUN: | %if --need=target_X8632 --command FileCheck %s 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s
8 8
9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 513
514 ; ARM32-LABEL: shl64BitSigned 514 ; ARM32-LABEL: shl64BitSigned
515 ; ARM32: rsb [[T0:r[0-9]+]], r2, #32 515 ; ARM32: rsb [[T0:r[0-9]+]], r2, #32
516 ; ARM32: lsr [[T1:r[0-9]+]], r0, [[T0]] 516 ; ARM32: lsr [[T1:r[0-9]+]], r0, [[T0]]
517 ; ARM32: orr [[T2:r[0-9]+]], [[T1]], r1, lsl r2 517 ; ARM32: orr [[T2:r[0-9]+]], [[T1]], r1, lsl r2
518 ; ARM32: sub [[T3:r[0-9]+]], r2, #32 518 ; ARM32: sub [[T3:r[0-9]+]], r2, #32
519 ; ARM32: cmp [[T3]], #0 519 ; ARM32: cmp [[T3]], #0
520 ; ARM32: lslge [[T2]], r0, [[T3]] 520 ; ARM32: lslge [[T2]], r0, [[T3]]
521 ; ARM32: lsl r{{[0-9]+}}, r0, r2 521 ; ARM32: lsl r{{[0-9]+}}, r0, r2
522 522
523 ; MIPS32-LABEL: shl64BitSigned
524 ; MIPS32: sllv [[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
525 ; MIPS32: li [[T2:.*]],-1
526 ; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
527 ; MIPS32: srl [[T4:.*]],[[A_LO:.*]],0x1
528 ; MIPS32: srlv [[T5:.*]],[[T4]],[[T3]]
529 ; MIPS32: or [[T_HI:.*]],[[T1]],[[T5]]
530 ; MIPS32: sllv [[T_LO:.*]],[[A_LO]],[[B_LO]]
531 ; MIPS32: move [[T1_LO:.*]],[[T_LO]]
Jim Stichnoth 2016/09/21 16:59:25 trailing whitespace
sagar.thakur 2016/09/22 14:45:04 Done.
sagar.thakur 2016/09/22 14:45:04 Done.
532 ; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
533 ; MIPS32: movn [[T_HI]],[[T_LO]],[[T6]]
Jim Stichnoth 2016/09/21 16:59:25 trailing whitespace
sagar.thakur 2016/09/22 14:45:04 Done.
sagar.thakur 2016/09/22 14:45:04 Done.
534 ; MIPS32: movn [[T1_LO]],zero,[[T6]]
535 ; MIPS32: move v1,[[T_HI]]
536
523 define internal i32 @shl64BitSignedTrunc(i64 %a, i64 %b) { 537 define internal i32 @shl64BitSignedTrunc(i64 %a, i64 %b) {
524 entry: 538 entry:
525 %shl = shl i64 %a, %b 539 %shl = shl i64 %a, %b
526 %result = trunc i64 %shl to i32 540 %result = trunc i64 %shl to i32
527 ret i32 %result 541 ret i32 %result
528 } 542 }
529 ; CHECK-LABEL: shl64BitSignedTrunc 543 ; CHECK-LABEL: shl64BitSignedTrunc
530 ; CHECK: mov 544 ; CHECK: mov
531 ; CHECK: shl e 545 ; CHECK: shl e
532 ; CHECK: test {{.*}},0x20 546 ; CHECK: test {{.*}},0x20
(...skipping 27 matching lines...) Expand all
560 574
561 ; ARM32-LABEL: shl64BitUnsigned 575 ; ARM32-LABEL: shl64BitUnsigned
562 ; ARM32: rsb 576 ; ARM32: rsb
563 ; ARM32: lsr 577 ; ARM32: lsr
564 ; ARM32: orr 578 ; ARM32: orr
565 ; ARM32: sub 579 ; ARM32: sub
566 ; ARM32: cmp 580 ; ARM32: cmp
567 ; ARM32: lslge 581 ; ARM32: lslge
568 ; ARM32: lsl 582 ; ARM32: lsl
569 583
584 ; MIPS32-LABEL: shl64BitUnsigned
585 ; MIPS32: sllv [[T1:.*]],[[A_HI:.*]],[[B_LO:.*]]
586 ; MIPS32: li [[T2:.*]],-1
587 ; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
588 ; MIPS32: srl [[T4:.*]],[[A_LO:.*]],0x1
589 ; MIPS32: srlv [[T5:.*]],[[T4]],[[T3]]
590 ; MIPS32: or [[T_HI:.*]],[[T1]],[[T5]]
591 ; MIPS32: sllv [[T_LO:.*]],[[A_LO]],[[B_LO]]
592 ; MIPS32: move [[T1_LO:.*]],[[T_LO]]
593 ; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
594 ; MIPS32: movn [[T_HI]],[[T_LO]],[[T6]]
595 ; MIPS32: movn [[T1_LO]],zero,[[T6]]
596 ; MIPS32: move v1,[[T_HI]]
597
570 define internal i64 @shr64BitSigned(i64 %a, i64 %b) { 598 define internal i64 @shr64BitSigned(i64 %a, i64 %b) {
571 entry: 599 entry:
572 %shr = ashr i64 %a, %b 600 %shr = ashr i64 %a, %b
573 ret i64 %shr 601 ret i64 %shr
574 } 602 }
575 ; CHECK-LABEL: shr64BitSigned 603 ; CHECK-LABEL: shr64BitSigned
576 ; CHECK: shrd 604 ; CHECK: shrd
577 ; CHECK: sar 605 ; CHECK: sar
578 ; CHECK: test {{.*}},0x20 606 ; CHECK: test {{.*}},0x20
579 ; CHECK: je 607 ; CHECK: je
580 ; CHECK: sar {{.*}},0x1f 608 ; CHECK: sar {{.*}},0x1f
581 ; 609 ;
582 ; OPTM1-LABEL: shr64BitSigned 610 ; OPTM1-LABEL: shr64BitSigned
583 ; OPTM1: shrd 611 ; OPTM1: shrd
584 ; OPTM1: sar 612 ; OPTM1: sar
585 ; OPTM1: test {{.*}},0x20 613 ; OPTM1: test {{.*}},0x20
586 ; OPTM1: je 614 ; OPTM1: je
587 ; OPTM1: sar {{.*}},0x1f 615 ; OPTM1: sar {{.*}},0x1f
588 616
589 ; ARM32-LABEL: shr64BitSigned 617 ; ARM32-LABEL: shr64BitSigned
590 ; ARM32: lsr [[T0:r[0-9]+]], r{{[0-9]+}}, r{{[0-9]+}} 618 ; ARM32: lsr [[T0:r[0-9]+]], r{{[0-9]+}}, r{{[0-9]+}}
591 ; ARM32: rsb [[T1:r[0-9]+]], r{{[0-9]+}}, #32 619 ; ARM32: rsb [[T1:r[0-9]+]], r{{[0-9]+}}, #32
592 ; ARM32: orr r{{[0-9]+}}, [[T0]], r{{[0-9]+}}, lsl [[T1]] 620 ; ARM32: orr r{{[0-9]+}}, [[T0]], r{{[0-9]+}}, lsl [[T1]]
593 ; ARM32: sub [[T2:r[0-9]+]], r{{[0-9]+}}, #32 621 ; ARM32: sub [[T2:r[0-9]+]], r{{[0-9]+}}, #32
594 ; ARM32: cmp [[T2]], #0 622 ; ARM32: cmp [[T2]], #0
595 ; ARM32: asrge r{{[0-9]+}}, r{{[0-9]+}}, [[T2]] 623 ; ARM32: asrge r{{[0-9]+}}, r{{[0-9]+}}, [[T2]]
596 ; ARM32: asr r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}} 624 ; ARM32: asr r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}
597 625
626 ; MIPS32-LABEL: shr64BitSigned
627 ; MIPS32: srlv [[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
628 ; MIPS32: li [[T2:.*]],-1
629 ; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
630 ; MIPS32: sll [[T4:.*]],[[A_HI:.*]],0x1
631 ; MIPS32: sllv [[T5:.*]],[[T4]],[[T3]]
632 ; MIPS32: or [[T_LO:.*]],[[T1]],[[T5]]
633 ; MIPS32: srav [[T_HI:.*]],[[A_HI]],[[B_LO]]
634 ; MIPS32: move [[T_HI1:.*]],[[T_HI]]
635 ; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
636 ; MIPS32: movn [[T_LO1:.*]],[[T_HI]],[[T6]]
637 ; MIPS32: sra [[T7:.*]],[[A_HI]],0x1f
638 ; MIPS32: movn [[T_HI1]],[[T7]],[[T6]]
639
598 define internal i32 @shr64BitSignedTrunc(i64 %a, i64 %b) { 640 define internal i32 @shr64BitSignedTrunc(i64 %a, i64 %b) {
599 entry: 641 entry:
600 %shr = ashr i64 %a, %b 642 %shr = ashr i64 %a, %b
601 %result = trunc i64 %shr to i32 643 %result = trunc i64 %shr to i32
602 ret i32 %result 644 ret i32 %result
603 } 645 }
604 ; CHECK-LABEL: shr64BitSignedTrunc 646 ; CHECK-LABEL: shr64BitSignedTrunc
605 ; CHECK: shrd 647 ; CHECK: shrd
606 ; CHECK: sar 648 ; CHECK: sar
607 ; CHECK: test {{.*}},0x20 649 ; CHECK: test {{.*}},0x20
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 683
642 ; ARM32-LABEL: shr64BitUnsigned 684 ; ARM32-LABEL: shr64BitUnsigned
643 ; ARM32: lsr 685 ; ARM32: lsr
644 ; ARM32: rsb 686 ; ARM32: rsb
645 ; ARM32: orr 687 ; ARM32: orr
646 ; ARM32: sub 688 ; ARM32: sub
647 ; ARM32: cmp 689 ; ARM32: cmp
648 ; ARM32: lsrge 690 ; ARM32: lsrge
649 ; ARM32: lsr 691 ; ARM32: lsr
650 692
693 ; MIPS32-LABEL: shr64BitUnsigned
694 ; MIPS32: srlv [[T1:.*]],[[A_LO:.*]],[[B_LO:.*]]
695 ; MIPS32: li [[T2:.*]],-1
696 ; MIPS32: xor [[T3:.*]],[[B_LO]],[[T2]]
697 ; MIPS32: sll [[T4:.*]],[[A_HI:.*]],0x1
698 ; MIPS32: sllv [[T5:.*]],[[T4]],[[T3]]
699 ; MIPS32: or [[T_LO:.*]],[[T1]],[[T5]]
700 ; MIPS32: srlv [[T_HI:.*]],[[A_HI]],[[B_LO]]
701 ; MIPS32: move [[T_HI1:.*]],[[T_HI]]
702 ; MIPS32: andi [[T6:.*]],[[B_LO]],0x20
703 ; MIPS32: movn [[T_LO1:.*]],[[T_HI]],[[T6]]
704 ; MIPS32: movn [[T_HI1]],zero,[[T6]]
705
651 define internal i32 @shr64BitUnsignedTrunc(i64 %a, i64 %b) { 706 define internal i32 @shr64BitUnsignedTrunc(i64 %a, i64 %b) {
652 entry: 707 entry:
653 %shr = lshr i64 %a, %b 708 %shr = lshr i64 %a, %b
654 %result = trunc i64 %shr to i32 709 %result = trunc i64 %shr to i32
655 ret i32 %result 710 ret i32 %result
656 } 711 }
657 ; CHECK-LABEL: shr64BitUnsignedTrunc 712 ; CHECK-LABEL: shr64BitUnsignedTrunc
658 ; CHECK: shrd 713 ; CHECK: shrd
659 ; CHECK: shr 714 ; CHECK: shr
660 ; CHECK: test {{.*}},0x20 715 ; CHECK: test {{.*}},0x20
(...skipping 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 %s = lshr i64 %a, 40 2129 %s = lshr i64 %a, 40
2075 %t = trunc i64 %s to i32 2130 %t = trunc i64 %s to i32
2076 %r = sub i32 %t, 1 2131 %r = sub i32 %t, 1
2077 ret i32 %r 2132 ret i32 %r
2078 ; ARM32-LABEL: subOneToUpperAfterShift 2133 ; ARM32-LABEL: subOneToUpperAfterShift
2079 ; ARM32: subs 2134 ; ARM32: subs
2080 ; ARM32: sbc 2135 ; ARM32: sbc
2081 ; ARM32: lsr 2136 ; ARM32: lsr
2082 ; ARM32: sub 2137 ; ARM32: sub
2083 } 2138 }
OLDNEW
« src/IceTargetLoweringMIPS32.cpp ('K') | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698