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