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