413 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=liveintervals,si-lower-control-flow,si-lower-control-flow -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GCN %s3 4# Check that assert is not triggered5 6---7name: si-lower-control-flow8body: |9 bb.0:10 ; GCN-LABEL: name: si-lower-control-flow11 ; GCN: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr512 ; GCN-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 16, 013 ; GCN-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32_xm0 = S_AND_B32 [[S_LOAD_DWORD_IMM]], 255, implicit-def $scc14 ; GCN-NEXT: dead [[S_AND_B32_1:%[0-9]+]]:sreg_32_xm0 = S_AND_B32 65535, [[S_AND_B32_]], implicit-def $scc15 ; GCN-NEXT: S_ENDPGM 016 %0:sgpr_64 = COPY $sgpr4_sgpr517 %1:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %0, 16, 018 %2:sreg_32_xm0 = S_AND_B32 %1, 255, implicit-def $scc19 %3:sreg_32_xm0 = S_AND_B32 65535, %2, implicit-def $scc20 S_ENDPGM 021...22 23---24name: preserve_undef_flag_si_if_src25tracksRegLiveness: true26body: |27 ; GCN-LABEL: name: preserve_undef_flag_si_if_src28 ; GCN: bb.0:29 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)30 ; GCN-NEXT: {{ $}}31 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec32 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def dead $scc33 ; GCN-NEXT: dead [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[S_AND_B64_]], [[COPY]], implicit-def dead $scc34 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]35 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec36 ; GCN-NEXT: S_BRANCH %bb.137 ; GCN-NEXT: {{ $}}38 ; GCN-NEXT: bb.1:39 ; GCN-NEXT: successors: %bb.2(0x80000000)40 ; GCN-NEXT: {{ $}}41 ; GCN-NEXT: bb.2:42 ; GCN-NEXT: S_ENDPGM 043 bb.0:44 successors: %bb.1, %bb.245 46 %1:sreg_64 = SI_IF undef %0:sreg_64, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec47 S_BRANCH %bb.148 49 bb.1:50 successors: %bb.251 52 bb.2:53 S_ENDPGM 054 55...56 57# We need to split the block for SI_END_CF, but58---59name: end_cf_split_block_end60tracksRegLiveness: true61body: |62 ; GCN-LABEL: name: end_cf_split_block_end63 ; GCN: bb.0:64 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)65 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr3166 ; GCN-NEXT: {{ $}}67 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr068 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr169 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec70 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec71 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc72 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc73 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]74 ; GCN-NEXT: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec75 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec76 ; GCN-NEXT: S_BRANCH %bb.277 ; GCN-NEXT: {{ $}}78 ; GCN-NEXT: bb.1:79 ; GCN-NEXT: successors: %bb.2(0x80000000)80 ; GCN-NEXT: {{ $}}81 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]]82 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc83 ; GCN-NEXT: {{ $}}84 ; GCN-NEXT: bb.2:85 ; GCN-NEXT: S_ENDPGM 086 bb.0:87 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr3188 89 %0:vgpr_32 = COPY killed $vgpr090 %1:vgpr_32 = COPY killed $vgpr191 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec92 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec93 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec94 S_BRANCH %bb.295 96 bb.1:97 successors: %bb.298 99 %6:sreg_64_xexec = COPY %5100 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec101 102 bb.2:103 S_ENDPGM 0104 105...106 107---108name: end_cf_split_block_physreg_livein109tracksRegLiveness: true110body: |111 ; GCN-LABEL: name: end_cf_split_block_physreg_livein112 ; GCN: bb.0:113 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)114 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5115 ; GCN-NEXT: {{ $}}116 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0117 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1118 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec119 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec120 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc121 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc122 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]123 ; GCN-NEXT: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec124 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec125 ; GCN-NEXT: S_BRANCH %bb.2126 ; GCN-NEXT: {{ $}}127 ; GCN-NEXT: bb.1:128 ; GCN-NEXT: successors: %bb.3(0x80000000)129 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5130 ; GCN-NEXT: {{ $}}131 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]]132 ; GCN-NEXT: S_NOP 0133 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc134 ; GCN-NEXT: {{ $}}135 ; GCN-NEXT: bb.3:136 ; GCN-NEXT: successors: %bb.2(0x80000000)137 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5138 ; GCN-NEXT: {{ $}}139 ; GCN-NEXT: S_SLEEP 3140 ; GCN-NEXT: S_NOP 0, implicit $vgpr0, implicit $sgpr4_sgpr5141 ; GCN-NEXT: {{ $}}142 ; GCN-NEXT: bb.2:143 ; GCN-NEXT: S_ENDPGM 0144 bb.0:145 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5146 147 %0:vgpr_32 = COPY killed $vgpr0148 %1:vgpr_32 = COPY killed $vgpr1149 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec150 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec151 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec152 S_BRANCH %bb.2153 154 bb.1:155 successors: %bb.2156 liveins: $vgpr0, $sgpr4_sgpr5157 158 %6:sreg_64_xexec = COPY %5159 S_NOP 0160 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec161 S_SLEEP 3162 S_NOP 0, implicit $vgpr0, implicit $sgpr4_sgpr5163 164 bb.2:165 S_ENDPGM 0166 167...168 169---170name: end_cf_split_block_physreg_livein_liveout171tracksRegLiveness: true172body: |173 ; GCN-LABEL: name: end_cf_split_block_physreg_livein_liveout174 ; GCN: bb.0:175 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)176 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003177 ; GCN-NEXT: {{ $}}178 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0179 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1180 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec181 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec182 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc183 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc184 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]185 ; GCN-NEXT: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec186 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec187 ; GCN-NEXT: S_BRANCH %bb.2188 ; GCN-NEXT: {{ $}}189 ; GCN-NEXT: bb.1:190 ; GCN-NEXT: successors: %bb.3(0x80000000)191 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003192 ; GCN-NEXT: {{ $}}193 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]]194 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc195 ; GCN-NEXT: {{ $}}196 ; GCN-NEXT: bb.3:197 ; GCN-NEXT: successors: %bb.2(0x80000000)198 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10199 ; GCN-NEXT: {{ $}}200 ; GCN-NEXT: S_SLEEP 3201 ; GCN-NEXT: S_NOP 0202 ; GCN-NEXT: {{ $}}203 ; GCN-NEXT: bb.2:204 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003205 ; GCN-NEXT: {{ $}}206 ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5, implicit $sgpr8_sgpr9_sgpr10_sgpr11207 bb.0:208 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003209 210 %0:vgpr_32 = COPY killed $vgpr0211 %1:vgpr_32 = COPY killed $vgpr1212 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec213 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec214 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec215 S_BRANCH %bb.2216 217 bb.1:218 successors: %bb.2219 liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003220 221 %6:sreg_64_xexec = COPY %5222 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec223 S_SLEEP 3224 S_NOP 0225 226 bb.2:227 liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003228 S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5, implicit $sgpr8_sgpr9_sgpr10_sgpr11229 230...231 232---233name: end_cf_split_block_physreg_liveout234tracksRegLiveness: true235body: |236 ; GCN-LABEL: name: end_cf_split_block_physreg_liveout237 ; GCN: bb.0:238 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)239 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31240 ; GCN-NEXT: {{ $}}241 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0242 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1243 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec244 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec245 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc246 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc247 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]248 ; GCN-NEXT: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec249 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec250 ; GCN-NEXT: S_BRANCH %bb.2251 ; GCN-NEXT: {{ $}}252 ; GCN-NEXT: bb.1:253 ; GCN-NEXT: successors: %bb.3(0x80000000)254 ; GCN-NEXT: {{ $}}255 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]]256 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc257 ; GCN-NEXT: {{ $}}258 ; GCN-NEXT: bb.3:259 ; GCN-NEXT: successors: %bb.2(0x80000000)260 ; GCN-NEXT: {{ $}}261 ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec262 ; GCN-NEXT: $sgpr4_sgpr5 = S_MOV_B64 32263 ; GCN-NEXT: {{ $}}264 ; GCN-NEXT: bb.2:265 ; GCN-NEXT: liveins: $vgpr3, $sgpr4_sgpr5266 ; GCN-NEXT: {{ $}}267 ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr3, implicit $sgpr4_sgpr5268 bb.0:269 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31270 271 %0:vgpr_32 = COPY killed $vgpr0272 %1:vgpr_32 = COPY killed $vgpr1273 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec274 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec275 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec276 S_BRANCH %bb.2277 278 bb.1:279 successors: %bb.2280 281 %6:sreg_64_xexec = COPY %5282 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec283 $vgpr3 = V_MOV_B32_e32 0, implicit $exec284 $sgpr4_sgpr5 = S_MOV_B64 32285 286 bb.2:287 liveins: $vgpr3, $sgpr4_sgpr5288 S_ENDPGM 0, implicit $vgpr3, implicit $sgpr4_sgpr5289 290...291 292---293name: end_cf_split_block_physreg_live_across_split294tracksRegLiveness: true295body: |296 ; GCN-LABEL: name: end_cf_split_block_physreg_live_across_split297 ; GCN: bb.0:298 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)299 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5300 ; GCN-NEXT: {{ $}}301 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0302 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1303 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec304 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec305 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc306 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc307 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]308 ; GCN-NEXT: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec309 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec310 ; GCN-NEXT: S_BRANCH %bb.2311 ; GCN-NEXT: {{ $}}312 ; GCN-NEXT: bb.1:313 ; GCN-NEXT: successors: %bb.3(0x80000000)314 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5315 ; GCN-NEXT: {{ $}}316 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]]317 ; GCN-NEXT: $sgpr4_sgpr5 = S_MOV_B64 32318 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc319 ; GCN-NEXT: {{ $}}320 ; GCN-NEXT: bb.3:321 ; GCN-NEXT: successors: %bb.2(0x80000000)322 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5323 ; GCN-NEXT: {{ $}}324 ; GCN-NEXT: S_SLEEP 3, implicit $sgpr4_sgpr5325 ; GCN-NEXT: S_NOP 0326 ; GCN-NEXT: {{ $}}327 ; GCN-NEXT: bb.2:328 ; GCN-NEXT: liveins: $vgpr0, $sgpr4_sgpr5329 ; GCN-NEXT: {{ $}}330 ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5331 bb.0:332 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5333 334 %0:vgpr_32 = COPY killed $vgpr0335 %1:vgpr_32 = COPY killed $vgpr1336 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec337 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec338 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec339 S_BRANCH %bb.2340 341 bb.1:342 successors: %bb.2343 liveins: $vgpr0, $sgpr4_sgpr5344 345 %6:sreg_64_xexec = COPY %5346 $sgpr4_sgpr5 = S_MOV_B64 32347 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec348 S_SLEEP 3, implicit $sgpr4_sgpr5349 S_NOP 0350 351 bb.2:352 liveins: $vgpr0, $sgpr4_sgpr5353 S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5354 355...356 357---358name: end_cf_split_block_process_next_inst359tracksRegLiveness: true360body: |361 ; GCN-LABEL: name: end_cf_split_block_process_next_inst362 ; GCN: bb.0:363 ; GCN-NEXT: successors: %bb.1(0x80000000)364 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2365 ; GCN-NEXT: {{ $}}366 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0367 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1368 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2369 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec370 ; GCN-NEXT: [[V_CMP_EQ_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY2]], implicit $exec371 ; GCN-NEXT: dead [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 0372 ; GCN-NEXT: {{ $}}373 ; GCN-NEXT: bb.1:374 ; GCN-NEXT: successors: %bb.3(0x80000000)375 ; GCN-NEXT: {{ $}}376 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[V_CMP_EQ_U32_e64_]]377 ; GCN-NEXT: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc378 ; GCN-NEXT: {{ $}}379 ; GCN-NEXT: bb.3:380 ; GCN-NEXT: successors: %bb.2(0x80000000)381 ; GCN-NEXT: {{ $}}382 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec383 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY4]], [[V_CMP_EQ_U32_e64_1]], implicit-def dead $scc384 ; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY4]], implicit-def dead $scc385 ; GCN-NEXT: $exec = S_MOV_B64_term [[S_AND_B64_]]386 ; GCN-NEXT: dead [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec387 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec388 ; GCN-NEXT: {{ $}}389 ; GCN-NEXT: bb.2:390 ; GCN-NEXT: S_ENDPGM 0391 bb.0:392 liveins: $vgpr0, $vgpr1, $vgpr2393 394 %0:vgpr_32 = COPY killed $vgpr0395 %1:vgpr_32 = COPY killed $vgpr1396 %2:vgpr_32 = COPY killed $vgpr2397 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 %0, killed %1, implicit $exec398 %4:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %2, implicit $exec399 %5:sreg_64_xexec = S_MOV_B64 0400 401 bb.1:402 successors: %bb.2403 404 %6:sreg_64_xexec = COPY %3405 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec406 %7:sreg_64_xexec = SI_IF %4, %bb.2, implicit-def $exec, implicit-def dead $scc, implicit $exec407 %8:sreg_64_xexec = S_MOV_B64_term %7, implicit $exec408 409 bb.2:410 S_ENDPGM 0411 412...413