[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / optimize-compare.mir
blobc1cf06e30c745e8f6015ec3491962e72c65f78a7
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
4 ---
5 name:            and_1_cmp_eq_u32_1
6 body:             |
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
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
32   bb.1:
33     successors: %bb.2(0x80000000)
35   bb.2:
36     S_ENDPGM 0
38 ...
40 ---
41 name:            and_1_cmp_eq_u32_1_used_and
42 body:             |
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
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
70   bb.1:
71     successors: %bb.2(0x80000000)
73   bb.2:
74     S_ENDPGM 0
76 ...
78 ---
79 name:            and_1_cmp_eq_i32_1
80 body:             |
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
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
106   bb.1:
107     successors: %bb.2(0x80000000)
109   bb.2:
110     S_ENDPGM 0
115 name:            and_1_cmp_eq_i32_1_phys
116 body:             |
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
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
143   bb.1:
144     successors: %bb.2(0x80000000)
146   bb.2:
147     S_ENDPGM 0
152 name:            and_1_cmp_eq_i32_1_different_blocks
153 body:             |
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)
178     %0:sreg_32 = COPY $sgpr0
179     %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
181   bb.1:
182     successors: %bb.2(0x40000000), %bb.1(0x40000000)
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
188   bb.2:
189     successors: %bb.3(0x80000000)
191   bb.3:
192     S_ENDPGM 0
197 name:            and_3_cmp_eq_1
198 body:             |
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
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
225   bb.1:
226     successors: %bb.2(0x80000000)
228   bb.2:
229     S_ENDPGM 0
234 name:            commuted_and_1_cmp_eq_1
235 body:             |
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
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
261   bb.1:
262     successors: %bb.2(0x80000000)
264   bb.2:
265     S_ENDPGM 0
270 name:            cmp_eq_1_undef_src
271 body:             |
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
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
296   bb.1:
297     successors: %bb.2(0x80000000)
299   bb.2:
300     S_ENDPGM 0
305 name:            and_1_cmp_subreg0_eq_1
306 body:             |
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
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
335   bb.1:
336     successors: %bb.2(0x80000000)
338   bb.2:
339     S_ENDPGM 0
344 name:            and_reg_cmp_eq_1
345 body:             |
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
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
374   bb.1:
375     successors: %bb.2(0x80000000)
377   bb.2:
378     S_ENDPGM 0
383 name:            and_1_cmp_eq_1_killed_scc
384 body:             |
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
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
413   bb.1:
414     successors: %bb.2(0x80000000)
416   bb.2:
417     S_ENDPGM 0
422 name:            and_1_cmp_eq_1_clobbered_scc
423 body:             |
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
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
452   bb.1:
453     successors: %bb.2(0x80000000)
455   bb.2:
456     S_ENDPGM 0
461 name:            and_1_cmp_eq_2
462 body:             |
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
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
489   bb.1:
490     successors: %bb.2(0x80000000)
492   bb.2:
493     S_ENDPGM 0
498 name:            or_1_cmp_eq_u32_1
499 body:             |
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
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
526   bb.1:
527     successors: %bb.2(0x80000000)
529   bb.2:
530     S_ENDPGM 0
535 name:            and_1_cmp_ge_u32_1
536 body:             |
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
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
562   bb.1:
563     successors: %bb.2(0x80000000)
565   bb.2:
566     S_ENDPGM 0
571 name:            and_1_cmp_ge_i32_1
572 body:             |
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
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
598   bb.1:
599     successors: %bb.2(0x80000000)
601   bb.2:
602     S_ENDPGM 0
607 name:            and_1_cmp_gt_u32_0
608 body:             |
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
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
634   bb.1:
635     successors: %bb.2(0x80000000)
637   bb.2:
638     S_ENDPGM 0
643 name:            and_1_cmp_gt_i32_0
644 body:             |
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
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
670   bb.1:
671     successors: %bb.2(0x80000000)
673   bb.2:
674     S_ENDPGM 0
679 name:            and_1_cmp_gt_1
680 body:             |
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
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
707   bb.1:
708     successors: %bb.2(0x80000000)
710   bb.2:
711     S_ENDPGM 0
716 name:            and_1_cmp_lg_u32_0
717 body:             |
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
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
743   bb.1:
744     successors: %bb.2(0x80000000)
746   bb.2:
747     S_ENDPGM 0
752 name:            and_1_cmp_lg_i32_0
753 body:             |
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
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
779   bb.1:
780     successors: %bb.2(0x80000000)
782   bb.2:
783     S_ENDPGM 0
788 name:            and_1_cmp_eq_u64_1
789 body:             |
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
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
815   bb.1:
816     successors: %bb.2(0x80000000)
818   bb.2:
819     S_ENDPGM 0
824 name:            and_1_cmp_lg_u64_0
825 body:             |
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
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
851   bb.1:
852     successors: %bb.2(0x80000000)
854   bb.2:
855     S_ENDPGM 0
860 name:            and_1_cmpk_eq_u32_1
861 body:             |
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
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
887   bb.1:
888     successors: %bb.2(0x80000000)
890   bb.2:
891     S_ENDPGM 0
896 name:            and_1_cmpk_eq_i32_1
897 body:             |
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
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
923   bb.1:
924     successors: %bb.2(0x80000000)
926   bb.2:
927     S_ENDPGM 0
932 name:            and_1_cmpk_ge_u32_1
933 body:             |
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
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
959   bb.1:
960     successors: %bb.2(0x80000000)
962   bb.2:
963     S_ENDPGM 0
968 name:            and_1_cmpk_ge_i32_1
969 body:             |
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
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
995   bb.1:
996     successors: %bb.2(0x80000000)
998   bb.2:
999     S_ENDPGM 0
1004 name:            and_1_cmpk_lg_u32_0
1005 body:             |
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
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
1031   bb.1:
1032     successors: %bb.2(0x80000000)
1034   bb.2:
1035     S_ENDPGM 0
1040 name:            and_1_cmpk_lg_i32_0
1041 body:             |
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
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
1067   bb.1:
1068     successors: %bb.2(0x80000000)
1070   bb.2:
1071     S_ENDPGM 0
1076 name:            and_1_cmpk_gt_u32_0
1077 body:             |
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
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
1103   bb.1:
1104     successors: %bb.2(0x80000000)
1106   bb.2:
1107     S_ENDPGM 0
1112 name:            and_1_cmpk_gt_i32_0
1113 body:             |
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
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
1139   bb.1:
1140     successors: %bb.2(0x80000000)
1142   bb.2:
1143     S_ENDPGM 0
1148 name:            and_1_cmp_eq_u32_1_imm_src
1149 body:             |
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
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
1173   bb.1:
1174     successors: %bb.2(0x80000000)
1176   bb.2:
1177     S_ENDPGM 0
1182 name:            and_1_cmp_eq_u32_0
1183 body:             |
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
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
1209   bb.1:
1210     successors: %bb.2(0x80000000)
1212   bb.2:
1213     S_ENDPGM 0
1218 name:            and_1_cmp_eq_i32_0
1219 body:             |
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
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
1245   bb.1:
1246     successors: %bb.2(0x80000000)
1248   bb.2:
1249     S_ENDPGM 0
1254 name:            and_1_cmp_eq_u64_0
1255 body:             |
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
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
1281   bb.1:
1282     successors: %bb.2(0x80000000)
1284   bb.2:
1285     S_ENDPGM 0
1290 name:            and_1_cmp_lg_u32_1
1291 body:             |
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
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
1317   bb.1:
1318     successors: %bb.2(0x80000000)
1320   bb.2:
1321     S_ENDPGM 0
1326 name:            and_1_cmp_lg_i32_1
1327 body:             |
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
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
1353   bb.1:
1354     successors: %bb.2(0x80000000)
1356   bb.2:
1357     S_ENDPGM 0
1362 name:            and_1_cmp_lg_u64_1
1363 body:             |
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
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
1389   bb.1:
1390     successors: %bb.2(0x80000000)
1392   bb.2:
1393     S_ENDPGM 0
1398 name:            and_1_cmp_eq_u32_0_used_and
1399 body:             |
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
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
1428   bb.1:
1429     successors: %bb.2(0x80000000)
1431     S_NOP 0, implicit %1
1432   bb.2:
1433     S_ENDPGM 0
1438 name:            and_1_cmp_ge_u32_0
1439 body:             |
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
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
1466   bb.1:
1467     successors: %bb.2(0x80000000)
1469   bb.2:
1470     S_ENDPGM 0
1475 name:            and_1_cmp_gt_u32_1
1476 body:             |
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
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
1503   bb.1:
1504     successors: %bb.2(0x80000000)
1506   bb.2:
1507     S_ENDPGM 0
1512 name:            and_1_folded_src0_cmp_eq_u32_1_folded_src2
1513 body:             |
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
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
1541   bb.1:
1542     successors: %bb.2(0x80000000)
1544   bb.2:
1545     S_ENDPGM 0
1550 name:            and_1_folded_src1_cmp_eq_u32_1_folded_src2
1551 body:             |
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
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
1579   bb.1:
1580     successors: %bb.2(0x80000000)
1582   bb.2:
1583     S_ENDPGM 0
1588 name:            and_1_folded_src1_cmp_eq_u64_1_folded_src2
1589 body:             |
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
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
1617   bb.1:
1618     successors: %bb.2(0x80000000)
1620   bb.2:
1621     S_ENDPGM 0
1626 name:            and_1024_cmp_eq_u32_1024
1627 body:             |
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
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
1653   bb.1:
1654     successors: %bb.2(0x80000000)
1656   bb.2:
1657     S_ENDPGM 0
1662 name:            and_0x80000000_cmp_eq_u32_0x80000000
1663 body:             |
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
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
1689   bb.1:
1690     successors: %bb.2(0x80000000)
1692   bb.2:
1693     S_ENDPGM 0
1698 name:            and_0x80000000_cmp_ge_u32_0x80000000
1699 body:             |
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
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
1725   bb.1:
1726     successors: %bb.2(0x80000000)
1728   bb.2:
1729     S_ENDPGM 0
1734 name:            and_0x80000000_cmp_ge_i32_0x80000000
1735 body:             |
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
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
1762   bb.1:
1763     successors: %bb.2(0x80000000)
1765   bb.2:
1766     S_ENDPGM 0
1771 name:            and_1024_cmp_ge_i32_1024
1772 body:             |
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
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
1798   bb.1:
1799     successors: %bb.2(0x80000000)
1801   bb.2:
1802     S_ENDPGM 0
1807 name:            and_0x80000000_cmp_lg_i32_0
1808 body:             |
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
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
1834   bb.1:
1835     successors: %bb.2(0x80000000)
1837   bb.2:
1838     S_ENDPGM 0
1843 name:            and_0x80000000_cmp_gt_i32_0
1844 body:             |
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
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
1871   bb.1:
1872     successors: %bb.2(0x80000000)
1874   bb.2:
1875     S_ENDPGM 0
1880 name:            and_0x80000000_cmp_gt_u32_0
1881 body:             |
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
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
1907   bb.1:
1908     successors: %bb.2(0x80000000)
1910   bb.2:
1911     S_ENDPGM 0
1916 name:            and_0x80000000_cmp_eq_u64_0x80000000
1917 body:             |
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
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
1943   bb.1:
1944     successors: %bb.2(0x80000000)
1946   bb.2:
1947     S_ENDPGM 0
1952 name:            and_0x8000000000000000_cmp_eq_u64_0x8000000000000000
1953 body:             |
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
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
1979   bb.1:
1980     successors: %bb.2(0x80000000)
1982   bb.2:
1983     S_ENDPGM 0
1988 name:            and_2_cmp_eq_u32_2_used_and
1989 body:             |
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
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
2017   bb.1:
2018     successors: %bb.2(0x80000000)
2020     S_NOP 0, implicit %1
2022   bb.2:
2023     S_ENDPGM 0
2028 name:            and_3_cmp_eq_u32_3
2029 body:             |
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
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
2056   bb.1:
2057     successors: %bb.2(0x80000000)
2059   bb.2:
2060     S_ENDPGM 0
2065 name:            and_3_cmp_lg_u32_0
2066 body:             |
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
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
2093   bb.1:
2094     successors: %bb.2(0x80000000)
2096   bb.2:
2097     S_ENDPGM 0
2102 name:            and_4_cmp_lg_u32_0
2103 body:             |
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
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
2129   bb.1:
2130     successors: %bb.2(0x80000000)
2132   bb.2:
2133     S_ENDPGM 0
2138 name:            and_0x80000000_cmp_eq_u32_0
2139 body:             |
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
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
2165   bb.1:
2166     successors: %bb.2(0x80000000)
2168   bb.2:
2169     S_ENDPGM 0
2174 name:            and_0x8000000000000000_cmp_lg_u64_0x8000000000000000
2175 body:             |
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
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
2201   bb.1:
2202     successors: %bb.2(0x80000000)
2204   bb.2:
2205     S_ENDPGM 0