brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.4 KiB · 8296f7f Raw
541 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:   dead $r12 = tMOVr $lr, 14 /* CC::al */, $noreg289  ; CHECK-NEXT:   renamable $r8 = nuw t2ADDri killed renamable $r8, 4, 14 /* CC::al */, $noreg, $noreg290  ; CHECK-NEXT:   renamable $r5, dead $cpsr = tEOR killed renamable $r5, killed renamable $r6, 14 /* CC::al */, $noreg291  ; CHECK-NEXT:   renamable $r6 = tLDRr renamable $r0, $r3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep219)292  ; CHECK-NEXT:   renamable $r5 = nsw tADDhirr killed renamable $r5, killed renamable $r6, 14 /* CC::al */, $noreg293  ; CHECK-NEXT:   tSTRr killed renamable $r5, renamable $r0, $r3, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep219)294  ; CHECK-NEXT:   renamable $r5, dead $cpsr = tADDrr renamable $r1, renamable $r3, 14 /* CC::al */, $noreg295  ; CHECK-NEXT:   renamable $r4 = tLDRi renamable $r7, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep11)296  ; CHECK-NEXT:   renamable $r6 = tLDRi renamable $r5, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep14)297  ; CHECK-NEXT:   renamable $r9 = t2EORrr killed renamable $r4, killed renamable $r6, 14 /* CC::al */, $noreg, $noreg298  ; CHECK-NEXT:   renamable $r6, dead $cpsr = tADDrr renamable $r0, renamable $r3, 14 /* CC::al */, $noreg299  ; CHECK-NEXT:   $r11 = t2ADDri $r6, 4, 14 /* CC::al */, $noreg, $noreg300  ; CHECK-NEXT:   renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 16, 14 /* CC::al */, $noreg301  ; 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)302  ; CHECK-NEXT:   renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r9, 14 /* CC::al */, $noreg303  ; CHECK-NEXT:   tSTRi killed renamable $r4, renamable $r6, 1, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep9)304  ; CHECK-NEXT:   renamable $r9 = t2LDRi12 renamable $r5, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep12)305  ; CHECK-NEXT:   renamable $r4 = tLDRi renamable $r7, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep10)306  ; CHECK-NEXT:   renamable $r4 = t2EORrr killed renamable $r4, killed renamable $r9, 14 /* CC::al */, $noreg, $noreg307  ; CHECK-NEXT:   renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r10, 14 /* CC::al */, $noreg308  ; CHECK-NEXT:   tSTRi killed renamable $r4, renamable $r6, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep8)309  ; CHECK-NEXT:   renamable $r4 = tLDRi killed renamable $r5, 3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep5)310  ; CHECK-NEXT:   renamable $r5 = tLDRi killed renamable $r7, 3, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)311  ; CHECK-NEXT:   renamable $r4, dead $cpsr = tEOR killed renamable $r4, killed renamable $r5, 14 /* CC::al */, $noreg312  ; CHECK-NEXT:   renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r11, 14 /* CC::al */, $noreg313  ; CHECK-NEXT:   tSTRi killed renamable $r4, killed renamable $r6, 3, 14 /* CC::al */, $noreg :: (store (s32) into %ir.scevgep1)314  ; CHECK-NEXT:   $lr = t2LEUpdate killed renamable $lr, %bb.5315  ; CHECK-NEXT: {{  $}}316  ; CHECK-NEXT: bb.6.bb13:317  ; CHECK-NEXT:   successors: %bb.12(0x30000000), %bb.7(0x50000000)318  ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r8319  ; CHECK-NEXT: {{  $}}320  ; CHECK-NEXT:   renamable $r5 = tLDRspi $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.0)321  ; CHECK-NEXT:   tCBZ $r5, %bb.12322  ; CHECK-NEXT: {{  $}}323  ; CHECK-NEXT: bb.7.bb16:324  ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.9(0x40000000)325  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r5, $r8326  ; CHECK-NEXT: {{  $}}327  ; CHECK-NEXT:   renamable $lr = t2LDRs renamable $r1, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp17)328  ; CHECK-NEXT:   tCMPi8 renamable $r5, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr329  ; CHECK-NEXT:   renamable $r3 = t2LDRs renamable $r2, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp19)330  ; CHECK-NEXT:   renamable $lr = t2EORrr killed renamable $lr, killed renamable $r3, 14 /* CC::al */, $noreg, $noreg331  ; CHECK-NEXT:   renamable $r3 = t2LDRs renamable $r0, renamable $r8, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp22)332  ; CHECK-NEXT:   renamable $r3 = nsw tADDhirr killed renamable $r3, killed renamable $lr, 14 /* CC::al */, $noreg333  ; CHECK-NEXT:   t2STRs killed renamable $r3, renamable $r0, renamable $r8, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp22)334  ; CHECK-NEXT:   tBcc %bb.9, 1 /* CC::ne */, killed $cpsr335  ; CHECK-NEXT: {{  $}}336  ; CHECK-NEXT: bb.8:337  ; CHECK-NEXT:   successors: %bb.12(0x80000000)338  ; CHECK-NEXT: {{  $}}339  ; CHECK-NEXT:   renamable $lr = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg340  ; CHECK-NEXT:   tB %bb.12, 14 /* CC::al */, $noreg341  ; CHECK-NEXT: {{  $}}342  ; CHECK-NEXT: bb.9.bb57:343  ; CHECK-NEXT:   successors: %bb.10(0x40000000), %bb.11(0x40000000)344  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r5, $r8345  ; CHECK-NEXT: {{  $}}346  ; CHECK-NEXT:   renamable $r3 = nuw t2ADDri renamable $r8, 1, 14 /* CC::al */, $noreg, $noreg347  ; CHECK-NEXT:   tCMPi8 killed renamable $r5, 2, 14 /* CC::al */, $noreg, implicit-def $cpsr348  ; CHECK-NEXT:   renamable $r7 = t2LDRs renamable $r1, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp58)349  ; CHECK-NEXT:   renamable $r6 = t2LDRs renamable $r2, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp60)350  ; CHECK-NEXT:   renamable $r7 = t2EORrr killed renamable $r7, killed renamable $r6, 14 /* CC::al */, $noreg, $noreg351  ; CHECK-NEXT:   renamable $r6 = t2LDRs renamable $r0, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp63)352  ; CHECK-NEXT:   renamable $r7 = nsw tADDhirr killed renamable $r7, killed renamable $r6, 14 /* CC::al */, $noreg353  ; CHECK-NEXT:   t2STRs killed renamable $r7, renamable $r0, killed renamable $r3, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp63)354  ; CHECK-NEXT:   tBcc %bb.11, 1 /* CC::ne */, killed $cpsr355  ; CHECK-NEXT: {{  $}}356  ; CHECK-NEXT: bb.10:357  ; CHECK-NEXT:   successors: %bb.12(0x80000000)358  ; CHECK-NEXT: {{  $}}359  ; CHECK-NEXT:   renamable $lr = t2MOVi 2, 14 /* CC::al */, $noreg, $noreg360  ; CHECK-NEXT:   tB %bb.12, 14 /* CC::al */, $noreg361  ; CHECK-NEXT: {{  $}}362  ; CHECK-NEXT: bb.11.bb68:363  ; CHECK-NEXT:   successors: %bb.12(0x80000000)364  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r8365  ; CHECK-NEXT: {{  $}}366  ; CHECK-NEXT:   renamable $r3 = nuw t2ADDri killed renamable $r8, 2, 14 /* CC::al */, $noreg, $noreg367  ; CHECK-NEXT:   renamable $lr = t2MOVi 3, 14 /* CC::al */, $noreg, $noreg368  ; CHECK-NEXT:   renamable $r1 = t2LDRs killed renamable $r1, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp69)369  ; CHECK-NEXT:   renamable $r2 = t2LDRs killed renamable $r2, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp71)370  ; CHECK-NEXT:   renamable $r1, dead $cpsr = tEOR killed renamable $r1, killed renamable $r2, 14 /* CC::al */, $noreg371  ; CHECK-NEXT:   renamable $r2 = t2LDRs renamable $r0, renamable $r3, 2, 14 /* CC::al */, $noreg :: (load (s32) from %ir.tmp74)372  ; CHECK-NEXT:   renamable $r1 = nsw tADDhirr killed renamable $r1, killed renamable $r2, 14 /* CC::al */, $noreg373  ; CHECK-NEXT:   t2STRs killed renamable $r1, killed renamable $r0, killed renamable $r3, 2, 14 /* CC::al */, $noreg :: (store (s32) into %ir.tmp74)374  ; CHECK-NEXT: {{  $}}375  ; CHECK-NEXT: bb.12.bb27:376  ; CHECK-NEXT:   liveins: $lr377  ; CHECK-NEXT: {{  $}}378  ; CHECK-NEXT:   $r0 = tMOVr killed $lr, 14 /* CC::al */, $noreg379  ; CHECK-NEXT:   $sp = tADDspi $sp, 1, 14 /* CC::al */, $noreg380  ; 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 $r0381  bb.0.bb:382    successors: %bb.3(0x30000000), %bb.1(0x50000000)383    liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr384 385    $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 $lr386    frame-setup CFI_INSTRUCTION def_cfa_offset 36387    frame-setup CFI_INSTRUCTION offset $lr, -4388    frame-setup CFI_INSTRUCTION offset $r11, -8389    frame-setup CFI_INSTRUCTION offset $r10, -12390    frame-setup CFI_INSTRUCTION offset $r9, -16391    frame-setup CFI_INSTRUCTION offset $r8, -20392    frame-setup CFI_INSTRUCTION offset $r7, -24393    frame-setup CFI_INSTRUCTION offset $r6, -28394    frame-setup CFI_INSTRUCTION offset $r5, -32395    frame-setup CFI_INSTRUCTION offset $r4, -36396    $sp = frame-setup tSUBspi $sp, 1, 14, $noreg397    frame-setup CFI_INSTRUCTION def_cfa_offset 40398    tCBZ $r3, %bb.3399 400  bb.1.bb4:401    successors: %bb.2(0x40000000), %bb.4(0x40000000)402    liveins: $r0, $r1, $r2, $r3403 404    renamable $r4, dead $cpsr = tSUBi3 renamable $r3, 1, 14, $noreg405    renamable $r7 = t2ANDri renamable $r3, 3, 14, $noreg, $noreg406    tCMPi8 killed renamable $r4, 3, 14, $noreg, implicit-def $cpsr407    tSTRspi killed renamable $r7, $sp, 0, 14, $noreg :: (store (s32) into %stack.0)408    tBcc %bb.4, 2, killed $cpsr409 410  bb.2:411    successors: %bb.6(0x80000000)412    liveins: $r0, $r1, $r2413 414    renamable $r8 = t2MOVi 0, 14, $noreg, $noreg415    renamable $lr = t2MOVi 0, 14, $noreg, $noreg416    tB %bb.6, 14, $noreg417 418  bb.3:419    successors: %bb.12(0x80000000)420 421    renamable $lr = t2MOVi 0, 14, $noreg, $noreg422    tB %bb.12, 14, $noreg423 424  bb.4.bb12:425    successors: %bb.5(0x80000000)426    liveins: $r0, $r1, $r2, $r3427 428    renamable $r3 = t2BICri killed renamable $r3, 3, 14, $noreg, $noreg429    renamable $r4, dead $cpsr = tMOVi8 1, 14, $noreg430    renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14, $noreg431    renamable $r8 = t2MOVi 0, 14, $noreg, $noreg432    renamable $r3 = nuw nsw t2ADDrs killed renamable $r4, killed renamable $r3, 19, 14, $noreg, $noreg433    $lr = t2DoLoopStart renamable $r3434    $lr = tMOVr killed $r3, 14, $noreg435    renamable $r3, dead $cpsr = tMOVi8 0, 14, $noreg436 437  bb.5.bb28:438    successors: %bb.5(0x7c000000), %bb.6(0x04000000)439    liveins: $r0, $r1, $r2, $r3, $r8, $lr440 441    renamable $r5 = tLDRr renamable $r1, $r3, 14, $noreg :: (load (s32) from %ir.scevgep617)442    renamable $r7, dead $cpsr = tADDrr renamable $r2, renamable $r3, 14, $noreg443    renamable $r6 = tLDRr renamable $r2, $r3, 14, $noreg :: (load (s32) from %ir.scevgep418)444    $r12 = tMOVr $lr, 14, $noreg445    renamable $r8 = nuw t2ADDri killed renamable $r8, 4, 14, $noreg, $noreg446    renamable $r5, dead $cpsr = tEOR killed renamable $r5, killed renamable $r6, 14, $noreg447    renamable $r6 = tLDRr renamable $r0, $r3, 14, $noreg :: (load (s32) from %ir.scevgep219)448    renamable $lr = t2LoopDec killed renamable $lr, 1449    renamable $r5 = nsw tADDhirr killed renamable $r5, killed renamable $r6, 14, $noreg450    tSTRr killed renamable $r5, renamable $r0, $r3, 14, $noreg :: (store (s32) into %ir.scevgep219)451    renamable $r5, dead $cpsr = tADDrr renamable $r1, renamable $r3, 14, $noreg452    renamable $r4 = tLDRi renamable $r7, 1, 14, $noreg :: (load (s32) from %ir.scevgep11)453    renamable $r6 = tLDRi renamable $r5, 1, 14, $noreg :: (load (s32) from %ir.scevgep14)454    renamable $r9 = t2EORrr killed renamable $r4, killed renamable $r6, 14, $noreg, $noreg455    renamable $r6, dead $cpsr = tADDrr renamable $r0, renamable $r3, 14, $noreg456    $r11 = t2ADDri $r6, 4, 14, $noreg, $noreg457    renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 16, 14, $noreg458    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)459    renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r9, 14, $noreg460    tSTRi killed renamable $r4, renamable $r6, 1, 14, $noreg :: (store (s32) into %ir.scevgep9)461    renamable $r9 = t2LDRi12 renamable $r5, 8, 14, $noreg :: (load (s32) from %ir.scevgep12)462    renamable $r4 = tLDRi renamable $r7, 2, 14, $noreg :: (load (s32) from %ir.scevgep10)463    renamable $r4 = t2EORrr killed renamable $r4, killed renamable $r9, 14, $noreg, $noreg464    renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r10, 14, $noreg465    tSTRi killed renamable $r4, renamable $r6, 2, 14, $noreg :: (store (s32) into %ir.scevgep8)466    renamable $r4 = tLDRi killed renamable $r5, 3, 14, $noreg :: (load (s32) from %ir.scevgep5)467    renamable $r5 = tLDRi killed renamable $r7, 3, 14, $noreg :: (load (s32) from %ir.scevgep3)468    renamable $r4, dead $cpsr = tEOR killed renamable $r4, killed renamable $r5, 14, $noreg469    renamable $r4 = nsw tADDhirr killed renamable $r4, killed renamable $r11, 14, $noreg470    tSTRi killed renamable $r4, killed renamable $r6, 3, 14, $noreg :: (store (s32) into %ir.scevgep1)471    t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr472    tB %bb.6, 14, $noreg473 474  bb.6.bb13:475    successors: %bb.12(0x30000000), %bb.7(0x50000000)476    liveins: $lr, $r0, $r1, $r2, $r8477 478    renamable $r5 = tLDRspi $sp, 0, 14, $noreg :: (load (s32) from %stack.0)479    tCBZ $r5, %bb.12480 481  bb.7.bb16:482    successors: %bb.8(0x40000000), %bb.9(0x40000000)483    liveins: $r0, $r1, $r2, $r5, $r8484 485    renamable $lr = t2LDRs renamable $r1, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp17)486    tCMPi8 renamable $r5, 1, 14, $noreg, implicit-def $cpsr487    renamable $r3 = t2LDRs renamable $r2, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp19)488    renamable $lr = t2EORrr killed renamable $lr, killed renamable $r3, 14, $noreg, $noreg489    renamable $r3 = t2LDRs renamable $r0, renamable $r8, 2, 14, $noreg :: (load (s32) from %ir.tmp22)490    renamable $r3 = nsw tADDhirr killed renamable $r3, killed renamable $lr, 14, $noreg491    t2STRs killed renamable $r3, renamable $r0, renamable $r8, 2, 14, $noreg :: (store (s32) into %ir.tmp22)492    tBcc %bb.9, 1, killed $cpsr493 494  bb.8:495    successors: %bb.12(0x80000000)496 497    renamable $lr = t2MOVi 1, 14, $noreg, $noreg498    tB %bb.12, 14, $noreg499 500  bb.9.bb57:501    successors: %bb.10(0x40000000), %bb.11(0x40000000)502    liveins: $r0, $r1, $r2, $r5, $r8503 504    renamable $r3 = nuw t2ADDri renamable $r8, 1, 14, $noreg, $noreg505    tCMPi8 killed renamable $r5, 2, 14, $noreg, implicit-def $cpsr506    renamable $r7 = t2LDRs renamable $r1, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp58)507    renamable $r6 = t2LDRs renamable $r2, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp60)508    renamable $r7 = t2EORrr killed renamable $r7, killed renamable $r6, 14, $noreg, $noreg509    renamable $r6 = t2LDRs renamable $r0, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp63)510    renamable $r7 = nsw tADDhirr killed renamable $r7, killed renamable $r6, 14, $noreg511    t2STRs killed renamable $r7, renamable $r0, killed renamable $r3, 2, 14, $noreg :: (store (s32) into %ir.tmp63)512    tBcc %bb.11, 1, killed $cpsr513 514  bb.10:515    successors: %bb.12(0x80000000)516 517    renamable $lr = t2MOVi 2, 14, $noreg, $noreg518    tB %bb.12, 14, $noreg519 520  bb.11.bb68:521    successors: %bb.12(0x80000000)522    liveins: $r0, $r1, $r2, $r8523 524    renamable $r3 = nuw t2ADDri killed renamable $r8, 2, 14, $noreg, $noreg525    renamable $lr = t2MOVi 3, 14, $noreg, $noreg526    renamable $r1 = t2LDRs killed renamable $r1, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp69)527    renamable $r2 = t2LDRs killed renamable $r2, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp71)528    renamable $r1, dead $cpsr = tEOR killed renamable $r1, killed renamable $r2, 14, $noreg529    renamable $r2 = t2LDRs renamable $r0, renamable $r3, 2, 14, $noreg :: (load (s32) from %ir.tmp74)530    renamable $r1 = nsw tADDhirr killed renamable $r1, killed renamable $r2, 14, $noreg531    t2STRs killed renamable $r1, killed renamable $r0, killed renamable $r3, 2, 14, $noreg :: (store (s32) into %ir.tmp74)532 533  bb.12.bb27:534    liveins: $lr535 536    $r0 = tMOVr killed $lr, 14, $noreg537    $sp = tADDspi $sp, 1, 14, $noreg538    $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 $r0539 540...541