brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.5 KiB · 614ee67 Raw
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