Skip to content

Commit 9f71389

Browse files
committed
[LivePhysRegs] Add callee-saved regs from MFI in addLiveOutsNoPristines.
Some callee-saved registers may be implicitly used by a return/terminator instruction in return blocks, e.g. LR on ARM. When computing the live-ins for a return block, add all callee-saved registers from the current frame info. This is in line with how PEI updates liveness in updateLiveness. This fixes a mis-compile in outlined-fn-may-clobber-lr-in-caller.ll where the machine-outliner previously introduced BLs that clobbered LR which in turn is used by the tail call return. Almost all est changes are in MTE, where we have a sequence of tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc With this patch, the exit block is assumed to use LR implicitly, even though POP_RET restores it to PC and doesn't use LR. I am not sure if there's a way around that without more accurate modeling of uses of LR. It would be great to teach the machine-verifier to check liveness of LR on ARM, but I couldn't find an appropriate hook to teach it about which instructions implicitly use LR.
1 parent 6f25ae3 commit 9f71389

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+287
-151
lines changed

llvm/lib/CodeGen/LivePhysRegs.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,16 +214,14 @@ void LivePhysRegs::addLiveOutsNoPristines(const MachineBasicBlock &MBB) {
214214
// Return blocks are a special case because we currently don't mark up
215215
// return instructions completely: specifically, there is no explicit
216216
// use for callee-saved registers. So we add all callee saved registers
217-
// that are saved and restored (somewhere). This does not include
218-
// callee saved registers that are unused and hence not saved and
219-
// restored; they are called pristine.
217+
// This does include callee saved registers that may be only used by the
218+
// terminator instruction and unused otherwise.
220219
// FIXME: PEI should add explicit markings to return instructions
221220
// instead of implicitly handling them here.
222221
const MachineFunction &MF = *MBB.getParent();
223222
const MachineFrameInfo &MFI = MF.getFrameInfo();
224223
if (MFI.isCalleeSavedInfoValid()) {
225224
for (const CalleeSavedInfo &Info : MFI.getCalleeSavedInfo())
226-
if (Info.isRestored())
227225
addReg(Info.getReg());
228226
}
229227
}

llvm/test/CodeGen/Thumb2/LowOverheadLoops/add_reduce.mir

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ body: |
161161
; CHECK-NEXT: renamable $r12 = t2LDRi12 $sp, 48, 14 /* CC::al */, $noreg :: (load (s32) from %fixed-stack.6, align 8)
162162
; CHECK-NEXT: renamable $r5 = t2ADDri renamable $r12, 3, 14 /* CC::al */, $noreg, $noreg
163163
; CHECK-NEXT: renamable $r7, dead $cpsr = tLSRri killed renamable $r5, 2, 14 /* CC::al */, $noreg
164-
; CHECK-NEXT: dead $lr = t2WLS renamable $r7, %bb.3
164+
; CHECK-NEXT: $lr = t2WLS renamable $r7, %bb.3
165165
; CHECK-NEXT: {{ $}}
166166
; CHECK-NEXT: bb.1.for.body.lr.ph:
167167
; CHECK-NEXT: successors: %bb.2(0x80000000)
@@ -195,9 +195,11 @@ body: |
195195
; CHECK-NEXT: renamable $q2 = MVE_VMINu32 killed renamable $q2, renamable $q0, 1, killed renamable $vpr, $noreg, undef renamable $q2
196196
; CHECK-NEXT: renamable $r6 = MVE_VADDVu32no_acc killed renamable $q2, 0, $noreg, $noreg
197197
; CHECK-NEXT: early-clobber renamable $r5 = t2STR_PRE killed renamable $r6, killed renamable $r5, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep2)
198-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
198+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
199199
; CHECK-NEXT: {{ $}}
200200
; CHECK-NEXT: bb.3.for.cond.cleanup:
201+
; CHECK-NEXT: liveins: $lr
202+
; CHECK-NEXT: {{ $}}
201203
; CHECK-NEXT: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
202204
; CHECK-NEXT: $sp = t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $pc, implicit killed $r0
203205
bb.0.entry:

