519 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=early-tailduplication %s -o - | FileCheck %s3--- |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"6 7 define void @ham() gc "statepoint-example" personality i32* ()* @baz {8 bb:9 switch i32 undef, label %bb4 [10 i32 2050, label %bb111 i32 2282, label %bb212 ]13 14 bb1: ; preds = %bb15 %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"() ]16 unreachable17 18 bb2: ; preds = %bb19 %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"() ]20 unreachable21 22 bb4: ; preds = %bb23 %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 %bb2426 27 bb24: ; preds = %bb428 switch i32 undef, label %bb35 [29 i32 1388, label %bb2530 i32 2742, label %bb2931 i32 2884, label %bb3132 ]33 34 bb25: ; preds = %bb2435 %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)38 br label %bb3639 40 bb29: ; preds = %bb2441 %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"() ]42 br label %bb3643 44 bb31: ; preds = %bb2445 %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"() ]46 unreachable47 48 bb35: ; preds = %bb2449 unreachable50 51 bb36: ; preds = %bb29, %bb2552 %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, null55 br i1 %tmp39, label %bb51, label %bb4256 57 bb40: ; preds = %bb458 %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"() ]59 unreachable60 61 bb42: ; preds = %bb3662 %tmp46 = icmp eq i32 undef, 138163 %or.cond = select i1 undef, i1 true, i1 %tmp4664 br i1 %or.cond, label %bb49, label %bb4765 66 bb47: ; preds = %bb4267 %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"() ]68 unreachable69 70 bb49: ; preds = %bb4271 %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"() ]72 unreachable73 74 bb51: ; preds = %bb3675 %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"() ]76 unreachable77 }78 79 declare i32* @baz()80 81 declare i8 addrspace(1)* @barney(i8 addrspace(1)*)82 83 declare i8 addrspace(1)* @wobble(i8 addrspace(1)*)84 85 declare i8 addrspace(1)* @bar(i8 addrspace(1)*)86 87 declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #088 89 declare i8 addrspace(1)* @llvm.experimental.gc.result.p1i8(token) #090 91 declare void @wombat(i32)92 93 declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 immarg, i32 immarg, void (i32)*, i32 immarg, i32 immarg, ...)94 95 declare token @llvm.experimental.gc.statepoint.p0f_p1i8p1i8f(i64 immarg, i32 immarg, i8 addrspace(1)* (i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)96 97 attributes #0 = { nounwind readnone }98 99...100---101name: ham102alignment: 4103exposesReturnsTwice: false104legalized: false105regBankSelected: false106selected: false107failedISel: false108tracksRegLiveness: true109hasWinCFI: false110callsEHReturn: false111callsUnwindInit: false112hasEHContTarget: false113hasEHScopes: false114hasEHFunclets: false115failsVerification: false116tracksDebugUserValues: false117registers:118 - { id: 0, class: gpr64all, preferred-register: '' }119 - { id: 1, class: gpr64all, preferred-register: '' }120 - { id: 2, class: gpr64all, preferred-register: '' }121 - { id: 3, class: gpr64, preferred-register: '' }122 - { id: 4, class: gpr32, preferred-register: '' }123 - { id: 5, class: gpr32, preferred-register: '' }124 - { id: 6, class: gpr32, preferred-register: '' }125 - { id: 7, class: gpr32, preferred-register: '' }126 - { id: 8, class: gpr64all, preferred-register: '' }127 - { id: 9, class: gpr64all, preferred-register: '' }128 - { id: 10, class: gpr64all, preferred-register: '' }129 - { id: 11, class: gpr64all, preferred-register: '' }130 - { id: 12, class: gpr64all, preferred-register: '' }131 - { id: 13, class: gpr64all, preferred-register: '' }132 - { id: 14, class: gpr32, preferred-register: '' }133 - { id: 15, class: gpr32, preferred-register: '' }134 - { id: 16, class: gpr32, preferred-register: '' }135 - { id: 17, class: gpr32, preferred-register: '' }136 - { id: 18, class: gpr64all, preferred-register: '' }137 - { id: 19, class: gpr64all, preferred-register: '' }138 - { id: 20, class: gpr64all, preferred-register: '' }139 - { id: 21, class: gpr64all, preferred-register: '' }140 - { id: 22, class: gpr64all, preferred-register: '' }141 - { id: 23, class: gpr64all, preferred-register: '' }142 - { id: 24, class: gpr64all, preferred-register: '' }143 - { id: 25, class: gpr64all, preferred-register: '' }144 - { id: 26, class: gpr32, preferred-register: '' }145 - { id: 27, class: gpr32, preferred-register: '' }146 - { id: 28, class: gpr32, preferred-register: '' }147 - { id: 29, class: gpr64all, preferred-register: '' }148 - { id: 30, class: gpr64all, preferred-register: '' }149 - { id: 31, class: gpr32, preferred-register: '' }150 - { id: 32, class: gpr64all, preferred-register: '' }151 - { id: 33, class: gpr64all, preferred-register: '' }152 - { id: 34, class: gpr32, preferred-register: '' }153 - { id: 35, class: gpr64all, preferred-register: '' }154 - { id: 36, class: gpr32, preferred-register: '' }155liveins: []156frameInfo:157 isFrameAddressTaken: false158 isReturnAddressTaken: false159 hasStackMap: false160 hasPatchPoint: false161 stackSize: 0162 offsetAdjustment: 0163 maxAlignment: 1164 adjustsStack: true165 hasCalls: true166 stackProtector: ''167 functionContext: ''168 maxCallFrameSize: 0169 cvBytesOfCalleeSavedRegisters: 0170 hasOpaqueSPAdjustment: false171 hasVAStart: false172 hasMustTailInVarArgFunc: false173 hasTailCall: false174 localFrameSize: 0175 savePoint: []176 restorePoint: []177fixedStack: []178stack: []179callSites: []180debugValueSubstitutions: []181constants: []182machineFunctionInfo: {}183body: |184 ; CHECK-LABEL: name: ham185 ; CHECK: bb.0.bb:186 ; CHECK-NEXT: successors: %bb.3(0x2aaaaaab), %bb.1(0x55555555)187 ; CHECK-NEXT: {{ $}}188 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $wzr189 ; CHECK-NEXT: CBNZW [[COPY]], %bb.3190 ; CHECK-NEXT: B %bb.1191 ; CHECK-NEXT: {{ $}}192 ; CHECK-NEXT: bb.1.bb:193 ; CHECK-NEXT: successors: %bb.2(0x40000001), %bb.4(0x3fffffff)194 ; CHECK-NEXT: {{ $}}195 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $wzr196 ; CHECK-NEXT: CBNZW [[COPY1]], %bb.4197 ; CHECK-NEXT: B %bb.2198 ; CHECK-NEXT: {{ $}}199 ; CHECK-NEXT: bb.2.bb1:200 ; CHECK-NEXT: successors:201 ; CHECK-NEXT: {{ $}}202 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp203 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 10204 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]205 ; 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 $lr206 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp207 ; CHECK-NEXT: {{ $}}208 ; CHECK-NEXT: bb.3.bb2:209 ; CHECK-NEXT: successors:210 ; CHECK-NEXT: {{ $}}211 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp212 ; CHECK-NEXT: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 10213 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm1]]214 ; 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 $lr215 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp216 ; CHECK-NEXT: {{ $}}217 ; CHECK-NEXT: bb.4.bb4:218 ; CHECK-NEXT: successors: %bb.13(0x40000000), %bb.5(0x40000000)219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp221 ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64all = IMPLICIT_DEF222 ; CHECK-NEXT: $x0 = COPY [[DEF]]223 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64all = IMPLICIT_DEF224 ; 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 $lr225 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp226 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64all = COPY $x0227 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp228 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr64all = IMPLICIT_DEF229 ; CHECK-NEXT: $x0 = COPY [[DEF2]]230 ; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr64all = IMPLICIT_DEF231 ; 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 $lr232 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp233 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64all = COPY $x0234 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY $wzr235 ; CHECK-NEXT: CBNZW [[COPY4]], %bb.13236 ; CHECK-NEXT: B %bb.5237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: bb.5.bb24:239 ; CHECK-NEXT: successors: %bb.10(0x20000000), %bb.6(0x60000000)240 ; CHECK-NEXT: {{ $}}241 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32 = COPY $wzr242 ; CHECK-NEXT: CBNZW [[COPY5]], %bb.10243 ; CHECK-NEXT: B %bb.6244 ; CHECK-NEXT: {{ $}}245 ; CHECK-NEXT: bb.6.bb24:246 ; CHECK-NEXT: successors: %bb.9(0x2aaaaaab), %bb.7(0x55555555)247 ; CHECK-NEXT: {{ $}}248 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr32 = COPY $wzr249 ; CHECK-NEXT: CBNZW [[COPY6]], %bb.9250 ; CHECK-NEXT: B %bb.7251 ; CHECK-NEXT: {{ $}}252 ; CHECK-NEXT: bb.7.bb24:253 ; CHECK-NEXT: successors: %bb.8(0x80000000)254 ; CHECK-NEXT: {{ $}}255 ; CHECK-NEXT: bb.8.bb25:256 ; CHECK-NEXT: successors: %bb.18(0x30000000), %bb.14(0x50000000)257 ; CHECK-NEXT: {{ $}}258 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp259 ; CHECK-NEXT: [[DEF4:%[0-9]+]]:gpr64all = IMPLICIT_DEF260 ; CHECK-NEXT: $x0 = COPY [[DEF4]]261 ; CHECK-NEXT: [[DEF5:%[0-9]+]]:gpr64all = IMPLICIT_DEF262 ; 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 $lr263 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp264 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr64all = COPY $x0265 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64 = COPY [[COPY7]]266 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr64all = COPY $xzr267 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:gpr64all = COPY [[COPY9]]268 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr64 = COPY [[COPY8]]269 ; CHECK-NEXT: CBZX [[COPY8]], %bb.18270 ; CHECK-NEXT: B %bb.14271 ; CHECK-NEXT: {{ $}}272 ; CHECK-NEXT: bb.9.bb29:273 ; CHECK-NEXT: successors: %bb.18(0x30000000), %bb.14(0x50000000)274 ; CHECK-NEXT: {{ $}}275 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp276 ; CHECK-NEXT: [[DEF6:%[0-9]+]]:gpr64all = IMPLICIT_DEF277 ; CHECK-NEXT: $x0 = COPY [[DEF6]]278 ; CHECK-NEXT: [[DEF7:%[0-9]+]]:gpr64all = IMPLICIT_DEF279 ; 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 $lr280 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp281 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr64all = COPY $x0282 ; CHECK-NEXT: [[DEF8:%[0-9]+]]:gpr64 = IMPLICIT_DEF283 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr64all = COPY [[DEF8]]284 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:gpr64 = COPY [[DEF8]]285 ; CHECK-NEXT: CBZX [[DEF8]], %bb.18286 ; CHECK-NEXT: B %bb.14287 ; CHECK-NEXT: {{ $}}288 ; CHECK-NEXT: bb.10.bb31:289 ; CHECK-NEXT: successors:290 ; CHECK-NEXT: {{ $}}291 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp292 ; CHECK-NEXT: [[MOVi32imm2:%[0-9]+]]:gpr32 = MOVi32imm 10293 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm2]]294 ; 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 $lr295 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp296 ; CHECK-NEXT: {{ $}}297 ; CHECK-NEXT: bb.11.bb35:298 ; CHECK-NEXT: successors:299 ; CHECK-NEXT: {{ $}}300 ; CHECK-NEXT: bb.13.bb40:301 ; CHECK-NEXT: successors:302 ; CHECK-NEXT: {{ $}}303 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp304 ; CHECK-NEXT: [[MOVi32imm3:%[0-9]+]]:gpr32 = MOVi32imm 10305 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm3]]306 ; 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 $lr307 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp308 ; CHECK-NEXT: {{ $}}309 ; CHECK-NEXT: bb.14.bb42:310 ; CHECK-NEXT: successors: %bb.17(0x20000000), %bb.15(0x60000000)311 ; CHECK-NEXT: {{ $}}312 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64 = PHI [[COPY11]], %bb.8, [[COPY14]], %bb.9313 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:gpr64all = PHI [[COPY10]], %bb.8, [[COPY13]], %bb.9314 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:gpr32 = COPY $wzr315 ; CHECK-NEXT: CBNZW [[COPY15]], %bb.17316 ; CHECK-NEXT: B %bb.15317 ; CHECK-NEXT: {{ $}}318 ; CHECK-NEXT: bb.15.bb42:319 ; CHECK-NEXT: successors: %bb.17(0x2aaaaaab), %bb.16(0x55555555)320 ; CHECK-NEXT: {{ $}}321 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:gpr32 = COPY $wzr322 ; CHECK-NEXT: CBNZW [[COPY16]], %bb.17323 ; CHECK-NEXT: B %bb.16324 ; CHECK-NEXT: {{ $}}325 ; CHECK-NEXT: bb.16.bb47:326 ; CHECK-NEXT: successors:327 ; CHECK-NEXT: {{ $}}328 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp329 ; CHECK-NEXT: [[MOVi32imm4:%[0-9]+]]:gpr32 = MOVi32imm 14330 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm4]]331 ; 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 $lr332 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp333 ; CHECK-NEXT: {{ $}}334 ; CHECK-NEXT: bb.17.bb49:335 ; CHECK-NEXT: successors:336 ; CHECK-NEXT: {{ $}}337 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp338 ; CHECK-NEXT: [[MOVi32imm5:%[0-9]+]]:gpr32 = MOVi32imm 10339 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm5]]340 ; 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 $lr341 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp342 ; CHECK-NEXT: {{ $}}343 ; CHECK-NEXT: bb.18.bb51:344 ; CHECK-NEXT: [[PHI2:%[0-9]+]]:gpr64all = PHI [[COPY10]], %bb.8, [[COPY13]], %bb.9345 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp346 ; CHECK-NEXT: [[MOVi32imm6:%[0-9]+]]:gpr32 = MOVi32imm 24347 ; CHECK-NEXT: $w0 = COPY [[MOVi32imm6]]348 ; 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 $lr349 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp350 bb.0.bb:351 successors: %bb.2(0x2aaaaaab), %bb.15(0x55555555)352 353 %4:gpr32 = COPY $wzr354 CBNZW %4, %bb.2355 B %bb.15356 357 bb.15.bb:358 successors: %bb.1(0x40000001), %bb.3(0x3fffffff)359 360 %5:gpr32 = COPY $wzr361 CBNZW %5, %bb.3362 B %bb.1363 364 bb.1.bb1:365 successors:366 367 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp368 %7:gpr32 = MOVi32imm 10369 $w0 = COPY %7370 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 $lr371 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp372 373 bb.2.bb2:374 successors:375 376 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp377 %6:gpr32 = MOVi32imm 10378 $w0 = COPY %6379 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 $lr380 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp381 382 bb.3.bb4:383 successors: %bb.10(0x40000000), %bb.4(0x40000000)384 385 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp386 %8:gpr64all = IMPLICIT_DEF387 $x0 = COPY %8388 %9:gpr64all = IMPLICIT_DEF389 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 $lr390 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp391 %10:gpr64all = COPY $x0392 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp393 %11:gpr64all = IMPLICIT_DEF394 $x0 = COPY %11395 %12:gpr64all = IMPLICIT_DEF396 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 $lr397 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp398 %13:gpr64all = COPY $x0399 %14:gpr32 = COPY $wzr400 CBNZW %14, %bb.10401 B %bb.4402 403 bb.4.bb24:404 successors: %bb.7(0x20000000), %bb.16(0x60000000)405 406 %15:gpr32 = COPY $wzr407 CBNZW %15, %bb.7408 B %bb.16409 410 bb.16.bb24:411 successors: %bb.6(0x2aaaaaab), %bb.17(0x55555555)412 413 %16:gpr32 = COPY $wzr414 CBNZW %16, %bb.6415 B %bb.17416 417 bb.17.bb24:418 successors: %bb.5(0x80000000)419 420 421 bb.5.bb25:422 successors: %bb.9(0x80000000)423 424 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp425 %22:gpr64all = IMPLICIT_DEF426 $x0 = COPY %22427 %23:gpr64all = IMPLICIT_DEF428 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 $lr429 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp430 %24:gpr64all = COPY $x0431 %0:gpr64all = COPY %24432 %25:gpr64all = COPY $xzr433 %1:gpr64all = COPY %25434 B %bb.9435 436 bb.6.bb29:437 successors: %bb.9(0x80000000)438 439 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp440 %19:gpr64all = IMPLICIT_DEF441 $x0 = COPY %19442 %20:gpr64all = IMPLICIT_DEF443 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 $lr444 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp445 %21:gpr64all = COPY $x0446 %18:gpr64all = IMPLICIT_DEF447 B %bb.9448 449 bb.7.bb31:450 successors:451 452 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp453 %17:gpr32 = MOVi32imm 10454 $w0 = COPY %17455 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 $lr456 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp457 458 bb.8.bb35:459 successors:460 461 462 bb.9.bb36:463 successors: %bb.14(0x30000000), %bb.11(0x50000000)464 465 %2:gpr64all = PHI %18, %bb.6, %1, %bb.5466 %3:gpr64 = PHI %18, %bb.6, %0, %bb.5467 CBZX %3, %bb.14468 B %bb.11469 470 bb.10.bb40:471 successors:472 473 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp474 %36:gpr32 = MOVi32imm 10475 $w0 = COPY %36476 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 $lr477 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp478 479 bb.11.bb42:480 successors: %bb.13(0x20000000), %bb.18(0x60000000)481 482 %26:gpr32 = COPY $wzr483 CBNZW %26, %bb.13484 B %bb.18485 486 bb.18.bb42:487 successors: %bb.13(0x2aaaaaab), %bb.12(0x55555555)488 489 %27:gpr32 = COPY $wzr490 CBNZW %27, %bb.13491 B %bb.12492 493 bb.12.bb47:494 successors:495 496 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp497 %28:gpr32 = MOVi32imm 14498 $w0 = COPY %28499 %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 $lr500 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp501 502 bb.13.bb49:503 successors:504 505 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp506 %31:gpr32 = MOVi32imm 10507 $w0 = COPY %31508 %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 $lr509 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp510 511 bb.14.bb51:512 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp513 %34:gpr32 = MOVi32imm 24514 $w0 = COPY %34515 %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 $lr516 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp517 518...519