375 lines · plain
1# RUN: llc -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu \2# RUN: -run-pass=ppc-ctrloops %s -o - -verify-machineinstrs | FileCheck %s3# RUN: llc -ppc-asm-full-reg-names -mtriple=powerpc64-ibm-aix-xcoff \4# RUN: -run-pass=ppc-ctrloops %s -o - -verify-machineinstrs | FileCheck %s5 6---7name: test_success18# CHECK: test_success19 10tracksRegLiveness: true11body: |12 bb.0.entry:13 14 %0:g8rc = LI8 204815 ; CHECK: MTCTR8loop16 ; CHECK: BDNZ817 ; CHECK-NOT: ADDI818 ; CHECK-NOT: CMPLDI19 ; CHECK-NOT: BC20 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr821 22 bb.1:23 24 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr825 BC killed %1:crbitrc, %bb.126 B %bb.227 28 bb.2:29 30 BLR8 implicit $lr8, implicit $rm31...32---33name: test_fail_clobber34# CHECK: test_fail_clobber35tracksRegLiveness: true36body: |37 bb.0.entry:38 39 %0:g8rc = LI8 204840 ; CHECK-NOT: MTCTR8loop41 ; CHECK-NOT: BDNZ842 ; CHECK: ADDI843 ; CHECK: CMPLDI44 ; CHECK: BC45 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr846 47 bb.1:48 49 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr850 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr851 BC killed %1:crbitrc, %bb.152 B %bb.253 54 bb.2:55 56 BLR8 implicit $lr8, implicit $rm57...58---59name: test_fail_use_in_loop60# CHECK: test_fail_use_in_loop61tracksRegLiveness: true62body: |63 bb.0.entry:64 65 %0:g8rc = LI8 204866 ; CHECK-NOT: MTCTR8loop67 ; CHECK-NOT: BDNZ868 ; CHECK: ADDI869 ; CHECK: CMPLDI70 ; CHECK: BC71 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr872 73 bb.1:74 75 %1:g8rc = MFCTR8 implicit $ctr876 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr877 BC killed %2:crbitrc, %bb.178 B %bb.279 80 bb.2:81 82 BLR8 implicit $lr8, implicit $rm83...84---85name: test_fail_call_in_preheader_after_mtctr86# CHECK: test_fail_call_in_preheader_after_mtctr87tracksRegLiveness: true88body: |89 bb.0.entry:90 91 %0:g8rc = LI8 204892 ; CHECK-NOT: MTCTR893 ; CHECK-NOT: BDNZ894 ; CHECK: ADDI895 ; CHECK: CMPLDI96 ; CHECK: BC97 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr898 BL8 @test_fail_use_in_loop, csr_ppc64, implicit-def dead $lr8, implicit $rm99 100 bb.1:101 102 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8103 BC killed %1:crbitrc, %bb.1104 B %bb.2105 106 bb.2:107 108 BLR8 implicit $lr8, implicit $rm109...110---111name: test_succ_call_in_preheader_before_mtctr112# CHECK: test_succ_call_in_preheader_before_mtctr113tracksRegLiveness: true114body: |115 bb.0.entry:116 117 %0:g8rc = LI8 2048118 BL8 @test_fail_use_in_loop, csr_ppc64, implicit-def dead $lr8, implicit $rm119 ; CHECK: MTCTR8120 ; CHECK: BDNZ8121 ; CHECK-NOT: ADDI8122 ; CHECK-NOT: CMPLDI123 ; CHECK-NOT: BC124 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8125 126 bb.1:127 128 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8129 BC killed %1:crbitrc, %bb.1130 B %bb.2131 132 bb.2:133 134 BLR8 implicit $lr8, implicit $rm135...136---137name: test_fail_call_in_loop138# CHECK: test_fail_call_in_loop139tracksRegLiveness: true140body: |141 bb.0.entry:142 143 %0:g8rc = LI8 2048144 ; CHECK-NOT: MTCTR8145 ; CHECK-NOT: BDNZ8146 ; CHECK: ADDI8147 ; CHECK: CMPLDI148 ; CHECK: BC149 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8150 151 bb.1:152 153 BL8 @test_fail_use_in_loop, csr_ppc64, implicit-def dead $lr8, implicit $rm154 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8155 BC killed %1:crbitrc, %bb.1156 B %bb.2157 158 bb.2:159 160 BLR8 implicit $lr8, implicit $rm161...162---163name: test_fail_indirect_call_in_loop164# CHECK: test_fail_indirect_call_in_loop165tracksRegLiveness: true166body: |167 bb.0.entry:168 liveins: $x3, $x4169 170 %0:g8rc = LI8 2048171 ; CHECK-NOT: MTCTR8172 ; CHECK-NOT: BDNZ8173 ; CHECK: ADDI8174 ; CHECK: CMPLDI175 ; CHECK: BC176 renamable %1:crrc = CMPLD killed renamable $x3, killed renamable $x4177 renamable %2:crbitrc = COPY %1.sub_gt178 MTLR8 %0:g8rc, implicit-def $lr8179 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8180 181 bb.1:182 183 BCLRL renamable %2, implicit $lr, implicit $rm184 %3:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8185 BC killed %3:crbitrc, %bb.1186 B %bb.2187 188 bb.2:189 190 BLR8 implicit $lr8, implicit $rm191...192---193name: test_fail_livein_preheader194# CHECK: test_fail_livein_preheader195tracksRegLiveness: true196body: |197 bb.0.entry:198 liveins: $ctr8199 200 %0:g8rc = LI8 2048201 ; CHECK-NOT: MTCTR8loop202 ; CHECK-NOT: BDNZ8203 ; CHECK: ADDI8204 ; CHECK: CMPLDI205 ; CHECK: BC206 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8207 208 bb.1:209 210 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8211 BC killed %1:crbitrc, %bb.1212 B %bb.2213 214 bb.2:215 216 BLR8 implicit $lr8, implicit $rm217...218---219name: test_fail_def_preheader220# CHECK: test_fail_def_preheader221tracksRegLiveness: true222body: |223 bb.0.entry:224 225 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr8226 %0:g8rc = LI8 2048227 ; CHECK-NOT: MTCTR8loop228 ; CHECK-NOT: BDNZ8229 ; CHECK: ADDI8230 ; CHECK: CMPLDI231 ; CHECK: BC232 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8233 234 bb.1:235 236 %1:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8237 BC killed %1:crbitrc, %bb.1238 B %bb.2239 240 bb.2:241 242 BLR8 implicit $lr8, implicit $rm243...244---245name: test_success_only_use_preheader246# CHECK: test_success_only_use_preheader247tracksRegLiveness: true248body: |249 bb.0.entry:250 251 %0:g8rc = MFCTR8 implicit $ctr8252 %1:g8rc = LI8 2048253 ; CHECK: MTCTR8loop254 ; CHECK: BDNZ8255 ; CHECK-NOT: ADDI8256 ; CHECK-NOT: CMPLDI257 ; CHECK-NOT: BC258 MTCTR8loop killed %1:g8rc, implicit-def dead $ctr8259 260 bb.1:261 262 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8263 BC killed %2:crbitrc, %bb.1264 B %bb.2265 266 bb.2:267 268 BLR8 implicit $lr8, implicit $rm269...270---271name: test_fail_use_after_mtctr272# CHECK: test_fail_use_after_mtctr273tracksRegLiveness: true274body: |275 bb.0.entry:276 277 %0:g8rc = LI8 2048278 ; CHECK-NOT: MTCTR8loop279 ; CHECK-NOT: BDNZ8280 ; CHECK: ADDI8281 ; CHECK: CMPLDI282 ; CHECK: BC283 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8284 %1:g8rc = MFCTR8 implicit $ctr8285 286 bb.1:287 288 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8289 BC killed %2:crbitrc, %bb.1290 B %bb.2291 292 bb.2:293 294 BLR8 implicit $lr8, implicit $rm295...296---297name: test_fail_def_after_mtctr298# CHECK: test_fail_def_after_mtctr299tracksRegLiveness: true300body: |301 bb.0.entry:302 303 %0:g8rc = LI8 2048304 ; CHECK-NOT: MTCTR8loop305 ; CHECK-NOT: BDNZ8306 ; CHECK: ADDI8307 ; CHECK: CMPLDI308 ; CHECK: BC309 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8310 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr8311 312 bb.1:313 314 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8315 BC killed %2:crbitrc, %bb.1316 B %bb.2317 318 bb.2:319 320 BLR8 implicit $lr8, implicit $rm321...322---323name: test_success_def_after_loop324# CHECK: test_success_def_after_loop325tracksRegLiveness: true326body: |327 bb.0.entry:328 329 %0:g8rc = LI8 2048330 ; CHECK: MTCTR8loop331 ; CHECK: BDNZ8332 ; CHECK-NOT: ADDI8333 ; CHECK-NOT: CMPLDI334 ; CHECK-NOT: BC335 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8336 337 bb.1:338 339 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8340 BC killed %2:crbitrc, %bb.1341 B %bb.2342 343 bb.2:344 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def early-clobber $ctr8345 346 BLR8 implicit $lr8, implicit $rm347...348---349name: test_fail_dead_def_in_preheader350# CHECK: test_fail_dead_def_in_preheader351tracksRegLiveness: true352body: |353 bb.0.entry:354 355 %0:g8rc = LI8 2048356 %1:g8rc = LI8 1024357 MTCTR8loop killed %0:g8rc, implicit-def dead $ctr8358 MTCTR8 killed %1:g8rc, implicit-def dead $ctr8359 ; CHECK-NOT: MTCTR8loop360 ; CHECK-NOT: BDNZ8361 ; CHECK: ADDI8362 ; CHECK: CMPLDI363 ; CHECK: BC364 365 bb.1:366 367 %2:crbitrc = DecreaseCTR8loop 1, implicit-def dead $ctr8, implicit $ctr8368 BC killed %2:crbitrc, %bb.1369 B %bb.2370 371 bb.2:372 373 BLR8 implicit $lr8, implicit $rm374...375