1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -run-pass=early-tailduplication %s -o - | FileCheck %s
4 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
5 target triple = "aarch64-none-linux-gnu"
7 define void @ham() gc "statepoint-example" personality i32* ()* @baz {
9 switch i32 undef, label %bb4 [
15 %tmp = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 10, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
19 %tmp3 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 10, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
23 %tmp5 = call token (i64, i32, i8 addrspace(1)* (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 2882400000, i32 0, i8 addrspace(1)* (i8 addrspace(1)*)* elementtype(i8 addrspace(1)* (i8 addrspace(1)*)) undef, i32 1, i32 0, i8 addrspace(1)* nonnull undef, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
24 %tmp10 = call token (i64, i32, i8 addrspace(1)* (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 2, i32 4, i8 addrspace(1)* (i8 addrspace(1)*)* nonnull elementtype(i8 addrspace(1)* (i8 addrspace(1)*)) @barney, i32 1, i32 0, i8 addrspace(1)* nonnull undef, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
25 br i1 undef, label %bb40, label %bb24
28 switch i32 undef, label %bb35 [
35 %tmp26 = call token (i64, i32, i8 addrspace(1)* (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 2, i32 4, i8 addrspace(1)* (i8 addrspace(1)*)* nonnull elementtype(i8 addrspace(1)* (i8 addrspace(1)*)) @wobble, i32 1, i32 0, i8 addrspace(1)* nonnull undef, i32 0, i32 0) [ "deopt"(), "gc-live"(i8 addrspace(1)* null) ]
36 %tmp27 = call align 8 i8 addrspace(1)* @llvm.experimental.gc.result.p1i8(token %tmp26)
37 %tmp28 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp26, i32 0, i32 0) ; (null, null)
41 %tmp30 = call token (i64, i32, i8 addrspace(1)* (i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 2, i32 4, i8 addrspace(1)* (i8 addrspace(1)*)* nonnull elementtype(i8 addrspace(1)* (i8 addrspace(1)*)) @bar, i32 1, i32 0, i8 addrspace(1)* nonnull undef, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
45 %tmp32 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 10, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
51 bb36: ; preds = %bb29, %bb25
52 %tmp37 = phi i8 addrspace(1)* [ undef, %bb29 ], [ %tmp28, %bb25 ]
53 %tmp38 = phi i8 addrspace(1)* [ undef, %bb29 ], [ %tmp27, %bb25 ]
54 %tmp39 = icmp eq i8 addrspace(1)* %tmp38, null
55 br i1 %tmp39, label %bb51, label %bb42
58 %tmp41 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 10, i32 0, i32 0) [ "deopt"(), "gc-live"() ]
62 %tmp46 = icmp eq i32 undef, 1381
63 %or.cond = select i1 undef, i1 true, i1 %tmp46
64 br i1 %or.cond, label %bb49, label %bb47
67 %tmp48 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 14, i32 0, i32 0) [ "deopt"(i8 addrspace(1)* %tmp37, i8 addrspace(1)* %tmp38), "gc-live"() ]
71 %tmp50 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 10, i32 0, i32 0) [ "deopt"(i8 addrspace(1)* %tmp37, i8 addrspace(1)* %tmp38, i8 addrspace(1)* %tmp38), "gc-live"() ]
75 %tmp52 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull elementtype(void (i32)) @wombat, i32 1, i32 0, i32 24, i32 0, i32 0) [ "deopt"(i8 addrspace(1)* %tmp37), "gc-live"() ]
81 declare i8 addrspace(1)* @barney(i8 addrspace(1)*)
83 declare i8 addrspace(1)* @wobble(i8 addrspace(1)*)
85 declare i8 addrspace(1)* @bar(i8 addrspace(1)*)
87 ; Function Attrs: nounwind readnone
88 declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
90 ; Function Attrs: nounwind readnone
91 declare i8 addrspace(1)* @llvm.experimental.gc.result.p1i8(token) #0
93 declare void @wombat(i32)
95 declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 immarg, i32 immarg, void (i32)*, i32 immarg, i32 immarg, ...)
97 declare token @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 immarg, i32 immarg, i8 addrspace(1)* (i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
99 attributes #0 = { nounwind readnone }
105 exposesReturnsTwice: false
107 regBankSelected: false
110 tracksRegLiveness: true
113 callsUnwindInit: false
117 failsVerification: false
118 tracksDebugUserValues: false
120 - { id: 0, class: gpr64all, preferred-register: '' }
121 - { id: 1, class: gpr64all, preferred-register: '' }
122 - { id: 2, class: gpr64all, preferred-register: '' }
123 - { id: 3, class: gpr64, preferred-register: '' }
124 - { id: 4, class: gpr32, preferred-register: '' }
125 - { id: 5, class: gpr32, preferred-register: '' }
126 - { id: 6, class: gpr32, preferred-register: '' }
127 - { id: 7, class: gpr32, preferred-register: '' }
128 - { id: 8, class: gpr64all, preferred-register: '' }
129 - { id: 9, class: gpr64all, preferred-register: '' }
130 - { id: 10, class: gpr64all, preferred-register: '' }
131 - { id: 11, class: gpr64all, preferred-register: '' }
132 - { id: 12, class: gpr64all, preferred-register: '' }
133 - { id: 13, class: gpr64all, preferred-register: '' }
134 - { id: 14, class: gpr32, preferred-register: '' }
135 - { id: 15, class: gpr32, preferred-register: '' }
136 - { id: 16, class: gpr32, preferred-register: '' }
137 - { id: 17, class: gpr32, preferred-register: '' }
138 - { id: 18, class: gpr64all, preferred-register: '' }
139 - { id: 19, class: gpr64all, preferred-register: '' }
140 - { id: 20, class: gpr64all, preferred-register: '' }
141 - { id: 21, class: gpr64all, preferred-register: '' }
142 - { id: 22, class: gpr64all, preferred-register: '' }
143 - { id: 23, class: gpr64all, preferred-register: '' }
144 - { id: 24, class: gpr64all, preferred-register: '' }
145 - { id: 25, class: gpr64all, preferred-register: '' }
146 - { id: 26, class: gpr32, preferred-register: '' }
147 - { id: 27, class: gpr32, preferred-register: '' }
148 - { id: 28, class: gpr32, preferred-register: '' }
149 - { id: 29, class: gpr64all, preferred-register: '' }
150 - { id: 30, class: gpr64all, preferred-register: '' }
151 - { id: 31, class: gpr32, preferred-register: '' }
152 - { id: 32, class: gpr64all, preferred-register: '' }
153 - { id: 33, class: gpr64all, preferred-register: '' }
154 - { id: 34, class: gpr32, preferred-register: '' }
155 - { id: 35, class: gpr64all, preferred-register: '' }
156 - { id: 36, class: gpr32, preferred-register: '' }
159 isFrameAddressTaken: false
160 isReturnAddressTaken: false
171 cvBytesOfCalleeSavedRegisters: 0
172 hasOpaqueSPAdjustment: false
174 hasMustTailInVarArgFunc: false
182 debugValueSubstitutions: []
184 machineFunctionInfo: {}
186 ; CHECK-LABEL: name: ham
188 ; CHECK-NEXT: successors: %bb.3(0x2aaaaaab), %bb.1(0x55555555)
190 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $wzr
191 ; CHECK-NEXT: CBNZW [[COPY]], %bb.3
192 ; CHECK-NEXT: B %bb.1
194 ; CHECK-NEXT: bb.1.bb:
195 ; CHECK-NEXT: successors: %bb.2(0x40000001), %bb.4(0x3fffffff)
197 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $wzr
198 ; CHECK-NEXT: CBNZW [[COPY1]], %bb.4
199 ; CHECK-NEXT: B %bb.2
201 ; CHECK-NEXT: bb.2.bb1:
202 ; CHECK-NEXT: successors:{{ $}}
204 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
205 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 10
206 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
207 ; CHECK-NEXT: STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
208 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
210 ; CHECK-NEXT: bb.3.bb2:
211 ; CHECK-NEXT: successors:{{ $}}
213 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
214 ; CHECK-NEXT: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 10
215 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm1]]
216 ; CHECK-NEXT: STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
217 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
219 ; CHECK-NEXT: bb.4.bb4:
220 ; CHECK-NEXT: successors: %bb.13(0x40000000), %bb.5(0x40000000)
222 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
223 ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64all = IMPLICIT_DEF
224 ; CHECK-NEXT: $x0 = COPY [[DEF]]
225 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64all = IMPLICIT_DEF
226 ; CHECK-NEXT: STATEPOINT 2882400000, 0, 1, [[DEF1]], $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
227 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
228 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64all = COPY $x0
229 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
230 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr64all = IMPLICIT_DEF
231 ; CHECK-NEXT: $x0 = COPY [[DEF2]]
232 ; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr64all = IMPLICIT_DEF
233 ; CHECK-NEXT: STATEPOINT 2, 4, 1, [[DEF3]], $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
234 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
235 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64all = COPY $x0
236 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY $wzr
237 ; CHECK-NEXT: CBNZW [[COPY4]], %bb.13
238 ; CHECK-NEXT: B %bb.5
240 ; CHECK-NEXT: bb.5.bb24:
241 ; CHECK-NEXT: successors: %bb.10(0x20000000), %bb.6(0x60000000)
243 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32 = COPY $wzr
244 ; CHECK-NEXT: CBNZW [[COPY5]], %bb.10
245 ; CHECK-NEXT: B %bb.6
247 ; CHECK-NEXT: bb.6.bb24:
248 ; CHECK-NEXT: successors: %bb.9(0x2aaaaaab), %bb.7(0x55555555)
250 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr32 = COPY $wzr
251 ; CHECK-NEXT: CBNZW [[COPY6]], %bb.9
252 ; CHECK-NEXT: B %bb.7
254 ; CHECK-NEXT: bb.7.bb24:
255 ; CHECK-NEXT: successors: %bb.8(0x80000000)
258 ; CHECK-NEXT: bb.8.bb25:
259 ; CHECK-NEXT: successors: %bb.18(0x30000000), %bb.14(0x50000000)
261 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
262 ; CHECK-NEXT: [[DEF4:%[0-9]+]]:gpr64all = IMPLICIT_DEF
263 ; CHECK-NEXT: $x0 = COPY [[DEF4]]
264 ; CHECK-NEXT: [[DEF5:%[0-9]+]]:gpr64all = IMPLICIT_DEF
265 ; CHECK-NEXT: STATEPOINT 2, 4, 1, [[DEF5]], $x0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
266 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
267 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr64all = COPY $x0
268 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64 = COPY [[COPY7]]
269 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr64all = COPY $xzr
270 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:gpr64all = COPY [[COPY9]]
271 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr64 = COPY [[COPY8]]
272 ; CHECK-NEXT: CBZX [[COPY8]], %bb.18
273 ; CHECK-NEXT: B %bb.14
275 ; CHECK-NEXT: bb.9.bb29:
276 ; CHECK-NEXT: successors: %bb.18(0x30000000), %bb.14(0x50000000)
278 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
279 ; CHECK-NEXT: [[DEF6:%[0-9]+]]:gpr64all = IMPLICIT_DEF
280 ; CHECK-NEXT: $x0 = COPY [[DEF6]]
281 ; CHECK-NEXT: [[DEF7:%[0-9]+]]:gpr64all = IMPLICIT_DEF
282 ; CHECK-NEXT: STATEPOINT 2, 4, 1, [[DEF7]], $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
283 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
284 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr64all = COPY $x0
285 ; CHECK-NEXT: [[DEF8:%[0-9]+]]:gpr64 = IMPLICIT_DEF
286 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr64all = COPY [[DEF8]]
287 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:gpr64 = COPY [[DEF8]]
288 ; CHECK-NEXT: CBZX [[DEF8]], %bb.18
289 ; CHECK-NEXT: B %bb.14
291 ; CHECK-NEXT: bb.10.bb31:
292 ; CHECK-NEXT: successors:{{ $}}
294 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
295 ; CHECK-NEXT: [[MOVi32imm2:%[0-9]+]]:gpr32 = MOVi32imm 10
296 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm2]]
297 ; CHECK-NEXT: STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
298 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
300 ; CHECK-NEXT: bb.11.bb35:
301 ; CHECK-NEXT: successors:{{ $}}
304 ; CHECK-NEXT: bb.13.bb40:
305 ; CHECK-NEXT: successors:{{ $}}
307 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
308 ; CHECK-NEXT: [[MOVi32imm3:%[0-9]+]]:gpr32 = MOVi32imm 10
309 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm3]]
310 ; CHECK-NEXT: STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
311 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
313 ; CHECK-NEXT: bb.14.bb42:
314 ; CHECK-NEXT: successors: %bb.17(0x20000000), %bb.15(0x60000000)
316 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64 = PHI [[COPY11]], %bb.8, [[COPY14]], %bb.9
317 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:gpr64all = PHI [[COPY10]], %bb.8, [[COPY13]], %bb.9
318 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:gpr32 = COPY $wzr
319 ; CHECK-NEXT: CBNZW [[COPY15]], %bb.17
320 ; CHECK-NEXT: B %bb.15
322 ; CHECK-NEXT: bb.15.bb42:
323 ; CHECK-NEXT: successors: %bb.17(0x2aaaaaab), %bb.16(0x55555555)
325 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:gpr32 = COPY $wzr
326 ; CHECK-NEXT: CBNZW [[COPY16]], %bb.17
327 ; CHECK-NEXT: B %bb.16
329 ; CHECK-NEXT: bb.16.bb47:
330 ; CHECK-NEXT: successors:{{ $}}
332 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
333 ; CHECK-NEXT: [[MOVi32imm4:%[0-9]+]]:gpr32 = MOVi32imm 14
334 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm4]]
335 ; CHECK-NEXT: [[STATEPOINT:%[0-9]+]]:gpr64all, [[STATEPOINT1:%[0-9]+]]:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 2, [[PHI1]], [[PHI]], 2, 2, [[PHI1]](tied-def 0), [[PHI]](tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
336 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
338 ; CHECK-NEXT: bb.17.bb49:
339 ; CHECK-NEXT: successors:{{ $}}
341 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
342 ; CHECK-NEXT: [[MOVi32imm5:%[0-9]+]]:gpr32 = MOVi32imm 10
343 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm5]]
344 ; CHECK-NEXT: [[STATEPOINT2:%[0-9]+]]:gpr64all, [[STATEPOINT3:%[0-9]+]]:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 3, [[PHI1]], [[PHI]], [[PHI]], 2, 2, [[PHI1]](tied-def 0), [[PHI]](tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
345 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
347 ; CHECK-NEXT: bb.18.bb51:
348 ; CHECK-NEXT: [[PHI2:%[0-9]+]]:gpr64all = PHI [[COPY10]], %bb.8, [[COPY13]], %bb.9
349 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
350 ; CHECK-NEXT: [[MOVi32imm6:%[0-9]+]]:gpr32 = MOVi32imm 24
351 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm6]]
352 ; CHECK-NEXT: [[STATEPOINT4:%[0-9]+]]:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 1, [[PHI2]], 2, 1, [[PHI2]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
353 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
355 successors: %bb.2(0x2aaaaaab), %bb.15(0x55555555)
362 successors: %bb.1(0x40000001), %bb.3(0x3fffffff)
371 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
372 %7:gpr32 = MOVi32imm 10
374 STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
375 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
380 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
381 %6:gpr32 = MOVi32imm 10
383 STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
384 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
387 successors: %bb.10(0x40000000), %bb.4(0x40000000)
389 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
390 %8:gpr64all = IMPLICIT_DEF
392 %9:gpr64all = IMPLICIT_DEF
393 STATEPOINT 2882400000, 0, 1, %9, $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
394 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
395 %10:gpr64all = COPY $x0
396 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
397 %11:gpr64all = IMPLICIT_DEF
399 %12:gpr64all = IMPLICIT_DEF
400 STATEPOINT 2, 4, 1, %12, $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
401 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
402 %13:gpr64all = COPY $x0
403 %14:gpr32 = COPY $wzr
408 successors: %bb.7(0x20000000), %bb.16(0x60000000)
410 %15:gpr32 = COPY $wzr
415 successors: %bb.6(0x2aaaaaab), %bb.17(0x55555555)
417 %16:gpr32 = COPY $wzr
422 successors: %bb.5(0x80000000)
426 successors: %bb.9(0x80000000)
428 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
429 %22:gpr64all = IMPLICIT_DEF
431 %23:gpr64all = IMPLICIT_DEF
432 STATEPOINT 2, 4, 1, %23, $x0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
433 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
434 %24:gpr64all = COPY $x0
435 %0:gpr64all = COPY %24
436 %25:gpr64all = COPY $xzr
437 %1:gpr64all = COPY %25
441 successors: %bb.9(0x80000000)
443 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
444 %19:gpr64all = IMPLICIT_DEF
446 %20:gpr64all = IMPLICIT_DEF
447 STATEPOINT 2, 4, 1, %20, $x0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def $x0, implicit-def dead early-clobber $lr
448 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
449 %21:gpr64all = COPY $x0
450 %18:gpr64all = IMPLICIT_DEF
456 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
457 %17:gpr32 = MOVi32imm 10
459 STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
460 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
467 successors: %bb.14(0x30000000), %bb.11(0x50000000)
469 %2:gpr64all = PHI %18, %bb.6, %1, %bb.5
470 %3:gpr64 = PHI %18, %bb.6, %0, %bb.5
477 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
478 %36:gpr32 = MOVi32imm 10
480 STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
481 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
484 successors: %bb.13(0x20000000), %bb.18(0x60000000)
486 %26:gpr32 = COPY $wzr
491 successors: %bb.13(0x2aaaaaab), %bb.12(0x55555555)
493 %27:gpr32 = COPY $wzr
500 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
501 %28:gpr32 = MOVi32imm 14
503 %29:gpr64all, %30:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 2, %2, %3, 2, 2, %2(tied-def 0), %3(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
504 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
509 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
510 %31:gpr32 = MOVi32imm 10
512 %32:gpr64all, %33:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 3, %2, %3, %3, 2, 2, %2(tied-def 0), %3(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
513 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
516 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
517 %34:gpr32 = MOVi32imm 24
519 %35:gpr64all = STATEPOINT 2882400000, 0, 1, @wombat, $w0, 2, 0, 2, 0, 2, 1, %2, 2, 1, %2(tied-def 0), 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
520 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp