1# RUN: llc -march=amdgcn -mcpu=fiji -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
2# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=W32 %s
3# RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=W32 %s
4
5---
6# GCN-LABEL: name: and_execz_mov_vccz
7# GCN-NOT: S_MOV_
8# GCN-NOT: S_AND_
9# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
10name:            and_execz_mov_vccz
11body:             |
12  bb.0:
13    S_NOP 0
14
15  bb.1:
16    S_NOP 0
17
18  bb.2:
19    $sgpr0_sgpr1 = S_MOV_B64 -1
20    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
21    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
22    S_ENDPGM 0
23...
24---
25# GCN-LABEL: name: and_execz_imm_vccz
26# GCN-NOT: S_AND_
27# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
28name:            and_execz_imm_vccz
29body:             |
30  bb.0:
31    S_NOP 0
32
33  bb.1:
34    S_NOP 0
35
36  bb.2:
37    $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
38    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
39    S_ENDPGM 0
40...
41---
42# GCN-LABEL: name: and_execnz_imm_vccnz
43# GCN-NOT: S_AND_
44# GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec
45name:            and_execnz_imm_vccnz
46body:             |
47  bb.0:
48    S_NOP 0
49
50  bb.1:
51    S_NOP 0
52
53  bb.2:
54    $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
55    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
56    S_ENDPGM 0
57...
58---
59# GCN-LABEL: name: and_execz_imm_vccz_live_scc
60# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
61# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
62name:            and_execz_imm_vccz_live_scc
63body:             |
64  bb.0:
65    S_NOP 0
66
67  bb.1:
68    S_NOP 0
69
70  bb.2:
71    $vcc = S_AND_B64 $exec, -1, implicit-def $scc
72    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
73    S_ENDPGM 0
74...
75---
76# GCN-LABEL: name: and_execz_mov_vccz_live_scc
77# GCN-NOT: S_MOV_
78# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
79# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
80name:            and_execz_mov_vccz_live_scc
81body:             |
82  bb.0:
83    S_NOP 0
84
85  bb.1:
86    S_NOP 0
87
88  bb.2:
89    $sgpr0_sgpr1 = S_MOV_B64 -1
90    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc
91    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
92    S_ENDPGM 0
93...
94---
95# GCN-LABEL: name: and_execz_mov_vccz_live_sreg
96# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
97# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
98name:            and_execz_mov_vccz_live_sreg
99body:             |
100  bb.0:
101    S_NOP 0
102
103  bb.1:
104    S_NOP 0
105
106  bb.2:
107    $sgpr0_sgpr1 = S_MOV_B64 -1
108    $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
109    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
110    S_ENDPGM 0
111...
112---
113# GCN-LABEL: name: and_execz_mov_vccz_live_sreg_commute
114# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
115# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
116name:            and_execz_mov_vccz_live_sreg_commute
117body:             |
118  bb.0:
119    S_NOP 0
120
121  bb.1:
122    S_NOP 0
123
124  bb.2:
125    $sgpr0_sgpr1 = S_MOV_B64 -1
126    $vcc = S_AND_B64 $sgpr0_sgpr1, $exec, implicit-def dead $scc
127    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
128    S_ENDPGM 0
129...
130---
131# GCN-LABEL: name: and_execz_mov_vccz_live_scc_commute
132# GCN-NOT: S_MOV_
133# GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
134# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
135name:            and_execz_mov_vccz_live_scc_commute
136body:             |
137  bb.0:
138    S_NOP 0
139
140  bb.1:
141    S_NOP 0
142
143  bb.2:
144    $sgpr0_sgpr1 = S_MOV_B64 -1
145    $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def $scc
146    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
147    S_ENDPGM 0
148...
149---
150# GCN-LABEL: name: and_execz_mov_vccz_commute
151# GCN-NOT: S_MOV_
152# GCN-NOT: S_AND_
153# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
154name:            and_execz_mov_vccz_commute
155body:             |
156  bb.0:
157    S_NOP 0
158
159  bb.1:
160    S_NOP 0
161
162  bb.2:
163    $sgpr0_sgpr1 = S_MOV_B64 -1
164    $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def dead $scc
165    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
166    S_ENDPGM 0
167...
168---
169# GCN-LABEL: name: and_execz_mov_exec_vccz
170# GCN:      $exec = S_MOV_B64 -1
171# GCN-NEXT: S_ENDPGM 0
172name:            and_execz_mov_exec_vccz
173body:             |
174  bb.0:
175    S_NOP 0
176
177  bb.1:
178    S_NOP 0
179
180  bb.2:
181    $exec = S_MOV_B64 -1
182    $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
183    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
184    S_ENDPGM 0
185...
186---
187# GCN-LABEL: name: and_execz_mov_exec_vccnz
188# GCN:      $exec = S_MOV_B64 -1
189# GCN-NEXT: S_BRANCH %bb.1{{$}}
190name:            and_execz_mov_exec_vccnz
191body:             |
192  bb.0:
193    S_NOP 0
194
195  bb.1:
196    S_NOP 0
197
198  bb.2:
199    $exec = S_MOV_B64 -1
200    $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
201    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
202    S_ENDPGM 0
203...
204---
205# GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_early
206# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
207# GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1
208# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
209name:            and_execz_mov_vccz_reads_sreg_early
210body:             |
211  bb.0:
212    S_NOP 0
213
214  bb.1:
215    S_NOP 0
216
217  bb.2:
218    $sgpr0_sgpr1 = S_MOV_B64 -1
219    $sgpr2 = S_MOV_B32 $sgpr1
220    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
221    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
222    S_ENDPGM 0
223...
224---
225# GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_late
226# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
227# GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1
228# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
229name:            and_execz_mov_vccz_reads_sreg_late
230body:             |
231  bb.0:
232    S_NOP 0
233
234  bb.1:
235    S_NOP 0
236
237  bb.2:
238    $sgpr0_sgpr1 = S_MOV_B64 -1
239    $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
240    $sgpr2 = S_MOV_B32 $sgpr1
241    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
242    S_ENDPGM 0
243...
244# GCN-LABEL: name: and_execz_mov_vccz_reads_writes_sreg_early
245# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
246# GCN-NEXT: $sgpr1 = S_MOV_B32 $sgpr0
247# GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
248# GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
249name:            and_execz_mov_vccz_reads_writes_sreg_early
250body:             |
251  bb.0:
252    S_NOP 0
253
254  bb.1:
255    S_NOP 0
256
257  bb.2:
258    $sgpr0_sgpr1 = S_MOV_B64 -1
259    $sgpr1 = S_MOV_B32 $sgpr0
260    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
261    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
262    S_ENDPGM 0
263...
264---
265# GCN-LABEL: name: and_execz_mov_vccz_reads_cond
266# GCN:      $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
267# GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo
268# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
269name:            and_execz_mov_vccz_reads_cond
270body:             |
271  bb.0:
272    S_NOP 0
273
274  bb.1:
275    S_NOP 0
276
277  bb.2:
278    $sgpr0_sgpr1 = S_MOV_B64 -1
279    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
280    $sgpr2 = S_MOV_B32 $vcc_lo
281    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
282    S_ENDPGM 0
283...
284---
285# GCN-LABEL: name: and_execz_mov_vccz_modifies_sreg
286# GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
287# GCN-NEXT: $sgpr0 = S_MOV_B32 0
288# GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
289# GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
290name:            and_execz_mov_vccz_modifies_sreg
291body:             |
292  bb.0:
293    S_NOP 0
294
295  bb.1:
296    S_NOP 0
297
298  bb.2:
299    $sgpr0_sgpr1 = S_MOV_B64 -1
300    $sgpr0 = S_MOV_B32 0
301    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
302    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
303    S_ENDPGM 0
304...
305---
306# GCN-LABEL: name: and_execz_imm_vccz_liveout_scc
307# GCN:      $vcc = S_AND_B64 $exec, -1, implicit-def $scc
308# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
309# GCN-NEXT: S_ENDPGM 0, implicit $scc
310name:            and_execz_imm_vccz_liveout_scc
311body:             |
312  bb.0:
313    S_NOP 0
314
315  bb.1:
316    S_NOP 0
317
318  bb.2:
319    $vcc = S_AND_B64 $exec, -1, implicit-def $scc
320    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
321    S_ENDPGM 0, implicit $scc
322...
323---
324# W32-LABEL: name: and_execz_mov_vccz_w32
325# W32-NOT: S_MOV_
326# W32-NOT: S_AND_
327# W32: S_CBRANCH_EXECZ %bb.1, implicit $exec
328name:            and_execz_mov_vccz_w32
329body:             |
330  bb.0:
331    S_NOP 0
332
333  bb.1:
334    S_NOP 0
335
336  bb.2:
337    $sgpr0 = S_MOV_B32 -1
338    $vcc_lo = S_AND_B32 $exec_lo, killed $sgpr0, implicit-def dead $scc
339    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
340    S_ENDPGM 0
341...
342---
343# GCN-LABEL: name: andn2_execz_mov_vccz
344# GCN-NOT: S_MOV_
345# GCN-NOT: S_ANDN2_
346# GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
347name:            andn2_execz_mov_vccz
348body:             |
349  bb.0:
350    S_NOP 0
351
352  bb.1:
353    S_NOP 0
354
355  bb.2:
356    $sgpr0_sgpr1 = S_MOV_B64 0
357    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
358    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
359    S_ENDPGM 0
360...
361---
362# GCN-LABEL: name: andn2_branch_mov_vccz
363# GCN-NOT: S_MOV_
364# GCN-NOT: S_ANDN2_
365# GCN: S_BRANCH %bb.1
366name:            andn2_branch_mov_vccz
367body:             |
368  bb.0:
369    S_NOP 0
370
371  bb.1:
372    S_NOP 0
373
374  bb.2:
375    $sgpr0_sgpr1 = S_MOV_B64 -1
376    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
377    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
378    S_ENDPGM 0
379...
380---
381# GCN-LABEL: name: andn2_execnz_mov_vccnz
382# GCN-NOT: S_MOV_
383# GCN-NOT: S_ANDN2_
384# GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec
385name:            andn2_execnz_mov_vccnz
386body:             |
387  bb.0:
388    S_NOP 0
389
390  bb.1:
391    S_NOP 0
392
393  bb.2:
394    $sgpr0_sgpr1 = S_MOV_B64 0
395    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
396    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
397    S_ENDPGM 0
398...
399---
400# GCN-LABEL: name: andn2_no_branch_mov_vccnz
401# GCN-NOT: S_MOV_
402# GCN-NOT: S_ANDN2_
403# GCN-NOT: S_CBRANCH
404# GCN-NOT: S_BRANCH
405name:            andn2_no_branch_mov_vccnz
406body:             |
407  bb.0:
408    S_NOP 0
409
410  bb.1:
411    S_NOP 0
412
413  bb.2:
414    $sgpr0_sgpr1 = S_MOV_B64 -1
415    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
416    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
417    S_ENDPGM 0
418...
419---
420# GCN-LABEL: name: and_0_mov
421# GCN: bb.2:
422# GCN-NOT: S_AND
423# GCN: $vcc = S_MOV_B64 0
424# GCN-NEXT: S_BRANCH %bb.1
425name:            and_0_mov
426body:             |
427  bb.0:
428    S_NOP 0
429
430  bb.1:
431    S_NOP 0
432
433  bb.2:
434    $sgpr0_sgpr1 = S_MOV_B64 0
435    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
436    S_CBRANCH_VCCZ %bb.1, implicit $vcc
437    S_ENDPGM 0
438...
439---
440# GCN-LABEL: name: andn2_m1_mov
441# GCN: bb.2:
442# GCN-NOT: S_ANDN2
443# GCN: $vcc = S_MOV_B64 0
444# GCN-NEXT: S_BRANCH %bb.1
445name:            andn2_m1_mov
446body:             |
447  bb.0:
448    S_NOP 0
449
450  bb.1:
451    S_NOP 0
452
453  bb.2:
454    $sgpr0_sgpr1 = S_MOV_B64 -1
455    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
456    S_CBRANCH_VCCZ %bb.1, implicit $vcc
457    S_ENDPGM 0
458...
459---
460# GCN-LABEL: name: and_m1_mov
461# GCN: bb.2:
462# GCN-NOT: S_AND
463# GCN: $vcc = S_MOV_B64 $exec
464# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
465name:            and_m1_mov
466body:             |
467  bb.0:
468    S_NOP 0
469
470  bb.1:
471    S_NOP 0
472
473  bb.2:
474    $sgpr0_sgpr1 = S_MOV_B64 -1
475    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
476    S_CBRANCH_VCCZ %bb.1, implicit $vcc
477    S_ENDPGM 0
478...
479---
480# GCN-LABEL: name: andn2_0_mov
481# GCN: bb.2:
482# GCN-NOT: S_ANDN2
483# GCN: $vcc = S_MOV_B64 $exec
484# GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
485name:            andn2_0_mov
486body:             |
487  bb.0:
488    S_NOP 0
489
490  bb.1:
491    S_NOP 0
492
493  bb.2:
494    $sgpr0_sgpr1 = S_MOV_B64 0
495    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
496    S_CBRANCH_VCCZ %bb.1, implicit $vcc
497    S_ENDPGM 0
498...
499---
500# GCN-LABEL: name: and_0_scc_req
501# GCN: bb.2:
502# GCN-NOT: S_MOV_
503# GCN: S_AND_
504# GCN-NEXT: S_BRANCH %bb.1
505name:            and_0_scc_req
506body:             |
507  bb.0:
508    S_NOP 0
509
510  bb.1:
511    S_NOP 0
512
513  bb.2:
514    $sgpr0_sgpr1 = S_MOV_B64 0
515    $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc
516    S_CBRANCH_VCCZ %bb.1, implicit $vcc
517    S_ENDPGM 0
518...
519---
520# GCN-LABEL: name: andn2_m1_scc_req
521# GCN: bb.2:
522# GCN-NOT: S_MOV_
523# GCN: S_ANDN2_
524# GCN-NEXT: S_BRANCH %bb.1
525name:            andn2_m1_scc_req
526body:             |
527  bb.0:
528    S_NOP 0
529
530  bb.1:
531    S_NOP 0
532
533  bb.2:
534    $sgpr0_sgpr1 = S_MOV_B64 -1
535    $vcc = S_ANDN2_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc
536    S_CBRANCH_VCCZ %bb.1, implicit $vcc
537    S_ENDPGM 0
538...
539---
540# GCN-LABEL: name: and_cmp_vccz
541# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
542# GCN-NOT: S_AND_
543# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
544name:            and_cmp_vccz
545body:             |
546  bb.0:
547    S_NOP 0
548
549  bb.1:
550    S_NOP 0
551
552  bb.2:
553    V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
554    $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
555    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
556    S_ENDPGM 0
557...
558---
559# GCN-LABEL: name: and_cmp_vccnz
560# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
561# GCN-NOT: S_AND_
562# GCN: S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
563name:            and_cmp_vccnz
564body:             |
565  bb.0:
566    S_NOP 0
567
568  bb.1:
569    S_NOP 0
570
571  bb.2:
572    V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
573    $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
574    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
575    S_ENDPGM 0
576...
577---
578# GCN-LABEL: name: andn2_cmp_vccz
579# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
580# GCN: $vcc = S_ANDN2_B64 $exec, $vcc, implicit-def dead $scc
581# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
582name:            andn2_cmp_vccz
583body:             |
584  bb.0:
585    S_NOP 0
586
587  bb.1:
588    S_NOP 0
589
590  bb.2:
591    V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
592    $vcc = S_ANDN2_B64 $exec, $vcc, implicit-def dead $scc
593    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
594    S_ENDPGM 0
595...
596---
597# GCN-LABEL: name: and_cmpclass_vccz
598# GCN: V_CMP_CLASS_F32_e32 killed $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec
599# GCN-NOT: S_AND_
600# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
601name:            and_cmpclass_vccz
602body:             |
603  bb.0:
604    S_NOP 0
605
606  bb.1:
607    S_NOP 0
608
609  bb.2:
610    V_CMP_CLASS_F32_e32 killed $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec
611    $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
612    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
613    S_ENDPGM 0
614...
615---
616# GCN-LABEL: name: and_cmpx_vccz
617# GCN: V_CMPX_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit-def $exec, implicit $exec
618# GCN-NOT: S_AND_
619# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
620name:            and_cmpx_vccz
621body:             |
622  bb.0:
623    S_NOP 0
624
625  bb.1:
626    S_NOP 0
627
628  bb.2:
629    V_CMPX_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit-def $exec, implicit $exec
630    $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
631    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
632    S_ENDPGM 0
633...
634---
635# GCN-LABEL: name: and_or_cmp_vccz
636# GCN: V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
637# GCN: $exec = S_OR_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
638# GCN: $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
639# GCN: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
640name:            and_or_cmp_vccz
641body:             |
642  bb.0:
643    S_NOP 0
644
645  bb.1:
646    S_NOP 0
647
648  bb.2:
649    V_CMP_EQ_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec
650    $exec = S_OR_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
651    $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc
652    S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
653    S_ENDPGM 0
654...
655