Lines Matching refs:GCN
2 …-pass=si-lower-control-flow -amdgpu-remove-redundant-endcf %s -o - | FileCheck -check-prefix=GCN %s
11 ; GCN-LABEL: name: simple_nested_if_dbg_value
12 ; GCN: bb.0:
13 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
14 ; GCN-NEXT: {{ $}}
15 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
16 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
17 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
18 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
19 ; GCN-NEXT: {{ $}}
20 ; GCN-NEXT: bb.1:
21 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)
22 ; GCN-NEXT: {{ $}}
23 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
24 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
25 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
26 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
27 ; GCN-NEXT: {{ $}}
28 ; GCN-NEXT: bb.2:
29 ; GCN-NEXT: successors: %bb.4(0x80000000)
30 ; GCN-NEXT: {{ $}}
31 ; GCN-NEXT: {{ $}}
32 ; GCN-NEXT: bb.4:
33 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
34 ; GCN-NEXT: DBG_VALUE
35 ; GCN-NEXT: S_ENDPGM 0
66 ; GCN-LABEL: name: simple_nested_if_empty_block_between
67 ; GCN: bb.0:
68 ; GCN-NEXT: successors: %bb.5(0x40000000), %bb.1(0x40000000)
69 ; GCN-NEXT: {{ $}}
70 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
71 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
72 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
73 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.5, implicit $exec
74 ; GCN-NEXT: {{ $}}
75 ; GCN-NEXT: bb.1:
76 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)
77 ; GCN-NEXT: {{ $}}
78 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
79 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
80 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
81 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
82 ; GCN-NEXT: {{ $}}
83 ; GCN-NEXT: bb.2:
84 ; GCN-NEXT: successors: %bb.4(0x80000000)
85 ; GCN-NEXT: {{ $}}
86 ; GCN-NEXT: {{ $}}
87 ; GCN-NEXT: bb.4:
88 ; GCN-NEXT: successors: %bb.5(0x80000000)
89 ; GCN-NEXT: {{ $}}
90 ; GCN-NEXT: {{ $}}
91 ; GCN-NEXT: bb.5:
92 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
93 ; GCN-NEXT: S_ENDPGM 0
122 ; GCN-LABEL: name: simple_nested_if_empty_block_dbg_between
123 ; GCN: bb.0:
124 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.5(0x40000000)
125 ; GCN-NEXT: {{ $}}
126 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
127 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
128 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
129 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.5, implicit $exec
130 ; GCN-NEXT: {{ $}}
131 ; GCN-NEXT: bb.1:
132 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)
133 ; GCN-NEXT: {{ $}}
134 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
135 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
136 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
137 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
138 ; GCN-NEXT: {{ $}}
139 ; GCN-NEXT: bb.2:
140 ; GCN-NEXT: successors: %bb.4(0x80000000)
141 ; GCN-NEXT: {{ $}}
142 ; GCN-NEXT: {{ $}}
143 ; GCN-NEXT: bb.4:
144 ; GCN-NEXT: successors: %bb.5(0x80000000)
145 ; GCN-NEXT: {{ $}}
146 ; GCN-NEXT: DBG_VALUE
147 ; GCN-NEXT: {{ $}}
148 ; GCN-NEXT: bb.5:
149 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
150 ; GCN-NEXT: S_ENDPGM 0
181 ; GCN-LABEL: name: skip_salu_and_meta_insts_find_first
182 ; GCN: bb.0:
183 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
184 ; GCN-NEXT: liveins: $vgpr0, $sgpr0_sgpr1
185 ; GCN-NEXT: {{ $}}
186 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
187 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
188 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
189 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
190 ; GCN-NEXT: {{ $}}
191 ; GCN-NEXT: bb.1:
192 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
193 ; GCN-NEXT: {{ $}}
194 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
195 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
196 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
197 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
198 ; GCN-NEXT: {{ $}}
199 ; GCN-NEXT: bb.2:
200 ; GCN-NEXT: successors: %bb.3(0x80000000)
201 ; GCN-NEXT: {{ $}}
202 ; GCN-NEXT: {{ $}}
203 ; GCN-NEXT: bb.3:
204 ; GCN-NEXT: successors: %bb.4(0x80000000)
205 ; GCN-NEXT: {{ $}}
206 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
207 ; GCN-NEXT: [[S_BREV_B32_:%[0-9]+]]:sgpr_32 = S_BREV_B32 [[DEF]]
208 ; GCN-NEXT: KILL [[DEF]]
209 ; GCN-NEXT: {{ $}}
210 ; GCN-NEXT: bb.4:
211 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
212 ; GCN-NEXT: S_ENDPGM 0
246 ; GCN-LABEL: name: skip_salu_and_meta_insts_after
247 ; GCN: bb.0:
248 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
249 ; GCN-NEXT: {{ $}}
250 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
251 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
252 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
253 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
254 ; GCN-NEXT: {{ $}}
255 ; GCN-NEXT: bb.1:
256 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
257 ; GCN-NEXT: {{ $}}
258 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
259 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
260 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
261 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
262 ; GCN-NEXT: {{ $}}
263 ; GCN-NEXT: bb.2:
264 ; GCN-NEXT: successors: %bb.3(0x80000000)
265 ; GCN-NEXT: {{ $}}
266 ; GCN-NEXT: {{ $}}
267 ; GCN-NEXT: bb.3:
268 ; GCN-NEXT: successors: %bb.4(0x80000000)
269 ; GCN-NEXT: {{ $}}
270 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
271 ; GCN-NEXT: [[S_BREV_B32_:%[0-9]+]]:sgpr_32 = S_BREV_B32 [[DEF]]
272 ; GCN-NEXT: KILL [[DEF]]
273 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY [[S_BREV_B32_]]
274 ; GCN-NEXT: {{ $}}
275 ; GCN-NEXT: bb.4:
276 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
277 ; GCN-NEXT: S_ENDPGM 0
310 ; GCN-LABEL: name: salu_exec_dependency
311 ; GCN: bb.0:
312 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
313 ; GCN-NEXT: {{ $}}
314 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
315 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
316 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
317 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
318 ; GCN-NEXT: {{ $}}
319 ; GCN-NEXT: bb.1:
320 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
321 ; GCN-NEXT: {{ $}}
322 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
323 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
324 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
325 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
326 ; GCN-NEXT: {{ $}}
327 ; GCN-NEXT: bb.2:
328 ; GCN-NEXT: successors: %bb.3(0x80000000)
329 ; GCN-NEXT: {{ $}}
330 ; GCN-NEXT: {{ $}}
331 ; GCN-NEXT: bb.3:
332 ; GCN-NEXT: successors: %bb.4(0x80000000)
333 ; GCN-NEXT: {{ $}}
334 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY1]], implicit-def $scc
335 ; GCN-NEXT: [[S_BREV_B64_:%[0-9]+]]:sreg_64 = S_BREV_B64 $exec
336 ; GCN-NEXT: {{ $}}
337 ; GCN-NEXT: bb.4:
338 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
339 ; GCN-NEXT: S_ENDPGM 0
369 ; GCN-LABEL: name: copy_no_explicit_exec_dependency
370 ; GCN: bb.0:
371 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
372 ; GCN-NEXT: {{ $}}
373 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
374 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
375 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
376 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
377 ; GCN-NEXT: {{ $}}
378 ; GCN-NEXT: bb.1:
379 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
380 ; GCN-NEXT: {{ $}}
381 ; GCN-NEXT: [[DEF:%[0-9]+]]:vreg_128 = IMPLICIT_DEF
382 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
383 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %4:sreg_64, implicit-de…
384 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
385 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
386 ; GCN-NEXT: {{ $}}
387 ; GCN-NEXT: bb.2:
388 ; GCN-NEXT: successors: %bb.3(0x80000000)
389 ; GCN-NEXT: {{ $}}
390 ; GCN-NEXT: {{ $}}
391 ; GCN-NEXT: bb.3:
392 ; GCN-NEXT: successors: %bb.4(0x80000000)
393 ; GCN-NEXT: {{ $}}
394 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY1]], implicit-def $scc
395 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[DEF]].sub2
396 ; GCN-NEXT: {{ $}}
397 ; GCN-NEXT: bb.4:
398 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
399 ; GCN-NEXT: S_ENDPGM 0
429 ; GCN-LABEL: name: simple_nested_if_not_layout_successor
430 ; GCN: bb.0:
431 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
432 ; GCN-NEXT: {{ $}}
433 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
434 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
435 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
436 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
437 ; GCN-NEXT: {{ $}}
438 ; GCN-NEXT: bb.1:
439 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.5(0x40000000)
440 ; GCN-NEXT: {{ $}}
441 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
442 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
443 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
444 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.5, implicit $exec
445 ; GCN-NEXT: {{ $}}
446 ; GCN-NEXT: bb.2:
447 ; GCN-NEXT: successors: %bb.5(0x80000000)
448 ; GCN-NEXT: {{ $}}
449 ; GCN-NEXT: {{ $}}
450 ; GCN-NEXT: bb.5:
451 ; GCN-NEXT: successors: %bb.4(0x80000000)
452 ; GCN-NEXT: {{ $}}
453 ; GCN-NEXT: S_BRANCH %bb.4
454 ; GCN-NEXT: {{ $}}
455 ; GCN-NEXT: bb.4:
456 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
457 ; GCN-NEXT: S_ENDPGM 0
493 ; GCN-LABEL: name: resursive_endcf
494 ; GCN: bb.0:
495 ; GCN-NEXT: successors: %bb.1(0x80000000)
496 ; GCN-NEXT: liveins: $vgpr0
497 ; GCN-NEXT: {{ $}}
498 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
499 ; GCN-NEXT: [[V_CMP_LT_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_U32_e64 1, [[COPY]], implicit $exec
500 ; GCN-NEXT: {{ $}}
501 ; GCN-NEXT: bb.1:
502 ; GCN-NEXT: successors: %bb.1(0x80000000)
503 ; GCN-NEXT: {{ $}}
504 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[V_CMP_LT_U32_e64_]], implicit-def $scc
505 ; GCN-NEXT: S_BRANCH %bb.1
529 ; GCN-LABEL: name: simple_outer_if_else
530 ; GCN: bb.0:
531 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
532 ; GCN-NEXT: {{ $}}
533 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
534 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
535 …; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[S_AND_B64_]], [[COPY]], implicit-def de…
536 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
537 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec
538 ; GCN-NEXT: {{ $}}
539 ; GCN-NEXT: bb.1:
540 ; GCN-NEXT: successors: %bb.2(0x80000000)
541 ; GCN-NEXT: {{ $}}
542 ; GCN-NEXT: S_BRANCH %bb.2
543 ; GCN-NEXT: {{ $}}
544 ; GCN-NEXT: bb.2:
545 ; GCN-NEXT: successors: %bb.3(0x40000000), %bb.6(0x40000000)
546 ; GCN-NEXT: {{ $}}
547 …; GCN-NEXT: [[S_OR_SAVEEXEC_B64_:%[0-9]+]]:sreg_64 = S_OR_SAVEEXEC_B64 [[S_XOR_B64_]], implicit-…
548 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 $exec, [[S_OR_SAVEEXEC_B64_]], implicit-…
549 ; GCN-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_B64_1]], implicit-def $scc
550 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.6, implicit $exec
551 ; GCN-NEXT: {{ $}}
552 ; GCN-NEXT: bb.3:
553 ; GCN-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000)
554 ; GCN-NEXT: {{ $}}
555 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
556 …; GCN-NEXT: [[S_AND_B64_2:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %4:sreg_64, implicit-de…
557 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_2]]
558 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
559 ; GCN-NEXT: {{ $}}
560 ; GCN-NEXT: bb.4:
561 ; GCN-NEXT: successors: %bb.5(0x80000000)
562 ; GCN-NEXT: {{ $}}
563 ; GCN-NEXT: {{ $}}
564 ; GCN-NEXT: bb.5:
565 ; GCN-NEXT: successors: %bb.6(0x80000000)
566 ; GCN-NEXT: {{ $}}
567 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY1]], implicit-def $scc
568 ; GCN-NEXT: {{ $}}
569 ; GCN-NEXT: bb.6:
570 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[S_AND_B64_1]], implicit-def $scc
571 ; GCN-NEXT: S_ENDPGM 0
610 ; GCN-LABEL: name: if_inside_loop
611 ; GCN: bb.0:
612 ; GCN-NEXT: successors: %bb.6(0x80000000)
613 ; GCN-NEXT: {{ $}}
614 ; GCN-NEXT: S_BRANCH %bb.6
615 ; GCN-NEXT: {{ $}}
616 ; GCN-NEXT: bb.1:
617 ; GCN-NEXT: successors: %bb.3(0x40000000), %bb.2(0x40000000)
618 ; GCN-NEXT: {{ $}}
619 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
620 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
621 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
622 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
623 ; GCN-NEXT: {{ $}}
624 ; GCN-NEXT: bb.2:
625 ; GCN-NEXT: successors: %bb.6(0x80000000)
626 ; GCN-NEXT: {{ $}}
627 ; GCN-NEXT: S_BRANCH %bb.6
628 ; GCN-NEXT: {{ $}}
629 ; GCN-NEXT: bb.3:
630 ; GCN-NEXT: successors: %bb.4(0x80000000)
631 ; GCN-NEXT: {{ $}}
632 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
633 ; GCN-NEXT: {{ $}}
634 ; GCN-NEXT: bb.4:
635 ; GCN-NEXT: successors: %bb.5(0x80000000)
636 ; GCN-NEXT: {{ $}}
637 ; GCN-NEXT: $exec = S_OR_B64 $exec, %2, implicit-def $scc
638 ; GCN-NEXT: {{ $}}
639 ; GCN-NEXT: bb.5:
640 ; GCN-NEXT: successors: %bb.6(0x80000000)
641 ; GCN-NEXT: {{ $}}
642 ; GCN-NEXT: {{ $}}
643 ; GCN-NEXT: bb.6:
644 ; GCN-NEXT: successors: %bb.4(0x40000000), %bb.0(0x40000000)
645 ; GCN-NEXT: {{ $}}
646 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
647 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
648 …; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[S_AND_B64_1]], [[COPY1]], implicit-def …
649 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
650 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
651 ; GCN-NEXT: S_BRANCH %bb.0
652 ; GCN-NEXT: S_ENDPGM 0
686 ; GCN-LABEL: name: removed_succ_fallthrough_but_layout_successor
687 ; GCN: bb.0:
688 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
689 ; GCN-NEXT: {{ $}}
690 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
691 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
692 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
693 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
694 ; GCN-NEXT: {{ $}}
695 ; GCN-NEXT: bb.1:
696 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)
697 ; GCN-NEXT: {{ $}}
698 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
699 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
700 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
701 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
702 ; GCN-NEXT: {{ $}}
703 ; GCN-NEXT: bb.2:
704 ; GCN-NEXT: successors: %bb.4(0x80000000)
705 ; GCN-NEXT: {{ $}}
706 ; GCN-NEXT: {{ $}}
707 ; GCN-NEXT: bb.4:
708 ; GCN-NEXT: successors: %bb.5(0x80000000)
709 ; GCN-NEXT: {{ $}}
710 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
711 ; GCN-NEXT: {{ $}}
712 ; GCN-NEXT: bb.5:
713 ; GCN-NEXT: S_ENDPGM 0
749 ; GCN-LABEL: name: deleted_succ_fallthrough_not_layout_successor
750 ; GCN: bb.0:
751 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.4(0x40000000)
752 ; GCN-NEXT: {{ $}}
753 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
754 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], undef %1:sreg_64, implicit-def …
755 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
756 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
757 ; GCN-NEXT: {{ $}}
758 ; GCN-NEXT: bb.1:
759 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.5(0x40000000)
760 ; GCN-NEXT: {{ $}}
761 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
762 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], undef %3:sreg_64, implicit-de…
763 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
764 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.5, implicit $exec
765 ; GCN-NEXT: {{ $}}
766 ; GCN-NEXT: bb.2:
767 ; GCN-NEXT: successors: %bb.5(0x80000000)
768 ; GCN-NEXT: {{ $}}
769 ; GCN-NEXT: S_BRANCH %bb.5
770 ; GCN-NEXT: {{ $}}
771 ; GCN-NEXT: bb.4:
772 ; GCN-NEXT: S_ENDPGM 0
773 ; GCN-NEXT: {{ $}}
774 ; GCN-NEXT: bb.5:
775 ; GCN-NEXT: successors: %bb.6(0x80000000)
776 ; GCN-NEXT: {{ $}}
777 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
778 ; GCN-NEXT: {{ $}}
779 ; GCN-NEXT: bb.6:
780 ; GCN-NEXT: successors: %bb.4(0x80000000)
781 ; GCN-NEXT: {{ $}}
782 ; GCN-NEXT: S_BRANCH %bb.4
822 ; GCN-LABEL: name: no_multiple_unconditional_branches
823 ; GCN: bb.0:
824 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.14(0x40000000)
825 ; GCN-NEXT: {{ $}}
826 ; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
827 …; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 0, killed [[DEF]], implicit…
828 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
829 …; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], [[V_CMP_EQ_U32_e64_]], implicit…
830 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_]]
831 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.14, implicit $exec
832 ; GCN-NEXT: S_BRANCH %bb.1
833 ; GCN-NEXT: {{ $}}
834 ; GCN-NEXT: bb.1:
835 ; GCN-NEXT: successors: %bb.2(0x40000000), %bb.14(0x40000000)
836 ; GCN-NEXT: {{ $}}
837 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
838 …; GCN-NEXT: [[V_CMP_EQ_U32_e64_1:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 0, killed [[DEF1]], implic…
839 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
840 …; GCN-NEXT: [[S_AND_B64_1:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY1]], killed [[V_CMP_EQ_U32_e64_1]]…
841 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_1]]
842 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.14, implicit $exec
843 ; GCN-NEXT: S_BRANCH %bb.2
844 ; GCN-NEXT: {{ $}}
845 ; GCN-NEXT: bb.2:
846 ; GCN-NEXT: successors: %bb.3(0x40000000), %bb.7(0x40000000)
847 ; GCN-NEXT: {{ $}}
848 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
849 …; GCN-NEXT: [[V_CMP_EQ_U32_e64_2:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 0, killed [[DEF2]], implic…
850 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
851 …; GCN-NEXT: [[S_AND_B64_2:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY2]], killed [[V_CMP_EQ_U32_e64_2]]…
852 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_2]]
853 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.7, implicit $exec
854 ; GCN-NEXT: S_BRANCH %bb.3
855 ; GCN-NEXT: {{ $}}
856 ; GCN-NEXT: bb.3:
857 ; GCN-NEXT: successors: %bb.4(0x40000000), %bb.7(0x40000000)
858 ; GCN-NEXT: {{ $}}
859 ; GCN-NEXT: [[DEF3:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
860 …; GCN-NEXT: [[V_CMP_EQ_U32_e64_3:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 0, killed [[DEF3]], implic…
861 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
862 …; GCN-NEXT: [[S_AND_B64_3:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY3]], killed [[V_CMP_EQ_U32_e64_3]]…
863 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_3]]
864 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.7, implicit $exec
865 ; GCN-NEXT: S_BRANCH %bb.4
866 ; GCN-NEXT: {{ $}}
867 ; GCN-NEXT: bb.4:
868 ; GCN-NEXT: successors: %bb.7(0x80000000)
869 ; GCN-NEXT: {{ $}}
870 ; GCN-NEXT: S_BRANCH %bb.7
871 ; GCN-NEXT: {{ $}}
872 ; GCN-NEXT: bb.7:
873 ; GCN-NEXT: successors: %bb.8(0x80000000)
874 ; GCN-NEXT: {{ $}}
875 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY2]], implicit-def $scc
876 ; GCN-NEXT: S_BRANCH %bb.8
877 ; GCN-NEXT: {{ $}}
878 ; GCN-NEXT: bb.8:
879 ; GCN-NEXT: successors: %bb.9(0x80000000)
880 ; GCN-NEXT: {{ $}}
881 ; GCN-NEXT: S_BRANCH %bb.9
882 ; GCN-NEXT: {{ $}}
883 ; GCN-NEXT: bb.9:
884 ; GCN-NEXT: successors: %bb.11(0x40000000), %bb.12(0x40000000)
885 ; GCN-NEXT: {{ $}}
886 ; GCN-NEXT: [[DEF4:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
887 …; GCN-NEXT: [[V_CMP_EQ_U32_e64_4:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 0, killed [[DEF4]], implic…
888 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $exec, implicit-def $exec
889 …; GCN-NEXT: [[S_AND_B64_4:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY4]], killed [[V_CMP_EQ_U32_e64_4]]…
890 …; GCN-NEXT: [[S_XOR_B64_:%[0-9]+]]:sreg_64 = S_XOR_B64 [[S_AND_B64_4]], [[COPY4]], implicit-def …
891 ; GCN-NEXT: $exec = S_MOV_B64_term killed [[S_AND_B64_4]]
892 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.12, implicit $exec
893 ; GCN-NEXT: S_BRANCH %bb.11
894 ; GCN-NEXT: {{ $}}
895 ; GCN-NEXT: bb.10:
896 ; GCN-NEXT: successors: %bb.14(0x80000000)
897 ; GCN-NEXT: {{ $}}
898 ; GCN-NEXT: S_BRANCH %bb.14
899 ; GCN-NEXT: {{ $}}
900 ; GCN-NEXT: bb.11:
901 ; GCN-NEXT: successors: %bb.12(0x80000000)
902 ; GCN-NEXT: {{ $}}
903 ; GCN-NEXT: S_BRANCH %bb.12
904 ; GCN-NEXT: {{ $}}
905 ; GCN-NEXT: bb.12:
906 ; GCN-NEXT: successors: %bb.10(0x40000000), %bb.14(0x40000000)
907 ; GCN-NEXT: {{ $}}
908 …; GCN-NEXT: [[S_OR_SAVEEXEC_B64_:%[0-9]+]]:sreg_64 = S_OR_SAVEEXEC_B64 [[S_XOR_B64_]], implicit-…
909 …; GCN-NEXT: [[S_AND_B64_5:%[0-9]+]]:sreg_64 = S_AND_B64 $exec, [[S_OR_SAVEEXEC_B64_]], implicit-…
910 ; GCN-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_B64_5]], implicit-def $scc
911 ; GCN-NEXT: S_CBRANCH_EXECZ %bb.14, implicit $exec
912 ; GCN-NEXT: S_BRANCH %bb.10
913 ; GCN-NEXT: {{ $}}
914 ; GCN-NEXT: bb.14:
915 ; GCN-NEXT: $exec = S_OR_B64 $exec, [[COPY]], implicit-def $scc
916 ; GCN-NEXT: S_ENDPGM 0