llvm/test/CodeGen/Thumb2/LowOverheadLoops/ctlz-non-zeros.mir

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ body: |
161161
; CHECK-NEXT: successors: %bb.1(0x80000000)
162162
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4
163163
; CHECK-NEXT: {{ $}}
164-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
164+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, $lr, implicit-def $sp, implicit $sp
165165
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
166166
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
167167
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r4, -8
@@ -192,9 +192,11 @@ body: |
192192
; CHECK-NEXT: renamable $q1 = MVE_VQSHRUNs16th killed renamable $q1, killed renamable $q0, 1, 0, $noreg, $noreg
193193
; CHECK-NEXT: MVE_VPST 8, implicit $vpr
194194
; CHECK-NEXT: renamable $r2 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r2, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.addr.c, align 2)
195-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
195+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
196196
; CHECK-NEXT: {{ $}}
197197
; CHECK-NEXT: bb.3.exit:
198+
; CHECK-NEXT: liveins: $lr
199+
; CHECK-NEXT: {{ $}}
198200
; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
199201
bb.0.entry:
200202
successors: %bb.1(0x80000000)
@@ -274,7 +276,7 @@ body: |
274276
; CHECK-NEXT: successors: %bb.1(0x80000000)
275277
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r7
276278
; CHECK-NEXT: {{ $}}
277-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
279+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
278280
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
279281
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
280282
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -304,10 +306,10 @@ body: |
304306
; CHECK-NEXT: renamable $q1 = MVE_VQSHRUNs32th killed renamable $q1, killed renamable $q0, 3, 0, $noreg, $noreg
305307
; CHECK-NEXT: MVE_VPST 8, implicit $vpr
306308
; CHECK-NEXT: renamable $r2 = MVE_VSTRWU32_post killed renamable $q1, killed renamable $r2, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.addr.c, align 4)
307-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
309+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
308310
; CHECK-NEXT: {{ $}}
309311
; CHECK-NEXT: bb.3.exit:
310-
; CHECK-NEXT: liveins: $r4
312+
; CHECK-NEXT: liveins: $lr, $r4
311313
; CHECK-NEXT: {{ $}}
312314
; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def dead $r7, def $pc
313315
bb.0.entry:
@@ -387,7 +389,7 @@ body: |
387389
; CHECK-NEXT: successors: %bb.1(0x80000000)
388390
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r7
389391
; CHECK-NEXT: {{ $}}
390-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
392+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
391393
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
392394
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
393395
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -417,10 +419,10 @@ body: |
417419
; CHECK-NEXT: renamable $q0 = MVE_VQSHRUNs32th killed renamable $q0, killed renamable $q1, 3, 0, $noreg, $noreg
418420
; CHECK-NEXT: MVE_VPST 8, implicit $vpr
419421
; CHECK-NEXT: renamable $r2 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r2, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.addr.c, align 4)
420-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
422+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
421423
; CHECK-NEXT: {{ $}}
422424
; CHECK-NEXT: bb.3.exit:
423-
; CHECK-NEXT: liveins: $r4
425+
; CHECK-NEXT: liveins: $lr, $r4
424426
; CHECK-NEXT: {{ $}}
425427
; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def dead $r7, def $pc
426428
bb.0.entry:

llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ body: |
123123
; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.1(0x50000000)
124124
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r7
125125
; CHECK-NEXT: {{ $}}
126-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, killed $lr, implicit-def $sp, implicit $sp
126+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, $lr, implicit-def $sp, implicit $sp
127127
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
128128
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
129129
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -169,6 +169,8 @@ body: |
169169
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
170170
; CHECK-NEXT: {{ $}}
171171
; CHECK-NEXT: bb.3.bb27:
172+
; CHECK-NEXT: liveins: $lr
173+
; CHECK-NEXT: {{ $}}
172174
; CHECK-NEXT: $sp = tADDspi $sp, 1, 14 /* CC::al */, $noreg
173175
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc
174176
bb.0.bb:

llvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ body: |
107107
; CHECK-NEXT: successors: %bb.1(0x80000000)
108108
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r7
109109
; CHECK-NEXT: {{ $}}
110-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
110+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
111111
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
112112
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
113113
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -143,6 +143,8 @@ body: |
143143
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
144144
; CHECK-NEXT: {{ $}}
145145
; CHECK-NEXT: bb.3.for.cond.cleanup:
146+
; CHECK-NEXT: liveins: $lr
147+
; CHECK-NEXT: {{ $}}
146148
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
147149
bb.0.entry:
148150
successors: %bb.1(0x80000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/end-positive-offset.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ body: |
154154
; CHECK-NEXT: $r1 = tLDRspi $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.7)
155155
; CHECK-NEXT: $lr = tMOVr killed $r1, 14 /* CC::al */, $noreg
156156
; CHECK-NEXT: renamable $lr = t2SUBri killed renamable $lr, 1, 14 /* CC::al */, $noreg, def $cpsr
157-
; CHECK-NEXT: $r12 = tMOVr killed $lr, 14 /* CC::al */, $noreg
157+
; CHECK-NEXT: $r12 = tMOVr $lr, 14 /* CC::al */, $noreg
158158
; CHECK-NEXT: tSTRspi killed $r0, $sp, 7, 14 /* CC::al */, $noreg :: (store (s32) into %stack.0)
159159
; CHECK-NEXT: tSTRspi killed $r2, $sp, 6, 14 /* CC::al */, $noreg :: (store (s32) into %stack.1)
160160
; CHECK-NEXT: tSTRspi killed $r3, $sp, 5, 14 /* CC::al */, $noreg :: (store (s32) into %stack.2)
@@ -163,6 +163,8 @@ body: |
163163
; CHECK-NEXT: tB %bb.2, 14 /* CC::al */, $noreg
164164
; CHECK-NEXT: {{ $}}
165165
; CHECK-NEXT: bb.2.for.cond.cleanup:
166+
; CHECK-NEXT: liveins: $lr
167+
; CHECK-NEXT: {{ $}}
166168
; CHECK-NEXT: $sp = tADDspi $sp, 8, 14 /* CC::al */, $noreg
167169
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
168170
; CHECK-NEXT: {{ $}}

llvm/test/CodeGen/Thumb2/LowOverheadLoops/extract-element.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ body: |
135135
; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.2
136136
; CHECK-NEXT: {{ $}}
137137
; CHECK-NEXT: bb.3.middle.block:
138-
; CHECK-NEXT: liveins: $q0
138+
; CHECK-NEXT: liveins: $lr, $q0
139139
; CHECK-NEXT: {{ $}}
140140
; CHECK-NEXT: $r0 = VMOVRS killed $s3, 14 /* CC::al */, $noreg, implicit killed $q0
141141
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0

llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ body: |
9999
; CHECK-NEXT: successors: %bb.1(0x80000000)
100100
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r7
101101
; CHECK-NEXT: {{ $}}
102-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
102+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
103103
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
104104
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
105105
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -132,6 +132,8 @@ body: |
132132
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
133133
; CHECK-NEXT: {{ $}}
134134
; CHECK-NEXT: bb.3.for.cond.cleanup:
135+
; CHECK-NEXT: liveins: $lr
136+
; CHECK-NEXT: {{ $}}
135137
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
136138
bb.0.entry:
137139
successors: %bb.1(0x80000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ body: |
107107
; CHECK-NEXT: successors: %bb.1(0x80000000)
108108
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r7
109109
; CHECK-NEXT: {{ $}}
110-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
110+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
111111
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
112112
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
113113
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -140,6 +140,8 @@ body: |
140140
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
141141
; CHECK-NEXT: {{ $}}
142142
; CHECK-NEXT: bb.3.for.cond.cleanup:
143+
; CHECK-NEXT: liveins: $lr
144+
; CHECK-NEXT: {{ $}}
143145
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
144146
bb.0.entry:
145147
successors: %bb.1(0x80000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ body: |
100100
; CHECK-NEXT: successors: %bb.1(0x80000000)
101101
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r7
102102
; CHECK-NEXT: {{ $}}
103-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
103+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, $lr, implicit-def $sp, implicit $sp
104104
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8
105105
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
106106
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -133,6 +133,8 @@ body: |
133133
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
134134
; CHECK-NEXT: {{ $}}
135135
; CHECK-NEXT: bb.3.for.cond.cleanup:
136+
; CHECK-NEXT: liveins: $lr
137+
; CHECK-NEXT: {{ $}}
136138
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
137139
bb.0.entry:
138140
successors: %bb.1(0x80000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ body: |
133133
; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.1(0x50000000)
134134
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r7
135135
; CHECK-NEXT: {{ $}}
136-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, killed $lr, implicit-def $sp, implicit $sp
136+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, $lr, implicit-def $sp, implicit $sp
137137
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
138138
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
139139
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -177,9 +177,11 @@ body: |
177177
; CHECK-NEXT: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg
178178
; CHECK-NEXT: MVE_VPST 8, implicit $vpr
179179
; CHECK-NEXT: renamable $r5 = MVE_VSTRWU32_post renamable $q0, killed renamable $r5, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.cast.e, align 4)
180-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
180+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
181181
; CHECK-NEXT: {{ $}}
182182
; CHECK-NEXT: bb.3.for.cond.cleanup:
183+
; CHECK-NEXT: liveins: $lr
184+
; CHECK-NEXT: {{ $}}
183185
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc
184186
bb.0.entry:
185187
successors: %bb.3(0x30000000), %bb.1(0x50000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ body: |
133133
; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.1(0x50000000)
134134
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r7
135135
; CHECK-NEXT: {{ $}}
136-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, killed $lr, implicit-def $sp, implicit $sp
136+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, $lr, implicit-def $sp, implicit $sp
137137
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
138138
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
139139
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -177,9 +177,11 @@ body: |
177177
; CHECK-NEXT: MVE_VPST 4, implicit $vpr
178178
; CHECK-NEXT: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, killed renamable $vpr, $noreg
179179
; CHECK-NEXT: renamable $r5 = MVE_VSTRWU32_post renamable $q0, killed renamable $r5, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.cast.e, align 4)
180-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
180+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
181181
; CHECK-NEXT: {{ $}}
182182
; CHECK-NEXT: bb.3.for.cond.cleanup:
183+
; CHECK-NEXT: liveins: $lr
184+
; CHECK-NEXT: {{ $}}
183185
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc
184186
bb.0.entry:
185187
successors: %bb.3(0x30000000), %bb.1(0x50000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ body: |
133133
; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.1(0x50000000)
134134
; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r7
135135
; CHECK-NEXT: {{ $}}
136-
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, killed $lr, implicit-def $sp, implicit $sp
136+
; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r7, $lr, implicit-def $sp, implicit $sp
137137
; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
138138
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4
139139
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8
@@ -177,9 +177,11 @@ body: |
177177
; CHECK-NEXT: renamable $q0 = MVE_VADDi32 killed renamable $q1, killed renamable $q0, 0, renamable $vpr, $noreg, undef renamable $q0
178178
; CHECK-NEXT: renamable $r5 = MVE_VSTRWU32_post renamable $q0, killed renamable $r5, 16, 1, renamable $vpr, $noreg :: (store (s128) into %ir.lsr.cast.e, align 4)
179179
; CHECK-NEXT: dead renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg, $noreg
180-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
180+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
181181
; CHECK-NEXT: {{ $}}
182182
; CHECK-NEXT: bb.3.for.cond.cleanup:
183+
; CHECK-NEXT: liveins: $lr
184+
; CHECK-NEXT: {{ $}}
183185
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc
184186
bb.0.entry:
185187
successors: %bb.3(0x30000000), %bb.1(0x50000000)

llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ body: |
173173
; CHECK-NEXT: renamable $q1 = MVE_VADDi32 killed renamable $q1, renamable $q0, 0, $noreg, $noreg, undef renamable $q1
174174
; CHECK-NEXT: renamable $r12 = t2SUBri killed renamable $r12, 4, 14 /* CC::al */, $noreg, $noreg
175175
; CHECK-NEXT: renamable $q0 = MVE_VPSEL killed renamable $q1, killed renamable $q0, 0, killed renamable $vpr, $noreg
176-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
176+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
177177
; CHECK-NEXT: {{ $}}
178178
; CHECK-NEXT: bb.3.middle.block:
179-
; CHECK-NEXT: liveins: $q0
179+
; CHECK-NEXT: liveins: $lr, $q0
180180
; CHECK-NEXT: {{ $}}
181181
; CHECK-NEXT: renamable $r0 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg, $noreg
182182
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc, implicit killed $r0

llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ body: |
174174
; CHECK-NEXT: renamable $q1 = MVE_VADDi32 killed renamable $q1, renamable $q0, 0, $noreg, $noreg, undef renamable $q1
175175
; CHECK-NEXT: renamable $r12 = t2SUBri killed renamable $r12, 4, 14 /* CC::al */, $noreg, $noreg
176176
; CHECK-NEXT: renamable $q0 = MVE_VPSEL killed renamable $q1, killed renamable $q0, 0, killed renamable $vpr, $noreg
177-
; CHECK-NEXT: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
177+
; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.2
178178
; CHECK-NEXT: {{ $}}
179179
; CHECK-NEXT: bb.3.middle.block:
180-
; CHECK-NEXT: liveins: $q0
180+
; CHECK-NEXT: liveins: $lr, $q0
181181
; CHECK-NEXT: {{ $}}
182182
; CHECK-NEXT: renamable $r0 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg, $noreg
183183
; CHECK-NEXT: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc, implicit killed $r0

0 commit comments

Comments
 (0)