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