346 lines · plain
1# RUN: llc -ppc-asm-full-reg-names -mtriple=powerpc-ibm-aix-xcoff \2# RUN: -run-pass=ppc-ctrloops %s -o - -verify-machineinstrs | FileCheck %s 3 4---5name: test_success16# CHECK: test_success17 8tracksRegLiveness: true9body: |10 bb.0.entry:11 12 %0:gprc = LI 204813 ; CHECK: MTCTRloop14 ; CHECK: BDNZ15 ; CHECK-NOT: ADDI16 ; CHECK-NOT: CMPLWI17 ; CHECK-NOT: BC18 MTCTRloop killed %0:gprc, implicit-def dead $ctr19 20 bb.1:21 22 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr23 BC killed %1:crbitrc, %bb.124 B %bb.225 26 bb.2:27 28 BLR implicit $lr, implicit $rm29...30---31name: test_fail_clobber32# CHECK: test_fail_clobber33tracksRegLiveness: true34body: |35 bb.0.entry:36 37 %0:gprc = LI 204838 ; CHECK-NOT: MTCTRloop39 ; CHECK-NOT: BDNZ40 ; CHECK: ADDI41 ; CHECK: CMPLWI42 ; CHECK: BC43 MTCTRloop killed %0:gprc, implicit-def dead $ctr44 45 bb.1:46 47 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr48 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr49 BC killed %1:crbitrc, %bb.150 B %bb.251 52 bb.2:53 54 BLR implicit $lr, implicit $rm55...56---57name: test_fail_use_in_loop58# CHECK: test_fail_use_in_loop59tracksRegLiveness: true60body: |61 bb.0.entry:62 63 %0:gprc = LI 204864 ; CHECK-NOT: MTCTRloop65 ; CHECK-NOT: BDNZ66 ; CHECK: ADDI67 ; CHECK: CMPLWI68 ; CHECK: BC69 MTCTRloop killed %0:gprc, implicit-def dead $ctr70 71 bb.1:72 73 %1:gprc = MFCTR implicit $ctr74 %2:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr75 BC killed %2:crbitrc, %bb.176 B %bb.277 78 bb.2:79 80 BLR implicit $lr, implicit $rm81...82---83name: test_fail_call_in_preheader_after_mtctr84# CHECK: test_fail_call_in_preheader_after_mtctr85tracksRegLiveness: true86body: |87 bb.0.entry:88 89 %0:gprc = LI 204890 ; CHECK-NOT: MTCTR91 ; CHECK-NOT: BDNZ92 ; CHECK: ADDI93 ; CHECK: CMPLWI94 ; CHECK: BC95 MTCTRloop killed %0:gprc, implicit-def dead $ctr96 BL @test_fail_use_in_loop, csr_aix32, implicit-def dead $lr, implicit $rm97 98 bb.1:99 100 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr101 BC killed %1:crbitrc, %bb.1102 B %bb.2103 104 bb.2:105 106 BLR implicit $lr, implicit $rm107...108---109name: test_succ_call_in_preheader_before_mtctr110# CHECK: test_succ_call_in_preheader_before_mtctr111tracksRegLiveness: true112body: |113 bb.0.entry:114 115 %0:gprc = LI 2048116 BL @test_fail_use_in_loop, csr_aix32, implicit-def dead $lr, implicit $rm117 ; CHECK: MTCTR118 ; CHECK: BDNZ119 ; CHECK-NOT: ADDI120 ; CHECK-NOT: CMPLWI121 ; CHECK-NOT: BC122 MTCTRloop killed %0:gprc, implicit-def dead $ctr123 124 bb.1:125 126 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr127 BC killed %1:crbitrc, %bb.1128 B %bb.2129 130 bb.2:131 132 BLR implicit $lr, implicit $rm133...134---135name: test_fail_call_in_loop136# CHECK: test_fail_call_in_loop137tracksRegLiveness: true138body: |139 bb.0.entry:140 141 %0:gprc = LI 2048142 ; CHECK-NOT: MTCTR143 ; CHECK-NOT: BDNZ144 ; CHECK: ADDI145 ; CHECK: CMPLWI146 ; CHECK: BC147 MTCTRloop killed %0:gprc, implicit-def dead $ctr148 149 bb.1:150 151 BL @test_fail_use_in_loop, csr_aix32, implicit-def dead $lr, implicit $rm152 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr153 BC killed %1:crbitrc, %bb.1154 B %bb.2155 156 bb.2:157 158 BLR implicit $lr, implicit $rm159...160---161name: test_fail_indirect_call_in_loop162# CHECK: test_fail_indirect_call_in_loop163tracksRegLiveness: true164body: |165 bb.0.entry:166 liveins: $r3, $r4167 168 %0:gprc = LI 2048169 ; CHECK-NOT: MTCTR170 ; CHECK-NOT: BDNZ171 ; CHECK: ADDI172 ; CHECK: CMPLWI173 ; CHECK: BC174 renamable %1:crrc = CMPLW killed renamable $r3, killed renamable $r4175 renamable %2:crbitrc = COPY %1.sub_gt176 MTLR %0:gprc, implicit-def $lr177 MTCTRloop %0:gprc, implicit-def dead $ctr178 179 bb.1:180 181 BCLRL renamable %2, implicit $lr, implicit $rm182 %3:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr183 BC killed %3:crbitrc, %bb.1184 B %bb.2185 186 bb.2:187 188 BLR implicit $lr, implicit $rm189...190---191name: test_fail_livein_preheader192# CHECK: test_fail_livein_preheader193tracksRegLiveness: true194body: |195 bb.0.entry:196 liveins: $ctr197 198 %0:gprc = LI 2048199 ; CHECK-NOT: MTCTRloop200 ; CHECK-NOT: BDNZ201 ; CHECK: ADDI202 ; CHECK: CMPLWI203 ; CHECK: BC204 MTCTRloop killed %0:gprc, implicit-def dead $ctr205 206 bb.1:207 208 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr209 BC killed %1:crbitrc, %bb.1210 B %bb.2211 212 bb.2:213 214 BLR implicit $lr, implicit $rm215...216---217name: test_fail_def_preheader218# CHECK: test_fail_def_preheader219tracksRegLiveness: true220body: |221 bb.0.entry:222 223 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr224 %0:gprc = LI 2048225 ; CHECK-NOT: MTCTRloop226 ; CHECK-NOT: BDNZ227 ; CHECK: ADDI228 ; CHECK: CMPLWI229 ; CHECK: BC230 MTCTRloop killed %0:gprc, implicit-def dead $ctr231 232 bb.1:233 234 %1:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr235 BC killed %1:crbitrc, %bb.1236 B %bb.2237 238 bb.2:239 240 BLR implicit $lr, implicit $rm241...242---243name: test_success_only_use_preheader244# CHECK: test_success_only_use_preheader245tracksRegLiveness: true246body: |247 bb.0.entry:248 249 %0:gprc = MFCTR implicit $ctr250 %1:gprc = LI 2048251 ; CHECK: MTCTRloop252 ; CHECK: BDNZ253 ; CHECK-NOT: ADDI254 ; CHECK-NOT: CMPLWI255 ; CHECK-NOT: BC256 MTCTRloop killed %1:gprc, implicit-def dead $ctr257 258 bb.1:259 260 %2:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr261 BC killed %2:crbitrc, %bb.1262 B %bb.2263 264 bb.2:265 266 BLR implicit $lr, implicit $rm267...268---269name: test_fail_use_after_mtctr270# CHECK: test_fail_use_after_mtctr271tracksRegLiveness: true272body: |273 bb.0.entry:274 275 %0:gprc = LI 2048276 ; CHECK-NOT: MTCTRloop277 ; CHECK-NOT: BDNZ278 ; CHECK: ADDI279 ; CHECK: CMPLWI280 ; CHECK: BC281 MTCTRloop killed %0:gprc, implicit-def dead $ctr282 %1:gprc = MFCTR implicit $ctr283 284 bb.1:285 286 %2:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr287 BC killed %2:crbitrc, %bb.1288 B %bb.2289 290 bb.2:291 292 BLR implicit $lr, implicit $rm293...294---295name: test_fail_def_after_mtctr296# CHECK: test_fail_def_after_mtctr297tracksRegLiveness: true298body: |299 bb.0.entry:300 301 %0:gprc = LI 2048302 ; CHECK-NOT: MTCTRloop303 ; CHECK-NOT: BDNZ304 ; CHECK: ADDI305 ; CHECK: CMPLWI306 ; CHECK: BC307 MTCTRloop killed %0:gprc, implicit-def dead $ctr308 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr309 310 bb.1:311 312 %2:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr313 BC killed %2:crbitrc, %bb.1314 B %bb.2315 316 bb.2:317 318 BLR implicit $lr, implicit $rm319...320---321name: test_success_def_after_loop322# CHECK: test_success_def_after_loop323tracksRegLiveness: true324body: |325 bb.0.entry:326 327 %0:gprc = LI 2048328 ; CHECK: MTCTRloop329 ; CHECK: BDNZ330 ; CHECK-NOT: ADDI331 ; CHECK-NOT: CMPLWI332 ; CHECK-NOT: BC333 MTCTRloop killed %0:gprc, implicit-def dead $ctr334 335 bb.1:336 337 %2:crbitrc = DecreaseCTRloop 1, implicit-def dead $ctr, implicit $ctr338 BC killed %2:crbitrc, %bb.1339 B %bb.2340 341 bb.2:342 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr343 344 BLR implicit $lr, implicit $rm345...346