|
5 | 5 | define void @foo() unnamed_addr #0 {
|
6 | 6 | ; CHECK-LABEL: foo:
|
7 | 7 | ; CHECK: # %bb.0:
|
8 |
| -; CHECK-NEXT: movabsq $8589934462, %rax # imm = 0x1FFFFFF7E |
| 8 | +; CHECK-NEXT: movabsq $8589934472, %rax # imm = 0x1FFFFFF88 |
9 | 9 | ; CHECK-NEXT: subq %rax, %rsp
|
10 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 8589934470 |
11 |
| -; CHECK-NEXT: movb $42, -129(%rsp) |
12 |
| -; CHECK-NEXT: movb $43, -128(%rsp) |
13 |
| -; CHECK-NEXT: movabsq $8589934462, %rax # imm = 0x1FFFFFF7E |
| 10 | +; CHECK-NEXT: .cfi_def_cfa_offset 8589934480 |
| 11 | +; CHECK-NEXT: movabsq $4294967177, %rax # imm = 0xFFFFFF89 |
| 12 | +; CHECK-NEXT: movb $42, (%rsp,%rax) |
| 13 | +; CHECK-NEXT: movb $43, -118(%rsp) |
| 14 | +; CHECK-NEXT: movabsq $8589934472, %rax # imm = 0x1FFFFFF88 |
14 | 15 | ; CHECK-NEXT: addq %rax, %rsp
|
15 | 16 | ; CHECK-NEXT: .cfi_def_cfa_offset 8
|
16 | 17 | ; CHECK-NEXT: retq
|
17 |
| - %1 = alloca %large, align 1 |
18 |
| - %2 = alloca %large, align 1 |
19 |
| - %3 = getelementptr inbounds %large, ptr %1, i64 0, i64 0 |
20 |
| - store i8 42, ptr %3, align 1 |
21 |
| - %4 = getelementptr inbounds %large, ptr %2, i64 0, i64 0 |
22 |
| - store i8 43, ptr %4, align 1 |
| 18 | + %large1 = alloca %large, align 1 |
| 19 | + %large2 = alloca %large, align 1 |
| 20 | + %ptrLarge1 = getelementptr inbounds %large, ptr %large1, i64 0, i64 0 |
| 21 | + store i8 42, ptr %ptrLarge1, align 1 |
| 22 | + %ptrLarge2 = getelementptr inbounds %large, ptr %large2, i64 0, i64 0 |
| 23 | + store i8 43, ptr %ptrLarge2, align 1 |
23 | 24 | ret void
|
24 | 25 | }
|
| 26 | + |
| 27 | +declare ptr @baz(ptr, ptr, ptr, ptr) |
| 28 | + |
| 29 | +define ptr @scavenge_spill() unnamed_addr #0 { |
| 30 | +; CHECK-LABEL: scavenge_spill: |
| 31 | +; CHECK: # %bb.0: |
| 32 | +; CHECK-NEXT: movabsq $25769803816, %rax # imm = 0x600000028 |
| 33 | +; CHECK-NEXT: subq %rax, %rsp |
| 34 | +; CHECK-NEXT: .cfi_def_cfa_offset 25769803824 |
| 35 | +; CHECK-NEXT: movabsq $21474836521, %rax # imm = 0x500000029 |
| 36 | +; CHECK-NEXT: leaq (%rsp,%rax), %rdi |
| 37 | +; CHECK-NEXT: movabsq $17179869226, %rax # imm = 0x40000002A |
| 38 | +; CHECK-NEXT: leaq (%rsp,%rax), %rsi |
| 39 | +; CHECK-NEXT: movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill |
| 40 | +; CHECK-NEXT: movabsq $12884901931, %rax # imm = 0x30000002B |
| 41 | +; CHECK-NEXT: leaq (%rsp,%rax), %rdx |
| 42 | +; CHECK-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill |
| 43 | +; CHECK-NEXT: movabsq $8589934636, %rax # imm = 0x20000002C |
| 44 | +; CHECK-NEXT: leaq (%rsp,%rax), %rcx |
| 45 | +; CHECK-NEXT: movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill |
| 46 | +; CHECK-NEXT: callq baz@PLT |
| 47 | +; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload |
| 48 | +; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload |
| 49 | +; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload |
| 50 | +; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill |
| 51 | +; CHECK-NEXT: leaq 46(%rsp), %rdi |
| 52 | +; CHECK-NEXT: callq baz@PLT |
| 53 | +; CHECK-NEXT: # kill: def $rcx killed $rax |
| 54 | +; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload |
| 55 | +; CHECK-NEXT: movabsq $25769803816, %rcx # imm = 0x600000028 |
| 56 | +; CHECK-NEXT: addq %rcx, %rsp |
| 57 | +; CHECK-NEXT: .cfi_def_cfa_offset 8 |
| 58 | +; CHECK-NEXT: retq |
| 59 | + %large1 = alloca %large, align 1 |
| 60 | + %ptrLarge1 = getelementptr inbounds %large, ptr %large1, i64 0, i64 0 |
| 61 | + %large2 = alloca %large, align 1 |
| 62 | + %ptrLarge2 = getelementptr inbounds %large, ptr %large2, i64 0, i64 0 |
| 63 | + %large3 = alloca %large, align 1 |
| 64 | + %ptrLarge3 = getelementptr inbounds %large, ptr %large3, i64 0, i64 0 |
| 65 | + %large4 = alloca %large, align 1 |
| 66 | + %ptrLarge4 = getelementptr inbounds %large, ptr %large4, i64 0, i64 0 |
| 67 | + %large5 = alloca %large, align 1 |
| 68 | + %ptrLarge5 = getelementptr inbounds %large, ptr %large5, i64 0, i64 0 |
| 69 | + %ret1 = call ptr @baz(ptr %ptrLarge1, ptr %ptrLarge2, ptr %ptrLarge3, ptr %ptrLarge4) |
| 70 | + %large6 = alloca %large, align 1 |
| 71 | + %ptrLarge6 = getelementptr inbounds %large, ptr %large6, i64 0, i64 0 |
| 72 | + %ret2 = call ptr @baz(ptr %ptrLarge6, ptr %ptrLarge2, ptr %ptrLarge3, ptr %ptrLarge4) |
| 73 | + ret ptr %ret1 |
| 74 | +} |
0 commit comments