1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=peephole-opt --verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
3
4---
5name:            and_1_cmp_eq_u32_1
6body:             |
7  ; GCN-LABEL: name: and_1_cmp_eq_u32_1
8  ; GCN: bb.0:
9  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
10  ; GCN-NEXT: {{  $}}
11  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
12  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
13  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
14  ; GCN-NEXT:   S_BRANCH %bb.1
15  ; GCN-NEXT: {{  $}}
16  ; GCN-NEXT: bb.1:
17  ; GCN-NEXT:   successors: %bb.2(0x80000000)
18  ; GCN-NEXT: {{  $}}
19  ; GCN-NEXT: {{  $}}
20  ; GCN-NEXT: bb.2:
21  ; GCN-NEXT:   S_ENDPGM 0
22  bb.0:
23    successors: %bb.1(0x40000000), %bb.2(0x40000000)
24    liveins: $sgpr0, $vgpr0_vgpr1
25
26    %0:sreg_32 = COPY $sgpr0
27    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
28    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
29    S_CBRANCH_SCC0 %bb.2, implicit $scc
30    S_BRANCH %bb.1
31
32  bb.1:
33    successors: %bb.2(0x80000000)
34
35  bb.2:
36    S_ENDPGM 0
37
38...
39
40---
41name:            and_1_cmp_eq_u32_1_used_and
42body:             |
43  ; GCN-LABEL: name: and_1_cmp_eq_u32_1_used_and
44  ; GCN: bb.0:
45  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
46  ; GCN-NEXT: {{  $}}
47  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
48  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def $scc
49  ; GCN-NEXT:   S_NOP 0, implicit [[S_AND_B32_]]
50  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
51  ; GCN-NEXT:   S_BRANCH %bb.1
52  ; GCN-NEXT: {{  $}}
53  ; GCN-NEXT: bb.1:
54  ; GCN-NEXT:   successors: %bb.2(0x80000000)
55  ; GCN-NEXT: {{  $}}
56  ; GCN-NEXT: {{  $}}
57  ; GCN-NEXT: bb.2:
58  ; GCN-NEXT:   S_ENDPGM 0
59  bb.0:
60    successors: %bb.1(0x40000000), %bb.2(0x40000000)
61    liveins: $sgpr0, $vgpr0_vgpr1
62
63    %0:sreg_32 = COPY $sgpr0
64    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
65    S_NOP 0, implicit %1
66    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
67    S_CBRANCH_SCC0 %bb.2, implicit $scc
68    S_BRANCH %bb.1
69
70  bb.1:
71    successors: %bb.2(0x80000000)
72
73  bb.2:
74    S_ENDPGM 0
75
76...
77
78---
79name:            and_1_cmp_eq_i32_1
80body:             |
81  ; GCN-LABEL: name: and_1_cmp_eq_i32_1
82  ; GCN: bb.0:
83  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
84  ; GCN-NEXT: {{  $}}
85  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
86  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
87  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
88  ; GCN-NEXT:   S_BRANCH %bb.1
89  ; GCN-NEXT: {{  $}}
90  ; GCN-NEXT: bb.1:
91  ; GCN-NEXT:   successors: %bb.2(0x80000000)
92  ; GCN-NEXT: {{  $}}
93  ; GCN-NEXT: {{  $}}
94  ; GCN-NEXT: bb.2:
95  ; GCN-NEXT:   S_ENDPGM 0
96  bb.0:
97    successors: %bb.1(0x40000000), %bb.2(0x40000000)
98    liveins: $sgpr0, $vgpr0_vgpr1
99
100    %0:sreg_32 = COPY $sgpr0
101    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
102    S_CMP_EQ_I32 killed %1:sreg_32, 1, implicit-def $scc
103    S_CBRANCH_SCC0 %bb.2, implicit $scc
104    S_BRANCH %bb.1
105
106  bb.1:
107    successors: %bb.2(0x80000000)
108
109  bb.2:
110    S_ENDPGM 0
111
112...
113
114---
115name:            and_1_cmp_eq_i32_1_phys
116body:             |
117  ; GCN-LABEL: name: and_1_cmp_eq_i32_1_phys
118  ; GCN: bb.0:
119  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
120  ; GCN-NEXT: {{  $}}
121  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
122  ; GCN-NEXT:   $sgpr2 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
123  ; GCN-NEXT:   S_CMP_EQ_I32 killed $sgpr2, 1, implicit-def $scc
124  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
125  ; GCN-NEXT:   S_BRANCH %bb.1
126  ; GCN-NEXT: {{  $}}
127  ; GCN-NEXT: bb.1:
128  ; GCN-NEXT:   successors: %bb.2(0x80000000)
129  ; GCN-NEXT: {{  $}}
130  ; GCN-NEXT: {{  $}}
131  ; GCN-NEXT: bb.2:
132  ; GCN-NEXT:   S_ENDPGM 0
133  bb.0:
134    successors: %bb.1(0x40000000), %bb.2(0x40000000)
135    liveins: $sgpr0, $vgpr0_vgpr1
136
137    %0:sreg_32 = COPY $sgpr0
138    $sgpr2 = S_AND_B32 1, killed %0, implicit-def dead $scc
139    S_CMP_EQ_I32 killed $sgpr2, 1, implicit-def $scc
140    S_CBRANCH_SCC0 %bb.2, implicit $scc
141    S_BRANCH %bb.1
142
143  bb.1:
144    successors: %bb.2(0x80000000)
145
146  bb.2:
147    S_ENDPGM 0
148
149...
150
151---
152name:            and_1_cmp_eq_i32_1_different_blocks
153body:             |
154  ; GCN-LABEL: name: and_1_cmp_eq_i32_1_different_blocks
155  ; GCN: bb.0:
156  ; GCN-NEXT:   successors: %bb.1(0x80000000)
157  ; GCN-NEXT: {{  $}}
158  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
159  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
160  ; GCN-NEXT: {{  $}}
161  ; GCN-NEXT: bb.1:
162  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
163  ; GCN-NEXT: {{  $}}
164  ; GCN-NEXT:   S_CMP_EQ_I32 [[S_AND_B32_]], 1, implicit-def $scc
165  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
166  ; GCN-NEXT:   S_BRANCH %bb.1
167  ; GCN-NEXT: {{  $}}
168  ; GCN-NEXT: bb.2:
169  ; GCN-NEXT:   successors: %bb.3(0x80000000)
170  ; GCN-NEXT: {{  $}}
171  ; GCN-NEXT: {{  $}}
172  ; GCN-NEXT: bb.3:
173  ; GCN-NEXT:   S_ENDPGM 0
174  bb.0:
175    liveins: $sgpr0, $vgpr0_vgpr1
176    successors: %bb.1(0x80000000)
177
178    %0:sreg_32 = COPY $sgpr0
179    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
180
181  bb.1:
182    successors: %bb.2(0x40000000), %bb.1(0x40000000)
183
184    S_CMP_EQ_I32 %1:sreg_32, 1, implicit-def $scc
185    S_CBRANCH_SCC0 %bb.2, implicit $scc
186    S_BRANCH %bb.1
187
188  bb.2:
189    successors: %bb.3(0x80000000)
190
191  bb.3:
192    S_ENDPGM 0
193
194...
195
196---
197name:            and_3_cmp_eq_1
198body:             |
199  ; GCN-LABEL: name: and_3_cmp_eq_1
200  ; GCN: bb.0:
201  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
202  ; GCN-NEXT: {{  $}}
203  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
204  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 3, killed [[COPY]], implicit-def dead $scc
205  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
206  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
207  ; GCN-NEXT:   S_BRANCH %bb.1
208  ; GCN-NEXT: {{  $}}
209  ; GCN-NEXT: bb.1:
210  ; GCN-NEXT:   successors: %bb.2(0x80000000)
211  ; GCN-NEXT: {{  $}}
212  ; GCN-NEXT: {{  $}}
213  ; GCN-NEXT: bb.2:
214  ; GCN-NEXT:   S_ENDPGM 0
215  bb.0:
216    successors: %bb.1(0x40000000), %bb.2(0x40000000)
217    liveins: $sgpr0, $vgpr0_vgpr1
218
219    %0:sreg_32 = COPY $sgpr0
220    %1:sreg_32 = S_AND_B32 3, killed %0, implicit-def dead $scc
221    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
222    S_CBRANCH_SCC0 %bb.2, implicit $scc
223    S_BRANCH %bb.1
224
225  bb.1:
226    successors: %bb.2(0x80000000)
227
228  bb.2:
229    S_ENDPGM 0
230
231...
232
233---
234name:            commuted_and_1_cmp_eq_1
235body:             |
236  ; GCN-LABEL: name: commuted_and_1_cmp_eq_1
237  ; GCN: bb.0:
238  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
239  ; GCN-NEXT: {{  $}}
240  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
241  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
242  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
243  ; GCN-NEXT:   S_BRANCH %bb.1
244  ; GCN-NEXT: {{  $}}
245  ; GCN-NEXT: bb.1:
246  ; GCN-NEXT:   successors: %bb.2(0x80000000)
247  ; GCN-NEXT: {{  $}}
248  ; GCN-NEXT: {{  $}}
249  ; GCN-NEXT: bb.2:
250  ; GCN-NEXT:   S_ENDPGM 0
251  bb.0:
252    successors: %bb.1(0x40000000), %bb.2(0x40000000)
253    liveins: $sgpr0, $vgpr0_vgpr1
254
255    %0:sreg_32 = COPY $sgpr0
256    %1:sreg_32 = S_AND_B32 killed %0, 1, implicit-def dead $scc
257    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
258    S_CBRANCH_SCC0 %bb.2, implicit $scc
259    S_BRANCH %bb.1
260
261  bb.1:
262    successors: %bb.2(0x80000000)
263
264  bb.2:
265    S_ENDPGM 0
266
267...
268
269---
270name:            cmp_eq_1_undef_src
271body:             |
272  ; GCN-LABEL: name: cmp_eq_1_undef_src
273  ; GCN: bb.0:
274  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
275  ; GCN-NEXT: {{  $}}
276  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
277  ; GCN-NEXT:   S_CMP_EQ_U32 undef %1:sreg_32, 1, implicit-def $scc
278  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
279  ; GCN-NEXT:   S_BRANCH %bb.1
280  ; GCN-NEXT: {{  $}}
281  ; GCN-NEXT: bb.1:
282  ; GCN-NEXT:   successors: %bb.2(0x80000000)
283  ; GCN-NEXT: {{  $}}
284  ; GCN-NEXT: {{  $}}
285  ; GCN-NEXT: bb.2:
286  ; GCN-NEXT:   S_ENDPGM 0
287  bb.0:
288    successors: %bb.1(0x40000000), %bb.2(0x40000000)
289    liveins: $sgpr0, $vgpr0_vgpr1
290
291    %0:sreg_32 = COPY $sgpr0
292    S_CMP_EQ_U32 undef %1:sreg_32, 1, implicit-def $scc
293    S_CBRANCH_SCC0 %bb.2, implicit $scc
294    S_BRANCH %bb.1
295
296  bb.1:
297    successors: %bb.2(0x80000000)
298
299  bb.2:
300    S_ENDPGM 0
301
302...
303
304---
305name:            and_1_cmp_subreg0_eq_1
306body:             |
307  ; GCN-LABEL: name: and_1_cmp_subreg0_eq_1
308  ; GCN: bb.0:
309  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
310  ; GCN-NEXT: {{  $}}
311  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
312  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
313  ; GCN-NEXT:   [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[S_AND_B32_]], %subreg.sub1
314  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[REG_SEQUENCE]].sub0, 1, implicit-def $scc
315  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
316  ; GCN-NEXT:   S_BRANCH %bb.1
317  ; GCN-NEXT: {{  $}}
318  ; GCN-NEXT: bb.1:
319  ; GCN-NEXT:   successors: %bb.2(0x80000000)
320  ; GCN-NEXT: {{  $}}
321  ; GCN-NEXT: {{  $}}
322  ; GCN-NEXT: bb.2:
323  ; GCN-NEXT:   S_ENDPGM 0
324  bb.0:
325    successors: %bb.1(0x40000000), %bb.2(0x40000000)
326    liveins: $sgpr0, $vgpr0_vgpr1
327
328    %0:sreg_32 = COPY $sgpr0
329    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
330    %2:sreg_64 = REG_SEQUENCE %1, %subreg.sub0, %1, %subreg.sub1
331    S_CMP_EQ_U32 killed %2.sub0:sreg_64, 1, implicit-def $scc
332    S_CBRANCH_SCC0 %bb.2, implicit $scc
333    S_BRANCH %bb.1
334
335  bb.1:
336    successors: %bb.2(0x80000000)
337
338  bb.2:
339    S_ENDPGM 0
340
341...
342
343---
344name:            and_reg_cmp_eq_1
345body:             |
346  ; GCN-LABEL: name: and_reg_cmp_eq_1
347  ; GCN: bb.0:
348  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
349  ; GCN-NEXT: {{  $}}
350  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
351  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
352  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[COPY]], killed [[COPY1]], implicit-def dead $scc
353  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
354  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
355  ; GCN-NEXT:   S_BRANCH %bb.1
356  ; GCN-NEXT: {{  $}}
357  ; GCN-NEXT: bb.1:
358  ; GCN-NEXT:   successors: %bb.2(0x80000000)
359  ; GCN-NEXT: {{  $}}
360  ; GCN-NEXT: {{  $}}
361  ; GCN-NEXT: bb.2:
362  ; GCN-NEXT:   S_ENDPGM 0
363  bb.0:
364    successors: %bb.1(0x40000000), %bb.2(0x40000000)
365    liveins: $sgpr0, $sgpr1, $vgpr0_vgpr1
366
367    %0:sreg_32 = COPY $sgpr0
368    %1:sreg_32 = COPY $sgpr1
369    %2:sreg_32 = S_AND_B32 killed %0, killed %1, implicit-def dead $scc
370    S_CMP_EQ_U32 killed %2:sreg_32, 1, implicit-def $scc
371    S_CBRANCH_SCC0 %bb.2, implicit $scc
372    S_BRANCH %bb.1
373
374  bb.1:
375    successors: %bb.2(0x80000000)
376
377  bb.2:
378    S_ENDPGM 0
379
380...
381
382---
383name:            and_1_cmp_eq_1_killed_scc
384body:             |
385  ; GCN-LABEL: name: and_1_cmp_eq_1_killed_scc
386  ; GCN: bb.0:
387  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
388  ; GCN-NEXT: {{  $}}
389  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
390  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def $scc
391  ; GCN-NEXT:   S_NOP 0, implicit killed $scc
392  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
393  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
394  ; GCN-NEXT:   S_BRANCH %bb.1
395  ; GCN-NEXT: {{  $}}
396  ; GCN-NEXT: bb.1:
397  ; GCN-NEXT:   successors: %bb.2(0x80000000)
398  ; GCN-NEXT: {{  $}}
399  ; GCN-NEXT: {{  $}}
400  ; GCN-NEXT: bb.2:
401  ; GCN-NEXT:   S_ENDPGM 0
402  bb.0:
403    successors: %bb.1(0x40000000), %bb.2(0x40000000)
404    liveins: $sgpr0, $vgpr0_vgpr1
405
406    %0:sreg_32 = COPY $sgpr0
407    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def $scc
408    S_NOP 0, implicit killed $scc
409    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
410    S_CBRANCH_SCC0 %bb.2, implicit $scc
411    S_BRANCH %bb.1
412
413  bb.1:
414    successors: %bb.2(0x80000000)
415
416  bb.2:
417    S_ENDPGM 0
418
419...
420
421---
422name:            and_1_cmp_eq_1_clobbered_scc
423body:             |
424  ; GCN-LABEL: name: and_1_cmp_eq_1_clobbered_scc
425  ; GCN: bb.0:
426  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
427  ; GCN-NEXT: {{  $}}
428  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
429  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def $scc
430  ; GCN-NEXT:   S_NOP 0, implicit-def $scc
431  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
432  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
433  ; GCN-NEXT:   S_BRANCH %bb.1
434  ; GCN-NEXT: {{  $}}
435  ; GCN-NEXT: bb.1:
436  ; GCN-NEXT:   successors: %bb.2(0x80000000)
437  ; GCN-NEXT: {{  $}}
438  ; GCN-NEXT: {{  $}}
439  ; GCN-NEXT: bb.2:
440  ; GCN-NEXT:   S_ENDPGM 0
441  bb.0:
442    successors: %bb.1(0x40000000), %bb.2(0x40000000)
443    liveins: $sgpr0, $vgpr0_vgpr1
444
445    %0:sreg_32 = COPY $sgpr0
446    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def $scc
447    S_NOP 0, implicit-def $scc
448    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
449    S_CBRANCH_SCC0 %bb.2, implicit $scc
450    S_BRANCH %bb.1
451
452  bb.1:
453    successors: %bb.2(0x80000000)
454
455  bb.2:
456    S_ENDPGM 0
457
458...
459
460---
461name:            and_1_cmp_eq_2
462body:             |
463  ; GCN-LABEL: name: and_1_cmp_eq_2
464  ; GCN: bb.0:
465  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
466  ; GCN-NEXT: {{  $}}
467  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
468  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
469  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 2, implicit-def $scc
470  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
471  ; GCN-NEXT:   S_BRANCH %bb.1
472  ; GCN-NEXT: {{  $}}
473  ; GCN-NEXT: bb.1:
474  ; GCN-NEXT:   successors: %bb.2(0x80000000)
475  ; GCN-NEXT: {{  $}}
476  ; GCN-NEXT: {{  $}}
477  ; GCN-NEXT: bb.2:
478  ; GCN-NEXT:   S_ENDPGM 0
479  bb.0:
480    successors: %bb.1(0x40000000), %bb.2(0x40000000)
481    liveins: $sgpr0, $vgpr0_vgpr1
482
483    %0:sreg_32 = COPY $sgpr0
484    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
485    S_CMP_EQ_U32 killed %1:sreg_32, 2, implicit-def $scc
486    S_CBRANCH_SCC0 %bb.2, implicit $scc
487    S_BRANCH %bb.1
488
489  bb.1:
490    successors: %bb.2(0x80000000)
491
492  bb.2:
493    S_ENDPGM 0
494
495...
496
497---
498name:            or_1_cmp_eq_u32_1
499body:             |
500  ; GCN-LABEL: name: or_1_cmp_eq_u32_1
501  ; GCN: bb.0:
502  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
503  ; GCN-NEXT: {{  $}}
504  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
505  ; GCN-NEXT:   [[S_OR_B32_:%[0-9]+]]:sreg_32 = S_OR_B32 1, killed [[COPY]], implicit-def dead $scc
506  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_OR_B32_]], 1, implicit-def $scc
507  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
508  ; GCN-NEXT:   S_BRANCH %bb.1
509  ; GCN-NEXT: {{  $}}
510  ; GCN-NEXT: bb.1:
511  ; GCN-NEXT:   successors: %bb.2(0x80000000)
512  ; GCN-NEXT: {{  $}}
513  ; GCN-NEXT: {{  $}}
514  ; GCN-NEXT: bb.2:
515  ; GCN-NEXT:   S_ENDPGM 0
516  bb.0:
517    successors: %bb.1(0x40000000), %bb.2(0x40000000)
518    liveins: $sgpr0, $vgpr0_vgpr1
519
520    %0:sreg_32 = COPY $sgpr0
521    %1:sreg_32 = S_OR_B32 1, killed %0, implicit-def dead $scc
522    S_CMP_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
523    S_CBRANCH_SCC0 %bb.2, implicit $scc
524    S_BRANCH %bb.1
525
526  bb.1:
527    successors: %bb.2(0x80000000)
528
529  bb.2:
530    S_ENDPGM 0
531
532...
533
534---
535name:            and_1_cmp_ge_u32_1
536body:             |
537  ; GCN-LABEL: name: and_1_cmp_ge_u32_1
538  ; GCN: bb.0:
539  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
540  ; GCN-NEXT: {{  $}}
541  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
542  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
543  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
544  ; GCN-NEXT:   S_BRANCH %bb.1
545  ; GCN-NEXT: {{  $}}
546  ; GCN-NEXT: bb.1:
547  ; GCN-NEXT:   successors: %bb.2(0x80000000)
548  ; GCN-NEXT: {{  $}}
549  ; GCN-NEXT: {{  $}}
550  ; GCN-NEXT: bb.2:
551  ; GCN-NEXT:   S_ENDPGM 0
552  bb.0:
553    successors: %bb.1(0x40000000), %bb.2(0x40000000)
554    liveins: $sgpr0, $vgpr0_vgpr1
555
556    %0:sreg_32 = COPY $sgpr0
557    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
558    S_CMP_GE_U32 killed %1:sreg_32, 1, implicit-def $scc
559    S_CBRANCH_SCC0 %bb.2, implicit $scc
560    S_BRANCH %bb.1
561
562  bb.1:
563    successors: %bb.2(0x80000000)
564
565  bb.2:
566    S_ENDPGM 0
567
568...
569
570---
571name:            and_1_cmp_ge_i32_1
572body:             |
573  ; GCN-LABEL: name: and_1_cmp_ge_i32_1
574  ; GCN: bb.0:
575  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
576  ; GCN-NEXT: {{  $}}
577  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
578  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
579  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
580  ; GCN-NEXT:   S_BRANCH %bb.1
581  ; GCN-NEXT: {{  $}}
582  ; GCN-NEXT: bb.1:
583  ; GCN-NEXT:   successors: %bb.2(0x80000000)
584  ; GCN-NEXT: {{  $}}
585  ; GCN-NEXT: {{  $}}
586  ; GCN-NEXT: bb.2:
587  ; GCN-NEXT:   S_ENDPGM 0
588  bb.0:
589    successors: %bb.1(0x40000000), %bb.2(0x40000000)
590    liveins: $sgpr0, $vgpr0_vgpr1
591
592    %0:sreg_32 = COPY $sgpr0
593    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
594    S_CMP_GE_I32 killed %1:sreg_32, 1, implicit-def $scc
595    S_CBRANCH_SCC0 %bb.2, implicit $scc
596    S_BRANCH %bb.1
597
598  bb.1:
599    successors: %bb.2(0x80000000)
600
601  bb.2:
602    S_ENDPGM 0
603
604...
605
606---
607name:            and_1_cmp_gt_u32_0
608body:             |
609  ; GCN-LABEL: name: and_1_cmp_gt_u32_0
610  ; GCN: bb.0:
611  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
612  ; GCN-NEXT: {{  $}}
613  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
614  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
615  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
616  ; GCN-NEXT:   S_BRANCH %bb.1
617  ; GCN-NEXT: {{  $}}
618  ; GCN-NEXT: bb.1:
619  ; GCN-NEXT:   successors: %bb.2(0x80000000)
620  ; GCN-NEXT: {{  $}}
621  ; GCN-NEXT: {{  $}}
622  ; GCN-NEXT: bb.2:
623  ; GCN-NEXT:   S_ENDPGM 0
624  bb.0:
625    successors: %bb.1(0x40000000), %bb.2(0x40000000)
626    liveins: $sgpr0, $vgpr0_vgpr1
627
628    %0:sreg_32 = COPY $sgpr0
629    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
630    S_CMP_GT_U32 killed %1:sreg_32, 0, implicit-def $scc
631    S_CBRANCH_SCC0 %bb.2, implicit $scc
632    S_BRANCH %bb.1
633
634  bb.1:
635    successors: %bb.2(0x80000000)
636
637  bb.2:
638    S_ENDPGM 0
639
640...
641
642---
643name:            and_1_cmp_gt_i32_0
644body:             |
645  ; GCN-LABEL: name: and_1_cmp_gt_i32_0
646  ; GCN: bb.0:
647  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
648  ; GCN-NEXT: {{  $}}
649  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
650  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
651  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
652  ; GCN-NEXT:   S_BRANCH %bb.1
653  ; GCN-NEXT: {{  $}}
654  ; GCN-NEXT: bb.1:
655  ; GCN-NEXT:   successors: %bb.2(0x80000000)
656  ; GCN-NEXT: {{  $}}
657  ; GCN-NEXT: {{  $}}
658  ; GCN-NEXT: bb.2:
659  ; GCN-NEXT:   S_ENDPGM 0
660  bb.0:
661    successors: %bb.1(0x40000000), %bb.2(0x40000000)
662    liveins: $sgpr0, $vgpr0_vgpr1
663
664    %0:sreg_32 = COPY $sgpr0
665    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
666    S_CMP_GT_U32 killed %1:sreg_32, 0, implicit-def $scc
667    S_CBRANCH_SCC0 %bb.2, implicit $scc
668    S_BRANCH %bb.1
669
670  bb.1:
671    successors: %bb.2(0x80000000)
672
673  bb.2:
674    S_ENDPGM 0
675
676...
677
678---
679name:            and_1_cmp_gt_1
680body:             |
681  ; GCN-LABEL: name: and_1_cmp_gt_1
682  ; GCN: bb.0:
683  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
684  ; GCN-NEXT: {{  $}}
685  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
686  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
687  ; GCN-NEXT:   S_CMP_GT_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
688  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
689  ; GCN-NEXT:   S_BRANCH %bb.1
690  ; GCN-NEXT: {{  $}}
691  ; GCN-NEXT: bb.1:
692  ; GCN-NEXT:   successors: %bb.2(0x80000000)
693  ; GCN-NEXT: {{  $}}
694  ; GCN-NEXT: {{  $}}
695  ; GCN-NEXT: bb.2:
696  ; GCN-NEXT:   S_ENDPGM 0
697  bb.0:
698    successors: %bb.1(0x40000000), %bb.2(0x40000000)
699    liveins: $sgpr0, $vgpr0_vgpr1
700
701    %0:sreg_32 = COPY $sgpr0
702    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
703    S_CMP_GT_U32 killed %1:sreg_32, 1, implicit-def $scc
704    S_CBRANCH_SCC0 %bb.2, implicit $scc
705    S_BRANCH %bb.1
706
707  bb.1:
708    successors: %bb.2(0x80000000)
709
710  bb.2:
711    S_ENDPGM 0
712
713...
714
715---
716name:            and_1_cmp_lg_u32_0
717body:             |
718  ; GCN-LABEL: name: and_1_cmp_lg_u32_0
719  ; GCN: bb.0:
720  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
721  ; GCN-NEXT: {{  $}}
722  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
723  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
724  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
725  ; GCN-NEXT:   S_BRANCH %bb.1
726  ; GCN-NEXT: {{  $}}
727  ; GCN-NEXT: bb.1:
728  ; GCN-NEXT:   successors: %bb.2(0x80000000)
729  ; GCN-NEXT: {{  $}}
730  ; GCN-NEXT: {{  $}}
731  ; GCN-NEXT: bb.2:
732  ; GCN-NEXT:   S_ENDPGM 0
733  bb.0:
734    successors: %bb.1(0x40000000), %bb.2(0x40000000)
735    liveins: $sgpr0, $vgpr0_vgpr1
736
737    %0:sreg_32 = COPY $sgpr0
738    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
739    S_CMP_LG_U32 killed %1:sreg_32, 0, implicit-def $scc
740    S_CBRANCH_SCC0 %bb.2, implicit $scc
741    S_BRANCH %bb.1
742
743  bb.1:
744    successors: %bb.2(0x80000000)
745
746  bb.2:
747    S_ENDPGM 0
748
749...
750
751---
752name:            and_1_cmp_lg_i32_0
753body:             |
754  ; GCN-LABEL: name: and_1_cmp_lg_i32_0
755  ; GCN: bb.0:
756  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
757  ; GCN-NEXT: {{  $}}
758  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
759  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
760  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
761  ; GCN-NEXT:   S_BRANCH %bb.1
762  ; GCN-NEXT: {{  $}}
763  ; GCN-NEXT: bb.1:
764  ; GCN-NEXT:   successors: %bb.2(0x80000000)
765  ; GCN-NEXT: {{  $}}
766  ; GCN-NEXT: {{  $}}
767  ; GCN-NEXT: bb.2:
768  ; GCN-NEXT:   S_ENDPGM 0
769  bb.0:
770    successors: %bb.1(0x40000000), %bb.2(0x40000000)
771    liveins: $sgpr0, $vgpr0_vgpr1
772
773    %0:sreg_32 = COPY $sgpr0
774    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
775    S_CMP_LG_I32 killed %1:sreg_32, 0, implicit-def $scc
776    S_CBRANCH_SCC0 %bb.2, implicit $scc
777    S_BRANCH %bb.1
778
779  bb.1:
780    successors: %bb.2(0x80000000)
781
782  bb.2:
783    S_ENDPGM 0
784
785...
786
787---
788name:            and_1_cmp_eq_u64_1
789body:             |
790  ; GCN-LABEL: name: and_1_cmp_eq_u64_1
791  ; GCN: bb.0:
792  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
793  ; GCN-NEXT: {{  $}}
794  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
795  ; GCN-NEXT:   S_BITCMP1_B64 killed [[COPY]], 0, implicit-def $scc
796  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
797  ; GCN-NEXT:   S_BRANCH %bb.1
798  ; GCN-NEXT: {{  $}}
799  ; GCN-NEXT: bb.1:
800  ; GCN-NEXT:   successors: %bb.2(0x80000000)
801  ; GCN-NEXT: {{  $}}
802  ; GCN-NEXT: {{  $}}
803  ; GCN-NEXT: bb.2:
804  ; GCN-NEXT:   S_ENDPGM 0
805  bb.0:
806    successors: %bb.1(0x40000000), %bb.2(0x40000000)
807    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
808
809    %0:sreg_64 = COPY $sgpr0_sgpr1
810    %1:sreg_64 = S_AND_B64 1, killed %0, implicit-def dead $scc
811    S_CMP_EQ_U64 killed %1:sreg_64, 1, implicit-def $scc
812    S_CBRANCH_SCC0 %bb.2, implicit $scc
813    S_BRANCH %bb.1
814
815  bb.1:
816    successors: %bb.2(0x80000000)
817
818  bb.2:
819    S_ENDPGM 0
820
821...
822
823---
824name:            and_1_cmp_lg_u64_0
825body:             |
826  ; GCN-LABEL: name: and_1_cmp_lg_u64_0
827  ; GCN: bb.0:
828  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
829  ; GCN-NEXT: {{  $}}
830  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
831  ; GCN-NEXT:   S_BITCMP1_B64 killed [[COPY]], 0, implicit-def $scc
832  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
833  ; GCN-NEXT:   S_BRANCH %bb.1
834  ; GCN-NEXT: {{  $}}
835  ; GCN-NEXT: bb.1:
836  ; GCN-NEXT:   successors: %bb.2(0x80000000)
837  ; GCN-NEXT: {{  $}}
838  ; GCN-NEXT: {{  $}}
839  ; GCN-NEXT: bb.2:
840  ; GCN-NEXT:   S_ENDPGM 0
841  bb.0:
842    successors: %bb.1(0x40000000), %bb.2(0x40000000)
843    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
844
845    %0:sreg_64 = COPY $sgpr0_sgpr1
846    %1:sreg_64 = S_AND_B64 1, killed %0, implicit-def dead $scc
847    S_CMP_LG_U64 killed %1:sreg_64, 0, implicit-def $scc
848    S_CBRANCH_SCC0 %bb.2, implicit $scc
849    S_BRANCH %bb.1
850
851  bb.1:
852    successors: %bb.2(0x80000000)
853
854  bb.2:
855    S_ENDPGM 0
856
857...
858
859---
860name:            and_1_cmpk_eq_u32_1
861body:             |
862  ; GCN-LABEL: name: and_1_cmpk_eq_u32_1
863  ; GCN: bb.0:
864  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
865  ; GCN-NEXT: {{  $}}
866  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
867  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
868  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
869  ; GCN-NEXT:   S_BRANCH %bb.1
870  ; GCN-NEXT: {{  $}}
871  ; GCN-NEXT: bb.1:
872  ; GCN-NEXT:   successors: %bb.2(0x80000000)
873  ; GCN-NEXT: {{  $}}
874  ; GCN-NEXT: {{  $}}
875  ; GCN-NEXT: bb.2:
876  ; GCN-NEXT:   S_ENDPGM 0
877  bb.0:
878    successors: %bb.1(0x40000000), %bb.2(0x40000000)
879    liveins: $sgpr0, $vgpr0_vgpr1
880
881    %0:sreg_32 = COPY $sgpr0
882    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
883    S_CMPK_EQ_U32 killed %1:sreg_32, 1, implicit-def $scc
884    S_CBRANCH_SCC0 %bb.2, implicit $scc
885    S_BRANCH %bb.1
886
887  bb.1:
888    successors: %bb.2(0x80000000)
889
890  bb.2:
891    S_ENDPGM 0
892
893...
894
895---
896name:            and_1_cmpk_eq_i32_1
897body:             |
898  ; GCN-LABEL: name: and_1_cmpk_eq_i32_1
899  ; GCN: bb.0:
900  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
901  ; GCN-NEXT: {{  $}}
902  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
903  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
904  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
905  ; GCN-NEXT:   S_BRANCH %bb.1
906  ; GCN-NEXT: {{  $}}
907  ; GCN-NEXT: bb.1:
908  ; GCN-NEXT:   successors: %bb.2(0x80000000)
909  ; GCN-NEXT: {{  $}}
910  ; GCN-NEXT: {{  $}}
911  ; GCN-NEXT: bb.2:
912  ; GCN-NEXT:   S_ENDPGM 0
913  bb.0:
914    successors: %bb.1(0x40000000), %bb.2(0x40000000)
915    liveins: $sgpr0, $vgpr0_vgpr1
916
917    %0:sreg_32 = COPY $sgpr0
918    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
919    S_CMPK_EQ_I32 killed %1:sreg_32, 1, implicit-def $scc
920    S_CBRANCH_SCC0 %bb.2, implicit $scc
921    S_BRANCH %bb.1
922
923  bb.1:
924    successors: %bb.2(0x80000000)
925
926  bb.2:
927    S_ENDPGM 0
928
929...
930
931---
932name:            and_1_cmpk_ge_u32_1
933body:             |
934  ; GCN-LABEL: name: and_1_cmpk_ge_u32_1
935  ; GCN: bb.0:
936  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
937  ; GCN-NEXT: {{  $}}
938  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
939  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
940  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
941  ; GCN-NEXT:   S_BRANCH %bb.1
942  ; GCN-NEXT: {{  $}}
943  ; GCN-NEXT: bb.1:
944  ; GCN-NEXT:   successors: %bb.2(0x80000000)
945  ; GCN-NEXT: {{  $}}
946  ; GCN-NEXT: {{  $}}
947  ; GCN-NEXT: bb.2:
948  ; GCN-NEXT:   S_ENDPGM 0
949  bb.0:
950    successors: %bb.1(0x40000000), %bb.2(0x40000000)
951    liveins: $sgpr0, $vgpr0_vgpr1
952
953    %0:sreg_32 = COPY $sgpr0
954    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
955    S_CMPK_GE_U32 killed %1:sreg_32, 1, implicit-def $scc
956    S_CBRANCH_SCC0 %bb.2, implicit $scc
957    S_BRANCH %bb.1
958
959  bb.1:
960    successors: %bb.2(0x80000000)
961
962  bb.2:
963    S_ENDPGM 0
964
965...
966
967---
968name:            and_1_cmpk_ge_i32_1
969body:             |
970  ; GCN-LABEL: name: and_1_cmpk_ge_i32_1
971  ; GCN: bb.0:
972  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
973  ; GCN-NEXT: {{  $}}
974  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
975  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
976  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
977  ; GCN-NEXT:   S_BRANCH %bb.1
978  ; GCN-NEXT: {{  $}}
979  ; GCN-NEXT: bb.1:
980  ; GCN-NEXT:   successors: %bb.2(0x80000000)
981  ; GCN-NEXT: {{  $}}
982  ; GCN-NEXT: {{  $}}
983  ; GCN-NEXT: bb.2:
984  ; GCN-NEXT:   S_ENDPGM 0
985  bb.0:
986    successors: %bb.1(0x40000000), %bb.2(0x40000000)
987    liveins: $sgpr0, $vgpr0_vgpr1
988
989    %0:sreg_32 = COPY $sgpr0
990    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
991    S_CMPK_GE_I32 killed %1:sreg_32, 1, implicit-def $scc
992    S_CBRANCH_SCC0 %bb.2, implicit $scc
993    S_BRANCH %bb.1
994
995  bb.1:
996    successors: %bb.2(0x80000000)
997
998  bb.2:
999    S_ENDPGM 0
1000
1001...
1002
1003---
1004name:            and_1_cmpk_lg_u32_0
1005body:             |
1006  ; GCN-LABEL: name: and_1_cmpk_lg_u32_0
1007  ; GCN: bb.0:
1008  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1009  ; GCN-NEXT: {{  $}}
1010  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1011  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1012  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1013  ; GCN-NEXT:   S_BRANCH %bb.1
1014  ; GCN-NEXT: {{  $}}
1015  ; GCN-NEXT: bb.1:
1016  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1017  ; GCN-NEXT: {{  $}}
1018  ; GCN-NEXT: {{  $}}
1019  ; GCN-NEXT: bb.2:
1020  ; GCN-NEXT:   S_ENDPGM 0
1021  bb.0:
1022    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1023    liveins: $sgpr0, $vgpr0_vgpr1
1024
1025    %0:sreg_32 = COPY $sgpr0
1026    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1027    S_CMPK_LG_U32 killed %1:sreg_32, 0, implicit-def $scc
1028    S_CBRANCH_SCC0 %bb.2, implicit $scc
1029    S_BRANCH %bb.1
1030
1031  bb.1:
1032    successors: %bb.2(0x80000000)
1033
1034  bb.2:
1035    S_ENDPGM 0
1036
1037...
1038
1039---
1040name:            and_1_cmpk_lg_i32_0
1041body:             |
1042  ; GCN-LABEL: name: and_1_cmpk_lg_i32_0
1043  ; GCN: bb.0:
1044  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1045  ; GCN-NEXT: {{  $}}
1046  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1047  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1048  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1049  ; GCN-NEXT:   S_BRANCH %bb.1
1050  ; GCN-NEXT: {{  $}}
1051  ; GCN-NEXT: bb.1:
1052  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1053  ; GCN-NEXT: {{  $}}
1054  ; GCN-NEXT: {{  $}}
1055  ; GCN-NEXT: bb.2:
1056  ; GCN-NEXT:   S_ENDPGM 0
1057  bb.0:
1058    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1059    liveins: $sgpr0, $vgpr0_vgpr1
1060
1061    %0:sreg_32 = COPY $sgpr0
1062    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1063    S_CMPK_LG_I32 killed %1:sreg_32, 0, implicit-def $scc
1064    S_CBRANCH_SCC0 %bb.2, implicit $scc
1065    S_BRANCH %bb.1
1066
1067  bb.1:
1068    successors: %bb.2(0x80000000)
1069
1070  bb.2:
1071    S_ENDPGM 0
1072
1073...
1074
1075---
1076name:            and_1_cmpk_gt_u32_0
1077body:             |
1078  ; GCN-LABEL: name: and_1_cmpk_gt_u32_0
1079  ; GCN: bb.0:
1080  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1081  ; GCN-NEXT: {{  $}}
1082  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1083  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1084  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1085  ; GCN-NEXT:   S_BRANCH %bb.1
1086  ; GCN-NEXT: {{  $}}
1087  ; GCN-NEXT: bb.1:
1088  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1089  ; GCN-NEXT: {{  $}}
1090  ; GCN-NEXT: {{  $}}
1091  ; GCN-NEXT: bb.2:
1092  ; GCN-NEXT:   S_ENDPGM 0
1093  bb.0:
1094    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1095    liveins: $sgpr0, $vgpr0_vgpr1
1096
1097    %0:sreg_32 = COPY $sgpr0
1098    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1099    S_CMPK_GT_U32 killed %1:sreg_32, 0, implicit-def $scc
1100    S_CBRANCH_SCC0 %bb.2, implicit $scc
1101    S_BRANCH %bb.1
1102
1103  bb.1:
1104    successors: %bb.2(0x80000000)
1105
1106  bb.2:
1107    S_ENDPGM 0
1108
1109...
1110
1111---
1112name:            and_1_cmpk_gt_i32_0
1113body:             |
1114  ; GCN-LABEL: name: and_1_cmpk_gt_i32_0
1115  ; GCN: bb.0:
1116  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1117  ; GCN-NEXT: {{  $}}
1118  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1119  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1120  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1121  ; GCN-NEXT:   S_BRANCH %bb.1
1122  ; GCN-NEXT: {{  $}}
1123  ; GCN-NEXT: bb.1:
1124  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1125  ; GCN-NEXT: {{  $}}
1126  ; GCN-NEXT: {{  $}}
1127  ; GCN-NEXT: bb.2:
1128  ; GCN-NEXT:   S_ENDPGM 0
1129  bb.0:
1130    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1131    liveins: $sgpr0, $vgpr0_vgpr1
1132
1133    %0:sreg_32 = COPY $sgpr0
1134    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1135    S_CMPK_GT_I32 killed %1:sreg_32, 0, implicit-def $scc
1136    S_CBRANCH_SCC0 %bb.2, implicit $scc
1137    S_BRANCH %bb.1
1138
1139  bb.1:
1140    successors: %bb.2(0x80000000)
1141
1142  bb.2:
1143    S_ENDPGM 0
1144
1145...
1146
1147---
1148name:            and_1_cmp_eq_u32_1_imm_src
1149body:             |
1150  ; GCN-LABEL: name: and_1_cmp_eq_u32_1_imm_src
1151  ; GCN: bb.0:
1152  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1153  ; GCN-NEXT: {{  $}}
1154  ; GCN-NEXT:   S_BITCMP1_B32 11, 0, implicit-def $scc
1155  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1156  ; GCN-NEXT:   S_BRANCH %bb.1
1157  ; GCN-NEXT: {{  $}}
1158  ; GCN-NEXT: bb.1:
1159  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1160  ; GCN-NEXT: {{  $}}
1161  ; GCN-NEXT: {{  $}}
1162  ; GCN-NEXT: bb.2:
1163  ; GCN-NEXT:   S_ENDPGM 0
1164  bb.0:
1165    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1166    liveins: $sgpr0, $vgpr0_vgpr1
1167
1168    %0:sreg_32 = S_AND_B32 1, 11, implicit-def dead $scc
1169    S_CMP_EQ_U32 killed %0:sreg_32, 1, implicit-def $scc
1170    S_CBRANCH_SCC0 %bb.2, implicit $scc
1171    S_BRANCH %bb.1
1172
1173  bb.1:
1174    successors: %bb.2(0x80000000)
1175
1176  bb.2:
1177    S_ENDPGM 0
1178
1179...
1180
1181---
1182name:            and_1_cmp_eq_u32_0
1183body:             |
1184  ; GCN-LABEL: name: and_1_cmp_eq_u32_0
1185  ; GCN: bb.0:
1186  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1187  ; GCN-NEXT: {{  $}}
1188  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1189  ; GCN-NEXT:   S_BITCMP0_B32 killed [[COPY]], 0, implicit-def $scc
1190  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1191  ; GCN-NEXT:   S_BRANCH %bb.1
1192  ; GCN-NEXT: {{  $}}
1193  ; GCN-NEXT: bb.1:
1194  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1195  ; GCN-NEXT: {{  $}}
1196  ; GCN-NEXT: {{  $}}
1197  ; GCN-NEXT: bb.2:
1198  ; GCN-NEXT:   S_ENDPGM 0
1199  bb.0:
1200    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1201    liveins: $sgpr0, $vgpr0_vgpr1
1202
1203    %0:sreg_32 = COPY $sgpr0
1204    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1205    S_CMP_EQ_U32 killed %1:sreg_32, 0, implicit-def $scc
1206    S_CBRANCH_SCC0 %bb.2, implicit $scc
1207    S_BRANCH %bb.1
1208
1209  bb.1:
1210    successors: %bb.2(0x80000000)
1211
1212  bb.2:
1213    S_ENDPGM 0
1214
1215...
1216
1217---
1218name:            and_1_cmp_eq_i32_0
1219body:             |
1220  ; GCN-LABEL: name: and_1_cmp_eq_i32_0
1221  ; GCN: bb.0:
1222  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1223  ; GCN-NEXT: {{  $}}
1224  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1225  ; GCN-NEXT:   S_BITCMP0_B32 killed [[COPY]], 0, implicit-def $scc
1226  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1227  ; GCN-NEXT:   S_BRANCH %bb.1
1228  ; GCN-NEXT: {{  $}}
1229  ; GCN-NEXT: bb.1:
1230  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1231  ; GCN-NEXT: {{  $}}
1232  ; GCN-NEXT: {{  $}}
1233  ; GCN-NEXT: bb.2:
1234  ; GCN-NEXT:   S_ENDPGM 0
1235  bb.0:
1236    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1237    liveins: $sgpr0, $vgpr0_vgpr1
1238
1239    %0:sreg_32 = COPY $sgpr0
1240    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1241    S_CMP_EQ_I32 killed %1:sreg_32, 0, implicit-def $scc
1242    S_CBRANCH_SCC0 %bb.2, implicit $scc
1243    S_BRANCH %bb.1
1244
1245  bb.1:
1246    successors: %bb.2(0x80000000)
1247
1248  bb.2:
1249    S_ENDPGM 0
1250
1251...
1252
1253---
1254name:            and_1_cmp_eq_u64_0
1255body:             |
1256  ; GCN-LABEL: name: and_1_cmp_eq_u64_0
1257  ; GCN: bb.0:
1258  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1259  ; GCN-NEXT: {{  $}}
1260  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1261  ; GCN-NEXT:   S_BITCMP0_B64 killed [[COPY]], 0, implicit-def $scc
1262  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1263  ; GCN-NEXT:   S_BRANCH %bb.1
1264  ; GCN-NEXT: {{  $}}
1265  ; GCN-NEXT: bb.1:
1266  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1267  ; GCN-NEXT: {{  $}}
1268  ; GCN-NEXT: {{  $}}
1269  ; GCN-NEXT: bb.2:
1270  ; GCN-NEXT:   S_ENDPGM 0
1271  bb.0:
1272    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1273    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
1274
1275    %0:sreg_64 = COPY $sgpr0_sgpr1
1276    %1:sreg_64 = S_AND_B64 1, killed %0, implicit-def dead $scc
1277    S_CMP_EQ_U64 killed %1:sreg_64, 0, implicit-def $scc
1278    S_CBRANCH_SCC0 %bb.2, implicit $scc
1279    S_BRANCH %bb.1
1280
1281  bb.1:
1282    successors: %bb.2(0x80000000)
1283
1284  bb.2:
1285    S_ENDPGM 0
1286
1287...
1288
1289---
1290name:            and_1_cmp_lg_u32_1
1291body:             |
1292  ; GCN-LABEL: name: and_1_cmp_lg_u32_1
1293  ; GCN: bb.0:
1294  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1295  ; GCN-NEXT: {{  $}}
1296  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1297  ; GCN-NEXT:   S_BITCMP0_B32 killed [[COPY]], 0, implicit-def $scc
1298  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1299  ; GCN-NEXT:   S_BRANCH %bb.1
1300  ; GCN-NEXT: {{  $}}
1301  ; GCN-NEXT: bb.1:
1302  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1303  ; GCN-NEXT: {{  $}}
1304  ; GCN-NEXT: {{  $}}
1305  ; GCN-NEXT: bb.2:
1306  ; GCN-NEXT:   S_ENDPGM 0
1307  bb.0:
1308    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1309    liveins: $sgpr0, $vgpr0_vgpr1
1310
1311    %0:sreg_32 = COPY $sgpr0
1312    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1313    S_CMP_LG_U32 killed %1:sreg_32, 1, implicit-def $scc
1314    S_CBRANCH_SCC0 %bb.2, implicit $scc
1315    S_BRANCH %bb.1
1316
1317  bb.1:
1318    successors: %bb.2(0x80000000)
1319
1320  bb.2:
1321    S_ENDPGM 0
1322
1323...
1324
1325---
1326name:            and_1_cmp_lg_i32_1
1327body:             |
1328  ; GCN-LABEL: name: and_1_cmp_lg_i32_1
1329  ; GCN: bb.0:
1330  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1331  ; GCN-NEXT: {{  $}}
1332  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1333  ; GCN-NEXT:   S_BITCMP0_B32 killed [[COPY]], 0, implicit-def $scc
1334  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1335  ; GCN-NEXT:   S_BRANCH %bb.1
1336  ; GCN-NEXT: {{  $}}
1337  ; GCN-NEXT: bb.1:
1338  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1339  ; GCN-NEXT: {{  $}}
1340  ; GCN-NEXT: {{  $}}
1341  ; GCN-NEXT: bb.2:
1342  ; GCN-NEXT:   S_ENDPGM 0
1343  bb.0:
1344    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1345    liveins: $sgpr0, $vgpr0_vgpr1
1346
1347    %0:sreg_32 = COPY $sgpr0
1348    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1349    S_CMP_LG_I32 killed %1:sreg_32, 1, implicit-def $scc
1350    S_CBRANCH_SCC0 %bb.2, implicit $scc
1351    S_BRANCH %bb.1
1352
1353  bb.1:
1354    successors: %bb.2(0x80000000)
1355
1356  bb.2:
1357    S_ENDPGM 0
1358
1359...
1360
1361---
1362name:            and_1_cmp_lg_u64_1
1363body:             |
1364  ; GCN-LABEL: name: and_1_cmp_lg_u64_1
1365  ; GCN: bb.0:
1366  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1367  ; GCN-NEXT: {{  $}}
1368  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1369  ; GCN-NEXT:   S_BITCMP0_B64 killed [[COPY]], 0, implicit-def $scc
1370  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1371  ; GCN-NEXT:   S_BRANCH %bb.1
1372  ; GCN-NEXT: {{  $}}
1373  ; GCN-NEXT: bb.1:
1374  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1375  ; GCN-NEXT: {{  $}}
1376  ; GCN-NEXT: {{  $}}
1377  ; GCN-NEXT: bb.2:
1378  ; GCN-NEXT:   S_ENDPGM 0
1379  bb.0:
1380    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1381    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
1382
1383    %0:sreg_64 = COPY $sgpr0_sgpr1
1384    %1:sreg_64 = S_AND_B64 1, killed %0, implicit-def dead $scc
1385    S_CMP_LG_U64 killed %1:sreg_64, 1, implicit-def $scc
1386    S_CBRANCH_SCC0 %bb.2, implicit $scc
1387    S_BRANCH %bb.1
1388
1389  bb.1:
1390    successors: %bb.2(0x80000000)
1391
1392  bb.2:
1393    S_ENDPGM 0
1394
1395...
1396
1397---
1398name:            and_1_cmp_eq_u32_0_used_and
1399body:             |
1400  ; GCN-LABEL: name: and_1_cmp_eq_u32_0_used_and
1401  ; GCN: bb.0:
1402  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1403  ; GCN-NEXT: {{  $}}
1404  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1405  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
1406  ; GCN-NEXT:   S_CMP_EQ_U32 [[S_AND_B32_]], 0, implicit-def $scc
1407  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1408  ; GCN-NEXT:   S_BRANCH %bb.1
1409  ; GCN-NEXT: {{  $}}
1410  ; GCN-NEXT: bb.1:
1411  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1412  ; GCN-NEXT: {{  $}}
1413  ; GCN-NEXT:   S_NOP 0, implicit [[S_AND_B32_]]
1414  ; GCN-NEXT: {{  $}}
1415  ; GCN-NEXT: bb.2:
1416  ; GCN-NEXT:   S_ENDPGM 0
1417  bb.0:
1418    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1419    liveins: $sgpr0, $vgpr0_vgpr1
1420
1421    %0:sreg_32 = COPY $sgpr0
1422    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1423    S_CMP_EQ_U32 %1:sreg_32, 0, implicit-def $scc
1424    S_CBRANCH_SCC0 %bb.2, implicit $scc
1425    S_BRANCH %bb.1
1426
1427  bb.1:
1428    successors: %bb.2(0x80000000)
1429
1430    S_NOP 0, implicit %1
1431  bb.2:
1432    S_ENDPGM 0
1433
1434...
1435
1436---
1437name:            and_1_cmp_ge_u32_0
1438body:             |
1439  ; GCN-LABEL: name: and_1_cmp_ge_u32_0
1440  ; GCN: bb.0:
1441  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1442  ; GCN-NEXT: {{  $}}
1443  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1444  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
1445  ; GCN-NEXT:   S_CMP_GE_U32 killed [[S_AND_B32_]], 0, implicit-def $scc
1446  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1447  ; GCN-NEXT:   S_BRANCH %bb.1
1448  ; GCN-NEXT: {{  $}}
1449  ; GCN-NEXT: bb.1:
1450  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1451  ; GCN-NEXT: {{  $}}
1452  ; GCN-NEXT: {{  $}}
1453  ; GCN-NEXT: bb.2:
1454  ; GCN-NEXT:   S_ENDPGM 0
1455  bb.0:
1456    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1457    liveins: $sgpr0, $vgpr0_vgpr1
1458
1459    %0:sreg_32 = COPY $sgpr0
1460    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1461    S_CMP_GE_U32 killed %1:sreg_32, 0, implicit-def $scc
1462    S_CBRANCH_SCC0 %bb.2, implicit $scc
1463    S_BRANCH %bb.1
1464
1465  bb.1:
1466    successors: %bb.2(0x80000000)
1467
1468  bb.2:
1469    S_ENDPGM 0
1470
1471...
1472
1473---
1474name:            and_1_cmp_gt_u32_1
1475body:             |
1476  ; GCN-LABEL: name: and_1_cmp_gt_u32_1
1477  ; GCN: bb.0:
1478  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1479  ; GCN-NEXT: {{  $}}
1480  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1481  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, killed [[COPY]], implicit-def dead $scc
1482  ; GCN-NEXT:   S_CMP_GT_U32 killed [[S_AND_B32_]], 1, implicit-def $scc
1483  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1484  ; GCN-NEXT:   S_BRANCH %bb.1
1485  ; GCN-NEXT: {{  $}}
1486  ; GCN-NEXT: bb.1:
1487  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1488  ; GCN-NEXT: {{  $}}
1489  ; GCN-NEXT: {{  $}}
1490  ; GCN-NEXT: bb.2:
1491  ; GCN-NEXT:   S_ENDPGM 0
1492  bb.0:
1493    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1494    liveins: $sgpr0, $vgpr0_vgpr1
1495
1496    %0:sreg_32 = COPY $sgpr0
1497    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
1498    S_CMP_GT_U32 killed %1:sreg_32, 1, implicit-def $scc
1499    S_CBRANCH_SCC0 %bb.2, implicit $scc
1500    S_BRANCH %bb.1
1501
1502  bb.1:
1503    successors: %bb.2(0x80000000)
1504
1505  bb.2:
1506    S_ENDPGM 0
1507
1508...
1509
1510---
1511name:            and_1_folded_src0_cmp_eq_u32_1_folded_src2
1512body:             |
1513  ; GCN-LABEL: name: and_1_folded_src0_cmp_eq_u32_1_folded_src2
1514  ; GCN: bb.0:
1515  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1516  ; GCN-NEXT: {{  $}}
1517  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1518  ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
1519  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1520  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1521  ; GCN-NEXT:   S_BRANCH %bb.1
1522  ; GCN-NEXT: {{  $}}
1523  ; GCN-NEXT: bb.1:
1524  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1525  ; GCN-NEXT: {{  $}}
1526  ; GCN-NEXT: {{  $}}
1527  ; GCN-NEXT: bb.2:
1528  ; GCN-NEXT:   S_ENDPGM 0
1529  bb.0:
1530    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1531    liveins: $sgpr0, $vgpr0_vgpr1
1532
1533    %0:sreg_32 = COPY $sgpr0
1534    %1:sreg_32 = S_MOV_B32 1
1535    %2:sreg_32 = S_AND_B32 %1, killed %0, implicit-def dead $scc
1536    S_CMP_EQ_U32 killed %2:sreg_32, %1, implicit-def $scc
1537    S_CBRANCH_SCC0 %bb.2, implicit $scc
1538    S_BRANCH %bb.1
1539
1540  bb.1:
1541    successors: %bb.2(0x80000000)
1542
1543  bb.2:
1544    S_ENDPGM 0
1545
1546...
1547
1548---
1549name:            and_1_folded_src1_cmp_eq_u32_1_folded_src2
1550body:             |
1551  ; GCN-LABEL: name: and_1_folded_src1_cmp_eq_u32_1_folded_src2
1552  ; GCN: bb.0:
1553  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1554  ; GCN-NEXT: {{  $}}
1555  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1556  ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
1557  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 0, implicit-def $scc
1558  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1559  ; GCN-NEXT:   S_BRANCH %bb.1
1560  ; GCN-NEXT: {{  $}}
1561  ; GCN-NEXT: bb.1:
1562  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1563  ; GCN-NEXT: {{  $}}
1564  ; GCN-NEXT: {{  $}}
1565  ; GCN-NEXT: bb.2:
1566  ; GCN-NEXT:   S_ENDPGM 0
1567  bb.0:
1568    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1569    liveins: $sgpr0, $vgpr0_vgpr1
1570
1571    %0:sreg_32 = COPY $sgpr0
1572    %1:sreg_32 = S_MOV_B32 1
1573    %2:sreg_32 = S_AND_B32 killed %0, %1, implicit-def dead $scc
1574    S_CMP_EQ_U32 killed %2:sreg_32, %1, implicit-def $scc
1575    S_CBRANCH_SCC0 %bb.2, implicit $scc
1576    S_BRANCH %bb.1
1577
1578  bb.1:
1579    successors: %bb.2(0x80000000)
1580
1581  bb.2:
1582    S_ENDPGM 0
1583
1584...
1585
1586---
1587name:            and_1_folded_src1_cmp_eq_u64_1_folded_src2
1588body:             |
1589  ; GCN-LABEL: name: and_1_folded_src1_cmp_eq_u64_1_folded_src2
1590  ; GCN: bb.0:
1591  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1592  ; GCN-NEXT: {{  $}}
1593  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1594  ; GCN-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 1
1595  ; GCN-NEXT:   S_BITCMP1_B64 killed [[COPY]], 0, implicit-def $scc
1596  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1597  ; GCN-NEXT:   S_BRANCH %bb.1
1598  ; GCN-NEXT: {{  $}}
1599  ; GCN-NEXT: bb.1:
1600  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1601  ; GCN-NEXT: {{  $}}
1602  ; GCN-NEXT: {{  $}}
1603  ; GCN-NEXT: bb.2:
1604  ; GCN-NEXT:   S_ENDPGM 0
1605  bb.0:
1606    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1607    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
1608
1609    %0:sreg_64 = COPY $sgpr0_sgpr1
1610    %1:sreg_64 = S_MOV_B64 1
1611    %2:sreg_64 = S_AND_B64 killed %0, %1, implicit-def dead $scc
1612    S_CMP_EQ_U64 killed %2:sreg_64, %1, implicit-def $scc
1613    S_CBRANCH_SCC0 %bb.2, implicit $scc
1614    S_BRANCH %bb.1
1615
1616  bb.1:
1617    successors: %bb.2(0x80000000)
1618
1619  bb.2:
1620    S_ENDPGM 0
1621
1622...
1623
1624---
1625name:            and_1024_cmp_eq_u32_1024
1626body:             |
1627  ; GCN-LABEL: name: and_1024_cmp_eq_u32_1024
1628  ; GCN: bb.0:
1629  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1630  ; GCN-NEXT: {{  $}}
1631  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1632  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 10, implicit-def $scc
1633  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1634  ; GCN-NEXT:   S_BRANCH %bb.1
1635  ; GCN-NEXT: {{  $}}
1636  ; GCN-NEXT: bb.1:
1637  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1638  ; GCN-NEXT: {{  $}}
1639  ; GCN-NEXT: {{  $}}
1640  ; GCN-NEXT: bb.2:
1641  ; GCN-NEXT:   S_ENDPGM 0
1642  bb.0:
1643    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1644    liveins: $sgpr0, $vgpr0_vgpr1
1645
1646    %0:sreg_32 = COPY $sgpr0
1647    %1:sreg_32 = S_AND_B32 1024, killed %0, implicit-def dead $scc
1648    S_CMP_EQ_U32 killed %1:sreg_32, 1024, implicit-def $scc
1649    S_CBRANCH_SCC0 %bb.2, implicit $scc
1650    S_BRANCH %bb.1
1651
1652  bb.1:
1653    successors: %bb.2(0x80000000)
1654
1655  bb.2:
1656    S_ENDPGM 0
1657
1658...
1659
1660---
1661name:            and_0x80000000_cmp_eq_u32_0x80000000
1662body:             |
1663  ; GCN-LABEL: name: and_0x80000000_cmp_eq_u32_0x80000000
1664  ; GCN: bb.0:
1665  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1666  ; GCN-NEXT: {{  $}}
1667  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1668  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 31, implicit-def $scc
1669  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1670  ; GCN-NEXT:   S_BRANCH %bb.1
1671  ; GCN-NEXT: {{  $}}
1672  ; GCN-NEXT: bb.1:
1673  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1674  ; GCN-NEXT: {{  $}}
1675  ; GCN-NEXT: {{  $}}
1676  ; GCN-NEXT: bb.2:
1677  ; GCN-NEXT:   S_ENDPGM 0
1678  bb.0:
1679    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1680    liveins: $sgpr0, $vgpr0_vgpr1
1681
1682    %0:sreg_32 = COPY $sgpr0
1683    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1684    S_CMP_EQ_U32 killed %1:sreg_32, 2147483648, implicit-def $scc
1685    S_CBRANCH_SCC0 %bb.2, implicit $scc
1686    S_BRANCH %bb.1
1687
1688  bb.1:
1689    successors: %bb.2(0x80000000)
1690
1691  bb.2:
1692    S_ENDPGM 0
1693
1694...
1695
1696---
1697name:            and_0x80000000_cmp_ge_u32_0x80000000
1698body:             |
1699  ; GCN-LABEL: name: and_0x80000000_cmp_ge_u32_0x80000000
1700  ; GCN: bb.0:
1701  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1702  ; GCN-NEXT: {{  $}}
1703  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1704  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 31, implicit-def $scc
1705  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1706  ; GCN-NEXT:   S_BRANCH %bb.1
1707  ; GCN-NEXT: {{  $}}
1708  ; GCN-NEXT: bb.1:
1709  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1710  ; GCN-NEXT: {{  $}}
1711  ; GCN-NEXT: {{  $}}
1712  ; GCN-NEXT: bb.2:
1713  ; GCN-NEXT:   S_ENDPGM 0
1714  bb.0:
1715    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1716    liveins: $sgpr0, $vgpr0_vgpr1
1717
1718    %0:sreg_32 = COPY $sgpr0
1719    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1720    S_CMP_GE_U32 killed %1:sreg_32, 2147483648, implicit-def $scc
1721    S_CBRANCH_SCC0 %bb.2, implicit $scc
1722    S_BRANCH %bb.1
1723
1724  bb.1:
1725    successors: %bb.2(0x80000000)
1726
1727  bb.2:
1728    S_ENDPGM 0
1729
1730...
1731
1732---
1733name:            and_0x80000000_cmp_ge_i32_0x80000000
1734body:             |
1735  ; GCN-LABEL: name: and_0x80000000_cmp_ge_i32_0x80000000
1736  ; GCN: bb.0:
1737  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1738  ; GCN-NEXT: {{  $}}
1739  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1740  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 2147483648, killed [[COPY]], implicit-def dead $scc
1741  ; GCN-NEXT:   S_CMP_GE_I32 killed [[S_AND_B32_]], 2147483648, implicit-def $scc
1742  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1743  ; GCN-NEXT:   S_BRANCH %bb.1
1744  ; GCN-NEXT: {{  $}}
1745  ; GCN-NEXT: bb.1:
1746  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1747  ; GCN-NEXT: {{  $}}
1748  ; GCN-NEXT: {{  $}}
1749  ; GCN-NEXT: bb.2:
1750  ; GCN-NEXT:   S_ENDPGM 0
1751  bb.0:
1752    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1753    liveins: $sgpr0, $vgpr0_vgpr1
1754
1755    %0:sreg_32 = COPY $sgpr0
1756    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1757    S_CMP_GE_I32 killed %1:sreg_32, 2147483648, implicit-def $scc
1758    S_CBRANCH_SCC0 %bb.2, implicit $scc
1759    S_BRANCH %bb.1
1760
1761  bb.1:
1762    successors: %bb.2(0x80000000)
1763
1764  bb.2:
1765    S_ENDPGM 0
1766
1767...
1768
1769---
1770name:            and_1024_cmp_ge_i32_1024
1771body:             |
1772  ; GCN-LABEL: name: and_1024_cmp_ge_i32_1024
1773  ; GCN: bb.0:
1774  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1775  ; GCN-NEXT: {{  $}}
1776  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1777  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 10, implicit-def $scc
1778  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1779  ; GCN-NEXT:   S_BRANCH %bb.1
1780  ; GCN-NEXT: {{  $}}
1781  ; GCN-NEXT: bb.1:
1782  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1783  ; GCN-NEXT: {{  $}}
1784  ; GCN-NEXT: {{  $}}
1785  ; GCN-NEXT: bb.2:
1786  ; GCN-NEXT:   S_ENDPGM 0
1787  bb.0:
1788    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1789    liveins: $sgpr0, $vgpr0_vgpr1
1790
1791    %0:sreg_32 = COPY $sgpr0
1792    %1:sreg_32 = S_AND_B32 1024, killed %0, implicit-def dead $scc
1793    S_CMP_GE_I32 killed %1:sreg_32, 1024, implicit-def $scc
1794    S_CBRANCH_SCC0 %bb.2, implicit $scc
1795    S_BRANCH %bb.1
1796
1797  bb.1:
1798    successors: %bb.2(0x80000000)
1799
1800  bb.2:
1801    S_ENDPGM 0
1802
1803...
1804
1805---
1806name:            and_0x80000000_cmp_lg_i32_0
1807body:             |
1808  ; GCN-LABEL: name: and_0x80000000_cmp_lg_i32_0
1809  ; GCN: bb.0:
1810  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1811  ; GCN-NEXT: {{  $}}
1812  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1813  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 31, implicit-def $scc
1814  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1815  ; GCN-NEXT:   S_BRANCH %bb.1
1816  ; GCN-NEXT: {{  $}}
1817  ; GCN-NEXT: bb.1:
1818  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1819  ; GCN-NEXT: {{  $}}
1820  ; GCN-NEXT: {{  $}}
1821  ; GCN-NEXT: bb.2:
1822  ; GCN-NEXT:   S_ENDPGM 0
1823  bb.0:
1824    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1825    liveins: $sgpr0, $vgpr0_vgpr1
1826
1827    %0:sreg_32 = COPY $sgpr0
1828    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1829    S_CMP_LG_I32 killed %1:sreg_32, 0, implicit-def $scc
1830    S_CBRANCH_SCC0 %bb.2, implicit $scc
1831    S_BRANCH %bb.1
1832
1833  bb.1:
1834    successors: %bb.2(0x80000000)
1835
1836  bb.2:
1837    S_ENDPGM 0
1838
1839...
1840
1841---
1842name:            and_0x80000000_cmp_gt_i32_0
1843body:             |
1844  ; GCN-LABEL: name: and_0x80000000_cmp_gt_i32_0
1845  ; GCN: bb.0:
1846  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1847  ; GCN-NEXT: {{  $}}
1848  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1849  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 2147483648, killed [[COPY]], implicit-def dead $scc
1850  ; GCN-NEXT:   S_CMP_GT_I32 killed [[S_AND_B32_]], 0, implicit-def $scc
1851  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1852  ; GCN-NEXT:   S_BRANCH %bb.1
1853  ; GCN-NEXT: {{  $}}
1854  ; GCN-NEXT: bb.1:
1855  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1856  ; GCN-NEXT: {{  $}}
1857  ; GCN-NEXT: {{  $}}
1858  ; GCN-NEXT: bb.2:
1859  ; GCN-NEXT:   S_ENDPGM 0
1860  bb.0:
1861    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1862    liveins: $sgpr0, $vgpr0_vgpr1
1863
1864    %0:sreg_32 = COPY $sgpr0
1865    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1866    S_CMP_GT_I32 killed %1:sreg_32, 0, implicit-def $scc
1867    S_CBRANCH_SCC0 %bb.2, implicit $scc
1868    S_BRANCH %bb.1
1869
1870  bb.1:
1871    successors: %bb.2(0x80000000)
1872
1873  bb.2:
1874    S_ENDPGM 0
1875
1876...
1877
1878---
1879name:            and_0x80000000_cmp_gt_u32_0
1880body:             |
1881  ; GCN-LABEL: name: and_0x80000000_cmp_gt_u32_0
1882  ; GCN: bb.0:
1883  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1884  ; GCN-NEXT: {{  $}}
1885  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1886  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 31, implicit-def $scc
1887  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1888  ; GCN-NEXT:   S_BRANCH %bb.1
1889  ; GCN-NEXT: {{  $}}
1890  ; GCN-NEXT: bb.1:
1891  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1892  ; GCN-NEXT: {{  $}}
1893  ; GCN-NEXT: {{  $}}
1894  ; GCN-NEXT: bb.2:
1895  ; GCN-NEXT:   S_ENDPGM 0
1896  bb.0:
1897    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1898    liveins: $sgpr0, $vgpr0_vgpr1
1899
1900    %0:sreg_32 = COPY $sgpr0
1901    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
1902    S_CMP_GT_U32 killed %1:sreg_32, 0, implicit-def $scc
1903    S_CBRANCH_SCC0 %bb.2, implicit $scc
1904    S_BRANCH %bb.1
1905
1906  bb.1:
1907    successors: %bb.2(0x80000000)
1908
1909  bb.2:
1910    S_ENDPGM 0
1911
1912...
1913
1914---
1915name:            and_0x80000000_cmp_eq_u64_0x80000000
1916body:             |
1917  ; GCN-LABEL: name: and_0x80000000_cmp_eq_u64_0x80000000
1918  ; GCN: bb.0:
1919  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1920  ; GCN-NEXT: {{  $}}
1921  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1922  ; GCN-NEXT:   S_BITCMP1_B64 killed [[COPY]], 35, implicit-def $scc
1923  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1924  ; GCN-NEXT:   S_BRANCH %bb.1
1925  ; GCN-NEXT: {{  $}}
1926  ; GCN-NEXT: bb.1:
1927  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1928  ; GCN-NEXT: {{  $}}
1929  ; GCN-NEXT: {{  $}}
1930  ; GCN-NEXT: bb.2:
1931  ; GCN-NEXT:   S_ENDPGM 0
1932  bb.0:
1933    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1934    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
1935
1936    %0:sreg_64 = COPY $sgpr0_sgpr1
1937    %1:sreg_64 = S_AND_B64 34359738368, killed %0, implicit-def dead $scc
1938    S_CMP_EQ_U64 killed %1:sreg_64, 34359738368, implicit-def $scc
1939    S_CBRANCH_SCC0 %bb.2, implicit $scc
1940    S_BRANCH %bb.1
1941
1942  bb.1:
1943    successors: %bb.2(0x80000000)
1944
1945  bb.2:
1946    S_ENDPGM 0
1947
1948...
1949
1950---
1951name:            and_0x8000000000000000_cmp_eq_u64_0x8000000000000000
1952body:             |
1953  ; GCN-LABEL: name: and_0x8000000000000000_cmp_eq_u64_0x8000000000000000
1954  ; GCN: bb.0:
1955  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1956  ; GCN-NEXT: {{  $}}
1957  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
1958  ; GCN-NEXT:   S_BITCMP1_B64 killed [[COPY]], 63, implicit-def $scc
1959  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1960  ; GCN-NEXT:   S_BRANCH %bb.1
1961  ; GCN-NEXT: {{  $}}
1962  ; GCN-NEXT: bb.1:
1963  ; GCN-NEXT:   successors: %bb.2(0x80000000)
1964  ; GCN-NEXT: {{  $}}
1965  ; GCN-NEXT: {{  $}}
1966  ; GCN-NEXT: bb.2:
1967  ; GCN-NEXT:   S_ENDPGM 0
1968  bb.0:
1969    successors: %bb.1(0x40000000), %bb.2(0x40000000)
1970    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
1971
1972    %0:sreg_64 = COPY $sgpr0_sgpr1
1973    %1:sreg_64 = S_AND_B64 9223372036854775808, killed %0, implicit-def dead $scc
1974    S_CMP_EQ_U64 killed %1:sreg_64, 9223372036854775808, implicit-def $scc
1975    S_CBRANCH_SCC0 %bb.2, implicit $scc
1976    S_BRANCH %bb.1
1977
1978  bb.1:
1979    successors: %bb.2(0x80000000)
1980
1981  bb.2:
1982    S_ENDPGM 0
1983
1984...
1985
1986---
1987name:            and_2_cmp_eq_u32_2_used_and
1988body:             |
1989  ; GCN-LABEL: name: and_2_cmp_eq_u32_2_used_and
1990  ; GCN: bb.0:
1991  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
1992  ; GCN-NEXT: {{  $}}
1993  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
1994  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 2, killed [[COPY]], implicit-def $scc
1995  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
1996  ; GCN-NEXT:   S_BRANCH %bb.1
1997  ; GCN-NEXT: {{  $}}
1998  ; GCN-NEXT: bb.1:
1999  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2000  ; GCN-NEXT: {{  $}}
2001  ; GCN-NEXT:   S_NOP 0, implicit [[S_AND_B32_]]
2002  ; GCN-NEXT: {{  $}}
2003  ; GCN-NEXT: bb.2:
2004  ; GCN-NEXT:   S_ENDPGM 0
2005  bb.0:
2006    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2007    liveins: $sgpr0, $vgpr0_vgpr1
2008
2009    %0:sreg_32 = COPY $sgpr0
2010    %1:sreg_32 = S_AND_B32 2, killed %0, implicit-def dead $scc
2011    S_CMP_EQ_U32 %1:sreg_32, 2, implicit-def $scc
2012    S_CBRANCH_SCC0 %bb.2, implicit $scc
2013    S_BRANCH %bb.1
2014
2015  bb.1:
2016    successors: %bb.2(0x80000000)
2017
2018    S_NOP 0, implicit %1
2019
2020  bb.2:
2021    S_ENDPGM 0
2022
2023...
2024
2025---
2026name:            and_3_cmp_eq_u32_3
2027body:             |
2028  ; GCN-LABEL: name: and_3_cmp_eq_u32_3
2029  ; GCN: bb.0:
2030  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
2031  ; GCN-NEXT: {{  $}}
2032  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
2033  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 3, killed [[COPY]], implicit-def dead $scc
2034  ; GCN-NEXT:   S_CMP_EQ_U32 killed [[S_AND_B32_]], 3, implicit-def $scc
2035  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
2036  ; GCN-NEXT:   S_BRANCH %bb.1
2037  ; GCN-NEXT: {{  $}}
2038  ; GCN-NEXT: bb.1:
2039  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2040  ; GCN-NEXT: {{  $}}
2041  ; GCN-NEXT: {{  $}}
2042  ; GCN-NEXT: bb.2:
2043  ; GCN-NEXT:   S_ENDPGM 0
2044  bb.0:
2045    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2046    liveins: $sgpr0, $vgpr0_vgpr1
2047
2048    %0:sreg_32 = COPY $sgpr0
2049    %1:sreg_32 = S_AND_B32 3, killed %0, implicit-def dead $scc
2050    S_CMP_EQ_U32 killed %1:sreg_32, 3, implicit-def $scc
2051    S_CBRANCH_SCC0 %bb.2, implicit $scc
2052    S_BRANCH %bb.1
2053
2054  bb.1:
2055    successors: %bb.2(0x80000000)
2056
2057  bb.2:
2058    S_ENDPGM 0
2059
2060...
2061
2062---
2063name:            and_3_cmp_lg_u32_0
2064body:             |
2065  ; GCN-LABEL: name: and_3_cmp_lg_u32_0
2066  ; GCN: bb.0:
2067  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
2068  ; GCN-NEXT: {{  $}}
2069  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
2070  ; GCN-NEXT:   [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 3, killed [[COPY]], implicit-def dead $scc
2071  ; GCN-NEXT:   S_CMP_LG_U32 killed [[S_AND_B32_]], 0, implicit-def $scc
2072  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
2073  ; GCN-NEXT:   S_BRANCH %bb.1
2074  ; GCN-NEXT: {{  $}}
2075  ; GCN-NEXT: bb.1:
2076  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2077  ; GCN-NEXT: {{  $}}
2078  ; GCN-NEXT: {{  $}}
2079  ; GCN-NEXT: bb.2:
2080  ; GCN-NEXT:   S_ENDPGM 0
2081  bb.0:
2082    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2083    liveins: $sgpr0, $vgpr0_vgpr1
2084
2085    %0:sreg_32 = COPY $sgpr0
2086    %1:sreg_32 = S_AND_B32 3, killed %0, implicit-def dead $scc
2087    S_CMP_LG_U32 killed %1:sreg_32, 0, implicit-def $scc
2088    S_CBRANCH_SCC0 %bb.2, implicit $scc
2089    S_BRANCH %bb.1
2090
2091  bb.1:
2092    successors: %bb.2(0x80000000)
2093
2094  bb.2:
2095    S_ENDPGM 0
2096
2097...
2098
2099---
2100name:            and_4_cmp_lg_u32_0
2101body:             |
2102  ; GCN-LABEL: name: and_4_cmp_lg_u32_0
2103  ; GCN: bb.0:
2104  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
2105  ; GCN-NEXT: {{  $}}
2106  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
2107  ; GCN-NEXT:   S_BITCMP1_B32 killed [[COPY]], 2, implicit-def $scc
2108  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
2109  ; GCN-NEXT:   S_BRANCH %bb.1
2110  ; GCN-NEXT: {{  $}}
2111  ; GCN-NEXT: bb.1:
2112  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2113  ; GCN-NEXT: {{  $}}
2114  ; GCN-NEXT: {{  $}}
2115  ; GCN-NEXT: bb.2:
2116  ; GCN-NEXT:   S_ENDPGM 0
2117  bb.0:
2118    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2119    liveins: $sgpr0, $vgpr0_vgpr1
2120
2121    %0:sreg_32 = COPY $sgpr0
2122    %1:sreg_32 = S_AND_B32 4, killed %0, implicit-def dead $scc
2123    S_CMP_LG_U32 killed %1:sreg_32, 0, implicit-def $scc
2124    S_CBRANCH_SCC0 %bb.2, implicit $scc
2125    S_BRANCH %bb.1
2126
2127  bb.1:
2128    successors: %bb.2(0x80000000)
2129
2130  bb.2:
2131    S_ENDPGM 0
2132
2133...
2134
2135---
2136name:            and_0x80000000_cmp_eq_u32_0
2137body:             |
2138  ; GCN-LABEL: name: and_0x80000000_cmp_eq_u32_0
2139  ; GCN: bb.0:
2140  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
2141  ; GCN-NEXT: {{  $}}
2142  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
2143  ; GCN-NEXT:   S_BITCMP0_B32 killed [[COPY]], 31, implicit-def $scc
2144  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
2145  ; GCN-NEXT:   S_BRANCH %bb.1
2146  ; GCN-NEXT: {{  $}}
2147  ; GCN-NEXT: bb.1:
2148  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2149  ; GCN-NEXT: {{  $}}
2150  ; GCN-NEXT: {{  $}}
2151  ; GCN-NEXT: bb.2:
2152  ; GCN-NEXT:   S_ENDPGM 0
2153  bb.0:
2154    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2155    liveins: $sgpr0, $vgpr0_vgpr1
2156
2157    %0:sreg_32 = COPY $sgpr0
2158    %1:sreg_32 = S_AND_B32 2147483648, killed %0, implicit-def dead $scc
2159    S_CMP_EQ_U32 killed %1:sreg_32, 0, implicit-def $scc
2160    S_CBRANCH_SCC0 %bb.2, implicit $scc
2161    S_BRANCH %bb.1
2162
2163  bb.1:
2164    successors: %bb.2(0x80000000)
2165
2166  bb.2:
2167    S_ENDPGM 0
2168
2169...
2170
2171---
2172name:            and_0x8000000000000000_cmp_lg_u64_0x8000000000000000
2173body:             |
2174  ; GCN-LABEL: name: and_0x8000000000000000_cmp_lg_u64_0x8000000000000000
2175  ; GCN: bb.0:
2176  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
2177  ; GCN-NEXT: {{  $}}
2178  ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
2179  ; GCN-NEXT:   S_BITCMP0_B64 killed [[COPY]], 63, implicit-def $scc
2180  ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
2181  ; GCN-NEXT:   S_BRANCH %bb.1
2182  ; GCN-NEXT: {{  $}}
2183  ; GCN-NEXT: bb.1:
2184  ; GCN-NEXT:   successors: %bb.2(0x80000000)
2185  ; GCN-NEXT: {{  $}}
2186  ; GCN-NEXT: {{  $}}
2187  ; GCN-NEXT: bb.2:
2188  ; GCN-NEXT:   S_ENDPGM 0
2189  bb.0:
2190    successors: %bb.1(0x40000000), %bb.2(0x40000000)
2191    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
2192
2193    %0:sreg_64 = COPY $sgpr0_sgpr1
2194    %1:sreg_64 = S_AND_B64 9223372036854775808, killed %0, implicit-def dead $scc
2195    S_CMP_LG_U64 killed %1:sreg_64, 9223372036854775808, implicit-def $scc
2196    S_CBRANCH_SCC0 %bb.2, implicit $scc
2197    S_BRANCH %bb.1
2198
2199  bb.1:
2200    successors: %bb.2(0x80000000)
2201
2202  bb.2:
2203    S_ENDPGM 0
2204
2205...
2206