1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve -run-pass=arm-block-placement -verify-machineinstrs %s -o - | FileCheck %s 3--- | 4 5 ; Checks that Predecessor gets moved (to before the LoopExit) if it contains a backward WLS. 6 define void @backwards_branch(i32 %N, i32* nocapture %a, i32* nocapture readonly %b) { 7 entry: 8 unreachable 9 } 10 11 ; Checks that Predecessor (containing a backwards WLS) does not get moved to before the loopExit if it is the entry block. 12 define void @backwards_branch_entry_block(i32 %N, i32* nocapture %a, i32* nocapture readonly %b) { 13 entry: 14 unreachable 15 } 16 17 ; Checks that Predecessor (to which a forward WLS exists) is not moved if moving it would cause the WLS to become backwards branching. 18 define void @backwards_branch_backwards_wls(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) { 19 entry: 20 unreachable 21 } 22 23 ; Checks that a MachineFunction is unaffected if it doesn't contain any WLS (pseudo) instruction. 24 define void @no_predecessor(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) { 25 entry: 26 unreachable 27 } 28 29 ; Within a nested (Both the WLS and loopExit are at depth=3 here) loop, checks that Predecessor 30 ; gets moved (in backward direction) if there exists a backdwards WLS from it to the LoopExit. 31 define void @nested_loops(i32 %n, i32 %m, i32 %l, i8* noalias %X, i8* noalias %Y) { 32 entry: 33 unreachable 34 } 35 36 ; Checks that Predecessor (to which a forward WLS exists) is moved if moving it would NOT cause the WLS 37 ; to become backwards branching. 38 define void @backwards_branch_forwards_wls(i32 %N, i32 %M, i32* nocapture %a, i32* nocapture %b, i32* nocapture %c) { 39 entry: 40 unreachable 41 } 42 43 ; Checks that multiple predecessor case is handled appropriately 44 define void @multiple_predecessors(i32 %d, i32 %e, i32 %f) { 45 entry: 46 unreachable 47 } 48 49 ; Checks that blocks after jump tables work 50 define void @jump_table(i32 %d, i32 %e, i32 %f) { 51 entry: 52 unreachable 53 } 54 55 declare dso_local i32 @g(...) 56 57 declare dso_local i32 @h(...) 58 59... 60--- 61name: backwards_branch 62tracksRegLiveness: true 63body: | 64 ; CHECK-LABEL: name: backwards_branch 65 ; CHECK: bb.0: 66 ; CHECK-NEXT: successors: %bb.1(0x80000000) 67 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $lr 68 ; CHECK-NEXT: {{ $}} 69 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 70 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 71 ; CHECK-NEXT: frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 72 ; CHECK-NEXT: {{ $}} 73 ; CHECK-NEXT: bb.1: 74 ; CHECK-NEXT: successors: %bb.3(0x80000000) 75 ; CHECK-NEXT: liveins: $r0, $r1, $r2 76 ; CHECK-NEXT: {{ $}} 77 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.2, implicit-def dead $cpsr 78 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 79 ; CHECK-NEXT: {{ $}} 80 ; CHECK-NEXT: bb.2: 81 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 82 ; CHECK-NEXT: {{ $}} 83 ; CHECK-NEXT: bb.3: 84 ; CHECK-NEXT: successors: %bb.3(0x7c000000), %bb.2(0x04000000) 85 ; CHECK-NEXT: liveins: $lr, $r1, $r2 86 ; CHECK-NEXT: {{ $}} 87 ; CHECK-NEXT: renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 88 ; CHECK-NEXT: tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 89 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr 90 ; CHECK-NEXT: t2B %bb.2, 14 /* CC::al */, $noreg 91 bb.0: 92 successors: %bb.2(0x80000000) 93 liveins: $r0, $r1, $r2, $lr 94 95 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 96 t2IT 11, 8, implicit-def $itstate 97 frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 98 99 bb.1: 100 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 101 102 bb.2: 103 successors: %bb.3(0x80000000) 104 liveins: $r0, $r1, $r2 105 106 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.1, implicit-def dead $cpsr 107 108 bb.3: 109 successors: %bb.3(0x7c000000), %bb.1(0x04000000) 110 liveins: $lr, $r1, $r2 111 112 renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 113 tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 114 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr 115 t2B %bb.1, 14 /* CC::al */, $noreg 116 117... 118--- 119name: backwards_branch_entry_block 120tracksRegLiveness: true 121body: | 122 ; CHECK-LABEL: name: backwards_branch_entry_block 123 ; CHECK: bb.0: 124 ; CHECK-NEXT: successors: %bb.2(0x80000000) 125 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $lr 126 ; CHECK-NEXT: {{ $}} 127 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 128 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 129 ; CHECK-NEXT: frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 130 ; CHECK-NEXT: {{ $}} 131 ; CHECK-NEXT: bb.1: 132 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 133 ; CHECK-NEXT: {{ $}} 134 ; CHECK-NEXT: bb.2: 135 ; CHECK-NEXT: successors: %bb.3(0x80000000) 136 ; CHECK-NEXT: liveins: $r0, $r1, $r2 137 ; CHECK-NEXT: {{ $}} 138 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.0, implicit-def dead $cpsr 139 ; CHECK-NEXT: {{ $}} 140 ; CHECK-NEXT: bb.3: 141 ; CHECK-NEXT: successors: %bb.3(0x7c000000), %bb.1(0x04000000) 142 ; CHECK-NEXT: liveins: $lr, $r1, $r2 143 ; CHECK-NEXT: {{ $}} 144 ; CHECK-NEXT: renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 145 ; CHECK-NEXT: tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 146 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr 147 ; CHECK-NEXT: t2B %bb.1, 14 /* CC::al */, $noreg 148 bb.0: 149 successors: %bb.2(0x80000000) 150 liveins: $r0, $r1, $r2, $lr 151 152 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 153 t2IT 11, 8, implicit-def $itstate 154 frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 155 156 bb.1: 157 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 158 159 bb.2: 160 successors: %bb.3(0x80000000) 161 liveins: $r0, $r1, $r2 162 163 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.0, implicit-def dead $cpsr 164 165 bb.3: 166 successors: %bb.3(0x7c000000), %bb.1(0x04000000) 167 liveins: $lr, $r1, $r2 168 169 renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 170 tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 171 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr 172 t2B %bb.1, 14 /* CC::al */, $noreg 173 174... 175--- 176name: backwards_branch_backwards_wls 177tracksRegLiveness: true 178body: | 179 ; CHECK-LABEL: name: backwards_branch_backwards_wls 180 ; CHECK: bb.0: 181 ; CHECK-NEXT: successors: %bb.2(0x80000000) 182 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $lr 183 ; CHECK-NEXT: {{ $}} 184 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 185 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 186 ; CHECK-NEXT: frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 187 ; CHECK-NEXT: {{ $}} 188 ; CHECK-NEXT: bb.1: 189 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 190 ; CHECK-NEXT: {{ $}} 191 ; CHECK-NEXT: bb.2: 192 ; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.6(0x40000000) 193 ; CHECK-NEXT: liveins: $r0, $r1, $r2 194 ; CHECK-NEXT: {{ $}} 195 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.3, implicit-def dead $cpsr 196 ; CHECK-NEXT: t2B %bb.6, 14 /* CC::al */, $noreg 197 ; CHECK-NEXT: {{ $}} 198 ; CHECK-NEXT: bb.3: 199 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.4(0x04000000) 200 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2 201 ; CHECK-NEXT: {{ $}} 202 ; CHECK-NEXT: t2CMPri renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 203 ; CHECK-NEXT: t2Bcc %bb.1, 0 /* CC::eq */, $cpsr 204 ; CHECK-NEXT: {{ $}} 205 ; CHECK-NEXT: bb.4: 206 ; CHECK-NEXT: successors: %bb.5(0x80000000) 207 ; CHECK-NEXT: liveins: $r2, $r1, $r0 208 ; CHECK-NEXT: {{ $}} 209 ; CHECK-NEXT: $lr = t2DoLoopStart renamable $r0 210 ; CHECK-NEXT: t2B %bb.5, 14 /* CC::al */, $noreg 211 ; CHECK-NEXT: {{ $}} 212 ; CHECK-NEXT: bb.5: 213 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.5(0x40000000) 214 ; CHECK-NEXT: liveins: $lr, $r1, $r2 215 ; CHECK-NEXT: {{ $}} 216 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.5, implicit-def dead $cpsr 217 ; CHECK-NEXT: t2B %bb.1, 14 /* CC::al */, $noreg 218 ; CHECK-NEXT: {{ $}} 219 ; CHECK-NEXT: bb.6: 220 ; CHECK-NEXT: successors: %bb.6(0x40000000), %bb.3(0x40000000) 221 ; CHECK-NEXT: liveins: $lr, $r1, $r2 222 ; CHECK-NEXT: {{ $}} 223 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.6, implicit-def dead $cpsr 224 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 225 bb.0: 226 successors: %bb.2(0x80000000) 227 liveins: $r0, $r1, $r2, $lr 228 229 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 230 t2IT 11, 8, implicit-def $itstate 231 frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 232 233 bb.1: 234 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 235 236 bb.2: 237 successors: %bb.3(0x80000000), %bb.5(0x80000000) 238 liveins: $r0, $r1, $r2 239 240 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.3, implicit-def dead $cpsr 241 t2B %bb.5, 14 /* CC::al */, $noreg 242 243 bb.3: 244 successors: %bb.1(0x7c000000), %bb.4(0x04000000) 245 liveins: $lr, $r0, $r1, $r2 246 247 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.1, implicit-def dead $cpsr 248 t2B %bb.4, 14 /* CC::al */, $noreg 249 250 bb.4: 251 successors: %bb.1, %bb.4 252 liveins: $lr, $r1, $r2 253 254 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 255 t2B %bb.1, 14 /* CC::al */, $noreg 256 257 bb.5: 258 successors: %bb.5, %bb.3 259 liveins: $lr, $r1, $r2 260 261 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.5, implicit-def dead $cpsr 262 t2B %bb.3, 14 /* CC::al */, $noreg 263... 264--- 265name: no_predecessor 266tracksRegLiveness: true 267body: | 268 ; CHECK-LABEL: name: no_predecessor 269 ; CHECK: bb.0: 270 ; CHECK-NEXT: successors: %bb.2(0x30000000), %bb.1(0x50000000) 271 ; CHECK-NEXT: liveins: $r0, $r4, $r5, $r7, $lr 272 ; CHECK-NEXT: {{ $}} 273 ; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, $r7, killed $lr, implicit-def $sp, implicit $sp 274 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16 275 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4 276 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8 277 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r5, -12 278 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r4, -16 279 ; CHECK-NEXT: $r7 = frame-setup tADDrSPi $sp, 2, 14 /* CC::al */, $noreg 280 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $r7, 8 281 ; CHECK-NEXT: $r4 = tMOVr killed $r0, 14 /* CC::al */, $noreg 282 ; CHECK-NEXT: tBL 14 /* CC::al */, $noreg, @g, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0 283 ; CHECK-NEXT: tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 284 ; CHECK-NEXT: t2Bcc %bb.2, 0 /* CC::eq */, killed $cpsr 285 ; CHECK-NEXT: {{ $}} 286 ; CHECK-NEXT: bb.1: 287 ; CHECK-NEXT: successors: %bb.4(0x80000000) 288 ; CHECK-NEXT: liveins: $r4 289 ; CHECK-NEXT: {{ $}} 290 ; CHECK-NEXT: renamable $r0, dead $cpsr = tMOVi8 4, 14 /* CC::al */, $noreg 291 ; CHECK-NEXT: renamable $r5 = t2LDRSHi12 killed renamable $r0, 0, 14 /* CC::al */, $noreg 292 ; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg 293 ; CHECK-NEXT: {{ $}} 294 ; CHECK-NEXT: bb.2: 295 ; CHECK-NEXT: successors: %bb.4(0x80000000) 296 ; CHECK-NEXT: liveins: $r4 297 ; CHECK-NEXT: {{ $}} 298 ; CHECK-NEXT: renamable $r5, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 299 ; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg 300 ; CHECK-NEXT: {{ $}} 301 ; CHECK-NEXT: bb.3: 302 ; CHECK-NEXT: successors: %bb.4(0x80000000) 303 ; CHECK-NEXT: liveins: $r4, $r5 304 ; CHECK-NEXT: {{ $}} 305 ; CHECK-NEXT: $r0 = tMOVr $r5, 14 /* CC::al */, $noreg 306 ; CHECK-NEXT: tBL 14 /* CC::al */, $noreg, @h, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def dead $r0 307 ; CHECK-NEXT: {{ $}} 308 ; CHECK-NEXT: bb.4: 309 ; CHECK-NEXT: successors: %bb.5(0x04000000), %bb.3(0x7c000000) 310 ; CHECK-NEXT: liveins: $r4, $r5 311 ; CHECK-NEXT: {{ $}} 312 ; CHECK-NEXT: renamable $r0 = tLDRi renamable $r4, 0, 14 /* CC::al */, $noreg 313 ; CHECK-NEXT: tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 314 ; CHECK-NEXT: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr 315 ; CHECK-NEXT: {{ $}} 316 ; CHECK-NEXT: bb.5: 317 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc 318 bb.0: 319 successors: %bb.1(0x30000000), %bb.2(0x50000000) 320 liveins: $r0, $r4, $r5, $r7, $lr 321 322 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, $r7, killed $lr, implicit-def $sp, implicit $sp 323 frame-setup CFI_INSTRUCTION def_cfa_offset 16 324 frame-setup CFI_INSTRUCTION offset $lr, -4 325 frame-setup CFI_INSTRUCTION offset $r7, -8 326 frame-setup CFI_INSTRUCTION offset $r5, -12 327 frame-setup CFI_INSTRUCTION offset $r4, -16 328 $r7 = frame-setup tADDrSPi $sp, 2, 14 /* CC::al */, $noreg 329 frame-setup CFI_INSTRUCTION def_cfa $r7, 8 330 $r4 = tMOVr killed $r0, 14 /* CC::al */, $noreg 331 tBL 14 /* CC::al */, $noreg, @g, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0 332 tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 333 t2Bcc %bb.1, 0 /* CC::eq */, killed $cpsr 334 335 bb.2: 336 successors: %bb.3(0x80000000) 337 liveins: $r4 338 339 renamable $r0, dead $cpsr = tMOVi8 4, 14 /* CC::al */, $noreg 340 renamable $r5 = t2LDRSHi12 killed renamable $r0, 0, 14 /* CC::al */, $noreg 341 t2B %bb.3, 14 /* CC::al */, $noreg 342 343 bb.1: 344 successors: %bb.3(0x80000000) 345 liveins: $r4 346 347 renamable $r5, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 348 t2B %bb.3, 14 /* CC::al */, $noreg 349 350 bb.4: 351 successors: %bb.3(0x80000000) 352 liveins: $r4, $r5 353 354 $r0 = tMOVr $r5, 14 /* CC::al */, $noreg 355 tBL 14 /* CC::al */, $noreg, @h, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def dead $r0 356 357 bb.3: 358 successors: %bb.5(0x04000000), %bb.4(0x7c000000) 359 liveins: $r4, $r5 360 361 renamable $r0 = tLDRi renamable $r4, 0, 14 /* CC::al */, $noreg 362 tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 363 t2Bcc %bb.4, 1 /* CC::ne */, killed $cpsr 364 365 bb.5: 366 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r7, def $pc 367... 368--- 369name: nested_loops 370tracksRegLiveness: true 371liveins: 372 - { reg: '$r0' } 373 - { reg: '$r1' } 374 - { reg: '$r2' } 375 - { reg: '$r3' } 376frameInfo: 377 stackSize: 32 378 maxAlignment: 4 379 maxCallFrameSize: 0 380fixedStack: 381 - { id: 0, size: 4, alignment: 8, isImmutable: true } 382stack: 383 - { id: 0, type: spill-slot, offset: -4, size: 4, alignment: 4, callee-saved-register: '$lr', 384 callee-saved-restored: false } 385 - { id: 1, type: spill-slot, offset: -8, size: 4, alignment: 4, callee-saved-register: '$r10' } 386 - { id: 2, type: spill-slot, offset: -12, size: 4, alignment: 4, callee-saved-register: '$r9' } 387 - { id: 3, type: spill-slot, offset: -16, size: 4, alignment: 4, callee-saved-register: '$r8' } 388 - { id: 4, type: spill-slot, offset: -20, size: 4, alignment: 4, callee-saved-register: '$r7' } 389 - { id: 5, type: spill-slot, offset: -24, size: 4, alignment: 4, callee-saved-register: '$r6' } 390 - { id: 6, type: spill-slot, offset: -28, size: 4, alignment: 4, callee-saved-register: '$r5' } 391 - { id: 7, type: spill-slot, offset: -32, size: 4, alignment: 4, callee-saved-register: '$r4' } 392machineFunctionInfo: {} 393body: | 394 ; CHECK-LABEL: name: nested_loops 395 ; CHECK: bb.0: 396 ; CHECK-NEXT: successors: %bb.1(0x80000000) 397 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $lr 398 ; CHECK-NEXT: {{ $}} 399 ; 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 $lr 400 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 32 401 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4 402 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r10, -8 403 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r9, -12 404 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r8, -16 405 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -20 406 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r6, -24 407 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r5, -28 408 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r4, -32 409 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 410 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 411 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 11 /* CC::lt */, killed $cpsr, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $pc, implicit killed $itstate 412 ; CHECK-NEXT: {{ $}} 413 ; CHECK-NEXT: bb.1: 414 ; CHECK-NEXT: successors: %bb.3(0x80000000) 415 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3 416 ; CHECK-NEXT: {{ $}} 417 ; CHECK-NEXT: renamable $r12 = t2LDRi12 $sp, 32, 14 /* CC::al */, $noreg :: (load (s32) from %fixed-stack.0, align 8) 418 ; CHECK-NEXT: $r9 = tMOVr killed $r2, 14 /* CC::al */, $noreg 419 ; CHECK-NEXT: renamable $r8 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg 420 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 421 ; CHECK-NEXT: {{ $}} 422 ; CHECK-NEXT: bb.2: 423 ; CHECK-NEXT: successors: %bb.9(0x04000000), %bb.3(0x7c000000) 424 ; CHECK-NEXT: liveins: $r0, $r1, $r3, $r8, $r9, $r12 425 ; CHECK-NEXT: {{ $}} 426 ; CHECK-NEXT: renamable $r8 = nuw nsw t2ADDri killed renamable $r8, 1, 14 /* CC::al */, $noreg, $noreg 427 ; CHECK-NEXT: renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg 428 ; CHECK-NEXT: tCMPhir renamable $r8, renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr 429 ; CHECK-NEXT: renamable $r12 = t2ADDri killed renamable $r12, 1, 14 /* CC::al */, $noreg, $noreg 430 ; CHECK-NEXT: t2Bcc %bb.9, 0 /* CC::eq */, killed $cpsr 431 ; CHECK-NEXT: {{ $}} 432 ; CHECK-NEXT: bb.3: 433 ; CHECK-NEXT: successors: %bb.4(0x50000000), %bb.2(0x30000000) 434 ; CHECK-NEXT: liveins: $r0, $r1, $r3, $r8, $r9, $r12 435 ; CHECK-NEXT: {{ $}} 436 ; CHECK-NEXT: tCMPi8 renamable $r1, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 437 ; CHECK-NEXT: t2Bcc %bb.2, 11 /* CC::lt */, killed $cpsr 438 ; CHECK-NEXT: {{ $}} 439 ; CHECK-NEXT: bb.4: 440 ; CHECK-NEXT: successors: %bb.5(0x80000000) 441 ; CHECK-NEXT: liveins: $r0, $r1, $r3, $r8, $r9, $r12 442 ; CHECK-NEXT: {{ $}} 443 ; CHECK-NEXT: renamable $r4, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 444 ; CHECK-NEXT: $r10 = tMOVr $r12, 14 /* CC::al */, $noreg 445 ; CHECK-NEXT: $r2 = tMOVr $r3, 14 /* CC::al */, $noreg 446 ; CHECK-NEXT: t2B %bb.5, 14 /* CC::al */, $noreg 447 ; CHECK-NEXT: {{ $}} 448 ; CHECK-NEXT: bb.5: 449 ; CHECK-NEXT: successors: %bb.7(0x50000000), %bb.6(0x30000000) 450 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 451 ; CHECK-NEXT: {{ $}} 452 ; CHECK-NEXT: renamable $lr = t2WhileLoopStartLR killed renamable $r9, %bb.6, implicit-def dead $cpsr 453 ; CHECK-NEXT: t2B %bb.7, 14 /* CC::al */, $noreg 454 ; CHECK-NEXT: {{ $}} 455 ; CHECK-NEXT: bb.6: 456 ; CHECK-NEXT: successors: %bb.2(0x04000000), %bb.5(0x7c000000) 457 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 458 ; CHECK-NEXT: {{ $}} 459 ; CHECK-NEXT: renamable $r4, dead $cpsr = nuw nsw tADDi8 killed renamable $r4, 1, 14 /* CC::al */, $noreg 460 ; CHECK-NEXT: renamable $r2, dead $cpsr = tADDi8 killed renamable $r2, 1, 14 /* CC::al */, $noreg 461 ; CHECK-NEXT: tCMPr renamable $r4, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr 462 ; CHECK-NEXT: renamable $r10 = t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg 463 ; CHECK-NEXT: t2Bcc %bb.2, 0 /* CC::eq */, killed $cpsr 464 ; CHECK-NEXT: t2B %bb.5, 14 /* CC::al */, $noreg 465 ; CHECK-NEXT: {{ $}} 466 ; CHECK-NEXT: bb.7: 467 ; CHECK-NEXT: successors: %bb.8(0x80000000) 468 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 469 ; CHECK-NEXT: {{ $}} 470 ; CHECK-NEXT: $r5 = tMOVr $r10, 14 /* CC::al */, $noreg 471 ; CHECK-NEXT: $r6 = tMOVr $r2, 14 /* CC::al */, $noreg 472 ; CHECK-NEXT: t2B %bb.8, 14 /* CC::al */, $noreg 473 ; CHECK-NEXT: {{ $}} 474 ; CHECK-NEXT: bb.8: 475 ; CHECK-NEXT: successors: %bb.8(0x7c000000), %bb.6(0x04000000) 476 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r9, $r10, $r12 477 ; CHECK-NEXT: {{ $}} 478 ; CHECK-NEXT: tSTRi killed $r0, $r1, 0, 14 /* CC::al */, $noreg 479 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.8, implicit-def dead $cpsr 480 ; CHECK-NEXT: t2B %bb.6, 14 /* CC::al */, $noreg 481 ; CHECK-NEXT: {{ $}} 482 ; CHECK-NEXT: bb.9: 483 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $pc 484 bb.0: 485 successors: %bb.1 486 liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $lr 487 488 $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 $lr 489 frame-setup CFI_INSTRUCTION def_cfa_offset 32 490 frame-setup CFI_INSTRUCTION offset $lr, -4 491 frame-setup CFI_INSTRUCTION offset $r10, -8 492 frame-setup CFI_INSTRUCTION offset $r9, -12 493 frame-setup CFI_INSTRUCTION offset $r8, -16 494 frame-setup CFI_INSTRUCTION offset $r7, -20 495 frame-setup CFI_INSTRUCTION offset $r6, -24 496 frame-setup CFI_INSTRUCTION offset $r5, -28 497 frame-setup CFI_INSTRUCTION offset $r4, -32 498 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 499 t2IT 11, 8, implicit-def $itstate 500 $sp = frame-destroy t2LDMIA_RET $sp, 11 /* CC::lt */, killed $cpsr, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $pc, implicit killed $itstate 501 502 bb.1: 503 liveins: $r0, $r1, $r2, $r3 504 505 renamable $r12 = t2LDRi12 $sp, 32, 14 /* CC::al */, $noreg :: (load (s32) from %fixed-stack.0, align 8) 506 $r9 = tMOVr killed $r2, 14 /* CC::al */, $noreg 507 renamable $r8 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg 508 t2B %bb.2, 14 /* CC::al */, $noreg 509 510 bb.8: 511 successors: %bb.9(0x04000000), %bb.2(0x7c000000) 512 liveins: $r0, $r1, $r3, $r8, $r9, $r12 513 514 renamable $r8 = nuw nsw t2ADDri killed renamable $r8, 1, 14 /* CC::al */, $noreg, $noreg 515 renamable $r3, dead $cpsr = tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg 516 tCMPhir renamable $r8, renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr 517 renamable $r12 = t2ADDri killed renamable $r12, 1, 14 /* CC::al */, $noreg, $noreg 518 t2Bcc %bb.9, 0 /* CC::eq */, killed $cpsr 519 520 bb.2: 521 successors: %bb.3(0x50000000), %bb.8(0x30000000) 522 liveins: $r0, $r1, $r3, $r8, $r9, $r12 523 524 tCMPi8 renamable $r1, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 525 t2Bcc %bb.8, 11 /* CC::lt */, killed $cpsr 526 527 bb.3: 528 liveins: $r0, $r1, $r3, $r8, $r9, $r12 529 530 renamable $r4, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 531 $r10 = tMOVr $r12, 14 /* CC::al */, $noreg 532 $r2 = tMOVr $r3, 14 /* CC::al */, $noreg 533 t2B %bb.4, 14 /* CC::al */, $noreg 534 535 bb.7: 536 successors: %bb.8(0x04000000), %bb.4(0x7c000000) 537 liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 538 539 renamable $r4, dead $cpsr = nuw nsw tADDi8 killed renamable $r4, 1, 14 /* CC::al */, $noreg 540 renamable $r2, dead $cpsr = tADDi8 killed renamable $r2, 1, 14 /* CC::al */, $noreg 541 tCMPr renamable $r4, renamable $r1, 14 /* CC::al */, $noreg, implicit-def $cpsr 542 renamable $r10 = t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg 543 t2Bcc %bb.8, 0 /* CC::eq */, killed $cpsr 544 545 bb.4: 546 successors: %bb.5(0x50000000), %bb.7(0x30000000) 547 liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 548 549 renamable $lr = t2WhileLoopStartLR killed renamable $r9, %bb.7, implicit-def dead $cpsr 550 551 bb.5: 552 liveins: $r0, $r1, $r2, $r3, $r4, $r8, $r9, $r10, $r12 553 554 $r5 = tMOVr $r10, 14 /* CC::al */, $noreg 555 $r6 = tMOVr $r2, 14 /* CC::al */, $noreg 556 t2B %bb.6, 14 /* CC::al */, $noreg 557 558 bb.6: 559 successors: %bb.6(0x7c000000), %bb.7(0x04000000) 560 liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r9, $r10, $r12 561 562 tSTRi killed $r0, $r1, 0, 14 /* CC::al */, $noreg 563 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.6, implicit-def dead $cpsr 564 t2B %bb.7, 14 /* CC::al */, $noreg 565 566 bb.9: 567 $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $pc 568 569... 570--- 571name: backwards_branch_forwards_wls 572tracksRegLiveness: true 573body: | 574 ; CHECK-LABEL: name: backwards_branch_forwards_wls 575 ; CHECK: bb.0: 576 ; CHECK-NEXT: successors: %bb.1(0x80000000) 577 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $lr 578 ; CHECK-NEXT: {{ $}} 579 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 580 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 581 ; CHECK-NEXT: frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 582 ; CHECK-NEXT: {{ $}} 583 ; CHECK-NEXT: bb.1: 584 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.5(0x40000000) 585 ; CHECK-NEXT: liveins: $r0, $r1, $r2 586 ; CHECK-NEXT: {{ $}} 587 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.2, implicit-def dead $cpsr 588 ; CHECK-NEXT: t2B %bb.5, 14 /* CC::al */, $noreg 589 ; CHECK-NEXT: {{ $}} 590 ; CHECK-NEXT: bb.2: 591 ; CHECK-NEXT: successors: %bb.4(0x40000000), %bb.3(0x40000000) 592 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2 593 ; CHECK-NEXT: {{ $}} 594 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.3, implicit-def dead $cpsr 595 ; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg 596 ; CHECK-NEXT: {{ $}} 597 ; CHECK-NEXT: bb.3: 598 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 599 ; CHECK-NEXT: {{ $}} 600 ; CHECK-NEXT: bb.4: 601 ; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000) 602 ; CHECK-NEXT: liveins: $lr, $r1, $r2 603 ; CHECK-NEXT: {{ $}} 604 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 605 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 606 ; CHECK-NEXT: {{ $}} 607 ; CHECK-NEXT: bb.5: 608 ; CHECK-NEXT: successors: %bb.5(0x40000000), %bb.2(0x40000000) 609 ; CHECK-NEXT: liveins: $lr, $r1, $r2 610 ; CHECK-NEXT: {{ $}} 611 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.5, implicit-def dead $cpsr 612 ; CHECK-NEXT: t2B %bb.2, 14 /* CC::al */, $noreg 613 bb.0: 614 successors: %bb.2 615 liveins: $r0, $r1, $r2, $lr 616 617 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 618 t2IT 11, 8, implicit-def $itstate 619 frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 620 621 bb.2: 622 successors: %bb.3, %bb.5 623 liveins: $r0, $r1, $r2 624 625 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.3, implicit-def dead $cpsr 626 t2B %bb.5, 14 /* CC::al */, $noreg 627 628 bb.1: 629 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 630 631 bb.3: 632 successors: %bb.4, %bb.1 633 liveins: $lr, $r0, $r1, $r2 634 635 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.1, implicit-def dead $cpsr 636 t2B %bb.4, 14 /* CC::al */, $noreg 637 638 bb.4: 639 successors: %bb.1, %bb.4 640 liveins: $lr, $r1, $r2 641 642 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 643 t2B %bb.1, 14 /* CC::al */, $noreg 644 645 bb.5: 646 successors: %bb.5, %bb.3 647 liveins: $lr, $r1, $r2 648 649 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.5, implicit-def dead $cpsr 650 t2B %bb.3, 14 /* CC::al */, $noreg 651 652... 653--- 654name: multiple_predecessors 655tracksRegLiveness: true 656body: | 657 ; CHECK-LABEL: name: multiple_predecessors 658 ; CHECK: bb.0: 659 ; CHECK-NEXT: successors: %bb.3(0x55555555), %bb.2(0x2aaaaaab) 660 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $r7, $lr 661 ; CHECK-NEXT: {{ $}} 662 ; CHECK-NEXT: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp 663 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8 664 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4 665 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8 666 ; CHECK-NEXT: $sp = frame-setup tSUBspi $sp, 1, 14 /* CC::al */, $noreg 667 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 12 668 ; CHECK-NEXT: tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 669 ; CHECK-NEXT: t2IT 0, 8, implicit-def $itstate 670 ; CHECK-NEXT: tCMPi8 killed renamable $r1, 8, 0 /* CC::eq */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate 671 ; CHECK-NEXT: t2Bcc %bb.2, 0 /* CC::eq */, killed $cpsr 672 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 673 ; CHECK-NEXT: {{ $}} 674 ; CHECK-NEXT: bb.1: 675 ; CHECK-NEXT: successors: %bb.6(0x40000000), %bb.3(0x40000000) 676 ; CHECK-NEXT: liveins: $r0, $r1, $r2 677 ; CHECK-NEXT: {{ $}} 678 ; CHECK-NEXT: renamable $lr = t2WhileLoopStartLR killed renamable $r2, %bb.3, implicit-def dead $cpsr 679 ; CHECK-NEXT: t2B %bb.6, 14 /* CC::al */, $noreg 680 ; CHECK-NEXT: {{ $}} 681 ; CHECK-NEXT: bb.2: 682 ; CHECK-NEXT: successors: %bb.4(0x40000000), %bb.3(0x40000000) 683 ; CHECK-NEXT: liveins: $r2 684 ; CHECK-NEXT: {{ $}} 685 ; CHECK-NEXT: renamable $lr = t2WhileLoopStartLR renamable $r2, %bb.3, implicit-def dead $cpsr 686 ; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg 687 ; CHECK-NEXT: {{ $}} 688 ; CHECK-NEXT: bb.3: 689 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg 690 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit undef $r0 691 ; CHECK-NEXT: {{ $}} 692 ; CHECK-NEXT: bb.4: 693 ; CHECK-NEXT: successors: %bb.5(0x80000000) 694 ; CHECK-NEXT: liveins: $lr, $r2 695 ; CHECK-NEXT: {{ $}} 696 ; CHECK-NEXT: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 697 ; CHECK-NEXT: renamable $r1 = t2ADDri $sp, 2, 14 /* CC::al */, $noreg, $noreg 698 ; CHECK-NEXT: renamable $r0 = IMPLICIT_DEF 699 ; CHECK-NEXT: {{ $}} 700 ; CHECK-NEXT: bb.5: 701 ; CHECK-NEXT: successors: %bb.5(0x7c000000), %bb.1(0x04000000) 702 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r2, $r3 703 ; CHECK-NEXT: {{ $}} 704 ; CHECK-NEXT: renamable $q0, renamable $r0 = MVE_VIWDUPu16 killed renamable $r0, renamable $r3, 1, 0, $noreg, $noreg, undef renamable $q0 705 ; CHECK-NEXT: MVE_VSTRH16_rq undef renamable $q0, renamable $r1, killed renamable $q0, 0, $noreg, $noreg 706 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.5, implicit-def dead $cpsr 707 ; CHECK-NEXT: t2B %bb.1, 14 /* CC::al */, $noreg 708 ; CHECK-NEXT: {{ $}} 709 ; CHECK-NEXT: bb.6: 710 ; CHECK-NEXT: successors: %bb.7(0x80000000) 711 ; CHECK-NEXT: liveins: $lr, $r0, $r1 712 ; CHECK-NEXT: {{ $}} 713 ; CHECK-NEXT: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 714 ; CHECK-NEXT: {{ $}} 715 ; CHECK-NEXT: bb.7: 716 ; CHECK-NEXT: successors: %bb.7(0x7c000000), %bb.3(0x04000000) 717 ; CHECK-NEXT: liveins: $lr, $r0, $r1, $r3 718 ; CHECK-NEXT: {{ $}} 719 ; CHECK-NEXT: renamable $q0, renamable $r0 = MVE_VIWDUPu16 killed renamable $r0, renamable $r3, 2, 0, $noreg, $noreg, undef renamable $q0 720 ; CHECK-NEXT: MVE_VSTRH16_rq undef renamable $q0, renamable $r1, killed renamable $q0, 0, $noreg, $noreg 721 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.7, implicit-def dead $cpsr 722 ; CHECK-NEXT: t2B %bb.3, 14 /* CC::al */, $noreg 723 bb.0: 724 successors: %bb.7(0x80000000), %bb.1(0x40000000) 725 liveins: $r0, $r1, $r2, $r7, $lr 726 727 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp 728 frame-setup CFI_INSTRUCTION def_cfa_offset 8 729 frame-setup CFI_INSTRUCTION offset $lr, -4 730 frame-setup CFI_INSTRUCTION offset $r7, -8 731 $sp = frame-setup tSUBspi $sp, 1, 14 /* CC::al */, $noreg 732 frame-setup CFI_INSTRUCTION def_cfa_offset 12 733 tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 734 t2IT 0, 8, implicit-def $itstate 735 tCMPi8 killed renamable $r1, 8, 0 /* CC::eq */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate 736 t2Bcc %bb.1, 0 /* CC::eq */, killed $cpsr 737 738 bb.7: 739 $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg 740 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit undef $r0 741 742 bb.1: 743 successors: %bb.3(0x40000000), %bb.7(0x40000000) 744 liveins: $r2 745 746 renamable $lr = t2WhileLoopStartLR renamable $r2, %bb.7, implicit-def dead $cpsr 747 t2B %bb.3, 14 /* CC::al */, $noreg 748 749 bb.3: 750 successors: %bb.4(0x80000000) 751 liveins: $lr, $r2 752 753 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 754 renamable $r1 = t2ADDri $sp, 2, 14 /* CC::al */, $noreg, $noreg 755 renamable $r0 = IMPLICIT_DEF 756 757 bb.4: 758 successors: %bb.4(0x7c000000), %bb.2(0x04000000) 759 liveins: $lr, $r0, $r1, $r2, $r3 760 761 renamable $q0, renamable $r0 = MVE_VIWDUPu16 killed renamable $r0, renamable $r3, 1, 0, $noreg, $noreg, undef renamable $q0 762 MVE_VSTRH16_rq undef renamable $q0, renamable $r1, killed renamable $q0, 0, $noreg, $noreg 763 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 764 t2B %bb.2, 14 /* CC::al */, $noreg 765 766 bb.2: 767 successors: %bb.5(0x40000000), %bb.7(0x40000000) 768 liveins: $r0, $r1, $r2 769 770 renamable $lr = t2WhileLoopStartLR killed renamable $r2, %bb.7, implicit-def dead $cpsr 771 t2B %bb.5, 14 /* CC::al */, $noreg 772 773 bb.5: 774 successors: %bb.6(0x80000000) 775 liveins: $lr, $r0, $r1 776 777 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg 778 779 bb.6: 780 successors: %bb.6(0x7c000000), %bb.7(0x04000000) 781 liveins: $lr, $r0, $r1, $r3 782 783 renamable $q0, renamable $r0 = MVE_VIWDUPu16 killed renamable $r0, renamable $r3, 2, 0, $noreg, $noreg, undef renamable $q0 784 MVE_VSTRH16_rq undef renamable $q0, renamable $r1, killed renamable $q0, 0, $noreg, $noreg 785 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.6, implicit-def dead $cpsr 786 t2B %bb.7, 14 /* CC::al */, $noreg 787 788... 789--- 790name: jump_table 791tracksRegLiveness: true 792jumpTable: 793 kind: inline 794 entries: 795 - id: 0 796 blocks: [ '%bb.3', '%bb.1' ] 797body: | 798 ; CHECK-LABEL: name: jump_table 799 ; CHECK: bb.0: 800 ; CHECK-NEXT: successors: %bb.3(0x80000000) 801 ; CHECK-NEXT: liveins: $r0, $r1, $r2, $lr 802 ; CHECK-NEXT: {{ $}} 803 ; CHECK-NEXT: tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 804 ; CHECK-NEXT: t2IT 11, 8, implicit-def $itstate 805 ; CHECK-NEXT: frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 806 ; CHECK-NEXT: {{ $}} 807 ; CHECK-NEXT: bb.1: 808 ; CHECK-NEXT: successors: %bb.4(0x80000000) 809 ; CHECK-NEXT: liveins: $r0, $r1, $r2 810 ; CHECK-NEXT: {{ $}} 811 ; CHECK-NEXT: $lr = t2WhileLoopStartLR killed renamable $r0, %bb.2, implicit-def dead $cpsr 812 ; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg 813 ; CHECK-NEXT: {{ $}} 814 ; CHECK-NEXT: bb.2: 815 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 816 ; CHECK-NEXT: {{ $}} 817 ; CHECK-NEXT: bb.3: 818 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000) 819 ; CHECK-NEXT: liveins: $r0 820 ; CHECK-NEXT: {{ $}} 821 ; CHECK-NEXT: renamable $r5 = t2LEApcrelJT %jump-table.0, 14 /* CC::al */, $noreg 822 ; CHECK-NEXT: renamable $r5 = t2ADDrs killed renamable $r5, renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg 823 ; CHECK-NEXT: t2BR_JT killed renamable $r5, killed renamable $r0, %jump-table.0 824 ; CHECK-NEXT: {{ $}} 825 ; CHECK-NEXT: bb.4: 826 ; CHECK-NEXT: successors: %bb.4(0x7c000000), %bb.2(0x04000000) 827 ; CHECK-NEXT: liveins: $lr, $r1, $r2 828 ; CHECK-NEXT: {{ $}} 829 ; CHECK-NEXT: renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 830 ; CHECK-NEXT: tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 831 ; CHECK-NEXT: renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 832 ; CHECK-NEXT: t2B %bb.2, 14 /* CC::al */, $noreg 833 bb.0: 834 successors: %bb.2(0x80000000) 835 liveins: $r0, $r1, $r2, $lr 836 837 tCMPi8 renamable $r0, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr 838 t2IT 11, 8, implicit-def $itstate 839 frame-destroy tPOP_RET 11 /* CC::lt */, killed $cpsr, def $r7, def $pc, implicit killed $itstate 840 841 bb.1: 842 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 843 844 bb.2: 845 successors: %bb.3(0x7c000000), %bb.1(0x04000000) 846 liveins: $r0 847 848 renamable $r5 = t2LEApcrelJT %jump-table.0, 14 /* CC::al */, $noreg 849 renamable $r5 = t2ADDrs killed renamable $r5, renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg 850 t2BR_JT killed renamable $r5, killed renamable $r0, %jump-table.0 851 852 bb.3: 853 successors: %bb.4(0x80000000) 854 liveins: $r0, $r1, $r2 855 856 $lr = t2WhileLoopStartLR killed renamable $r0, %bb.1, implicit-def dead $cpsr 857 858 bb.4: 859 successors: %bb.4(0x7c000000), %bb.1(0x04000000) 860 liveins: $lr, $r1, $r2 861 862 renamable $r0 = tLDRi renamable $r2, 0, 14 /* CC::al */, $noreg 863 tSTRi killed renamable $r0, renamable $r1, 0, 14 /* CC::al */, $noreg 864 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.4, implicit-def dead $cpsr 865 t2B %bb.1, 14 /* CC::al */, $noreg 866 867... 868