334 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=thumbv7m-none-eabi -run-pass=arm-cp-islands -o - %s | FileCheck %s3 4--- |5 define ptr @test_simple(ptr %x, i32 %y) { ret ptr %x }6 define ptr @test_notfirst(ptr %x, i32 %y) { ret ptr %x }7 define ptr @test_redefined(ptr %x, i32 %y) { ret ptr %x }8 define ptr @test_notredefined(ptr %x, i32 %y) { ret ptr %x }9 define ptr @test_notcmp(ptr %x, i32 %y) { ret ptr %x }10 define ptr @test_killflag_1(ptr %x, i32 %y) { ret ptr %x }11 define ptr @test_killflag_2(ptr %x, i32 %y) { ret ptr %x }12 define ptr @test_cpsr(ptr %x, i32 %y) { ret ptr %x }13 14 declare dso_local i32 @c(i32 %x)15...16---17name: test_simple18tracksRegLiveness: true19liveins:20 - { reg: '$r0', virtual-reg: '' }21 - { reg: '$r1', virtual-reg: '' }22body: |23 ; CHECK-LABEL: name: test_simple24 ; CHECK: bb.0:25 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)26 ; CHECK: liveins: $r0, $r127 ; CHECK: tCBZ renamable $r0, %bb.228 ; CHECK: bb.1:29 ; CHECK: liveins: $r030 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)31 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r032 ; CHECK: bb.2:33 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg34 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r035 bb.0:36 successors: %bb.1(0x30000000), %bb.2(0x50000000)37 liveins: $r0, $r138 39 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr40 t2Bcc %bb.1, 0, killed $cpsr41 42 bb.2:43 liveins: $r044 45 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)46 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r047 48 bb.1:49 $r0, dead $cpsr = tMOVi8 0, 14, $noreg50 tBX_RET 14, $noreg, implicit killed $r051 52...53---54name: test_notfirst55tracksRegLiveness: true56liveins:57 - { reg: '$r0', virtual-reg: '' }58 - { reg: '$r1', virtual-reg: '' }59body: |60 ; CHECK-LABEL: name: test_notfirst61 ; CHECK: bb.0:62 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)63 ; CHECK: liveins: $r0, $r164 ; CHECK: renamable $r0, $cpsr = tADDrr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg65 ; CHECK: renamable $r1 = t2ADDrs renamable $r0, killed renamable $r1, 18, 14 /* CC::al */, $noreg, $noreg66 ; CHECK: tCBZ renamable $r0, %bb.267 ; CHECK: bb.1:68 ; CHECK: liveins: $r069 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)70 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r071 ; CHECK: bb.2:72 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg73 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r074 bb.0:75 successors: %bb.1(0x30000000), %bb.2(0x50000000)76 liveins: $r0, $r177 78 renamable $r0, $cpsr = tADDrr killed renamable $r0, renamable $r1, 14, $noreg79 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr80 renamable $r1 = t2ADDrs renamable $r0, killed renamable $r1, 18, 14, $noreg, $noreg81 t2Bcc %bb.1, 0, killed $cpsr82 83 bb.2:84 liveins: $r085 86 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)87 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r088 89 bb.1:90 $r0, dead $cpsr = tMOVi8 0, 14, $noreg91 tBX_RET 14, $noreg, implicit killed $r092 93...94---95name: test_redefined96tracksRegLiveness: true97liveins:98 - { reg: '$r0', virtual-reg: '' }99 - { reg: '$r1', virtual-reg: '' }100body: |101 ; CHECK-LABEL: name: test_redefined102 ; CHECK: bb.0:103 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)104 ; CHECK: liveins: $r0, $r1105 ; CHECK: tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr106 ; CHECK: renamable $r0 = t2ADDrs killed renamable $r0, killed renamable $r1, 18, 14 /* CC::al */, $noreg, $noreg107 ; CHECK: tBcc %bb.2, 0 /* CC::eq */, killed $cpsr108 ; CHECK: bb.1:109 ; CHECK: liveins: $r0110 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)111 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0112 ; CHECK: bb.2:113 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg114 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0115 bb.0:116 successors: %bb.1(0x30000000), %bb.2(0x50000000)117 liveins: $r0, $r1118 119 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr120 renamable $r0 = t2ADDrs killed renamable $r0, killed renamable $r1, 18, 14, $noreg, $noreg121 t2Bcc %bb.1, 0, killed $cpsr122 123 bb.2:124 liveins: $r0125 126 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)127 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0128 129 bb.1:130 $r0, dead $cpsr = tMOVi8 0, 14, $noreg131 tBX_RET 14, $noreg, implicit killed $r0132 133...134---135name: test_notredefined136tracksRegLiveness: true137liveins:138 - { reg: '$r0', virtual-reg: '' }139 - { reg: '$r1', virtual-reg: '' }140body: |141 ; CHECK-LABEL: name: test_notredefined142 ; CHECK: bb.0:143 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)144 ; CHECK: liveins: $r0, $r1145 ; CHECK: renamable $r1 = t2ADDrs renamable $r0, killed renamable $r1, 18, 14 /* CC::al */, $noreg, $noreg146 ; CHECK: tCBZ renamable $r0, %bb.2147 ; CHECK: bb.1:148 ; CHECK: liveins: $r0149 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)150 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0151 ; CHECK: bb.2:152 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg153 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0154 bb.0:155 successors: %bb.1(0x30000000), %bb.2(0x50000000)156 liveins: $r0, $r1157 158 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr159 renamable $r1 = t2ADDrs renamable $r0, killed renamable $r1, 18, 14, $noreg, $noreg160 t2Bcc %bb.1, 0, killed $cpsr161 162 bb.2:163 liveins: $r0164 165 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)166 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0167 168 bb.1:169 $r0, dead $cpsr = tMOVi8 0, 14, $noreg170 tBX_RET 14, $noreg, implicit killed $r0171 172...173---174name: test_notcmp175tracksRegLiveness: true176liveins:177 - { reg: '$r0', virtual-reg: '' }178 - { reg: '$r1', virtual-reg: '' }179body: |180 ; CHECK-LABEL: name: test_notcmp181 ; CHECK: bb.0:182 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)183 ; CHECK: liveins: $r0, $r1184 ; CHECK: tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr185 ; CHECK: renamable $r1, $cpsr = tADDrr renamable $r0, killed renamable $r1, 14 /* CC::al */, $noreg186 ; CHECK: tBcc %bb.2, 0 /* CC::eq */, killed $cpsr187 ; CHECK: bb.1:188 ; CHECK: liveins: $r0189 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)190 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0191 ; CHECK: bb.2:192 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg193 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0194 bb.0:195 successors: %bb.1(0x30000000), %bb.2(0x50000000)196 liveins: $r0, $r1197 198 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr199 renamable $r1, $cpsr = tADDrr renamable $r0, killed renamable $r1, 14, $noreg200 t2Bcc %bb.1, 0, killed $cpsr201 202 bb.2:203 liveins: $r0204 205 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)206 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0207 208 bb.1:209 $r0, dead $cpsr = tMOVi8 0, 14, $noreg210 tBX_RET 14, $noreg, implicit killed $r0211 212...213---214name: test_killflag_1215tracksRegLiveness: true216liveins:217 - { reg: '$r0', virtual-reg: '' }218 - { reg: '$r1', virtual-reg: '' }219body: |220 ; CHECK-LABEL: name: test_killflag_1221 ; CHECK: bb.0:222 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)223 ; CHECK: liveins: $r0, $r1224 ; CHECK: renamable $r0 = t2ADDrs killed renamable $r0, killed renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg225 ; CHECK: tCBZ killed renamable $r1, %bb.2226 ; CHECK: bb.1:227 ; CHECK: liveins: $r0228 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)229 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0230 ; CHECK: bb.2:231 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg232 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0233 bb.0:234 successors: %bb.1(0x30000000), %bb.2(0x50000000)235 liveins: $r0, $r1236 237 tCMPi8 killed renamable $r1, 0, 14, $noreg, implicit-def $cpsr238 renamable $r0 = t2ADDrs killed renamable $r0, killed renamable $r0, 18, 14, $noreg, $noreg239 t2Bcc %bb.1, 0, killed $cpsr240 241 bb.2:242 liveins: $r0243 244 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)245 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0246 247 bb.1:248 $r0, dead $cpsr = tMOVi8 0, 14, $noreg249 tBX_RET 14, $noreg, implicit killed $r0250 251...252---253name: test_killflag_2254tracksRegLiveness: true255liveins:256 - { reg: '$r0', virtual-reg: '' }257 - { reg: '$r1', virtual-reg: '' }258body: |259 ; CHECK-LABEL: name: test_killflag_2260 ; CHECK: bb.0:261 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)262 ; CHECK: liveins: $r0, $r1263 ; CHECK: renamable $r0 = t2ADDrs renamable $r1, killed renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg264 ; CHECK: tCBZ killed renamable $r1, %bb.2265 ; CHECK: bb.1:266 ; CHECK: liveins: $r0267 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)268 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0269 ; CHECK: bb.2:270 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg271 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0272 bb.0:273 successors: %bb.1(0x30000000), %bb.2(0x50000000)274 liveins: $r0, $r1275 276 tCMPi8 renamable $r1, 0, 14, $noreg, implicit-def $cpsr277 renamable $r0 = t2ADDrs killed renamable $r1, killed renamable $r0, 18, 14, $noreg, $noreg278 t2Bcc %bb.1, 0, killed $cpsr279 280 bb.2:281 liveins: $r0282 283 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)284 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0285 286 bb.1:287 $r0, dead $cpsr = tMOVi8 0, 14, $noreg288 tBX_RET 14, $noreg, implicit killed $r0289 290...291---292name: test_cpsr293tracksRegLiveness: true294liveins:295 - { reg: '$r0', virtual-reg: '' }296 - { reg: '$r1', virtual-reg: '' }297body: |298 ; CHECK-LABEL: name: test_cpsr299 ; CHECK: bb.0:300 ; CHECK: successors: %bb.2(0x30000000), %bb.1(0x50000000)301 ; CHECK: liveins: $r0, $r1302 ; CHECK: tCMPi8 renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr303 ; CHECK: t2IT 0, 8, implicit-def $itstate304 ; CHECK: renamable $r1 = t2ADDri killed renamable $r1, 1, 1 /* CC::ne */, $cpsr, $noreg, implicit killed $itstate305 ; CHECK: tBcc %bb.2, 0 /* CC::eq */, killed $cpsr306 ; CHECK: bb.1:307 ; CHECK: liveins: $r0308 ; CHECK: renamable $r0 = tLDRi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.x)309 ; CHECK: tTAILJMPdND @c, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit killed $r0310 ; CHECK: bb.2:311 ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg312 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0313 bb.0:314 successors: %bb.1(0x30000000), %bb.2(0x50000000)315 liveins: $r0, $r1316 317 tCMPi8 renamable $r0, 0, 14, $noreg, implicit-def $cpsr318 t2IT 0, 8, implicit-def $itstate319 renamable $r1 = t2ADDri killed renamable $r1, 1, 1, $cpsr, $noreg, implicit killed $itstate320 t2Bcc %bb.1, 0, killed $cpsr321 322 bb.2:323 liveins: $r0324 325 renamable $r0 = tLDRi killed renamable $r0, 0, 14, $noreg :: (load (s32) from %ir.x)326 tTAILJMPdND @c, 14, $noreg, implicit $sp, implicit $sp, implicit killed $r0327 328 bb.1:329 $r0, dead $cpsr = tMOVi8 0, 14, $noreg330 tBX_RET 14, $noreg, implicit killed $r0331 332...333 334