539 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=thumbv8.1m.main -run-pass=arm-low-overhead-loops %s -o - --verify-machineinstrs | FileCheck %s3 4--- |5 define dso_local arm_aapcscc i32 @test1(ptr nocapture %arg, ptr nocapture readonly %arg1, ptr nocapture readonly %arg2, i32 %arg3) {6 bb:7 %tmp = icmp eq i32 %arg3, 08 br i1 %tmp, label %bb27, label %bb49 10 bb4: ; preds = %bb11 %tmp5 = add i32 %arg3, -112 %tmp6 = and i32 %arg3, 313 %tmp7 = icmp ult i32 %tmp5, 314 %tmp8 = add i32 %arg3, -415 %tmp9 = sub i32 %tmp8, %tmp616 %tmp10 = lshr i32 %tmp9, 217 %tmp11 = add nuw nsw i32 %tmp10, 118 br i1 %tmp7, label %bb13, label %bb1219 20 bb12: ; preds = %bb421 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp11)22 br label %bb2823 24 bb13: ; preds = %bb28, %bb425 %tmp14 = phi i32 [ 0, %bb4 ], [ %tmp54, %bb28 ]26 %exit.count = phi i32 [ 0, %bb4 ], [ %loop.dec, %bb28 ]27 %tmp15 = icmp eq i32 %tmp6, 028 br i1 %tmp15, label %bb27, label %bb1629 30 bb16: ; preds = %bb1331 %tmp17 = getelementptr inbounds i32, ptr %arg1, i32 %tmp1432 %tmp18 = load i32, ptr %tmp17, align 433 %tmp19 = getelementptr inbounds i32, ptr %arg2, i32 %tmp1434 %tmp20 = load i32, ptr %tmp19, align 435 %tmp21 = xor i32 %tmp20, %tmp1836 %tmp22 = getelementptr inbounds i32, ptr %arg, i32 %tmp1437 %tmp23 = load i32, ptr %tmp22, align 438 %tmp24 = add nsw i32 %tmp23, %tmp2139 store i32 %tmp24, ptr %tmp22, align 440 %tmp25 = add nuw i32 %tmp14, 141 %tmp26 = icmp eq i32 %tmp6, 142 br i1 %tmp26, label %bb27, label %bb5743 44 bb27: ; preds = %bb68, %bb57, %bb16, %bb13, %bb45 %res = phi i32 [ %exit.count, %bb13 ], [ 3, %bb68 ], [ 2, %bb57 ], [ 1, %bb16 ], [ 0, %bb ]46 ret i32 %res47 48 bb28: ; preds = %bb28, %bb1249 %lsr.iv15 = phi i32 [ %lsr.iv.next16, %bb28 ], [ %start, %bb12 ]50 %lsr.iv = phi i32 [ %lsr.iv.next, %bb28 ], [ 0, %bb12 ]51 %tmp29 = phi i32 [ 0, %bb12 ], [ %tmp54, %bb28 ]52 %0 = bitcast ptr %arg1 to ptr53 %1 = bitcast ptr %arg2 to ptr54 %2 = bitcast ptr %arg to ptr55 %uglygep14 = getelementptr i8, ptr %0, i32 %lsr.iv56 %uglygep1415 = bitcast ptr %uglygep14 to ptr57 %scevgep617 = bitcast ptr %uglygep1415 to ptr58 %tmp34 = load i32, ptr %scevgep617, align 459 %uglygep8 = getelementptr i8, ptr %1, i32 %lsr.iv60 %uglygep89 = bitcast ptr %uglygep8 to ptr61 %scevgep418 = bitcast ptr %uglygep89 to ptr62 %tmp35 = load i32, ptr %scevgep418, align 463 %tmp36 = xor i32 %tmp35, %tmp3464 %uglygep2 = getelementptr i8, ptr %2, i32 %lsr.iv65 %uglygep23 = bitcast ptr %uglygep2 to ptr66 %scevgep219 = bitcast ptr %uglygep23 to ptr67 %tmp37 = load i32, ptr %scevgep219, align 468 %tmp38 = add nsw i32 %tmp37, %tmp3669 store i32 %tmp38, ptr %scevgep219, align 470 %uglygep33 = getelementptr i8, ptr %0, i32 %lsr.iv71 %uglygep3334 = bitcast ptr %uglygep33 to ptr72 %scevgep14 = getelementptr i32, ptr %uglygep3334, i32 173 %tmp39 = load i32, ptr %scevgep14, align 474 %uglygep27 = getelementptr i8, ptr %1, i32 %lsr.iv75 %uglygep2728 = bitcast ptr %uglygep27 to ptr76 %scevgep11 = getelementptr i32, ptr %uglygep2728, i32 177 %tmp40 = load i32, ptr %scevgep11, align 478 %tmp41 = xor i32 %tmp40, %tmp3979 %uglygep20 = getelementptr i8, ptr %2, i32 %lsr.iv80 %uglygep2021 = bitcast ptr %uglygep20 to ptr81 %scevgep9 = getelementptr i32, ptr %uglygep2021, i32 182 %tmp42 = load i32, ptr %scevgep9, align 483 %tmp43 = add nsw i32 %tmp42, %tmp4184 store i32 %tmp43, ptr %scevgep9, align 485 %uglygep30 = getelementptr i8, ptr %0, i32 %lsr.iv86 %uglygep3031 = bitcast ptr %uglygep30 to ptr87 %scevgep12 = getelementptr i32, ptr %uglygep3031, i32 288 %tmp44 = load i32, ptr %scevgep12, align 489 %uglygep24 = getelementptr i8, ptr %1, i32 %lsr.iv90 %uglygep2425 = bitcast ptr %uglygep24 to ptr91 %scevgep10 = getelementptr i32, ptr %uglygep2425, i32 292 %tmp45 = load i32, ptr %scevgep10, align 493 %tmp46 = xor i32 %tmp45, %tmp4494 %uglygep17 = getelementptr i8, ptr %2, i32 %lsr.iv95 %uglygep1718 = bitcast ptr %uglygep17 to ptr96 %scevgep8 = getelementptr i32, ptr %uglygep1718, i32 297 %tmp47 = load i32, ptr %scevgep8, align 498 %tmp48 = add nsw i32 %tmp47, %tmp4699 store i32 %tmp48, ptr %scevgep8, align 4100 %uglygep11 = getelementptr i8, ptr %0, i32 %lsr.iv101 %uglygep1112 = bitcast ptr %uglygep11 to ptr102 %scevgep5 = getelementptr i32, ptr %uglygep1112, i32 3103 %tmp49 = load i32, ptr %scevgep5, align 4104 %uglygep5 = getelementptr i8, ptr %1, i32 %lsr.iv105 %uglygep56 = bitcast ptr %uglygep5 to ptr106 %scevgep3 = getelementptr i32, ptr %uglygep56, i32 3107 %tmp50 = load i32, ptr %scevgep3, align 4108 %tmp51 = xor i32 %tmp50, %tmp49109 %uglygep = getelementptr i8, ptr %2, i32 %lsr.iv110 %uglygep1 = bitcast ptr %uglygep to ptr111 %scevgep1 = getelementptr i32, ptr %uglygep1, i32 3112 %tmp52 = load i32, ptr %scevgep1, align 4113 %tmp53 = add nsw i32 %tmp52, %tmp51114 store i32 %tmp53, ptr %scevgep1, align 4115 %tmp54 = add nuw i32 %tmp29, 4116 %lsr.iv.next = add i32 %lsr.iv, 16117 %loop.dec = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv15, i32 1)118 %tmp56 = icmp ne i32 %loop.dec, 0119 %lsr.iv.next16 = add nsw i32 %lsr.iv15, -1120 br i1 %tmp56, label %bb28, label %bb13121 122 bb57: ; preds = %bb16123 %tmp58 = getelementptr inbounds i32, ptr %arg1, i32 %tmp25124 %tmp59 = load i32, ptr %tmp58, align 4125 %tmp60 = getelementptr inbounds i32, ptr %arg2, i32 %tmp25126 %tmp61 = load i32, ptr %tmp60, align 4127 %tmp62 = xor i32 %tmp61, %tmp59128 %tmp63 = getelementptr inbounds i32, ptr %arg, i32 %tmp25129 %tmp64 = load i32, ptr %tmp63, align 4130 %tmp65 = add nsw i32 %tmp64, %tmp62131 store i32 %tmp65, ptr %tmp63, align 4132 %tmp66 = add nuw i32 %tmp14, 2133 %tmp67 = icmp eq i32 %tmp6, 2134 br i1 %tmp67, label %bb27, label %bb68135 136 bb68: ; preds = %bb57137 %tmp69 = getelementptr inbounds i32, ptr %arg1, i32 %tmp66138 %tmp70 = load i32, ptr %tmp69, align 4139 %tmp71 = getelementptr inbounds i32, ptr %arg2, i32 %tmp66140 %tmp72 = load i32, ptr %tmp71, align 4141 %tmp73 = xor i32 %tmp72, %tmp70142 %tmp74 = getelementptr inbounds i32, ptr %arg, i32 %tmp66143 %tmp75 = load i32, ptr %tmp74, align 4144 %tmp76 = add nsw i32 %tmp75, %tmp73145 store i32 %tmp76, ptr %tmp74, align 4146 br label %bb27147 }148 149 declare i32 @llvm.start.loop.iterations.i32(i32)150 declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)151 152...153---154name: test1155alignment: 2156exposesReturnsTwice: false157legalized: false158regBankSelected: false159selected: false160failedISel: false161tracksRegLiveness: true162hasWinCFI: false163registers: []164liveins:165 - { reg: '$r0', virtual-reg: '' }166 - { reg: '$r1', virtual-reg: '' }167 - { reg: '$r2', virtual-reg: '' }168 - { reg: '$r3', virtual-reg: '' }169frameInfo:170 isFrameAddressTaken: false171 isReturnAddressTaken: false172 hasStackMap: false173 hasPatchPoint: false174 stackSize: 40175 offsetAdjustment: 0176 maxAlignment: 4177 adjustsStack: false178 hasCalls: false179 stackProtector: ''180 maxCallFrameSize: 0181 cvBytesOfCalleeSavedRegisters: 0182 hasOpaqueSPAdjustment: false183 hasVAStart: false184 hasMustTailInVarArgFunc: false185 localFrameSize: 0186 savePoint: []187 restorePoint: []188fixedStack: []189stack:190 - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4,191 stack-id: default, callee-saved-register: '', callee-saved-restored: true,192 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }193 - { id: 1, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,194 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,195 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }196 - { id: 2, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,197 stack-id: default, callee-saved-register: '$r11', callee-saved-restored: true,198 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }199 - { id: 3, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,200 stack-id: default, callee-saved-register: '$r10', callee-saved-restored: true,201 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }202 - { id: 4, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,203 stack-id: default, callee-saved-register: '$r9', callee-saved-restored: true,204 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }205 - { id: 5, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,206 stack-id: default, callee-saved-register: '$r8', callee-saved-restored: true,207 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }208 - { id: 6, name: '', type: spill-slot, offset: -24, size: 4, alignment: 4,209 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,210 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }211 - { id: 7, name: '', type: spill-slot, offset: -28, size: 4, alignment: 4,212 stack-id: default, callee-saved-register: '$r6', callee-saved-restored: true,213 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }214 - { id: 8, name: '', type: spill-slot, offset: -32, size: 4, alignment: 4,215 stack-id: default, callee-saved-register: '$r5', callee-saved-restored: true,216 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }217 - { id: 9, name: '', type: spill-slot, offset: -36, size: 4, alignment: 4,218 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,219 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }220callSites: []221constants: []222machineFunctionInfo: {}223body: |224 ; CHECK-LABEL: name: test1225 ; CHECK: bb.0.bb:226 ; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.1(0x50000000)227 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11228 ; CHECK-NEXT: {{ $}}229 ; CHECK-NEXT: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr230 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 36231 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4232 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r11, -8233 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r10, -12234 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r9, -16235 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r8, -20236 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -24237 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r6, -28238 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r5, -32239 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r4, -36240 ; CHECK-NEXT: $sp = frame-setup tSUBspi $sp, 1, 14 /* CC::al */, $noreg241 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 40242 ; CHECK-NEXT: tCBZ $r3, %bb.3243 ; CHECK-NEXT: {{ $}}244 ; CHECK-NEXT: bb.1.bb4:245 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)246 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3247 ; CHECK-NEXT: {{ $}}248 ; CHECK-NEXT: renamable $r4, dead $cpsr = tSUBi3 renamable $r3, 1, 14 /* CC::al */, $noreg249 ; CHECK-NEXT: renamable $r7 = t2ANDri renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg250 ; CHECK-NEXT: tCMPi8 killed renamable $r4, 3, 14 /* CC::al */, $noreg, implicit-def $cpsr251 ; CHECK-NEXT: tSTRspi killed renamable $r7, $sp, 0, 14 /* CC::al */, $noreg :: (store (s32) into %stack.0)252 ; CHECK-NEXT: tBcc %bb.4, 2 /* CC::hs */, killed $cpsr253 ; CHECK-NEXT: {{ $}}254 ; CHECK-NEXT: bb.2:255 ; CHECK-NEXT: successors: %bb.6(0x80000000)256 ; CHECK-NEXT: liveins: $r0, $r1, $r2257 ; CHECK-NEXT: {{ $}}258 ; CHECK-NEXT: renamable $r8 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg259 ; CHECK-NEXT: renamable $lr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg260 ; CHECK-NEXT: tB %bb.6, 14 /* CC::al */, $noreg261 ; CHECK-NEXT: {{ $}}262 ; CHECK-NEXT: bb.3:263 ; CHECK-NEXT: successors: %bb.12(0x80000000)264 ; CHECK-NEXT: {{ $}}265 ; CHECK-NEXT: renamable $lr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg266 ; CHECK-NEXT: tB %bb.12, 14 /* CC::al */, $noreg267 ; CHECK-NEXT: {{ $}}268 ; CHECK-NEXT: bb.4.bb12:269 ; CHECK-NEXT: successors: %bb.5(0x80000000)270 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3271 ; CHECK-NEXT: {{ $}}272 ; CHECK-NEXT: renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg273 ; CHECK-NEXT: renamable $r4, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg274 ; CHECK-NEXT: renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14 /* CC::al */, $noreg275 ; CHECK-NEXT: renamable $r8 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg276 ; CHECK-NEXT: renamable $r3 = nuw nsw t2ADDrs killed renamable $r4, killed renamable $r3, 19, 14 /* CC::al */, $noreg, $noreg277 ; CHECK-NEXT: dead $lr = t2DLS renamable $r3278 ; CHECK-NEXT: $lr = tMOVr killed $r3, 14 /* CC::al */, $noreg279 ; CHECK-NEXT: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg280 ; CHECK-NEXT: {{ $}}281 ; CHECK-NEXT: bb.5.bb28:282 ; CHECK-NEXT: successors: %bb.5(0x7c000000), %bb.6(0x04000000)283 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r8284 ; CHECK-NEXT: {{ $}}285 ; CHECK-NEXT: renamable $r5 = tLDRr renamable $r1, $r3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep617)286 ; CHECK-NEXT: renamable $r7, dead $cpsr = tADDrr renamable $r2, renamable $r3, 14 /* CC::al */, $noreg287 ; CHECK-NEXT: renamable $r6 = tLDRr renamable $r2, $r3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep418)288 ; CHECK-NEXT: renamable $r8 = nuw t2ADDri killed renamable $r8, 4, 14 /* CC::al */, $noreg, $noreg289 ; CHECK-NEXT: renamable $r5, dead $cpsr = tEOR killed renamable $r5, killed renamable $r6, 14 /* CC::al */, $noreg290 ; CHECK-NEXT: renamable $r6 = tLDRr renamable $r0, $r3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep219)291 ; CHECK-NEXT: renamable $r5 = nsw tADDhirr killed renamable $r5, killed renamable $r6, 14 /* CC::al */, $noreg292 ; CHECK-NEXT: tSTRr killed renamable $r5, renamable $r0, $r3, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep219)293 ; CHECK-NEXT: renamable $r5, dead $cpsr = tADDrr renamable $r1, renamable $r3, 14 /* CC::al */, $noreg294 ; CHECK-NEXT: renamable $r4 = tLDRi renamable $r7, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep11)295 ; CHECK-NEXT: renamable $r6 = tLDRi renamable $r5, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep14)296 ; CHECK-NEXT: renamable $r9 = t2EORrr killed renamable $r4, killed renamable $r6, 14 /* CC::al */, $noreg, $noreg297 ; CHECK-NEXT: renamable $r6, dead $cpsr = tADDrr renamable $r0, renamable $r3, 14 /* CC::al */, $noreg298 ; CHECK-NEXT: $r11 = t2ADDri $r6, 4, 14 /* CC::al */, $noreg, $noreg299 ; CHECK-NEXT: renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 16, 14 /* CC::al */, $noreg300 ; CHECK-NEXT: t2LDMIA killed $r11, 14 /* CC::al */, $noreg, def $r4, def $r10, def $r11 :: (load (s32) from %ir.scevgep9), (load (s32) from %ir.scevgep8), (load (s32) from %ir.scevgep1)301 ; CHECK-NEXT: renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r9, 14 /* CC::al */, $noreg302 ; CHECK-NEXT: tSTRi killed renamable $r4, renamable $r6, 1, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep9)303 ; CHECK-NEXT: renamable $r9 = t2LDRi12 renamable $r5, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep12)304 ; CHECK-NEXT: renamable $r4 = tLDRi renamable $r7, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep10)305 ; CHECK-NEXT: renamable $r4 = t2EORrr killed renamable $r4, killed renamable $r9, 14 /* CC::al */, $noreg, $noreg306 ; CHECK-NEXT: renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r10, 14 /* CC::al */, $noreg307 ; CHECK-NEXT: tSTRi killed renamable $r4, renamable $r6, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep8)308 ; CHECK-NEXT: renamable $r4 = tLDRi killed renamable $r5, 3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep5)309 ; CHECK-NEXT: renamable $r5 = tLDRi killed renamable $r7, 3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)310 ; CHECK-NEXT: renamable $r4, dead $cpsr = tEOR killed renamable $r4, killed renamable $r5, 14 /* CC::al */, $noreg311 ; CHECK-NEXT: renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r11, 14 /* CC::al */, $noreg312 ; CHECK-NEXT: tSTRi killed renamable $r4, killed renamable $r6, 3, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep1)313 ; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.5314 ; CHECK-NEXT: {{ $}}315 ; CHECK-NEXT: bb.6.bb13:316 ; CHECK-NEXT: successors: %bb.12(0x30000000), %bb.7(0x50000000)317 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r8318 ; CHECK-NEXT: {{ $}}319 ; CHECK-NEXT: renamable $r5 = tLDRspi $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.0)320 ; CHECK-NEXT: tCBZ $r5, %bb.12321 ; CHECK-NEXT: {{ $}}322 ; CHECK-NEXT: bb.7.bb16:323 ; CHECK-NEXT: successors: %bb.8(0x40000000), %bb.9(0x40000000)324 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r5, $r8325 ; CHECK-NEXT: {{ $}}326 ; CHECK-NEXT: renamable $lr = t2LDRs renamable $r1, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp17)327 ; CHECK-NEXT: tCMPi8 renamable $r5, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr328 ; CHECK-NEXT: renamable $r3 = t2LDRs renamable $r2, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp19)329 ; CHECK-NEXT: renamable $lr = t2EORrr killed renamable $lr, killed renamable $r3, 14 /* CC::al */, $noreg, $noreg330 ; CHECK-NEXT: renamable $r3 = t2LDRs renamable $r0, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp22)331 ; CHECK-NEXT: renamable $r3 = nsw tADDhirr killed renamable $r3, killed renamable $lr, 14 /* CC::al */, $noreg332 ; CHECK-NEXT: t2STRs killed renamable $r3, renamable $r0, renamable $r8, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp22)333 ; CHECK-NEXT: tBcc %bb.9, 1 /* CC::ne */, killed $cpsr334 ; CHECK-NEXT: {{ $}}335 ; CHECK-NEXT: bb.8:336 ; CHECK-NEXT: successors: %bb.12(0x80000000)337 ; CHECK-NEXT: {{ $}}338 ; CHECK-NEXT: renamable $lr = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg339 ; CHECK-NEXT: tB %bb.12, 14 /* CC::al */, $noreg340 ; CHECK-NEXT: {{ $}}341 ; CHECK-NEXT: bb.9.bb57:342 ; CHECK-NEXT: successors: %bb.10(0x40000000), %bb.11(0x40000000)343 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r5, $r8344 ; CHECK-NEXT: {{ $}}345 ; CHECK-NEXT: renamable $r3 = nuw t2ADDri renamable $r8, 1, 14 /* CC::al */, $noreg, $noreg346 ; CHECK-NEXT: tCMPi8 killed renamable $r5, 2, 14 /* CC::al */, $noreg, implicit-def $cpsr347 ; CHECK-NEXT: renamable $r7 = t2LDRs renamable $r1, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp58)348 ; CHECK-NEXT: renamable $r6 = t2LDRs renamable $r2, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp60)349 ; CHECK-NEXT: renamable $r7 = t2EORrr killed renamable $r7, killed renamable $r6, 14 /* CC::al */, $noreg, $noreg350 ; CHECK-NEXT: renamable $r6 = t2LDRs renamable $r0, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp63)351 ; CHECK-NEXT: renamable $r7 = nsw tADDhirr killed renamable $r7, killed renamable $r6, 14 /* CC::al */, $noreg352 ; CHECK-NEXT: t2STRs killed renamable $r7, renamable $r0, killed renamable $r3, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp63)353 ; CHECK-NEXT: tBcc %bb.11, 1 /* CC::ne */, killed $cpsr354 ; CHECK-NEXT: {{ $}}355 ; CHECK-NEXT: bb.10:356 ; CHECK-NEXT: successors: %bb.12(0x80000000)357 ; CHECK-NEXT: {{ $}}358 ; CHECK-NEXT: renamable $lr = t2MOVi 2, 14 /* CC::al */, $noreg, $noreg359 ; CHECK-NEXT: tB %bb.12, 14 /* CC::al */, $noreg360 ; CHECK-NEXT: {{ $}}361 ; CHECK-NEXT: bb.11.bb68:362 ; CHECK-NEXT: successors: %bb.12(0x80000000)363 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r8364 ; CHECK-NEXT: {{ $}}365 ; CHECK-NEXT: renamable $r3 = nuw t2ADDri killed renamable $r8, 2, 14 /* CC::al */, $noreg, $noreg366 ; CHECK-NEXT: renamable $lr = t2MOVi 3, 14 /* CC::al */, $noreg, $noreg367 ; CHECK-NEXT: renamable $r1 = t2LDRs killed renamable $r1, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp69)368 ; CHECK-NEXT: renamable $r2 = t2LDRs killed renamable $r2, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp71)369 ; CHECK-NEXT: renamable $r1, dead $cpsr = tEOR killed renamable $r1, killed renamable $r2, 14 /* CC::al */, $noreg370 ; CHECK-NEXT: renamable $r2 = t2LDRs renamable $r0, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp74)371 ; CHECK-NEXT: renamable $r1 = nsw tADDhirr killed renamable $r1, killed renamable $r2, 14 /* CC::al */, $noreg372 ; CHECK-NEXT: t2STRs killed renamable $r1, killed renamable $r0, killed renamable $r3, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp74)373 ; CHECK-NEXT: {{ $}}374 ; CHECK-NEXT: bb.12.bb27:375 ; CHECK-NEXT: liveins: $lr376 ; CHECK-NEXT: {{ $}}377 ; CHECK-NEXT: $r0 = tMOVr killed $lr, 14 /* CC::al */, $noreg378 ; CHECK-NEXT: $sp = tADDspi $sp, 1, 14 /* CC::al */, $noreg379 ; CHECK-NEXT: $sp = t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc, implicit killed $r0380 bb.0.bb:381 successors: %bb.3(0x30000000), %bb.1(0x50000000)382 liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr383 384 $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr385 frame-setup CFI_INSTRUCTION def_cfa_offset 36386 frame-setup CFI_INSTRUCTION offset $lr, -4387 frame-setup CFI_INSTRUCTION offset $r11, -8388 frame-setup CFI_INSTRUCTION offset $r10, -12389 frame-setup CFI_INSTRUCTION offset $r9, -16390 frame-setup CFI_INSTRUCTION offset $r8, -20391 frame-setup CFI_INSTRUCTION offset $r7, -24392 frame-setup CFI_INSTRUCTION offset $r6, -28393 frame-setup CFI_INSTRUCTION offset $r5, -32394 frame-setup CFI_INSTRUCTION offset $r4, -36395 $sp = frame-setup tSUBspi $sp, 1, 14, $noreg396 frame-setup CFI_INSTRUCTION def_cfa_offset 40397 tCBZ $r3, %bb.3398 399 bb.1.bb4:400 successors: %bb.2(0x40000000), %bb.4(0x40000000)401 liveins: $r0, $r1, $r2, $r3402 403 renamable $r4, dead $cpsr = tSUBi3 renamable $r3, 1, 14, $noreg404 renamable $r7 = t2ANDri renamable $r3, 3, 14, $noreg, $noreg405 tCMPi8 killed renamable $r4, 3, 14, $noreg, implicit-def $cpsr406 tSTRspi killed renamable $r7, $sp, 0, 14, $noreg :: (store (s32) into %stack.0)407 tBcc %bb.4, 2, killed $cpsr408 409 bb.2:410 successors: %bb.6(0x80000000)411 liveins: $r0, $r1, $r2412 413 renamable $r8 = t2MOVi 0, 14, $noreg, $noreg414 renamable $lr = t2MOVi 0, 14, $noreg, $noreg415 tB %bb.6, 14, $noreg416 417 bb.3:418 successors: %bb.12(0x80000000)419 420 renamable $lr = t2MOVi 0, 14, $noreg, $noreg421 tB %bb.12, 14, $noreg422 423 bb.4.bb12:424 successors: %bb.5(0x80000000)425 liveins: $r0, $r1, $r2, $r3426 427 renamable $r3 = t2BICri killed renamable $r3, 3, 14, $noreg, $noreg428 renamable $r4, dead $cpsr = tMOVi8 1, 14, $noreg429 renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14, $noreg430 renamable $r8 = t2MOVi 0, 14, $noreg, $noreg431 renamable $r3 = nuw nsw t2ADDrs killed renamable $r4, killed renamable $r3, 19, 14, $noreg, $noreg432 $lr = t2DoLoopStart renamable $r3433 $lr = tMOVr $r3, 14, $noreg434 renamable $r3, dead $cpsr = tMOVi8 0, 14, $noreg435 436 bb.5.bb28:437 successors: %bb.5(0x7c000000), %bb.6(0x04000000)438 liveins: $r0, $r1, $r2, $r3, $r8, $lr439 440 renamable $r5 = tLDRr renamable $r1, $r3, 14, $noreg :: (load (s32) from %ir.scevgep617)441 renamable $r7, dead $cpsr = tADDrr renamable $r2, renamable $r3, 14, $noreg442 renamable $r6 = tLDRr renamable $r2, $r3, 14, $noreg :: (load (s32) from %ir.scevgep418)443 renamable $r8 = nuw t2ADDri killed renamable $r8, 4, 14, $noreg, $noreg444 renamable $r5, dead $cpsr = tEOR killed renamable $r5, killed renamable $r6, 14, $noreg445 renamable $r6 = tLDRr renamable $r0, $r3, 14, $noreg :: (load (s32) from %ir.scevgep219)446 renamable $lr = t2LoopDec killed renamable $lr, 1447 renamable $r5 = nsw tADDhirr killed renamable $r5, killed renamable $r6, 14, $noreg448 tSTRr killed renamable $r5, renamable $r0, $r3, 14, $noreg :: (store (s32) into %ir.scevgep219)449 renamable $r5, dead $cpsr = tADDrr renamable $r1, renamable $r3, 14, $noreg450 renamable $r4 = tLDRi renamable $r7, 1, 14, $noreg :: (load (s32) from %ir.scevgep11)451 renamable $r6 = tLDRi renamable $r5, 1, 14, $noreg :: (load (s32) from %ir.scevgep14)452 renamable $r9 = t2EORrr killed renamable $r4, killed renamable $r6, 14, $noreg, $noreg453 renamable $r6, dead $cpsr = tADDrr renamable $r0, renamable $r3, 14, $noreg454 $r11 = t2ADDri $r6, 4, 14, $noreg, $noreg455 renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 16, 14, $noreg456 t2LDMIA killed $r11, 14, $noreg, def $r4, def $r10, def $r11 :: (load (s32) from %ir.scevgep9), (load (s32) from %ir.scevgep8), (load (s32) from %ir.scevgep1)457 renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r9, 14, $noreg458 tSTRi killed renamable $r4, renamable $r6, 1, 14, $noreg :: (store (s32) into %ir.scevgep9)459 renamable $r9 = t2LDRi12 renamable $r5, 8, 14, $noreg :: (load (s32) from %ir.scevgep12)460 renamable $r4 = tLDRi renamable $r7, 2, 14, $noreg :: (load (s32) from %ir.scevgep10)461 renamable $r4 = t2EORrr killed renamable $r4, killed renamable $r9, 14, $noreg, $noreg462 renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r10, 14, $noreg463 tSTRi killed renamable $r4, renamable $r6, 2, 14, $noreg :: (store (s32) into %ir.scevgep8)464 renamable $r4 = tLDRi killed renamable $r5, 3, 14, $noreg :: (load (s32) from %ir.scevgep5)465 renamable $r5 = tLDRi killed renamable $r7, 3, 14, $noreg :: (load (s32) from %ir.scevgep3)466 renamable $r4, dead $cpsr = tEOR killed renamable $r4, killed renamable $r5, 14, $noreg467 renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r11, 14, $noreg468 tSTRi killed renamable $r4, killed renamable $r6, 3, 14, $noreg :: (store (s32) into %ir.scevgep1)469 t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr470 tB %bb.6, 14, $noreg471 472 bb.6.bb13:473 successors: %bb.12(0x30000000), %bb.7(0x50000000)474 liveins: $lr, $r0, $r1, $r2, $r8475 476 renamable $r5 = tLDRspi $sp, 0, 14, $noreg :: (load (s32) from %stack.0)477 tCBZ $r5, %bb.12478 479 bb.7.bb16:480 successors: %bb.8(0x40000000), %bb.9(0x40000000)481 liveins: $lr, $r0, $r1, $r2, $r5, $r8482 483 renamable $lr = t2LDRs renamable $r1, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp17)484 tCMPi8 renamable $r5, 1, 14, $noreg, implicit-def $cpsr485 renamable $r3 = t2LDRs renamable $r2, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp19)486 renamable $lr = t2EORrr killed renamable $lr, killed renamable $r3, 14, $noreg, $noreg487 renamable $r3 = t2LDRs renamable $r0, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp22)488 renamable $r3 = nsw tADDhirr killed renamable $r3, killed renamable $lr, 14, $noreg489 t2STRs killed renamable $r3, renamable $r0, renamable $r8, 2, 14, $noreg :: (store (s32) into %ir.tmp22)490 tBcc %bb.9, 1, killed $cpsr491 492 bb.8:493 successors: %bb.12(0x80000000)494 495 renamable $lr = t2MOVi 1, 14, $noreg, $noreg496 tB %bb.12, 14, $noreg497 498 bb.9.bb57:499 successors: %bb.10(0x40000000), %bb.11(0x40000000)500 liveins: $r0, $r1, $r2, $r5, $r8501 502 renamable $r3 = nuw t2ADDri renamable $r8, 1, 14, $noreg, $noreg503 tCMPi8 killed renamable $r5, 2, 14, $noreg, implicit-def $cpsr504 renamable $r7 = t2LDRs renamable $r1, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp58)505 renamable $r6 = t2LDRs renamable $r2, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp60)506 renamable $r7 = t2EORrr killed renamable $r7, killed renamable $r6, 14, $noreg, $noreg507 renamable $r6 = t2LDRs renamable $r0, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp63)508 renamable $r7 = nsw tADDhirr killed renamable $r7, killed renamable $r6, 14, $noreg509 t2STRs killed renamable $r7, renamable $r0, killed renamable $r3, 2, 14, $noreg :: (store (s32) into %ir.tmp63)510 tBcc %bb.11, 1, killed $cpsr511 512 bb.10:513 successors: %bb.12(0x80000000)514 515 renamable $lr = t2MOVi 2, 14, $noreg, $noreg516 tB %bb.12, 14, $noreg517 518 bb.11.bb68:519 successors: %bb.12(0x80000000)520 liveins: $r0, $r1, $r2, $r8521 522 renamable $r3 = nuw t2ADDri killed renamable $r8, 2, 14, $noreg, $noreg523 renamable $lr = t2MOVi 3, 14, $noreg, $noreg524 renamable $r1 = t2LDRs killed renamable $r1, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp69)525 renamable $r2 = t2LDRs killed renamable $r2, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp71)526 renamable $r1, dead $cpsr = tEOR killed renamable $r1, killed renamable $r2, 14, $noreg527 renamable $r2 = t2LDRs renamable $r0, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp74)528 renamable $r1 = nsw tADDhirr killed renamable $r1, killed renamable $r2, 14, $noreg529 t2STRs killed renamable $r1, killed renamable $r0, killed renamable $r3, 2, 14, $noreg :: (store (s32) into %ir.tmp74)530 531 bb.12.bb27:532 liveins: $lr533 534 $r0 = tMOVr killed $lr, 14, $noreg535 $sp = tADDspi $sp, 1, 14, $noreg536 $sp = t2LDMIA_RET $sp, 14, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc, implicit killed $r0537 538...539