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 \ |
(...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1284 ; OPTM1-LABEL: icmpUle64Bool | 1284 ; OPTM1-LABEL: icmpUle64Bool |
1285 ; OPTM1: cmp | 1285 ; OPTM1: cmp |
1286 ; OPTM1: jb | 1286 ; OPTM1: jb |
1287 ; OPTM1: ja | 1287 ; OPTM1: ja |
1288 ; OPTM1: cmp | 1288 ; OPTM1: cmp |
1289 ; OPTM1: jbe | 1289 ; OPTM1: jbe |
1290 | 1290 |
1291 define internal i64 @load64(i32 %a) { | 1291 define internal i64 @load64(i32 %a) { |
1292 entry: | 1292 entry: |
1293 %__1 = inttoptr i32 %a to i64* | 1293 %__1 = inttoptr i32 %a to i64* |
1294 %v0 = load i64* %__1, align 1 | 1294 %v0 = load i64, i64* %__1, align 1 |
1295 ret i64 %v0 | 1295 ret i64 %v0 |
1296 } | 1296 } |
1297 ; CHECK-LABEL: load64 | 1297 ; CHECK-LABEL: load64 |
1298 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] | 1298 ; CHECK: mov e[[REGISTER:[a-z]+]],DWORD PTR [esp+0x4] |
1299 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]] | 1299 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]] |
1300 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4] | 1300 ; CHECK-NEXT: mov {{.*}},DWORD PTR [e[[REGISTER]]+0x4] |
1301 ; | 1301 ; |
1302 ; OPTM1-LABEL: load64 | 1302 ; OPTM1-LABEL: load64 |
1303 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}] | 1303 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}] |
1304 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}+0x4] | 1304 ; OPTM1: mov e{{..}},DWORD PTR [e{{..}}+0x4] |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1455 ret void | 1455 ret void |
1456 } | 1456 } |
1457 ; The following checks are not strictly necessary since one of the RUN | 1457 ; The following checks are not strictly necessary since one of the RUN |
1458 ; lines actually runs the output through the assembler. | 1458 ; lines actually runs the output through the assembler. |
1459 ; CHECK-LABEL: icmpLt64Imm | 1459 ; CHECK-LABEL: icmpLt64Imm |
1460 ; CHECK-NOT: cmp 0x{{[0-9a-f]+}}, | 1460 ; CHECK-NOT: cmp 0x{{[0-9a-f]+}}, |
1461 ; OPTM1-LABEL: icmpLt64Imm | 1461 ; OPTM1-LABEL: icmpLt64Imm |
1462 ; OPTM1-NOT: cmp 0x{{[0-9a-f]+}}, | 1462 ; OPTM1-NOT: cmp 0x{{[0-9a-f]+}}, |
1463 ; ARM32-LABEL: icmpLt64Imm | 1463 ; ARM32-LABEL: icmpLt64Imm |
1464 ; ARM32-NOT: cmp #{{[0-9a-f]+}}, | 1464 ; ARM32-NOT: cmp #{{[0-9a-f]+}}, |
OLD | NEW |