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

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

Issue 1948093002: [Subzero][MIPS32] Implement sext, zext and trunc (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addressed review comments Created 4 years, 7 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 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 } 792 }
793 ; CHECK-LABEL: trunc64To32Signed 793 ; CHECK-LABEL: trunc64To32Signed
794 ; CHECK: mov eax,DWORD PTR [esp+0xc] 794 ; CHECK: mov eax,DWORD PTR [esp+0xc]
795 ; 795 ;
796 ; OPTM1-LABEL: trunc64To32Signed 796 ; OPTM1-LABEL: trunc64To32Signed
797 ; OPTM1: mov eax,DWORD PTR [esp+ 797 ; OPTM1: mov eax,DWORD PTR [esp+
798 798
799 ; ARM32-LABEL: trunc64To32Signed 799 ; ARM32-LABEL: trunc64To32Signed
800 ; ARM32: mov r0, r2 800 ; ARM32: mov r0, r2
801 801
802 ; MIPS32-LABEL: trunc64To32Signed
803 ; MIPS32: move v0,a2
804
802 define internal i32 @trunc64To16Signed(i64 %a) { 805 define internal i32 @trunc64To16Signed(i64 %a) {
803 entry: 806 entry:
804 %conv = trunc i64 %a to i16 807 %conv = trunc i64 %a to i16
805 %conv.ret_ext = sext i16 %conv to i32 808 %conv.ret_ext = sext i16 %conv to i32
806 ret i32 %conv.ret_ext 809 ret i32 %conv.ret_ext
807 } 810 }
808 ; CHECK-LABEL: trunc64To16Signed 811 ; CHECK-LABEL: trunc64To16Signed
809 ; CHECK: mov eax,DWORD PTR [esp+0x4] 812 ; CHECK: mov eax,DWORD PTR [esp+0x4]
810 ; CHECK-NEXT: movsx eax,ax 813 ; CHECK-NEXT: movsx eax,ax
811 ; 814 ;
812 ; OPTM1-LABEL: trunc64To16Signed 815 ; OPTM1-LABEL: trunc64To16Signed
813 ; OPTM1: mov ax,WORD PTR [esp+ 816 ; OPTM1: mov ax,WORD PTR [esp+
814 ; OPTM1: movsx eax, 817 ; OPTM1: movsx eax,
815 818
816 ; ARM32-LABEL: trunc64To16Signed 819 ; ARM32-LABEL: trunc64To16Signed
817 ; ARM32: sxth r0, r0 820 ; ARM32: sxth r0, r0
818 821
822 ; MIPS32-LABEL: trunc64To16Signed
823 ; MIPS32: sll a0,a0,0x10
824 ; MIPS32: sra a0,a0,0x10
825 ; MIPS32: move v0,a0
826
819 define internal i32 @trunc64To8Signed(i64 %a) { 827 define internal i32 @trunc64To8Signed(i64 %a) {
820 entry: 828 entry:
821 %conv = trunc i64 %a to i8 829 %conv = trunc i64 %a to i8
822 %conv.ret_ext = sext i8 %conv to i32 830 %conv.ret_ext = sext i8 %conv to i32
823 ret i32 %conv.ret_ext 831 ret i32 %conv.ret_ext
824 } 832 }
825 ; CHECK-LABEL: trunc64To8Signed 833 ; CHECK-LABEL: trunc64To8Signed
826 ; CHECK: mov eax,DWORD PTR [esp+0x4] 834 ; CHECK: mov eax,DWORD PTR [esp+0x4]
827 ; CHECK-NEXT: movsx eax,al 835 ; CHECK-NEXT: movsx eax,al
828 ; 836 ;
829 ; OPTM1-LABEL: trunc64To8Signed 837 ; OPTM1-LABEL: trunc64To8Signed
830 ; OPTM1: mov eax,DWORD PTR [esp+ 838 ; OPTM1: mov eax,DWORD PTR [esp+
831 ; OPTM1: movsx eax, 839 ; OPTM1: movsx eax,
832 840
833 ; ARM32-LABEL: trunc64To8Signed 841 ; ARM32-LABEL: trunc64To8Signed
834 ; ARM32: sxtb r0, r0 842 ; ARM32: sxtb r0, r0
835 843
844 ; MIPS32-LABEL: trunc64To8Signed
845 ; MIPS32: sll a0,a0,0x18
846 ; MIPS32: sra a0,a0,0x18
847 ; MIPS32: move v0,a0
848
836 define internal i32 @trunc64To32SignedConst() { 849 define internal i32 @trunc64To32SignedConst() {
837 entry: 850 entry:
838 %conv = trunc i64 12345678901234 to i32 851 %conv = trunc i64 12345678901234 to i32
839 ret i32 %conv 852 ret i32 %conv
840 } 853 }
841 ; CHECK-LABEL: trunc64To32SignedConst 854 ; CHECK-LABEL: trunc64To32SignedConst
842 ; CHECK: mov eax,0x73ce2ff2 855 ; CHECK: mov eax,0x73ce2ff2
843 ; 856 ;
844 ; OPTM1-LABEL: trunc64To32SignedConst 857 ; OPTM1-LABEL: trunc64To32SignedConst
845 ; OPTM1: mov eax,0x73ce2ff2 858 ; OPTM1: mov eax,0x73ce2ff2
846 859
847 ; ARM32-LABEL: trunc64To32SignedConst 860 ; ARM32-LABEL: trunc64To32SignedConst
848 ; ARM32: movw r0, #12274 ; 0x2ff2 861 ; ARM32: movw r0, #12274 ; 0x2ff2
849 ; ARM32: movt r0, #29646 ; 0x73ce 862 ; ARM32: movt r0, #29646 ; 0x73ce
850 863
864 ; MIPS32-LABEL: trunc64To32SignedConst
865 ; MIPS32: lui v0,0x73ce
866 ; MIPS32: ori v0,v0,0x2ff2
867
851 define internal i32 @trunc64To16SignedConst() { 868 define internal i32 @trunc64To16SignedConst() {
852 entry: 869 entry:
853 %conv = trunc i64 12345678901234 to i16 870 %conv = trunc i64 12345678901234 to i16
854 %conv.ret_ext = sext i16 %conv to i32 871 %conv.ret_ext = sext i16 %conv to i32
855 ret i32 %conv.ret_ext 872 ret i32 %conv.ret_ext
856 } 873 }
857 ; CHECK-LABEL: trunc64To16SignedConst 874 ; CHECK-LABEL: trunc64To16SignedConst
858 ; CHECK: mov eax,0x73ce2ff2 875 ; CHECK: mov eax,0x73ce2ff2
859 ; CHECK: movsx eax,ax 876 ; CHECK: movsx eax,ax
860 ; 877 ;
861 ; OPTM1-LABEL: trunc64To16SignedConst 878 ; OPTM1-LABEL: trunc64To16SignedConst
862 ; OPTM1: mov eax,0x73ce2ff2 879 ; OPTM1: mov eax,0x73ce2ff2
863 ; OPTM1: movsx eax, 880 ; OPTM1: movsx eax,
864 881
865 ; ARM32-LABEL: trunc64To16SignedConst 882 ; ARM32-LABEL: trunc64To16SignedConst
866 ; ARM32: movw r0, #12274 ; 0x2ff2 883 ; ARM32: movw r0, #12274 ; 0x2ff2
867 ; ARM32: movt r0, #29646 ; 0x73ce 884 ; ARM32: movt r0, #29646 ; 0x73ce
868 ; ARM32: sxth r0, r0 885 ; ARM32: sxth r0, r0
869 886
887 ; MIPS32-LABEL: trunc64To16SignedConst
888 ; MIPS32: lui v0,0x73ce
889 ; MIPS32: ori v0,v0,0x2ff2
890 ; MIPS32: sll v0,v0,0x10
891 ; MIPS32: sra v0,v0,0x10
892
870 define internal i32 @trunc64To32Unsigned(i64 %padding, i64 %a) { 893 define internal i32 @trunc64To32Unsigned(i64 %padding, i64 %a) {
871 entry: 894 entry:
872 %conv = trunc i64 %a to i32 895 %conv = trunc i64 %a to i32
873 ret i32 %conv 896 ret i32 %conv
874 } 897 }
875 ; CHECK-LABEL: trunc64To32Unsigned 898 ; CHECK-LABEL: trunc64To32Unsigned
876 ; CHECK: mov eax,DWORD PTR [esp+0xc] 899 ; CHECK: mov eax,DWORD PTR [esp+0xc]
877 ; 900 ;
878 ; OPTM1-LABEL: trunc64To32Unsigned 901 ; OPTM1-LABEL: trunc64To32Unsigned
879 ; OPTM1: mov eax,DWORD PTR [esp+ 902 ; OPTM1: mov eax,DWORD PTR [esp+
880 903
881 ; ARM32-LABEL: trunc64To32Unsigned 904 ; ARM32-LABEL: trunc64To32Unsigned
882 ; ARM32: mov r0, r2 905 ; ARM32: mov r0, r2
883 906
907 ; MIPS32-LABEL: trunc64To32Unsigned
908 ; MIPS32: move v0,a2
909
884 define internal i32 @trunc64To16Unsigned(i64 %a) { 910 define internal i32 @trunc64To16Unsigned(i64 %a) {
885 entry: 911 entry:
886 %conv = trunc i64 %a to i16 912 %conv = trunc i64 %a to i16
887 %conv.ret_ext = zext i16 %conv to i32 913 %conv.ret_ext = zext i16 %conv to i32
888 ret i32 %conv.ret_ext 914 ret i32 %conv.ret_ext
889 } 915 }
890 ; CHECK-LABEL: trunc64To16Unsigned 916 ; CHECK-LABEL: trunc64To16Unsigned
891 ; CHECK: mov eax,DWORD PTR [esp+0x4] 917 ; CHECK: mov eax,DWORD PTR [esp+0x4]
892 ; CHECK-NEXT: movzx eax,ax 918 ; CHECK-NEXT: movzx eax,ax
893 ; 919 ;
894 ; OPTM1-LABEL: trunc64To16Unsigned 920 ; OPTM1-LABEL: trunc64To16Unsigned
895 ; OPTM1: mov ax,WORD PTR [esp+ 921 ; OPTM1: mov ax,WORD PTR [esp+
896 ; OPTM1: movzx eax, 922 ; OPTM1: movzx eax,
897 923
898 ; ARM32-LABEL: trunc64To16Unsigned 924 ; ARM32-LABEL: trunc64To16Unsigned
899 ; ARM32: uxth 925 ; ARM32: uxth
900 926
927 ; MIPS32-LABEL: trunc64To16Unsigned
928 ; MIPS32: andi a0,a0,0xffff
929 ; MIPS32: move v0,a0
930
901 define internal i32 @trunc64To8Unsigned(i64 %a) { 931 define internal i32 @trunc64To8Unsigned(i64 %a) {
902 entry: 932 entry:
903 %conv = trunc i64 %a to i8 933 %conv = trunc i64 %a to i8
904 %conv.ret_ext = zext i8 %conv to i32 934 %conv.ret_ext = zext i8 %conv to i32
905 ret i32 %conv.ret_ext 935 ret i32 %conv.ret_ext
906 } 936 }
907 ; CHECK-LABEL: trunc64To8Unsigned 937 ; CHECK-LABEL: trunc64To8Unsigned
908 ; CHECK: mov eax,DWORD PTR [esp+0x4] 938 ; CHECK: mov eax,DWORD PTR [esp+0x4]
909 ; CHECK-NEXT: movzx eax,al 939 ; CHECK-NEXT: movzx eax,al
910 ; 940 ;
911 ; OPTM1-LABEL: trunc64To8Unsigned 941 ; OPTM1-LABEL: trunc64To8Unsigned
912 ; OPTM1: mov eax,DWORD PTR [esp+ 942 ; OPTM1: mov eax,DWORD PTR [esp+
913 ; OPTM1: movzx eax, 943 ; OPTM1: movzx eax,
914 944
915 ; ARM32-LABEL: trunc64To8Unsigned 945 ; ARM32-LABEL: trunc64To8Unsigned
916 ; ARM32: uxtb 946 ; ARM32: uxtb
917 947
948 ; MIPS32-LABEL: trunc64To8Unsigned
949 ; MIPS32: andi a0,a0,0xff
950 ; MIPS32: move v0,a0
951
918 define internal i32 @trunc64To1(i64 %a) { 952 define internal i32 @trunc64To1(i64 %a) {
919 entry: 953 entry:
920 ; %tobool = icmp ne i64 %a, 0 954 ; %tobool = icmp ne i64 %a, 0
921 %tobool = trunc i64 %a to i1 955 %tobool = trunc i64 %a to i1
922 %tobool.ret_ext = zext i1 %tobool to i32 956 %tobool.ret_ext = zext i1 %tobool to i32
923 ret i32 %tobool.ret_ext 957 ret i32 %tobool.ret_ext
924 } 958 }
925 ; CHECK-LABEL: trunc64To1 959 ; CHECK-LABEL: trunc64To1
926 ; CHECK: mov eax,DWORD PTR [esp+0x4] 960 ; CHECK: mov eax,DWORD PTR [esp+0x4]
927 ; CHECK: and al,0x1 961 ; CHECK: and al,0x1
(...skipping 17 matching lines...) Expand all
945 ; CHECK: mov 979 ; CHECK: mov
946 ; CHECK: sar {{.*}},0x1f 980 ; CHECK: sar {{.*}},0x1f
947 ; 981 ;
948 ; OPTM1-LABEL: sext32To64 982 ; OPTM1-LABEL: sext32To64
949 ; OPTM1: mov 983 ; OPTM1: mov
950 ; OPTM1: sar {{.*}},0x1f 984 ; OPTM1: sar {{.*}},0x1f
951 985
952 ; ARM32-LABEL: sext32To64 986 ; ARM32-LABEL: sext32To64
953 ; ARM32: asr {{.*}}, #31 987 ; ARM32: asr {{.*}}, #31
954 988
989 ; MIPS32-LABEL: sext32To64
990 ; MIPS32-LABEL: sra v1,a0,0x1f
991 ; MIPS32-LABEL: move v0,a0
992
955 define internal i64 @sext16To64(i32 %a) { 993 define internal i64 @sext16To64(i32 %a) {
956 entry: 994 entry:
957 %a.arg_trunc = trunc i32 %a to i16 995 %a.arg_trunc = trunc i32 %a to i16
958 %conv = sext i16 %a.arg_trunc to i64 996 %conv = sext i16 %a.arg_trunc to i64
959 ret i64 %conv 997 ret i64 %conv
960 } 998 }
961 ; CHECK-LABEL: sext16To64 999 ; CHECK-LABEL: sext16To64
962 ; CHECK: movsx 1000 ; CHECK: movsx
963 ; CHECK: sar {{.*}},0x1f 1001 ; CHECK: sar {{.*}},0x1f
964 ; 1002 ;
965 ; OPTM1-LABEL: sext16To64 1003 ; OPTM1-LABEL: sext16To64
966 ; OPTM1: movsx 1004 ; OPTM1: movsx
967 ; OPTM1: sar {{.*}},0x1f 1005 ; OPTM1: sar {{.*}},0x1f
968 1006
969 ; ARM32-LABEL: sext16To64 1007 ; ARM32-LABEL: sext16To64
970 ; ARM32: sxth 1008 ; ARM32: sxth
971 ; ARM32: asr {{.*}}, #31 1009 ; ARM32: asr {{.*}}, #31
972 1010
1011 ; MIPS32-LABEL: sext16To64
1012 ; MIPS32: sll a0,a0,0x10
1013 ; MIPS32: sra a0,a0,0x10
1014 ; MIPS32: sra v1,a0,0x1f
1015 ; MIPS32: move v0,a0
1016
973 define internal i64 @sext8To64(i32 %a) { 1017 define internal i64 @sext8To64(i32 %a) {
974 entry: 1018 entry:
975 %a.arg_trunc = trunc i32 %a to i8 1019 %a.arg_trunc = trunc i32 %a to i8
976 %conv = sext i8 %a.arg_trunc to i64 1020 %conv = sext i8 %a.arg_trunc to i64
977 ret i64 %conv 1021 ret i64 %conv
978 } 1022 }
979 ; CHECK-LABEL: sext8To64 1023 ; CHECK-LABEL: sext8To64
980 ; CHECK: movsx 1024 ; CHECK: movsx
981 ; CHECK: sar {{.*}},0x1f 1025 ; CHECK: sar {{.*}},0x1f
982 ; 1026 ;
983 ; OPTM1-LABEL: sext8To64 1027 ; OPTM1-LABEL: sext8To64
984 ; OPTM1: movsx 1028 ; OPTM1: movsx
985 ; OPTM1: sar {{.*}},0x1f 1029 ; OPTM1: sar {{.*}},0x1f
986 1030
987 ; ARM32-LABEL: sext8To64 1031 ; ARM32-LABEL: sext8To64
988 ; ARM32: sxtb 1032 ; ARM32: sxtb
989 ; ARM32: asr {{.*}}, #31 1033 ; ARM32: asr {{.*}}, #31
990 1034
1035 ; MIPS32-LABEL: sext8To64
1036 ; MIPS32: sll a0,a0,0x18
1037 ; MIPS32: sra a0,a0,0x18
1038 ; MIPS32: sra v1,a0,0x1f
1039 ; MIPS32: move v0,a0
1040
991 define internal i64 @sext1To64(i32 %a) { 1041 define internal i64 @sext1To64(i32 %a) {
992 entry: 1042 entry:
993 %a.arg_trunc = trunc i32 %a to i1 1043 %a.arg_trunc = trunc i32 %a to i1
994 %conv = sext i1 %a.arg_trunc to i64 1044 %conv = sext i1 %a.arg_trunc to i64
995 ret i64 %conv 1045 ret i64 %conv
996 } 1046 }
997 ; CHECK-LABEL: sext1To64 1047 ; CHECK-LABEL: sext1To64
998 ; CHECK: mov 1048 ; CHECK: mov
999 ; CHECK: shl {{.*}},0x1f 1049 ; CHECK: shl {{.*}},0x1f
1000 ; CHECK: sar {{.*}},0x1f 1050 ; CHECK: sar {{.*}},0x1f
(...skipping 18 matching lines...) Expand all
1019 ; CHECK: mov 1069 ; CHECK: mov
1020 ; CHECK: mov {{.*}},0x0 1070 ; CHECK: mov {{.*}},0x0
1021 ; 1071 ;
1022 ; OPTM1-LABEL: zext32To64 1072 ; OPTM1-LABEL: zext32To64
1023 ; OPTM1: mov 1073 ; OPTM1: mov
1024 ; OPTM1: mov {{.*}},0x0 1074 ; OPTM1: mov {{.*}},0x0
1025 1075
1026 ; ARM32-LABEL: zext32To64 1076 ; ARM32-LABEL: zext32To64
1027 ; ARM32: mov {{.*}}, #0 1077 ; ARM32: mov {{.*}}, #0
1028 1078
1079 ; MIPS32-LABEL: zext32To64
1080 ; MIPS32: li v1,0
1081 ; MIPS32: move v0,a0
1082
1029 define internal i64 @zext16To64(i32 %a) { 1083 define internal i64 @zext16To64(i32 %a) {
1030 entry: 1084 entry:
1031 %a.arg_trunc = trunc i32 %a to i16 1085 %a.arg_trunc = trunc i32 %a to i16
1032 %conv = zext i16 %a.arg_trunc to i64 1086 %conv = zext i16 %a.arg_trunc to i64
1033 ret i64 %conv 1087 ret i64 %conv
1034 } 1088 }
1035 ; CHECK-LABEL: zext16To64 1089 ; CHECK-LABEL: zext16To64
1036 ; CHECK: movzx 1090 ; CHECK: movzx
1037 ; CHECK: mov {{.*}},0x0 1091 ; CHECK: mov {{.*}},0x0
1038 ; 1092 ;
1039 ; OPTM1-LABEL: zext16To64 1093 ; OPTM1-LABEL: zext16To64
1040 ; OPTM1: movzx 1094 ; OPTM1: movzx
1041 ; OPTM1: mov {{.*}},0x0 1095 ; OPTM1: mov {{.*}},0x0
1042 1096
1043 ; ARM32-LABEL: zext16To64 1097 ; ARM32-LABEL: zext16To64
1044 ; ARM32: uxth 1098 ; ARM32: uxth
1045 ; ARM32: mov {{.*}}, #0 1099 ; ARM32: mov {{.*}}, #0
1046 1100
1101 ; MIPS32-LABEL: zext16To64
1102 ; MIPS32: andi a0,a0,0xffff
1103 ; MIPS32: li v1,0
1104 ; MIPS32: move v0,a0
1105
1047 define internal i64 @zext8To64(i32 %a) { 1106 define internal i64 @zext8To64(i32 %a) {
1048 entry: 1107 entry:
1049 %a.arg_trunc = trunc i32 %a to i8 1108 %a.arg_trunc = trunc i32 %a to i8
1050 %conv = zext i8 %a.arg_trunc to i64 1109 %conv = zext i8 %a.arg_trunc to i64
1051 ret i64 %conv 1110 ret i64 %conv
1052 } 1111 }
1053 ; CHECK-LABEL: zext8To64 1112 ; CHECK-LABEL: zext8To64
1054 ; CHECK: movzx 1113 ; CHECK: movzx
1055 ; CHECK: mov {{.*}},0x0 1114 ; CHECK: mov {{.*}},0x0
1056 ; 1115 ;
1057 ; OPTM1-LABEL: zext8To64 1116 ; OPTM1-LABEL: zext8To64
1058 ; OPTM1: movzx 1117 ; OPTM1: movzx
1059 ; OPTM1: mov {{.*}},0x0 1118 ; OPTM1: mov {{.*}},0x0
1060 1119
1061 ; ARM32-LABEL: zext8To64 1120 ; ARM32-LABEL: zext8To64
1062 ; ARM32: uxtb 1121 ; ARM32: uxtb
1063 ; ARM32: mov {{.*}}, #0 1122 ; ARM32: mov {{.*}}, #0
1064 1123
1124 ; MIPS32-LABEL: zext8To64
1125 ; MIPS32: andi a0,a0,0xff
1126 ; MIPS32: li v1,0
1127 ; MIPS32: move v0,a0
1128
1065 define internal i64 @zext1To64(i32 %a) { 1129 define internal i64 @zext1To64(i32 %a) {
1066 entry: 1130 entry:
1067 %a.arg_trunc = trunc i32 %a to i1 1131 %a.arg_trunc = trunc i32 %a to i1
1068 %conv = zext i1 %a.arg_trunc to i64 1132 %conv = zext i1 %a.arg_trunc to i64
1069 ret i64 %conv 1133 ret i64 %conv
1070 } 1134 }
1071 ; CHECK-LABEL: zext1To64 1135 ; CHECK-LABEL: zext1To64
1072 ; CHECK: and {{.*}},0x1 1136 ; CHECK: and {{.*}},0x1
1073 ; CHECK: mov {{.*}},0x0 1137 ; CHECK: mov {{.*}},0x0
1074 ; 1138 ;
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after
1973 %s = lshr i64 %a, 40 2037 %s = lshr i64 %a, 40
1974 %t = trunc i64 %s to i32 2038 %t = trunc i64 %s to i32
1975 %r = sub i32 %t, 1 2039 %r = sub i32 %t, 1
1976 ret i32 %r 2040 ret i32 %r
1977 ; ARM32-LABEL: subOneToUpperAfterShift 2041 ; ARM32-LABEL: subOneToUpperAfterShift
1978 ; ARM32: subs 2042 ; ARM32: subs
1979 ; ARM32: sbc 2043 ; ARM32: sbc
1980 ; ARM32: lsr 2044 ; ARM32: lsr
1981 ; ARM32: sub 2045 ; ARM32: sub
1982 } 2046 }
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