681 lines · plain
1# RUN: llc -mtriple=amdgcn -amdgpu-enable-merge-m0 -verify-machineinstrs -run-pass si-fix-sgpr-copies %s -o - | FileCheck -check-prefix=GCN %s2 3# GCN-LABEL: name: merge-m0-many-init4# GCN: bb.0.entry:5# GCN: SI_INIT_M0 -16# GCN-NEXT: IMPLICIT_DEF7# GCN-NEXT: IMPLICIT_DEF8# GCN-NEXT: DS_WRITE_B329# GCN-NEXT: DS_WRITE_B3210# GCN-NEXT: SI_INIT_M0 6553611# GCN-NEXT: DS_WRITE_B3212# GCN-NEXT: DS_WRITE_B3213# GCN-NEXT: SI_INIT_M0 -114# GCN-NEXT: DS_WRITE_B3215# GCN-NEXT: SI_INIT_M0 6553616# GCN-NEXT: DS_WRITE_B3217 18# GCN: bb.1:19# GCN: SI_INIT_M0 -120# GCN-NEXT: DS_WRITE_B3221# GCN-NEXT: DS_WRITE_B3222 23# GCN: bb.2:24# GCN: SI_INIT_M0 6553625# GCN-NEXT: DS_WRITE_B3226 27# GCN: bb.3:28# GCN: SI_INIT_M0 329 30# GCN: bb.4:31# GCN-NOT: SI_INIT_M032# GCN: DS_WRITE_B3233# GCN-NEXT: SI_INIT_M0 434# GCN-NEXT: DS_WRITE_B3235 36# GCN: bb.5:37# GCN-NOT: SI_INIT_M038# GCN: DS_WRITE_B3239# GCN-NEXT: SI_INIT_M0 440# GCN-NEXT: DS_WRITE_B3241 42# GCN: bb.6:43# GCN: SI_INIT_M0 -1,44# GCN-NEXT: DS_WRITE_B3245# GCN: SI_INIT_M0 %246# GCN-NEXT: DS_WRITE_B3247# GCN-NEXT: SI_INIT_M0 %248# GCN-NEXT: DS_WRITE_B3249# GCN-NEXT: SI_INIT_M0 -150# GCN-NEXT: DS_WRITE_B3251---52name: merge-m0-many-init53registers:54 - { id: 0, class: vgpr_32 }55 - { id: 1, class: vgpr_32 }56 - { id: 2, class: sreg_32_xm0 }57body: |58 bb.0.entry:59 successors: %bb.1, %bb.260 61 %0 = IMPLICIT_DEF62 %1 = IMPLICIT_DEF63 SI_INIT_M0 -1, implicit-def $m064 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec65 SI_INIT_M0 -1, implicit-def $m066 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec67 SI_INIT_M0 65536, implicit-def $m068 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec69 SI_INIT_M0 65536, implicit-def $m070 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec71 SI_INIT_M0 -1, implicit-def $m072 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec73 SI_INIT_M0 65536, implicit-def $m074 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec75 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc76 S_BRANCH %bb.277 78 bb.1:79 successors: %bb.280 SI_INIT_M0 -1, implicit-def $m081 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec82 SI_INIT_M0 -1, implicit-def $m083 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec84 S_BRANCH %bb.285 86 bb.2:87 successors: %bb.388 SI_INIT_M0 65536, implicit-def $m089 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec90 S_BRANCH %bb.391 92 bb.3:93 successors: %bb.4, %bb.594 S_CBRANCH_VCCZ %bb.4, implicit undef $vcc95 S_BRANCH %bb.596 97 bb.4:98 successors: %bb.699 SI_INIT_M0 3, implicit-def $m0100 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec101 SI_INIT_M0 4, implicit-def $m0102 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec103 S_BRANCH %bb.6104 105 bb.5:106 successors: %bb.6107 SI_INIT_M0 3, implicit-def $m0108 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec109 SI_INIT_M0 4, implicit-def $m0110 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec111 S_BRANCH %bb.6112 113 bb.6:114 successors: %bb.0.entry, %bb.6115 SI_INIT_M0 -1, implicit-def $m0116 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec117 %2 = IMPLICIT_DEF118 SI_INIT_M0 %2, implicit-def $m0119 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec120 SI_INIT_M0 %2, implicit-def $m0121 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec122 SI_INIT_M0 -1, implicit-def $m0123 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec124 S_CBRANCH_VCCZ %bb.6, implicit undef $vcc125 S_BRANCH %bb.0.entry126 127...128 129# GCN-LABEL: name: merge-m0-dont-hoist-past-init-with-different-initializer130# GCN: bb.0.entry:131# GCN: SI_INIT_M0 65536132# GCN-NEXT: IMPLICIT_DEF133# GCN-NEXT: IMPLICIT_DEF134# GCN-NEXT: DS_WRITE_B32135 136# GCN: bb.1:137# GCN-NOT: SI_INIT_M0 65536138# GCN-NOT: SI_INIT_M0 -1139 140# GCN: bb.2:141# GCN: SI_INIT_M0 -1142 143# GCN: bb.3:144# GCN: SI_INIT_M0 -1145---146name: merge-m0-dont-hoist-past-init-with-different-initializer147registers:148 - { id: 0, class: vgpr_32 }149 - { id: 1, class: vgpr_32 }150body: |151 bb.0.entry:152 successors: %bb.1153 154 %0 = IMPLICIT_DEF155 %1 = IMPLICIT_DEF156 SI_INIT_M0 65536, implicit-def $m0157 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec158 S_BRANCH %bb.1159 160 bb.1:161 successors: %bb.2, %bb.3162 163 SI_INIT_M0 65536, implicit-def $m0164 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec165 S_CBRANCH_VCCZ %bb.2, implicit undef $vcc166 S_BRANCH %bb.3167 168 bb.2:169 successors: %bb.4170 171 SI_INIT_M0 -1, implicit-def $m0172 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec173 S_BRANCH %bb.4174 175 bb.3:176 successors: %bb.4177 178 SI_INIT_M0 -1, implicit-def $m0179 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec180 S_BRANCH %bb.4181 182 bb.4:183 S_ENDPGM 0184...185 186# GCN-LABEL: name: merge-m0-after-prologue187# GCN: bb.0.entry:188# GCN-NOT: SI_INIT_M0189# GCN: S_OR_B64190# GCN-NEXT: SI_INIT_M0191 192# GCN: bb.1:193# GCN-NOT: SI_INIT_M0 -1194 195# GCN: bb.2:196# GCN-NOT: SI_INIT_MO -1197---198name: merge-m0-after-prologue199registers:200 - { id: 0, class: vgpr_32 }201 - { id: 1, class: vgpr_32 }202body: |203 bb.0.entry:204 successors: %bb.1, %bb.2205 liveins: $sgpr0_sgpr1206 207 $exec = S_OR_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc208 %0 = IMPLICIT_DEF209 %1 = IMPLICIT_DEF210 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc211 S_BRANCH %bb.2212 213 bb.1:214 successors: %bb.3215 216 SI_INIT_M0 -1, implicit-def $m0217 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec218 S_BRANCH %bb.3219 220 bb.2:221 successors: %bb.3222 223 SI_INIT_M0 -1, implicit-def $m0224 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec225 S_BRANCH %bb.3226 227 bb.3:228 S_ENDPGM 0229...230 231# GCN-LABEL: name: move-m0-avoid-hazard232# GCN: $m0 = S_MOV_B32 -1233# GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec234# GCN-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec235---236name: move-m0-avoid-hazard237body: |238 bb.0:239 $vgpr0 = V_MOV_B32_e32 0, implicit $exec240 $m0 = S_MOV_B32 -1241 DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec242...243 244# GCN-LABEL: name: move-m0-with-prologue245# GCN: $exec = S_OR_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc246# GCN: $m0 = S_MOV_B32 -1247# GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec248# GCN-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec249---250name: move-m0-with-prologue251body: |252 bb.0:253 liveins: $sgpr0_sgpr1254 255 $exec = S_OR_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc256 $vgpr0 = V_MOV_B32_e32 0, implicit $exec257 $m0 = S_MOV_B32 -1258 DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec259...260 261# GCN-LABEL: name: move-m0-different-initializer262# GCN: SI_INIT_M0 -1263# GCN-NEXT: %0:vgpr_32 = IMPLICIT_DEF264# GCN: SI_INIT_M0 65536265# GCN-NEXT: S_NOP266---267name: move-m0-different-initializer268registers:269 - { id: 0, class: vgpr_32 }270 - { id: 1, class: vgpr_32 }271body: |272 bb.0:273 %0 = IMPLICIT_DEF274 %1 = IMPLICIT_DEF275 SI_INIT_M0 -1, implicit-def $m0276 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec277 S_NOP 0278 SI_INIT_M0 65536, implicit-def $m0279 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec280...281 282# GCN-LABEL: name: move-m0-schedule-boundary283# GCN: S_SETREG284# GCN-NEXT: SI_INIT_M0 -1285---286name: move-m0-schedule-boundary287registers:288 - { id: 0, class: vgpr_32 }289 - { id: 1, class: vgpr_32 }290body: |291 bb.0:292 %0 = IMPLICIT_DEF293 %1 = IMPLICIT_DEF294 S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode295 SI_INIT_M0 -1, implicit-def $m0296 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec297...298 299 300# GCN-LABEL: name: m0-in-loop-0301# GCN: bb.0.entry:302# GCN: SI_INIT_M0 -1303# GCN-NEXT: IMPLICIT_DEF304# GCN-NEXT: IMPLICIT_DEF305# GCN-NEXT: IMPLICIT_DEF306# GCN-NEXT: DS_WRITE_B32307 308# GCN: bb.1:309# GCN: SI_INIT_M0 -1310# GCN-NEXT: DS_WRITE_B32311# GCN-NEXT: $m0 = COPY %2312 313---314name: m0-in-loop-0315registers:316 - { id: 0, class: vgpr_32 }317 - { id: 1, class: vgpr_32 }318 - { id: 2, class: sgpr_32 }319body: |320 bb.0.entry:321 successors: %bb.1322 323 %0 = IMPLICIT_DEF324 %1 = IMPLICIT_DEF325 %2 = IMPLICIT_DEF326 SI_INIT_M0 -1, implicit-def $m0327 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec328 S_BRANCH %bb.1329 330 bb.1:331 successors: %bb.1, %bb.2332 333 SI_INIT_M0 -1, implicit-def $m0334 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec335 $m0 = COPY %2:sgpr_32336 S_SENDMSG 34, implicit $exec, implicit $m0337 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc338 S_BRANCH %bb.2339 340 bb.2:341 S_ENDPGM 0342...343 344# GCN-LABEL: name: m0-in-loop-1345# GCN: bb.0.entry:346# GCN: SI_INIT_M0 -1347# GCN-NEXT: IMPLICIT_DEF348# GCN-NEXT: IMPLICIT_DEF349# GCN-NEXT: IMPLICIT_DEF350# GCN-NEXT: DS_WRITE_B32351 352# GCN: bb.1:353# GCN-NOT: SI_INIT_M0 -1354# GCN: DS_WRITE_B32355 356---357name: m0-in-loop-1358registers:359 - { id: 0, class: vgpr_32 }360 - { id: 1, class: vgpr_32 }361 - { id: 2, class: sgpr_32 }362body: |363 bb.0.entry:364 successors: %bb.1365 366 %0 = IMPLICIT_DEF367 %1 = IMPLICIT_DEF368 %2 = IMPLICIT_DEF369 SI_INIT_M0 -1, implicit-def $m0370 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec371 S_BRANCH %bb.1372 373 bb.1:374 successors: %bb.1, %bb.2375 376 SI_INIT_M0 -1, implicit-def $m0377 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec378 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc379 S_BRANCH %bb.2380 381 bb.2:382 S_ENDPGM 0383...384 385# GCN-LABEL: name: m0-in-loop-2386# GCN: bb.0.entry:387# GCN: SI_INIT_M0 -1388# GCN-NEXT: IMPLICIT_DEF389# GCN-NEXT: IMPLICIT_DEF390# GCN-NEXT: IMPLICIT_DEF391# GCN-NEXT: DS_WRITE_B32392 393# GCN: bb.1:394# GCN: $m0 = COPY %2395# GCN-NEXT: SENDMSG396# GCN-NEXT: SI_INIT_M0 -1397# GCN-NEXT: DS_WRITE_B32398 399---400name: m0-in-loop-2401registers:402 - { id: 0, class: vgpr_32 }403 - { id: 1, class: vgpr_32 }404 - { id: 2, class: sgpr_32 }405body: |406 bb.0.entry:407 successors: %bb.1408 409 %0 = IMPLICIT_DEF410 %1 = IMPLICIT_DEF411 %2 = IMPLICIT_DEF412 SI_INIT_M0 -1, implicit-def $m0413 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec414 S_BRANCH %bb.1415 416 bb.1:417 successors: %bb.1, %bb.2418 419 $m0 = COPY %2:sgpr_32420 S_SENDMSG 34, implicit $exec, implicit $m0421 SI_INIT_M0 -1, implicit-def $m0422 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec423 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc424 S_BRANCH %bb.2425 426 bb.2:427 S_ENDPGM 0428...429 430# GCN-LABEL: name: m0-in-loop-3431# GCN: bb.0.entry:432# GCN: SI_INIT_M0 -1433# GCN-NEXT: IMPLICIT_DEF434# GCN-NEXT: IMPLICIT_DEF435# GCN-NEXT: IMPLICIT_DEF436# GCN-NEXT: DS_WRITE_B32437 438# GCN: bb.1:439# GCN: $m0 = COPY %2440# GCN-NEXT: SENDMSG441# GCN-NEXT: SI_INIT_M0 -1442# GCN-NEXT: DS_WRITE_B32443# GCN-NEXT: DS_WRITE_B32444 445---446name: m0-in-loop-3447registers:448 - { id: 0, class: vgpr_32 }449 - { id: 1, class: vgpr_32 }450 - { id: 2, class: sgpr_32 }451body: |452 bb.0.entry:453 successors: %bb.1454 455 %0 = IMPLICIT_DEF456 %1 = IMPLICIT_DEF457 %2 = IMPLICIT_DEF458 SI_INIT_M0 -1, implicit-def $m0459 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec460 S_BRANCH %bb.1461 462 bb.1:463 successors: %bb.1, %bb.2464 465 $m0 = COPY %2:sgpr_32466 S_SENDMSG 34, implicit $exec, implicit $m0467 SI_INIT_M0 -1, implicit-def $m0468 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec469 SI_INIT_M0 -1, implicit-def $m0470 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec471 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc472 S_BRANCH %bb.2473 474 bb.2:475 S_ENDPGM 0476...477 478# GCN-LABEL: name: m0-in-loop-4479# GCN: bb.0.entry:480# GCN: SI_INIT_M0 -1481# GCN-NEXT: IMPLICIT_DEF482# GCN-NEXT: IMPLICIT_DEF483# GCN-NEXT: IMPLICIT_DEF484# GCN-NEXT: DS_WRITE_B32485 486# GCN: bb.1:487# GCN: SI_INIT_M0 -1488# GCN-NEXT: DS_WRITE_B32489# GCN-NEXT: DS_WRITE_B32490# GCN-NEXT: $m0 = COPY %2491# GCN-NEXT: SENDMSG492 493---494name: m0-in-loop-4495registers:496 - { id: 0, class: vgpr_32 }497 - { id: 1, class: vgpr_32 }498 - { id: 2, class: sgpr_32 }499body: |500 bb.0.entry:501 successors: %bb.1502 503 %0 = IMPLICIT_DEF504 %1 = IMPLICIT_DEF505 %2 = IMPLICIT_DEF506 SI_INIT_M0 -1, implicit-def $m0507 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec508 S_BRANCH %bb.1509 510 bb.1:511 successors: %bb.1, %bb.2512 513 SI_INIT_M0 -1, implicit-def $m0514 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec515 SI_INIT_M0 -1, implicit-def $m0516 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec517 $m0 = COPY %2:sgpr_32518 S_SENDMSG 34, implicit $exec, implicit $m0519 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc520 S_BRANCH %bb.2521 522 bb.2:523 S_ENDPGM 0524...525 526# GCN-LABEL: name: m0-in-loop-5527# GCN: bb.0.entry:528# GCN: SI_INIT_M0 -1529# GCN-NEXT: IMPLICIT_DEF530# GCN-NEXT: IMPLICIT_DEF531# GCN-NEXT: IMPLICIT_DEF532# GCN-NEXT: DS_WRITE_B32533 534# GCN: bb.1:535# GCN: SI_INIT_M0 65536536# GCN-NEXT: DS_WRITE_B32537# GCN-NEXT: SI_INIT_M0 -1538# GCN-NEXT: DS_WRITE_B32539# GCN-NEXT: $m0 = COPY %2540# GCN-NEXT: SENDMSG541 542---543name: m0-in-loop-5544registers:545 - { id: 0, class: vgpr_32 }546 - { id: 1, class: vgpr_32 }547 - { id: 2, class: sgpr_32 }548body: |549 bb.0.entry:550 successors: %bb.1551 552 %0 = IMPLICIT_DEF553 %1 = IMPLICIT_DEF554 %2 = IMPLICIT_DEF555 SI_INIT_M0 -1, implicit-def $m0556 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec557 S_BRANCH %bb.1558 559 bb.1:560 successors: %bb.1, %bb.2561 562 SI_INIT_M0 65536, implicit-def $m0563 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec564 SI_INIT_M0 -1, implicit-def $m0565 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec566 $m0 = COPY %2:sgpr_32567 S_SENDMSG 34, implicit $exec, implicit $m0568 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc569 S_BRANCH %bb.2570 571 bb.2:572 S_ENDPGM 0573...574 575# GCN-LABEL: name: m0-in-loop-6576# GCN: bb.0.entry:577# GCN: SI_INIT_M0 -1578# GCN-NEXT: IMPLICIT_DEF579# GCN-NEXT: IMPLICIT_DEF580# GCN-NEXT: IMPLICIT_DEF581# GCN-NEXT: DS_WRITE_B32582 583# GCN: bb.1:584# GCN: SI_INIT_M0 -1585# GCN-NEXT: DS_WRITE_B32586# GCN-NEXT: DS_WRITE_B32587# GCN-NEXT: $m0 = COPY %2588# GCN-NEXT: SENDMSG589 590---591name: m0-in-loop-6592registers:593 - { id: 0, class: vgpr_32 }594 - { id: 1, class: vgpr_32 }595 - { id: 2, class: sgpr_32 }596body: |597 bb.0.entry:598 successors: %bb.1599 600 %0 = IMPLICIT_DEF601 %1 = IMPLICIT_DEF602 %2 = IMPLICIT_DEF603 SI_INIT_M0 -1, implicit-def $m0604 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec605 S_BRANCH %bb.1606 607 bb.1:608 successors: %bb.2609 610 SI_INIT_M0 -1, implicit-def $m0611 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec612 SI_INIT_M0 -1, implicit-def $m0613 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec614 $m0 = COPY %2:sgpr_32615 S_SENDMSG 34, implicit $exec, implicit $m0616 S_BRANCH %bb.2617 618 bb.2:619 successors: %bb.3, %bb.1620 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc621 S_BRANCH %bb.3622 623 624 bb.3:625 S_ENDPGM 0626...627 628# GCN-LABEL: name: m0-in-loop-7629# GCN: bb.0.entry:630# GCN: SI_INIT_M0 -1631# GCN-NEXT: IMPLICIT_DEF632# GCN-NEXT: IMPLICIT_DEF633# GCN-NEXT: IMPLICIT_DEF634# GCN-NEXT: DS_WRITE_B32635 636# GCN: bb.1:637# GCN: SI_INIT_M0 -1638# GCN-NEXT: DS_WRITE_B32639# GCN-NEXT: DS_WRITE_B32640 641# GCN: bb.2:642# GCN: $m0 = COPY %2643# GCN-NEXT: SENDMSG644 645---646name: m0-in-loop-7647registers:648 - { id: 0, class: vgpr_32 }649 - { id: 1, class: vgpr_32 }650 - { id: 2, class: sgpr_32 }651body: |652 bb.0.entry:653 successors: %bb.1654 655 %0 = IMPLICIT_DEF656 %1 = IMPLICIT_DEF657 %2 = IMPLICIT_DEF658 SI_INIT_M0 -1, implicit-def $m0659 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec660 S_BRANCH %bb.1661 662 bb.1:663 successors: %bb.2664 665 SI_INIT_M0 -1, implicit-def $m0666 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec667 SI_INIT_M0 -1, implicit-def $m0668 DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec669 S_BRANCH %bb.2670 671 bb.2:672 successors: %bb.3, %bb.1673 $m0 = COPY %2:sgpr_32674 S_SENDMSG 34, implicit $exec, implicit $m0675 S_CBRANCH_VCCZ %bb.1, implicit undef $vcc676 S_BRANCH %bb.3677 678 bb.3:679 S_ENDPGM 0680...681