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