brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.0 KiB · c1c5afc Raw
452 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-fix-sgpr-copies -verify-machineinstrs -o - %s | FileCheck --check-prefix=GCN %s3 4---5name:            global_load_saddr_to_valu6tracksRegLiveness: true7body:             |8  ; GCN-LABEL: name: global_load_saddr_to_valu9  ; GCN: bb.0:10  ; GCN-NEXT:   successors: %bb.1(0x80000000)11  ; GCN-NEXT:   liveins: $vgpr0_vgpr112  ; GCN-NEXT: {{  $}}13  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr114  ; GCN-NEXT: {{  $}}15  ; GCN-NEXT: bb.1:16  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)17  ; GCN-NEXT: {{  $}}18  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %7, %bb.119  ; GCN-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[PHI]], 0, 0, implicit $exec20  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub021  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub122  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec23  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec24  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub125  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE]], 0, implicit $exec26  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]], implicit $exec27  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc28  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc29  ; GCN-NEXT: {{  $}}30  ; GCN-NEXT: bb.2:31  ; GCN-NEXT:   S_ENDPGM 032  bb.0:33    liveins: $vgpr0_vgpr134      %0:sreg_64 = COPY $vgpr0_vgpr135 36  bb.1:37      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.138      %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec39      %4:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, %3, 0, 0, implicit $exec40      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc41      S_CMP_LG_U64 %2, 0, implicit-def $scc42      S_CBRANCH_SCC1 %bb.1, implicit $scc43 44  bb.2:45      S_ENDPGM 046...47 48---49name:            global_load_saddr_to_valu_non_zero_vaddr50tracksRegLiveness: true51body:             |52  ; GCN-LABEL: name: global_load_saddr_to_valu_non_zero_vaddr53  ; GCN: bb.0:54  ; GCN-NEXT:   successors: %bb.1(0x80000000)55  ; GCN-NEXT:   liveins: $vgpr0_vgpr156  ; GCN-NEXT: {{  $}}57  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr158  ; GCN-NEXT: {{  $}}59  ; GCN-NEXT: bb.1:60  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)61  ; GCN-NEXT: {{  $}}62  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %7, %bb.163  ; GCN-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec64  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub0, implicit $exec65  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub1, implicit $exec66  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec_xnull = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub167  ; GCN-NEXT:   [[GLOBAL_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR [[REG_SEQUENCE]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec68  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub069  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub170  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec71  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec72  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub173  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE1]], 0, implicit $exec74  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]], implicit $exec75  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc76  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc77  ; GCN-NEXT: {{  $}}78  ; GCN-NEXT: bb.2:79  ; GCN-NEXT:   S_ENDPGM 080  bb.0:81    liveins: $vgpr0_vgpr182      %0:sreg_64 = COPY $vgpr0_vgpr183 84  bb.1:85      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.186      %3:vgpr_32 = V_MOV_B32_e32 1, implicit $exec87      %4:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, %3, 0, 0, implicit $exec88      %2:sreg_64_xexec_xnull = S_AND_B64 %1, 1, implicit-def $scc89      S_CMP_LG_U64 %2, 0, implicit-def $scc90      S_CBRANCH_SCC1 %bb.1, implicit $scc91 92  bb.2:93      S_ENDPGM 094...95 96 97---98name:            global_load_saddr_to_valu_undef_vaddr99tracksRegLiveness: true100body:             |101  ; GCN-LABEL: name: global_load_saddr_to_valu_undef_vaddr102  ; GCN: bb.0:103  ; GCN-NEXT:   successors: %bb.1(0x80000000)104  ; GCN-NEXT:   liveins: $vgpr0_vgpr1105  ; GCN-NEXT: {{  $}}106  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1107  ; GCN-NEXT: {{  $}}108  ; GCN-NEXT: bb.1:109  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)110  ; GCN-NEXT: {{  $}}111  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %7, %bb.1112  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub0, implicit $exec113  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub1, implicit $exec114  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec_xnull = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1115  ; GCN-NEXT:   [[GLOBAL_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR [[REG_SEQUENCE]], undef %4:vgpr_32, 0, 0, implicit $exec116  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0117  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1118  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec119  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec120  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1121  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE1]], 0, implicit $exec122  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]], implicit $exec123  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc124  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc125  ; GCN-NEXT: {{  $}}126  ; GCN-NEXT: bb.2:127  ; GCN-NEXT:   S_ENDPGM 0128  bb.0:129    liveins: $vgpr0_vgpr1130      %0:sreg_64 = COPY $vgpr0_vgpr1131 132  bb.1:133      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.1134      %4:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, undef %3:vgpr_32, 0, 0, implicit $exec135      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc136      S_CMP_LG_U64 %2, 0, implicit-def $scc137      S_CBRANCH_SCC1 %bb.1, implicit $scc138 139  bb.2:140      S_ENDPGM 0141...142 143---144name:            global_store_saddr_to_valu145tracksRegLiveness: true146body:             |147  ; GCN-LABEL: name: global_store_saddr_to_valu148  ; GCN: bb.0:149  ; GCN-NEXT:   successors: %bb.1(0x80000000)150  ; GCN-NEXT:   liveins: $vgpr0_vgpr1151  ; GCN-NEXT: {{  $}}152  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1153  ; GCN-NEXT: {{  $}}154  ; GCN-NEXT: bb.1:155  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)156  ; GCN-NEXT: {{  $}}157  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %7, %bb.1158  ; GCN-NEXT:   [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF159  ; GCN-NEXT:   GLOBAL_STORE_DWORD [[PHI]], [[DEF]], 0, 0, implicit $exec160  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0161  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1162  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec163  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec164  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1165  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE]], 0, implicit $exec166  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]], implicit $exec167  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc168  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc169  ; GCN-NEXT: {{  $}}170  ; GCN-NEXT: bb.2:171  ; GCN-NEXT:   S_ENDPGM 0172  bb.0:173    liveins: $vgpr0_vgpr1174      %0:sreg_64 = COPY $vgpr0_vgpr1175 176  bb.1:177      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.1178      %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec179      %4:vgpr_32 = IMPLICIT_DEF180      GLOBAL_STORE_DWORD_SADDR %3, %4, %1, 0, 0, implicit $exec181      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc182      S_CMP_LG_U64 %2, 0, implicit-def $scc183      S_CBRANCH_SCC1 %bb.1, implicit $scc184 185  bb.2:186      S_ENDPGM 0187...188 189---190name:            global_addtid_load_saddr_to_valu191tracksRegLiveness: true192body:             |193  ; GCN-LABEL: name: global_addtid_load_saddr_to_valu194  ; GCN: bb.0:195  ; GCN-NEXT:   successors: %bb.1(0x80000000)196  ; GCN-NEXT:   liveins: $vgpr0_vgpr1197  ; GCN-NEXT: {{  $}}198  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1199  ; GCN-NEXT: {{  $}}200  ; GCN-NEXT: bb.1:201  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)202  ; GCN-NEXT: {{  $}}203  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %6, %bb.1204  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub0, implicit $exec205  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub1, implicit $exec206  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1207  ; GCN-NEXT:   [[GLOBAL_LOAD_DWORD_ADDTID_SADDR:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD_ADDTID_SADDR [[REG_SEQUENCE]], 0, 0, implicit $exec208  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0209  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1210  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec211  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec212  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1213  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE1]], 0, implicit $exec214  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]], implicit $exec215  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc216  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc217  ; GCN-NEXT: {{  $}}218  ; GCN-NEXT: bb.2:219  ; GCN-NEXT:   S_ENDPGM 0220  bb.0:221    liveins: $vgpr0_vgpr1222      %0:sreg_64 = COPY $vgpr0_vgpr1223 224  bb.1:225      %1:sreg_64 = PHI %0, %bb.0, %2, %bb.1226      %4:vgpr_32 = GLOBAL_LOAD_DWORD_ADDTID_SADDR %1, 0, 0, implicit $exec227      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc228      S_CMP_LG_U64 %2, 0, implicit-def $scc229      S_CBRANCH_SCC1 %bb.1, implicit $scc230 231  bb.2:232      S_ENDPGM 0233...234 235---236name:            global_store_addtid_saddr_to_valu237tracksRegLiveness: true238body:             |239  ; GCN-LABEL: name: global_store_addtid_saddr_to_valu240  ; GCN: bb.0:241  ; GCN-NEXT:   successors: %bb.1(0x80000000)242  ; GCN-NEXT:   liveins: $vgpr0_vgpr1243  ; GCN-NEXT: {{  $}}244  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1245  ; GCN-NEXT: {{  $}}246  ; GCN-NEXT: bb.1:247  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)248  ; GCN-NEXT: {{  $}}249  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %6, %bb.1250  ; GCN-NEXT:   [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF251  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub0, implicit $exec252  ; GCN-NEXT:   [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[PHI]].sub1, implicit $exec253  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1254  ; GCN-NEXT:   GLOBAL_STORE_DWORD_ADDTID_SADDR [[DEF]], [[REG_SEQUENCE]], 0, 0, implicit $exec255  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0256  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1257  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec258  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec259  ; GCN-NEXT:   [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1260  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE1]], 0, implicit $exec261  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]], implicit $exec262  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc263  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc264  ; GCN-NEXT: {{  $}}265  ; GCN-NEXT: bb.2:266  ; GCN-NEXT:   S_ENDPGM 0267  bb.0:268    liveins: $vgpr0_vgpr1269      %0:sreg_64 = COPY $vgpr0_vgpr1270 271  bb.1:272      %1:sreg_64 = PHI %0, %bb.0, %2, %bb.1273      %4:vgpr_32 = IMPLICIT_DEF274      GLOBAL_STORE_DWORD_ADDTID_SADDR %4, %1, 0, 0, implicit $exec275      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc276      S_CMP_LG_U64 %2, 0, implicit-def $scc277      S_CBRANCH_SCC1 %bb.1, implicit $scc278 279  bb.2:280      S_ENDPGM 0281...282 283---284name:            global_atomic_noret_saddr_to_valu285tracksRegLiveness: true286body:             |287  ; GCN-LABEL: name: global_atomic_noret_saddr_to_valu288  ; GCN: bb.0:289  ; GCN-NEXT:   successors: %bb.1(0x80000000)290  ; GCN-NEXT:   liveins: $vgpr0_vgpr1291  ; GCN-NEXT: {{  $}}292  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1293  ; GCN-NEXT: {{  $}}294  ; GCN-NEXT: bb.1:295  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)296  ; GCN-NEXT: {{  $}}297  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %6, %bb.1298  ; GCN-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec299  ; GCN-NEXT:   GLOBAL_ATOMIC_ADD [[PHI]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec300  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0301  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1302  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec303  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec304  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1305  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE]], 0, implicit $exec306  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]], implicit $exec307  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc308  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc309  ; GCN-NEXT: {{  $}}310  ; GCN-NEXT: bb.2:311  ; GCN-NEXT:   S_ENDPGM 0312  bb.0:313    liveins: $vgpr0_vgpr1314      %0:sreg_64 = COPY $vgpr0_vgpr1315 316  bb.1:317      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.1318      %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec319      GLOBAL_ATOMIC_ADD_SADDR %3, %3, %1, 0, 0, implicit $exec320      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc321      S_CMP_LG_U64 %2, 0, implicit-def $scc322      S_CBRANCH_SCC1 %bb.1, implicit $scc323 324  bb.2:325      S_ENDPGM 0326...327 328---329name:            global_atomic_rtn_saddr_to_valu330tracksRegLiveness: true331body:             |332  ; GCN-LABEL: name: global_atomic_rtn_saddr_to_valu333  ; GCN: bb.0:334  ; GCN-NEXT:   successors: %bb.1(0x80000000)335  ; GCN-NEXT:   liveins: $vgpr0_vgpr1336  ; GCN-NEXT: {{  $}}337  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1338  ; GCN-NEXT: {{  $}}339  ; GCN-NEXT: bb.1:340  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)341  ; GCN-NEXT: {{  $}}342  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vreg_64 = PHI [[COPY]], %bb.0, %7, %bb.1343  ; GCN-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec344  ; GCN-NEXT:   [[GLOBAL_ATOMIC_ADD_RTN:%[0-9]+]]:vgpr_32 = GLOBAL_ATOMIC_ADD_RTN [[PHI]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec345  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub0346  ; GCN-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[PHI]].sub1347  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], 1, implicit $exec348  ; GCN-NEXT:   [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], 0, implicit $exec349  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1350  ; GCN-NEXT:   [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[REG_SEQUENCE]], 0, implicit $exec351  ; GCN-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]], implicit $exec352  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U64_e64_]], implicit-def $scc353  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc354  ; GCN-NEXT: {{  $}}355  ; GCN-NEXT: bb.2:356  ; GCN-NEXT:   S_ENDPGM 0357  bb.0:358    liveins: $vgpr0_vgpr1359      %0:sreg_64 = COPY $vgpr0_vgpr1360 361  bb.1:362      %1:sreg_64_xexec_xnull = PHI %0, %bb.0, %2, %bb.1363      %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec364      %4:vgpr_32 = GLOBAL_ATOMIC_ADD_SADDR_RTN %3, %3, %1, 0, 0, implicit $exec365      %2:sreg_64 = S_AND_B64 %1, 1, implicit-def $scc366      S_CMP_LG_U64 %2, 0, implicit-def $scc367      S_CBRANCH_SCC1 %bb.1, implicit $scc368 369  bb.2:370      S_ENDPGM 0371...372 373---374name:            scratch_load_saddr_to_valu375tracksRegLiveness: true376body:             |377  ; GCN-LABEL: name: scratch_load_saddr_to_valu378  ; GCN: bb.0:379  ; GCN-NEXT:   successors: %bb.1(0x80000000)380  ; GCN-NEXT:   liveins: $vgpr0381  ; GCN-NEXT: {{  $}}382  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0383  ; GCN-NEXT: {{  $}}384  ; GCN-NEXT: bb.1:385  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)386  ; GCN-NEXT: {{  $}}387  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, %6, %bb.1388  ; GCN-NEXT:   [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[PHI]], 0, 0, implicit $exec, implicit $flat_scr389  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[PHI]], 1, implicit $exec390  ; GCN-NEXT:   [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 [[V_AND_B32_e64_]], 0, implicit $exec391  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[V_AND_B32_e64_]], implicit $exec392  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U32_e64_]], implicit-def $scc393  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc394  ; GCN-NEXT: {{  $}}395  ; GCN-NEXT: bb.2:396  ; GCN-NEXT:   S_ENDPGM 0397  bb.0:398    liveins: $vgpr0399      %0:sgpr_32 = COPY $vgpr0400 401  bb.1:402      %1:sgpr_32 = PHI %0, %bb.0, %2, %bb.1403      %4:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %1, 0, 0, implicit $exec, implicit $flat_scr404      %2:sgpr_32 = S_AND_B32 %1, 1, implicit-def $scc405      S_CMP_LG_U32 %2, 0, implicit-def $scc406      S_CBRANCH_SCC1 %bb.1, implicit $scc407 408  bb.2:409      S_ENDPGM 0410...411 412---413name:            scratch_store_saddr_to_valu414tracksRegLiveness: true415body:             |416  ; GCN-LABEL: name: scratch_store_saddr_to_valu417  ; GCN: bb.0:418  ; GCN-NEXT:   successors: %bb.1(0x80000000)419  ; GCN-NEXT:   liveins: $vgpr0420  ; GCN-NEXT: {{  $}}421  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0422  ; GCN-NEXT: {{  $}}423  ; GCN-NEXT: bb.1:424  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)425  ; GCN-NEXT: {{  $}}426  ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, %6, %bb.1427  ; GCN-NEXT:   [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF428  ; GCN-NEXT:   SCRATCH_STORE_DWORD [[DEF]], [[PHI]], 0, 0, implicit $exec, implicit $flat_scr429  ; GCN-NEXT:   [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[PHI]], 1, implicit $exec430  ; GCN-NEXT:   [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 [[V_AND_B32_e64_]], 0, implicit $exec431  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[V_AND_B32_e64_]], implicit $exec432  ; GCN-NEXT:   $vcc = S_AND_B64 $exec, [[V_CMP_NE_U32_e64_]], implicit-def $scc433  ; GCN-NEXT:   S_CBRANCH_VCCNZ %bb.1, implicit $vcc434  ; GCN-NEXT: {{  $}}435  ; GCN-NEXT: bb.2:436  ; GCN-NEXT:   S_ENDPGM 0437  bb.0:438    liveins: $vgpr0439      %0:sgpr_32 = COPY $vgpr0440 441  bb.1:442      %1:sgpr_32 = PHI %0, %bb.0, %2, %bb.1443      %4:vgpr_32 = IMPLICIT_DEF444      SCRATCH_STORE_DWORD_SADDR %4, %1, 0, 0, implicit $exec, implicit $flat_scr445      %2:sgpr_32 = S_AND_B32 %1, 1, implicit-def $scc446      S_CMP_LG_U32 %2, 0, implicit-def $scc447      S_CBRANCH_SCC1 %bb.1, implicit $scc448 449  bb.2:450      S_ENDPGM 0451...452