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

Side by Side Diff: tests_lit/assembler/mips32/encoding_intrinsics.ll

Issue 2619943003: [SubZero] Fix code generation issues occurred in Cross-test and PNaCL smoke-tests (Closed)
Patch Set: Addressed review comments Created 3 years, 11 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
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | tests_lit/assembler/mips32/encoding_test_arith_fp.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; Test encoding of MIPS32 instructions used in intrinsic calls 1 ; Test encoding of MIPS32 instructions used in intrinsic calls
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 23 matching lines...) Expand all
34 define internal i32 @encBswap16(i32 %x) { 34 define internal i32 @encBswap16(i32 %x) {
35 entry: 35 entry:
36 %x_trunc = trunc i32 %x to i16 36 %x_trunc = trunc i32 %x to i16
37 %r = call i16 @llvm.bswap.i16(i16 %x_trunc) 37 %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
38 %r_zext = zext i16 %r to i32 38 %r_zext = zext i16 %r to i32
39 ret i32 %r_zext 39 ret i32 %r_zext
40 } 40 }
41 41
42 ; ASM-LABEL: encBswap16 42 ; ASM-LABEL: encBswap16
43 ; ASM-NEXT: .LencBswap16$entry: 43 ; ASM-NEXT: .LencBswap16$entry:
44 ; ASM-NEXT: andi $a0, $a0, 65535
44 ; ASM-NEXT: sll $v0, $a0, 8 45 ; ASM-NEXT: sll $v0, $a0, 8
45 ; ASM-NEXT: lui $v1, 255 46 ; ASM-NEXT: lui $v1, 255
46 ; ASM-NEXT: and $v0, $v0, $v1 47 ; ASM-NEXT: and $v0, $v0, $v1
47 ; ASM-NEXT: sll $a0, $a0, 24 48 ; ASM-NEXT: sll $a0, $a0, 24
48 ; ASM-NEXT: or $v0, $a0, $v0 49 ; ASM-NEXT: or $v0, $a0, $v0
49 ; ASM-NEXT: srl $v0, $v0, 16 50 ; ASM-NEXT: srl $v0, $v0, 16
50 ; ASM-NEXT: andi $v0, $v0, 65535 51 ; ASM-NEXT: andi $v0, $v0, 65535
51 ; ASM-NEXT: jr $ra 52 ; ASM-NEXT: jr $ra
52 53
53 ; DIS-LABEL: <encBswap16>: 54 ; DIS-LABEL: <encBswap16>:
55 ; DIS-NEXT: 3084ffff andi a0,a0,0xffff
54 ; DIS-NEXT: 00041200 sll v0,a0,0x8 56 ; DIS-NEXT: 00041200 sll v0,a0,0x8
55 ; DIS-NEXT: 3c0300ff lui v1,0xff 57 ; DIS-NEXT: 3c0300ff lui v1,0xff
56 ; DIS-NEXT: 00431024 and v0,v0,v1 58 ; DIS-NEXT: 00431024 and v0,v0,v1
57 ; DIS-NEXT: 00042600 sll a0,a0,0x18 59 ; DIS-NEXT: 00042600 sll a0,a0,0x18
58 ; DIS-NEXT: 00821025 or v0,a0,v0 60 ; DIS-NEXT: 00821025 or v0,a0,v0
59 ; DIS-NEXT: 00021402 srl v0,v0,0x10 61 ; DIS-NEXT: 00021402 srl v0,v0,0x10
60 ; DIS-NEXT: 3042ffff andi v0,v0,0xffff 62 ; DIS-NEXT: 3042ffff andi v0,v0,0xffff
61 ; DIS-NEXT: 03e00008 jr ra 63 ; DIS-NEXT: 03e00008 jr ra
62 64
63 ; IASM-LABEL: encBswap16 65 ; IASM-LABEL: encBswap16
64 ; IASM-NEXT: .LencBswap16$entry: 66 ; IASM-NEXT: .LencBswap16$entry:
67 ; IASM-NEXT: .byte 0xff
68 ; IASM-NEXT: .byte 0xff
69 ; IASM-NEXT: .byte 0x84
70 ; IASM-NEXT: .byte 0x30
65 ; IASM-NEXT: .byte 0x0 71 ; IASM-NEXT: .byte 0x0
66 ; IASM-NEXT: .byte 0x12 72 ; IASM-NEXT: .byte 0x12
67 ; IASM-NEXT: .byte 0x4 73 ; IASM-NEXT: .byte 0x4
68 ; IASM-NEXT: .byte 0x0 74 ; IASM-NEXT: .byte 0x0
69 ; IASM-NEXT: .byte 0xff 75 ; IASM-NEXT: .byte 0xff
70 ; IASM-NEXT: .byte 0x0 76 ; IASM-NEXT: .byte 0x0
71 ; IASM-NEXT: .byte 0x3 77 ; IASM-NEXT: .byte 0x3
72 ; IASM-NEXT: .byte 0x3c 78 ; IASM-NEXT: .byte 0x3c
73 ; IASM-NEXT: .byte 0x24 79 ; IASM-NEXT: .byte 0x24
74 ; IASM-NEXT: .byte 0x10 80 ; IASM-NEXT: .byte 0x10
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false) 575 %r = call i64 @llvm.ctlz.i64(i64 %x, i1 false)
570 ret i64 %r 576 ret i64 %r
571 } 577 }
572 578
573 ; ASM-LABEL: encCtlz64 579 ; ASM-LABEL: encCtlz64
574 ; ASM-NEXT: .LencCtlz64$entry: 580 ; ASM-NEXT: .LencCtlz64$entry:
575 ; ASM-NEXT: clz $v0, $a1 581 ; ASM-NEXT: clz $v0, $a1
576 ; ASM-NEXT: clz $a0, $a0 582 ; ASM-NEXT: clz $a0, $a0
577 ; ASM-NEXT: addiu $a0, $a0, 32 583 ; ASM-NEXT: addiu $a0, $a0, 32
578 ; ASM-NEXT: movn $a0, $v0, $a1 584 ; ASM-NEXT: movn $a0, $v0, $a1
579 ; ASM-NEXT: » addiu» $v0, $zero, 0 585 ; ASM: » addiu» $v0, $zero, 0
580 ; ASM-NEXT: move $v1, $v0 586 ; ASM-NEXT: move $v1, $v0
581 ; ASM-NEXT: move $v0, $a0 587 ; ASM-NEXT: move $v0, $a0
582 ; ASM-NEXT: jr $ra 588 ; ASM-NEXT: jr $ra
583 589
584 ; DIS-LABEL: <encCtlz64>: 590 ; DIS-LABEL: <encCtlz64>:
585 ; DIS-NEXT: 70a21020 clz v0,a1 591 ; DIS-NEXT: 70a21020 clz v0,a1
586 ; DIS-NEXT: 70842020 clz a0,a0 592 ; DIS-NEXT: 70842020 clz a0,a0
587 ; DIS-NEXT: 24840020 addiu a0,a0,32 593 ; DIS-NEXT: 24840020 addiu a0,a0,32
588 ; DIS-NEXT: 0045200b movn a0,v0,a1 594 ; DIS-NEXT: 0045200b movn a0,v0,a1
589 ; DIS-NEXT: 24020000 li v0,0 595 ; DIS-NEXT: 24020000 li v0,0
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 704
699 define internal i32 @encCttz32(i32 %x) { 705 define internal i32 @encCttz32(i32 %x) {
700 entry: 706 entry:
701 %r = call i32 @llvm.cttz.i32(i32 %x, i1 false) 707 %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
702 ret i32 %r 708 ret i32 %r
703 } 709 }
704 710
705 ; ASM-LABEL: encCttz32 711 ; ASM-LABEL: encCttz32
706 ; ASM-NEXT: .LencCttz32$entry: 712 ; ASM-NEXT: .LencCttz32$entry:
707 ; ASM-NEXT: addiu $v0, $a0, -1 713 ; ASM-NEXT: addiu $v0, $a0, -1
708 ; ASM-NEXT: » nor» $a0, $a0, $zero 714 ; ASM: »nor» $a0, $a0, $zero
709 ; ASM-NEXT: and $a0, $a0, $v0 715 ; ASM-NEXT: and $a0, $a0, $v0
710 ; ASM-NEXT: clz $a0, $a0 716 ; ASM-NEXT: clz $a0, $a0
711 ; ASM-NEXT: » addiu» $v0, $zero, 32 717 ; ASM: »addiu» $v0, $zero, 32
712 ; ASM-NEXT: subu $v0, $v0, $a0 718 ; ASM-NEXT: subu $v0, $v0, $a0
713 ; ASM-NEXT: jr $ra 719 ; ASM-NEXT: jr $ra
714 720
715 ; DIS-LABEL: <encCttz32>: 721 ; DIS-LABEL: <encCttz32>:
716 ; DIS-NEXT: 2482ffff addiu v0,a0,-1 722 ; DIS-NEXT: 2482ffff addiu v0,a0,-1
717 ; DIS-NEXT: 00802027 nor a0,a0,zero 723 ; DIS-NEXT: 00802027 nor a0,a0,zero
718 ; DIS-NEXT: 00822024 and a0,a0,v0 724 ; DIS-NEXT: 00822024 and a0,a0,v0
719 ; DIS-NEXT: 70842020 clz a0,a0 725 ; DIS-NEXT: 70842020 clz a0,a0
720 ; DIS-NEXT: 24020020 li v0,32 726 ; DIS-NEXT: 24020020 li v0,32
721 ; DIS-NEXT: 00441023 subu v0,v0,a0 727 ; DIS-NEXT: 00441023 subu v0,v0,a0
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 entry: 762 entry:
757 %r = call i32 @llvm.cttz.i32(i32 123456, i1 false) 763 %r = call i32 @llvm.cttz.i32(i32 123456, i1 false)
758 ret i32 %r 764 ret i32 %r
759 } 765 }
760 766
761 ; ASM-LABEL: encCttz32Const 767 ; ASM-LABEL: encCttz32Const
762 ; ASM-NEXT: .LencCttz32Const$entry: 768 ; ASM-NEXT: .LencCttz32Const$entry:
763 ; ASM-NEXT: lui $v0, 1 769 ; ASM-NEXT: lui $v0, 1
764 ; ASM-NEXT: ori $v0, $v0, 57920 770 ; ASM-NEXT: ori $v0, $v0, 57920
765 ; ASM-NEXT: addiu $v1, $v0, -1 771 ; ASM-NEXT: addiu $v1, $v0, -1
766 ; ASM-NEXT: » nor $v0, $v0, $zero 772 ; ASM: »nor $v0, $v0, $zero
767 ; ASM-NEXT: and $v0, $v0, $v1 773 ; ASM-NEXT: and $v0, $v0, $v1
768 ; ASM-NEXT: clz $v0, $v0 774 ; ASM-NEXT: clz $v0, $v0
769 ; ASM-NEXT: » addiu $v1, $zero, 32 775 ; ASM: »addiu $v1, $zero, 32
770 ; ASM-NEXT: subu $v1, $v1, $v0 776 ; ASM-NEXT: subu $v1, $v1, $v0
771 ; ASM-NEXT: move $v0, $v1 777 ; ASM-NEXT: move $v0, $v1
772 ; ASM-NEXT: jr $ra 778 ; ASM-NEXT: jr $ra
773 779
774 ; DIS-LABEL: <encCttz32Const>: 780 ; DIS-LABEL: <encCttz32Const>:
775 ; DIS-NEXT: 3c020001 lui v0,0x1 781 ; DIS-NEXT: 3c020001 lui v0,0x1
776 ; DIS-NEXT: 3442e240 ori v0,v0,0xe240 782 ; DIS-NEXT: 3442e240 ori v0,v0,0xe240
777 ; DIS-NEXT: 2443ffff addiu v1,v0,-1 783 ; DIS-NEXT: 2443ffff addiu v1,v0,-1
778 ; DIS-NEXT: 00401027 nor v0,v0,zero 784 ; DIS-NEXT: 00401027 nor v0,v0,zero
779 ; DIS-NEXT: 00431024 and v0,v0,v1 785 ; DIS-NEXT: 00431024 and v0,v0,v1
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 834
829 define internal i64 @encCttz64(i64 %x) { 835 define internal i64 @encCttz64(i64 %x) {
830 entry: 836 entry:
831 %r = call i64 @llvm.cttz.i64(i64 %x, i1 false) 837 %r = call i64 @llvm.cttz.i64(i64 %x, i1 false)
832 ret i64 %r 838 ret i64 %r
833 } 839 }
834 840
835 ; ASM-LABEL: encCttz64 841 ; ASM-LABEL: encCttz64
836 ; ASM-NEXT: .LencCttz64$entry: 842 ; ASM-NEXT: .LencCttz64$entry:
837 ; ASM-NEXT: addiu $v0, $a1, -1 843 ; ASM-NEXT: addiu $v0, $a1, -1
838 ; ASM-NEXT: » nor $a1, $a1, $zero 844 ; ASM: »nor $a1, $a1, $zero
839 ; ASM-NEXT: and $a1, $a1, $v0 845 ; ASM-NEXT: and $a1, $a1, $v0
840 ; ASM-NEXT: clz $a1, $a1 846 ; ASM-NEXT: clz $a1, $a1
841 ; ASM-NEXT: » addiu $v0, $zero, 64 847 ; ASM: »addiu $v0, $zero, 64
842 ; ASM-NEXT: subu $v0, $v0, $a1 848 ; ASM-NEXT: subu $v0, $v0, $a1
843 ; ASM-NEXT: addiu $v1, $a0, -1 849 ; ASM-NEXT: addiu $v1, $a0, -1
844 ; ASM-NEXT: » nor $a1, $a0, $zero 850 ; ASM: »nor $a1, $a0, $zero
845 ; ASM-NEXT: and $a1, $a1, $v1 851 ; ASM-NEXT: and $a1, $a1, $v1
846 ; ASM-NEXT: clz $a1, $a1 852 ; ASM-NEXT: clz $a1, $a1
847 ; ASM-NEXT: » addiu $v1, $zero, 32 853 ; ASM: »addiu $v1, $zero, 32
848 ; ASM-NEXT: subu $v1, $v1, $a1 854 ; ASM-NEXT: subu $v1, $v1, $a1
849 ; ASM-NEXT: movn $v0, $v1, $a0 855 ; ASM-NEXT: movn $v0, $v1, $a0
850 ; ASM-NEXT: » addiu $v1, $zero, 0 856 ; ASM: »addiu $v1, $zero, 0
851 ; ASM-NEXT: jr $ra 857 ; ASM-NEXT: jr $ra
852 858
853 ; DIS-LABEL: <encCttz64>: 859 ; DIS-LABEL: <encCttz64>:
854 ; DIS-NEXT: 24a2ffff addiu v0,a1,-1 860 ; DIS-NEXT: 24a2ffff addiu v0,a1,-1
855 ; DIS-NEXT: 00a02827 nor a1,a1,zero 861 ; DIS-NEXT: 00a02827 nor a1,a1,zero
856 ; DIS-NEXT: 00a22824 and a1,a1,v0 862 ; DIS-NEXT: 00a22824 and a1,a1,v0
857 ; DIS-NEXT: 70a52820 clz a1,a1 863 ; DIS-NEXT: 70a52820 clz a1,a1
858 ; DIS-NEXT: 24020040 li v0,64 864 ; DIS-NEXT: 24020040 li v0,64
859 ; DIS-NEXT: 00451023 subu v0,v0,a1 865 ; DIS-NEXT: 00451023 subu v0,v0,a1
860 ; DIS-NEXT: 2483ffff addiu v1,a0,-1 866 ; DIS-NEXT: 2483ffff addiu v1,a0,-1
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 ret i64 %r 943 ret i64 %r
938 } 944 }
939 945
940 ; ASM-LABEL: encCttz64Const 946 ; ASM-LABEL: encCttz64Const
941 ; ASM-NEXT: .LencCttz64Const$entry: 947 ; ASM-NEXT: .LencCttz64Const$entry:
942 ; ASM-NEXT: # $zero = def.pseudo 948 ; ASM-NEXT: # $zero = def.pseudo
943 ; ASM-NEXT: addiu $v0, $zero, 28 949 ; ASM-NEXT: addiu $v0, $zero, 28
944 ; ASM-NEXT: lui $v1, 48793 950 ; ASM-NEXT: lui $v1, 48793
945 ; ASM-NEXT: ori $v1, $v1, 6676 951 ; ASM-NEXT: ori $v1, $v1, 6676
946 ; ASM-NEXT: addiu $a0, $v0, -1 952 ; ASM-NEXT: addiu $a0, $v0, -1
947 ; ASM-NEXT: » nor $v0, $v0, $zero 953 ; ASM: »nor $v0, $v0, $zero
948 ; ASM-NEXT: and $v0, $v0, $a0 954 ; ASM-NEXT: and $v0, $v0, $a0
949 ; ASM-NEXT: clz $v0, $v0 955 ; ASM-NEXT: clz $v0, $v0
950 ; ASM-NEXT: » addiu $a0, $zero, 64 956 ; ASM: »addiu $a0, $zero, 64
951 ; ASM-NEXT: subu $a0, $a0, $v0 957 ; ASM-NEXT: subu $a0, $a0, $v0
952 ; ASM-NEXT: addiu $v0, $v1, -1 958 ; ASM-NEXT: addiu $v0, $v1, -1
953 ; ASM-NEXT: » nor $a1, $v1, $zero 959 ; ASM: »nor $a1, $v1, $zero
954 ; ASM-NEXT: and $a1, $a1, $v0 960 ; ASM-NEXT: and $a1, $a1, $v0
955 ; ASM-NEXT: clz $a1, $a1 961 ; ASM-NEXT: clz $a1, $a1
956 ; ASM-NEXT: » addiu $v0, $zero, 32 962 ; ASM: »addiu $v0, $zero, 32
957 ; ASM-NEXT: subu $v0, $v0, $a1 963 ; ASM-NEXT: subu $v0, $v0, $a1
958 ; ASM-NEXT: movn $a0, $v0, $v1 964 ; ASM-NEXT: movn $a0, $v0, $v1
959 ; ASM-NEXT: » addiu $v0, $zero, 0 965 ; ASM: »addiu $v0, $zero, 0
960 ; ASM-NEXT: move $v1, $v0 966 ; ASM-NEXT: move $v1, $v0
961 ; ASM-NEXT: move $v0, $a0 967 ; ASM-NEXT: move $v0, $a0
962 ; ASM-NEXT: jr $ra 968 ; ASM-NEXT: jr $ra
963 969
964 ; DIS-LABEL: <encCttz64Const>: 970 ; DIS-LABEL: <encCttz64Const>:
965 ; DIS-NEXT: 2402001c li v0,28 971 ; DIS-NEXT: 2402001c li v0,28
966 ; DIS-NEXT: 3c03be99 lui v1,0xbe99 972 ; DIS-NEXT: 3c03be99 lui v1,0xbe99
967 ; DIS-NEXT: 34631a14 ori v1,v1,0x1a14 973 ; DIS-NEXT: 34631a14 ori v1,v1,0x1a14
968 ; DIS-NEXT: 2444ffff addiu a0,v0,-1 974 ; DIS-NEXT: 2444ffff addiu a0,v0,-1
969 ; DIS-NEXT: 00401027 nor v0,v0,zero 975 ; DIS-NEXT: 00401027 nor v0,v0,zero
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 ; IASM-NEXT: .byte 0x0 1071 ; IASM-NEXT: .byte 0x0
1066 ; IASM-NEXT: .byte 0xe0 1072 ; IASM-NEXT: .byte 0xe0
1067 ; IASM-NEXT: .byte 0x3 1073 ; IASM-NEXT: .byte 0x3
1068 1074
1069 define internal void @encTrap() { 1075 define internal void @encTrap() {
1070 unreachable 1076 unreachable
1071 } 1077 }
1072 1078
1073 ; ASM-LABEL: encTrap 1079 ; ASM-LABEL: encTrap
1074 ; ASM-NEXT: .LencTrap$__0: 1080 ; ASM-NEXT: .LencTrap$__0:
1075 ; ASM-NEXT: » teq» $zero, $zero, 0 1081 ; ASM: »teq» $zero, $zero, 0
1076 1082
1077 ; DIS-LABEL: <encTrap>: 1083 ; DIS-LABEL: <encTrap>:
1078 ; DIS-NEXT: 00000034 teq zero,zero 1084 ; DIS-NEXT: 00000034 teq zero,zero
1079 1085
1080 ; IASM-LABEL: encTrap: 1086 ; IASM-LABEL: encTrap:
1081 ; IASM-NEXT: .LencTrap$__0: 1087 ; IASM-NEXT: .LencTrap$__0:
1082 ; IASM-NEXT: .byte 0x34 1088 ; IASM-NEXT: .byte 0x34
1083 ; IASM-NEXT: .byte 0x0 1089 ; IASM-NEXT: .byte 0x0
1084 ; IASM-NEXT: .byte 0x0 1090 ; IASM-NEXT: .byte 0x0
1085 ; IASM-NEXT: .byte 0x0 1091 ; IASM-NEXT: .byte 0x0
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | tests_lit/assembler/mips32/encoding_test_arith_fp.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698