1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# 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 %s 3 4# Check that assert is not triggered 5 6--- 7name: si-lower-control-flow 8body: | 9 bb.0: 10 ; GCN-LABEL: name: si-lower-control-flow 11 ; GCN: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5 12 ; GCN: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 16, 0, 0 13 ; GCN: [[S_AND_B32_:%[0-9]+]]:sreg_32_xm0 = S_AND_B32 [[S_LOAD_DWORD_IMM]], 255, implicit-def $scc 14 ; GCN: dead %3:sreg_32_xm0 = S_AND_B32 65535, [[S_AND_B32_]], implicit-def $scc 15 ; GCN: S_ENDPGM 0 16 %0:sgpr_64 = COPY $sgpr4_sgpr5 17 %1:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %0, 16, 0, 0 18 %2:sreg_32_xm0 = S_AND_B32 %1, 255, implicit-def $scc 19 %3:sreg_32_xm0 = S_AND_B32 65535, %2, implicit-def $scc 20 S_ENDPGM 0 21... 22 23--- 24name: preserve_undef_flag_si_if_src 25tracksRegLiveness: true 26body: | 27 ; GCN-LABEL: name: preserve_undef_flag_si_if_src 28 ; GCN: bb.0: 29 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 30 ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 31 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def dead $scc 32 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[S_AND_B64_]], [[COPY]], implicit-def dead $scc 33 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 34 ; GCN: S_CBRANCH_EXECZ %bb.2, implicit $exec 35 ; GCN: S_BRANCH %bb.1 36 ; GCN: bb.1: 37 ; GCN: successors: %bb.2(0x80000000) 38 ; GCN: bb.2: 39 ; GCN: S_ENDPGM 0 40 bb.0: 41 successors: %bb.1, %bb.2 42 43 %1:sreg_64 = SI_IF undef %0:sreg_64, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec 44 S_BRANCH %bb.1 45 46 bb.1: 47 successors: %bb.2 48 49 bb.2: 50 S_ENDPGM 0 51 52... 53 54# We need to split the block for SI_END_CF, but 55--- 56name: end_cf_split_block_end 57tracksRegLiveness: true 58body: | 59 ; GCN-LABEL: name: end_cf_split_block_end 60 ; GCN: bb.0: 61 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 62 ; GCN: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 63 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 64 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 65 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 66 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 67 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc 68 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc 69 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 70 ; GCN: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 71 ; GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 72 ; GCN: S_BRANCH %bb.2 73 ; GCN: bb.1: 74 ; GCN: successors: %bb.2(0x80000000) 75 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]] 76 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 77 ; GCN: bb.2: 78 ; GCN: S_ENDPGM 0 79 bb.0: 80 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 81 82 %0:vgpr_32 = COPY killed $vgpr0 83 %1:vgpr_32 = COPY killed $vgpr1 84 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec 85 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec 86 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec 87 S_BRANCH %bb.2 88 89 bb.1: 90 successors: %bb.2 91 92 %6:sreg_64_xexec = COPY %5 93 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 94 95 bb.2: 96 S_ENDPGM 0 97 98... 99 100--- 101name: end_cf_split_block_physreg_livein 102tracksRegLiveness: true 103body: | 104 ; GCN-LABEL: name: end_cf_split_block_physreg_livein 105 ; GCN: bb.0: 106 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 107 ; GCN: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5 108 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 109 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 110 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 111 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 112 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc 113 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc 114 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 115 ; GCN: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 116 ; GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 117 ; GCN: S_BRANCH %bb.2 118 ; GCN: bb.1: 119 ; GCN: successors: %bb.3(0x80000000) 120 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5 121 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]] 122 ; GCN: S_NOP 0 123 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 124 ; GCN: bb.3: 125 ; GCN: successors: %bb.2(0x80000000) 126 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5 127 ; GCN: S_SLEEP 3 128 ; GCN: S_NOP 0, implicit $vgpr0, implicit $sgpr4_sgpr5 129 ; GCN: bb.2: 130 ; GCN: S_ENDPGM 0 131 bb.0: 132 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5 133 134 %0:vgpr_32 = COPY killed $vgpr0 135 %1:vgpr_32 = COPY killed $vgpr1 136 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec 137 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec 138 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec 139 S_BRANCH %bb.2 140 141 bb.1: 142 successors: %bb.2 143 liveins: $vgpr0, $sgpr4_sgpr5 144 145 %6:sreg_64_xexec = COPY %5 146 S_NOP 0 147 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 148 S_SLEEP 3 149 S_NOP 0, implicit $vgpr0, implicit $sgpr4_sgpr5 150 151 bb.2: 152 S_ENDPGM 0 153 154... 155 156--- 157name: end_cf_split_block_physreg_livein_liveout 158tracksRegLiveness: true 159body: | 160 ; GCN-LABEL: name: end_cf_split_block_physreg_livein_liveout 161 ; GCN: bb.0: 162 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 163 ; GCN: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003 164 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 165 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 166 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 167 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 168 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc 169 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc 170 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 171 ; GCN: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 172 ; GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 173 ; GCN: S_BRANCH %bb.2 174 ; GCN: bb.1: 175 ; GCN: successors: %bb.3(0x80000000) 176 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003 177 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]] 178 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 179 ; GCN: bb.3: 180 ; GCN: successors: %bb.2(0x80000000) 181 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9 182 ; GCN: S_SLEEP 3 183 ; GCN: S_NOP 0 184 ; GCN: bb.2: 185 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x0000000000000003 186 ; GCN: S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5, implicit $sgpr8_sgpr9_sgpr10_sgpr11 187 bb.0: 188 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003 189 190 %0:vgpr_32 = COPY killed $vgpr0 191 %1:vgpr_32 = COPY killed $vgpr1 192 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec 193 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec 194 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec 195 S_BRANCH %bb.2 196 197 bb.1: 198 successors: %bb.2 199 liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003 200 201 %6:sreg_64_xexec = COPY %5 202 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 203 S_SLEEP 3 204 S_NOP 0 205 206 bb.2: 207 liveins: $vgpr0, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11:0x00000003 208 S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5, implicit $sgpr8_sgpr9_sgpr10_sgpr11 209 210... 211 212--- 213name: end_cf_split_block_physreg_liveout 214tracksRegLiveness: true 215body: | 216 ; GCN-LABEL: name: end_cf_split_block_physreg_liveout 217 ; GCN: bb.0: 218 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 219 ; GCN: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 220 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 221 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 222 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 223 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 224 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc 225 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc 226 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 227 ; GCN: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 228 ; GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 229 ; GCN: S_BRANCH %bb.2 230 ; GCN: bb.1: 231 ; GCN: successors: %bb.3(0x80000000) 232 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]] 233 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 234 ; GCN: bb.3: 235 ; GCN: successors: %bb.2(0x80000000) 236 ; GCN: $vgpr3 = V_MOV_B32_e32 0, implicit $exec 237 ; GCN: $sgpr4_sgpr5 = S_MOV_B64 32 238 ; GCN: bb.2: 239 ; GCN: liveins: $vgpr3, $sgpr4_sgpr5 240 ; GCN: S_ENDPGM 0, implicit $vgpr3, implicit $sgpr4_sgpr5 241 bb.0: 242 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 243 244 %0:vgpr_32 = COPY killed $vgpr0 245 %1:vgpr_32 = COPY killed $vgpr1 246 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec 247 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec 248 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec 249 S_BRANCH %bb.2 250 251 bb.1: 252 successors: %bb.2 253 254 %6:sreg_64_xexec = COPY %5 255 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 256 $vgpr3 = V_MOV_B32_e32 0, implicit $exec 257 $sgpr4_sgpr5 = S_MOV_B64 32 258 259 bb.2: 260 liveins: $vgpr3, $sgpr4_sgpr5 261 S_ENDPGM 0, implicit $vgpr3, implicit $sgpr4_sgpr5 262 263... 264 265--- 266name: end_cf_split_block_physreg_live_across_split 267tracksRegLiveness: true 268body: | 269 ; GCN-LABEL: name: end_cf_split_block_physreg_live_across_split 270 ; GCN: bb.0: 271 ; GCN: successors: %bb.1(0x40000000), %bb.2(0x40000000) 272 ; GCN: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5 273 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 274 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 275 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 276 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 277 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit-def dead $scc 278 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY2]], implicit-def dead $scc 279 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 280 ; GCN: [[S_MOV_B64_term:%[0-9]+]]:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 281 ; GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec 282 ; GCN: S_BRANCH %bb.2 283 ; GCN: bb.1: 284 ; GCN: successors: %bb.3(0x80000000) 285 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5 286 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[S_MOV_B64_term]] 287 ; GCN: $sgpr4_sgpr5 = S_MOV_B64 32 288 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 289 ; GCN: bb.3: 290 ; GCN: successors: %bb.2(0x80000000) 291 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5 292 ; GCN: S_SLEEP 3, implicit $sgpr4_sgpr5 293 ; GCN: S_NOP 0 294 ; GCN: bb.2: 295 ; GCN: liveins: $vgpr0, $sgpr4_sgpr5 296 ; GCN: S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5 297 bb.0: 298 liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31, $sgpr4_sgpr5 299 300 %0:vgpr_32 = COPY killed $vgpr0 301 %1:vgpr_32 = COPY killed $vgpr1 302 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %1, implicit $exec 303 %4:sreg_64_xexec = SI_IF %3, %bb.1, implicit-def $exec, implicit-def dead $scc, implicit $exec 304 %5:sreg_64_xexec = S_MOV_B64_term %4, implicit $exec 305 S_BRANCH %bb.2 306 307 bb.1: 308 successors: %bb.2 309 liveins: $vgpr0, $sgpr4_sgpr5 310 311 %6:sreg_64_xexec = COPY %5 312 $sgpr4_sgpr5 = S_MOV_B64 32 313 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 314 S_SLEEP 3, implicit $sgpr4_sgpr5 315 S_NOP 0 316 317 bb.2: 318 liveins: $vgpr0, $sgpr4_sgpr5 319 S_ENDPGM 0, implicit $vgpr0, implicit $sgpr4_sgpr5 320 321... 322 323--- 324name: end_cf_split_block_process_next_inst 325tracksRegLiveness: true 326body: | 327 ; GCN-LABEL: name: end_cf_split_block_process_next_inst 328 ; GCN: bb.0: 329 ; GCN: successors: %bb.1(0x80000000) 330 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2 331 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 332 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 333 ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 334 ; GCN: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 335 ; GCN: [[V_CMP_EQ_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY2]], implicit $exec 336 ; GCN: dead %5:sreg_64_xexec = S_MOV_B64 0 337 ; GCN: bb.1: 338 ; GCN: successors: %bb.3(0x80000000) 339 ; GCN: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY [[V_CMP_EQ_U32_e64_]] 340 ; GCN: $exec = S_OR_B64_term $exec, [[COPY3]], implicit-def $scc 341 ; GCN: bb.3: 342 ; GCN: successors: %bb.2(0x80000000) 343 ; GCN: [[COPY4:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec 344 ; GCN: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY4]], [[V_CMP_EQ_U32_e64_1]], implicit-def dead $scc 345 ; GCN: [[S_XOR_B64_:%[0-9]+]]:sreg_64_xexec = S_XOR_B64 [[S_AND_B64_]], [[COPY4]], implicit-def dead $scc 346 ; GCN: $exec = S_MOV_B64_term killed [[S_AND_B64_]] 347 ; GCN: dead %8:sreg_64_xexec = S_MOV_B64_term [[S_XOR_B64_]], implicit $exec 348 ; GCN: S_CBRANCH_EXECZ %bb.2, implicit $exec 349 ; GCN: bb.2: 350 ; GCN: S_ENDPGM 0 351 bb.0: 352 liveins: $vgpr0, $vgpr1, $vgpr2 353 354 %0:vgpr_32 = COPY killed $vgpr0 355 %1:vgpr_32 = COPY killed $vgpr1 356 %2:vgpr_32 = COPY killed $vgpr2 357 %3:sreg_64_xexec = V_CMP_EQ_U32_e64 %0, killed %1, implicit $exec 358 %4:sreg_64_xexec = V_CMP_EQ_U32_e64 killed %0, killed %2, implicit $exec 359 %5:sreg_64_xexec = S_MOV_B64 0 360 361 bb.1: 362 successors: %bb.2 363 364 %6:sreg_64_xexec = COPY %3 365 SI_END_CF killed %6, implicit-def $exec, implicit-def dead $scc, implicit $exec 366 %7:sreg_64_xexec = SI_IF %4, %bb.2, implicit-def $exec, implicit-def dead $scc, implicit $exec 367 %8:sreg_64_xexec = S_MOV_B64_term %7, implicit $exec 368 369 bb.2: 370 S_ENDPGM 0 371 372... 373