| OLD | NEW |
| 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 \ | 6 ; RUN: --target x8632 -i %s --args -O2 \ |
| 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 \ | 10 ; RUN: --target x8632 -i %s --args -Om1 \ |
| 11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s | 11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s |
| 12 | 12 |
| 13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) | 13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) |
| 14 ; once enough infrastructure is in. Also, switch to --filetype=obj | 14 ; once enough infrastructure is in. Also, switch to --filetype=obj |
| 15 ; when possible. | 15 ; when possible. |
| 16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 17 ; RUN: --command %p2i --filetype=asm --assemble \ | 17 ; RUN: --command %p2i --filetype=asm --assemble \ |
| 18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ | 18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
| 19 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 19 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 20 ; RUN: --command FileCheck --check-prefix ARM32 %s | 20 ; RUN: --command FileCheck --check-prefix ARM32 %s |
| 21 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 22 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ |
| 23 ; RUN: -i %s --args -Om1 --skip-unimplemented \ |
| 24 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 25 ; RUN: --command FileCheck --check-prefix ARM32 %s |
| 21 | 26 |
| 22 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 27 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
| 23 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 28 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
| 24 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 | 29 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 |
| 25 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 | 30 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 |
| 26 | 31 |
| 27 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) { | 32 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) { |
| 28 entry: | 33 entry: |
| 29 ret i32 %b | 34 ret i32 %b |
| 30 } | 35 } |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 ; ARM32-LABEL: pass64BitArg | 92 ; ARM32-LABEL: pass64BitArg |
| 88 ; ARM32: sub sp, {{.*}} #16 | 93 ; ARM32: sub sp, {{.*}} #16 |
| 89 ; ARM32: str {{.*}}, [sp, #4] | 94 ; ARM32: str {{.*}}, [sp, #4] |
| 90 ; ARM32: str {{.*}}, [sp] | 95 ; ARM32: str {{.*}}, [sp] |
| 91 ; ARM32: movw r2, #123 | 96 ; ARM32: movw r2, #123 |
| 92 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 97 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 93 ; ARM32: add sp, {{.*}} #16 | 98 ; ARM32: add sp, {{.*}} #16 |
| 94 ; ARM32: sub sp, {{.*}} #16 | 99 ; ARM32: sub sp, {{.*}} #16 |
| 95 ; ARM32: str {{.*}}, [sp, #4] | 100 ; ARM32: str {{.*}}, [sp, #4] |
| 96 ; ARM32: str {{.*}}, [sp] | 101 ; ARM32: str {{.*}}, [sp] |
| 97 ; ARM32: mov r0 | 102 ; ARM32: {{mov|ldr}} r0 |
| 98 ; ARM32: mov r1 | 103 ; ARM32: {{mov|ldr}} r1 |
| 99 ; ARM32: movw r2, #123 | 104 ; ARM32: movw r2, #123 |
| 100 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 105 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 101 ; ARM32: add sp, {{.*}} #16 | 106 ; ARM32: add sp, {{.*}} #16 |
| 102 ; ARM32: sub sp, {{.*}} #16 | 107 ; ARM32: sub sp, {{.*}} #16 |
| 103 ; ARM32: str {{.*}}, [sp, #4] | 108 ; ARM32: str {{.*}}, [sp, #4] |
| 104 ; ARM32: str {{.*}}, [sp] | 109 ; ARM32: str {{.*}}, [sp] |
| 105 ; ARM32: mov r0 | 110 ; ARM32: {{mov|ldr}} r0 |
| 106 ; ARM32: mov r1 | 111 ; ARM32: {{mov|ldr}} r1 |
| 107 ; ARM32: movw r2, #123 | 112 ; ARM32: movw r2, #123 |
| 108 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 113 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 109 ; ARM32: add sp, {{.*}} #16 | 114 ; ARM32: add sp, {{.*}} #16 |
| 110 | 115 |
| 111 | 116 |
| 112 declare i32 @ignore64BitArgNoInline(i64, i32, i64) | 117 declare i32 @ignore64BitArgNoInline(i64, i32, i64) |
| 113 | 118 |
| 114 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { | 119 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { |
| 115 entry: | 120 entry: |
| 116 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672
5256) | 121 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672
5256) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 140 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline | 145 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline |
| 141 | 146 |
| 142 ; ARM32-LABEL: pass64BitConstArg | 147 ; ARM32-LABEL: pass64BitConstArg |
| 143 ; ARM32: sub sp, {{.*}} #16 | 148 ; ARM32: sub sp, {{.*}} #16 |
| 144 ; ARM32: movw [[REG1:r.*]], {{.*}} ; 0xbeef | 149 ; ARM32: movw [[REG1:r.*]], {{.*}} ; 0xbeef |
| 145 ; ARM32: movt [[REG1:r.*]], {{.*}} ; 0xdead | 150 ; ARM32: movt [[REG1:r.*]], {{.*}} ; 0xdead |
| 146 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678 | 151 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678 |
| 147 ; ARM32: movt [[REG2:r.*]], {{.*}} ; 0x1234 | 152 ; ARM32: movt [[REG2:r.*]], {{.*}} ; 0x1234 |
| 148 ; ARM32: str [[REG1]], [sp, #4] | 153 ; ARM32: str [[REG1]], [sp, #4] |
| 149 ; ARM32: str [[REG2]], [sp] | 154 ; ARM32: str [[REG2]], [sp] |
| 150 ; ARM32: mov r0, r2 | 155 ; ARM32: {{mov|ldr}} r0 |
| 151 ; ARM32: mov r1, r3 | 156 ; ARM32: {{mov|ldr}} r1 |
| 152 ; ARM32: movw r2, #123 | 157 ; ARM32: movw r2, #123 |
| 153 ; ARM32: bl {{.*}} ignore64BitArgNoInline | 158 ; ARM32: bl {{.*}} ignore64BitArgNoInline |
| 154 ; ARM32: add sp, {{.*}} #16 | 159 ; ARM32: add sp, {{.*}} #16 |
| 155 | 160 |
| 156 define internal i64 @return64BitArg(i64 %a) { | 161 define internal i64 @return64BitArg(i64 %padding, i64 %a) { |
| 157 entry: | 162 entry: |
| 158 ret i64 %a | 163 ret i64 %a |
| 159 } | 164 } |
| 160 ; CHECK-LABEL: return64BitArg | 165 ; CHECK-LABEL: return64BitArg |
| 161 ; CHECK: mov {{.*}},DWORD PTR [esp+0x4] | 166 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc] |
| 162 ; CHECK: mov {{.*}},DWORD PTR [esp+0x8] | 167 ; CHECK: mov {{.*}},DWORD PTR [esp+0x10] |
| 163 ; | 168 ; |
| 164 ; OPTM1-LABEL: return64BitArg | 169 ; OPTM1-LABEL: return64BitArg |
| 165 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x4] | 170 ; OPTM1: mov {{.*}},DWORD PTR [esp+0xc] |
| 166 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x8] | 171 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x10] |
| 167 | 172 |
| 168 ; Nothing to do for ARM O2 -- arg and return value are in r0,r1. | |
| 169 ; ARM32-LABEL: return64BitArg | 173 ; ARM32-LABEL: return64BitArg |
| 170 ; ARM32-NEXT: bx lr | 174 ; ARM32: mov {{.*}}, r2 |
| 175 ; ARM32: mov {{.*}}, r3 |
| 176 ; ARM32: bx lr |
| 171 | 177 |
| 172 define internal i64 @return64BitConst() { | 178 define internal i64 @return64BitConst() { |
| 173 entry: | 179 entry: |
| 174 ret i64 -2401053092306725256 | 180 ret i64 -2401053092306725256 |
| 175 } | 181 } |
| 176 ; CHECK-LABEL: return64BitConst | 182 ; CHECK-LABEL: return64BitConst |
| 177 ; CHECK: mov eax,0x12345678 | 183 ; CHECK: mov eax,0x12345678 |
| 178 ; CHECK: mov edx,0xdeadbeef | 184 ; CHECK: mov edx,0xdeadbeef |
| 179 ; | 185 ; |
| 180 ; OPTM1-LABEL: return64BitConst | 186 ; OPTM1-LABEL: return64BitConst |
| (...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 ; OPTM1: call | 1001 ; OPTM1: call |
| 996 ; OPTM1: jne | 1002 ; OPTM1: jne |
| 997 ; OPTM1: je | 1003 ; OPTM1: je |
| 998 ; OPTM1: call | 1004 ; OPTM1: call |
| 999 | 1005 |
| 1000 ; ARM32-LABEL: icmpEq64 | 1006 ; ARM32-LABEL: icmpEq64 |
| 1001 ; ARM32: cmp | 1007 ; ARM32: cmp |
| 1002 ; ARM32: cmpeq | 1008 ; ARM32: cmpeq |
| 1003 ; ARM32: moveq | 1009 ; ARM32: moveq |
| 1004 ; ARM32: movne | 1010 ; ARM32: movne |
| 1005 ; ARM32: beq | |
| 1006 ; ARM32: bl | 1011 ; ARM32: bl |
| 1007 ; ARM32: cmp | 1012 ; ARM32: cmp |
| 1008 ; ARM32: cmpeq | 1013 ; ARM32: cmpeq |
| 1009 ; ARM32: moveq | 1014 ; ARM32: moveq |
| 1010 ; ARM32: movne | 1015 ; ARM32: movne |
| 1011 ; ARM32: beq | |
| 1012 ; ARM32: bl | 1016 ; ARM32: bl |
| 1013 | 1017 |
| 1014 declare void @func() | 1018 declare void @func() |
| 1015 | 1019 |
| 1016 define internal void @icmpNe64(i64 %a, i64 %b, i64 %c, i64 %d) { | 1020 define internal void @icmpNe64(i64 %a, i64 %b, i64 %c, i64 %d) { |
| 1017 entry: | 1021 entry: |
| 1018 %cmp = icmp ne i64 %a, %b | 1022 %cmp = icmp ne i64 %a, %b |
| 1019 br i1 %cmp, label %if.then, label %if.end | 1023 br i1 %cmp, label %if.then, label %if.end |
| 1020 | 1024 |
| 1021 if.then: ; preds = %entry | 1025 if.then: ; preds = %entry |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1047 ; OPTM1: call | 1051 ; OPTM1: call |
| 1048 ; OPTM1: jne | 1052 ; OPTM1: jne |
| 1049 ; OPTM1: jne | 1053 ; OPTM1: jne |
| 1050 ; OPTM1: call | 1054 ; OPTM1: call |
| 1051 | 1055 |
| 1052 ; ARM32-LABEL: icmpNe64 | 1056 ; ARM32-LABEL: icmpNe64 |
| 1053 ; ARM32: cmp | 1057 ; ARM32: cmp |
| 1054 ; ARM32: cmpeq | 1058 ; ARM32: cmpeq |
| 1055 ; ARM32: movne | 1059 ; ARM32: movne |
| 1056 ; ARM32: moveq | 1060 ; ARM32: moveq |
| 1057 ; ARM32: beq | |
| 1058 ; ARM32: bl | 1061 ; ARM32: bl |
| 1059 ; ARM32: cmp | 1062 ; ARM32: cmp |
| 1060 ; ARM32: cmpeq | 1063 ; ARM32: cmpeq |
| 1061 ; ARM32: movne | 1064 ; ARM32: movne |
| 1062 ; ARM32: moveq | 1065 ; ARM32: moveq |
| 1063 ; ARM32: beq | |
| 1064 ; ARM32: bl | 1066 ; ARM32: bl |
| 1065 | 1067 |
| 1066 define internal void @icmpGt64(i64 %a, i64 %b, i64 %c, i64 %d) { | 1068 define internal void @icmpGt64(i64 %a, i64 %b, i64 %c, i64 %d) { |
| 1067 entry: | 1069 entry: |
| 1068 %cmp = icmp ugt i64 %a, %b | 1070 %cmp = icmp ugt i64 %a, %b |
| 1069 br i1 %cmp, label %if.then, label %if.end | 1071 br i1 %cmp, label %if.then, label %if.end |
| 1070 | 1072 |
| 1071 if.then: ; preds = %entry | 1073 if.then: ; preds = %entry |
| 1072 call void @func() | 1074 call void @func() |
| 1073 br label %if.end | 1075 br label %if.end |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1101 ; OPTM1: jg | 1103 ; OPTM1: jg |
| 1102 ; OPTM1: jl | 1104 ; OPTM1: jl |
| 1103 ; OPTM1: ja | 1105 ; OPTM1: ja |
| 1104 ; OPTM1: call | 1106 ; OPTM1: call |
| 1105 | 1107 |
| 1106 ; ARM32-LABEL: icmpGt64 | 1108 ; ARM32-LABEL: icmpGt64 |
| 1107 ; ARM32: cmp | 1109 ; ARM32: cmp |
| 1108 ; ARM32: cmpeq | 1110 ; ARM32: cmpeq |
| 1109 ; ARM32: movhi | 1111 ; ARM32: movhi |
| 1110 ; ARM32: movls | 1112 ; ARM32: movls |
| 1111 ; ARM32: beq | |
| 1112 ; ARM32: bl | 1113 ; ARM32: bl |
| 1113 ; ARM32: cmp | 1114 ; ARM32: cmp |
| 1114 ; ARM32: sbcs | 1115 ; ARM32: sbcs |
| 1115 ; ARM32: movlt | 1116 ; ARM32: movlt |
| 1116 ; ARM32: movge | 1117 ; ARM32: movge |
| 1117 ; ARM32: beq | |
| 1118 ; ARM32: bl | 1118 ; ARM32: bl |
| 1119 | 1119 |
| 1120 define internal void @icmpGe64(i64 %a, i64 %b, i64 %c, i64 %d) { | 1120 define internal void @icmpGe64(i64 %a, i64 %b, i64 %c, i64 %d) { |
| 1121 entry: | 1121 entry: |
| 1122 %cmp = icmp uge i64 %a, %b | 1122 %cmp = icmp uge i64 %a, %b |
| 1123 br i1 %cmp, label %if.then, label %if.end | 1123 br i1 %cmp, label %if.then, label %if.end |
| 1124 | 1124 |
| 1125 if.then: ; preds = %entry | 1125 if.then: ; preds = %entry |
| 1126 call void @func() | 1126 call void @func() |
| 1127 br label %if.end | 1127 br label %if.end |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1155 ; OPTM1: jg | 1155 ; OPTM1: jg |
| 1156 ; OPTM1: jl | 1156 ; OPTM1: jl |
| 1157 ; OPTM1: jae | 1157 ; OPTM1: jae |
| 1158 ; OPTM1: call | 1158 ; OPTM1: call |
| 1159 | 1159 |
| 1160 ; ARM32-LABEL: icmpGe64 | 1160 ; ARM32-LABEL: icmpGe64 |
| 1161 ; ARM32: cmp | 1161 ; ARM32: cmp |
| 1162 ; ARM32: cmpeq | 1162 ; ARM32: cmpeq |
| 1163 ; ARM32: movcs | 1163 ; ARM32: movcs |
| 1164 ; ARM32: movcc | 1164 ; ARM32: movcc |
| 1165 ; ARM32: beq | |
| 1166 ; ARM32: bl | 1165 ; ARM32: bl |
| 1167 ; ARM32: cmp | 1166 ; ARM32: cmp |
| 1168 ; ARM32: sbcs | 1167 ; ARM32: sbcs |
| 1169 ; ARM32: movge | 1168 ; ARM32: movge |
| 1170 ; ARM32: movlt | 1169 ; ARM32: movlt |
| 1171 ; ARM32: beq | |
| 1172 ; ARM32: bl | 1170 ; ARM32: bl |
| 1173 | 1171 |
| 1174 define internal void @icmpLt64(i64 %a, i64 %b, i64 %c, i64 %d) { | 1172 define internal void @icmpLt64(i64 %a, i64 %b, i64 %c, i64 %d) { |
| 1175 entry: | 1173 entry: |
| 1176 %cmp = icmp ult i64 %a, %b | 1174 %cmp = icmp ult i64 %a, %b |
| 1177 br i1 %cmp, label %if.then, label %if.end | 1175 br i1 %cmp, label %if.then, label %if.end |
| 1178 | 1176 |
| 1179 if.then: ; preds = %entry | 1177 if.then: ; preds = %entry |
| 1180 call void @func() | 1178 call void @func() |
| 1181 br label %if.end | 1179 br label %if.end |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1209 ; OPTM1: jl | 1207 ; OPTM1: jl |
| 1210 ; OPTM1: jg | 1208 ; OPTM1: jg |
| 1211 ; OPTM1: jb | 1209 ; OPTM1: jb |
| 1212 ; OPTM1: call | 1210 ; OPTM1: call |
| 1213 | 1211 |
| 1214 ; ARM32-LABEL: icmpLt64 | 1212 ; ARM32-LABEL: icmpLt64 |
| 1215 ; ARM32: cmp | 1213 ; ARM32: cmp |
| 1216 ; ARM32: cmpeq | 1214 ; ARM32: cmpeq |
| 1217 ; ARM32: movcc | 1215 ; ARM32: movcc |
| 1218 ; ARM32: movcs | 1216 ; ARM32: movcs |
| 1219 ; ARM32: beq | |
| 1220 ; ARM32: bl | 1217 ; ARM32: bl |
| 1221 ; ARM32: cmp | 1218 ; ARM32: cmp |
| 1222 ; ARM32: sbcs | 1219 ; ARM32: sbcs |
| 1223 ; ARM32: movlt | 1220 ; ARM32: movlt |
| 1224 ; ARM32: movge | 1221 ; ARM32: movge |
| 1225 ; ARM32: beq | |
| 1226 ; ARM32: bl | 1222 ; ARM32: bl |
| 1227 | 1223 |
| 1228 define internal void @icmpLe64(i64 %a, i64 %b, i64 %c, i64 %d) { | 1224 define internal void @icmpLe64(i64 %a, i64 %b, i64 %c, i64 %d) { |
| 1229 entry: | 1225 entry: |
| 1230 %cmp = icmp ule i64 %a, %b | 1226 %cmp = icmp ule i64 %a, %b |
| 1231 br i1 %cmp, label %if.then, label %if.end | 1227 br i1 %cmp, label %if.then, label %if.end |
| 1232 | 1228 |
| 1233 if.then: ; preds = %entry | 1229 if.then: ; preds = %entry |
| 1234 call void @func() | 1230 call void @func() |
| 1235 br label %if.end | 1231 br label %if.end |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1263 ; OPTM1: jl | 1259 ; OPTM1: jl |
| 1264 ; OPTM1: jg | 1260 ; OPTM1: jg |
| 1265 ; OPTM1: jbe | 1261 ; OPTM1: jbe |
| 1266 ; OPTM1: call | 1262 ; OPTM1: call |
| 1267 | 1263 |
| 1268 ; ARM32-LABEL: icmpLe64 | 1264 ; ARM32-LABEL: icmpLe64 |
| 1269 ; ARM32: cmp | 1265 ; ARM32: cmp |
| 1270 ; ARM32: cmpeq | 1266 ; ARM32: cmpeq |
| 1271 ; ARM32: movls | 1267 ; ARM32: movls |
| 1272 ; ARM32: movhi | 1268 ; ARM32: movhi |
| 1273 ; ARM32: beq | |
| 1274 ; ARM32: bl | 1269 ; ARM32: bl |
| 1275 ; ARM32: cmp | 1270 ; ARM32: cmp |
| 1276 ; ARM32: sbcs | 1271 ; ARM32: sbcs |
| 1277 ; ARM32: movge | 1272 ; ARM32: movge |
| 1278 ; ARM32: movlt | 1273 ; ARM32: movlt |
| 1279 ; ARM32: beq | |
| 1280 ; ARM32: bl | 1274 ; ARM32: bl |
| 1281 | 1275 |
| 1282 define internal i32 @icmpEq64Bool(i64 %a, i64 %b) { | 1276 define internal i32 @icmpEq64Bool(i64 %a, i64 %b) { |
| 1283 entry: | 1277 entry: |
| 1284 %cmp = icmp eq i64 %a, %b | 1278 %cmp = icmp eq i64 %a, %b |
| 1285 %cmp.ret_ext = zext i1 %cmp to i32 | 1279 %cmp.ret_ext = zext i1 %cmp to i32 |
| 1286 ret i32 %cmp.ret_ext | 1280 ret i32 %cmp.ret_ext |
| 1287 } | 1281 } |
| 1288 ; CHECK-LABEL: icmpEq64Bool | 1282 ; CHECK-LABEL: icmpEq64Bool |
| 1289 ; CHECK: jne | 1283 ; CHECK: jne |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1743 ret void | 1737 ret void |
| 1744 } | 1738 } |
| 1745 ; The following checks are not strictly necessary since one of the RUN | 1739 ; The following checks are not strictly necessary since one of the RUN |
| 1746 ; lines actually runs the output through the assembler. | 1740 ; lines actually runs the output through the assembler. |
| 1747 ; CHECK-LABEL: icmpLt64Imm | 1741 ; CHECK-LABEL: icmpLt64Imm |
| 1748 ; CHECK-NOT: cmp 0x{{[0-9a-f]+}}, | 1742 ; CHECK-NOT: cmp 0x{{[0-9a-f]+}}, |
| 1749 ; OPTM1-LABEL: icmpLt64Imm | 1743 ; OPTM1-LABEL: icmpLt64Imm |
| 1750 ; OPTM1-NOT: cmp 0x{{[0-9a-f]+}}, | 1744 ; OPTM1-NOT: cmp 0x{{[0-9a-f]+}}, |
| 1751 ; ARM32-LABEL: icmpLt64Imm | 1745 ; ARM32-LABEL: icmpLt64Imm |
| 1752 ; ARM32-NOT: cmp #{{[0-9a-f]+}}, | 1746 ; ARM32-NOT: cmp #{{[0-9a-f]+}}, |
| OLD | NEW |