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