xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-icmp.s64.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -pass-remarks-missed='gisel*' -global-isel-abort=2 -o - %s 2> %t | FileCheck -check-prefix=GFX8  %s
3# RUN: FileCheck -check-prefixes=ERR,GFX8-ERR %s < %t
4
5# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=2 -pass-remarks-missed='gisel*'  -o - %s 2> %t | FileCheck -check-prefix=GFX6  %s
6# RUN: FileCheck -check-prefixes=ERR,GFX6-ERR %s < %t
7
8
9# ERR-NOT: remark
10
11# GFX6-ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(eq), %0:sgpr(s64), %1:sgpr (in function: icmp_eq_s64_ss)
12# GFX6-ERR-NEXT: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(ne), %0:sgpr(s64), %1:sgpr (in function: icmp_ne_s64_ss)
13# GFX6-ERR-NEXT: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(slt), %0:sgpr(s64), %1:sgpr (in function: icmp_slt_s64_ss)
14# GFX6-ERR-NEXT: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(eq), %0:sgpr(p0), %1:sgpr (in function: icmp_eq_p0_ss)
15# GFX6-ERR-NEXT: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(eq), %0:sgpr(p1), %1:sgpr (in function: icmp_eq_p1_ss)
16# GFX6-ERR-NEXT: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(eq), %0:sgpr(p999), %1:sgpr (in function: icmp_eq_p999_ss)
17
18# GFX8-ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(s32) = G_ICMP intpred(slt), %0:sgpr(s64), %1:sgpr (in function: icmp_slt_s64_ss)
19
20# ERR-NOT: remark
21
22---
23name:            icmp_eq_s64_ss
24legalized:       true
25regBankSelected: true
26
27body: |
28  bb.0:
29    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
30
31    ; GFX8-LABEL: name: icmp_eq_s64_ss
32    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
33    ; GFX8-NEXT: {{  $}}
34    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
35    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
36    ; GFX8-NEXT: S_CMP_EQ_U64 [[COPY]], [[COPY1]], implicit-def $scc
37    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
38    ; GFX8-NEXT: S_ENDPGM 0, implicit [[COPY2]]
39    ; GFX6-LABEL: name: icmp_eq_s64_ss
40    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
41    ; GFX6-NEXT: {{  $}}
42    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
43    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
44    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
45    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
46    %0:sgpr(s64) = COPY $sgpr0_sgpr1
47    %1:sgpr(s64) = COPY $sgpr2_sgpr3
48    %2:sgpr(s32) = G_ICMP intpred(eq), %0, %1
49    S_ENDPGM 0, implicit %2
50
51...
52
53---
54name:            icmp_ne_s64_ss
55legalized:       true
56regBankSelected: true
57
58body: |
59  bb.0:
60    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
61
62    ; GFX8-LABEL: name: icmp_ne_s64_ss
63    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
64    ; GFX8-NEXT: {{  $}}
65    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
66    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
67    ; GFX8-NEXT: S_CMP_LG_U64 [[COPY]], [[COPY1]], implicit-def $scc
68    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
69    ; GFX8-NEXT: S_ENDPGM 0, implicit [[COPY2]]
70    ; GFX6-LABEL: name: icmp_ne_s64_ss
71    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
72    ; GFX6-NEXT: {{  $}}
73    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
74    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
75    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
76    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
77    %0:sgpr(s64) = COPY $sgpr0_sgpr1
78    %1:sgpr(s64) = COPY $sgpr2_sgpr3
79    %2:sgpr(s32) = G_ICMP intpred(ne), %0, %1
80    S_ENDPGM 0, implicit %2
81
82...
83
84---
85name:            icmp_slt_s64_ss
86legalized:       true
87regBankSelected: true
88
89body: |
90  bb.0:
91    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
92
93    ; GFX8-LABEL: name: icmp_slt_s64_ss
94    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
95    ; GFX8-NEXT: {{  $}}
96    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
97    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
98    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
99    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
100    ; GFX6-LABEL: name: icmp_slt_s64_ss
101    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
102    ; GFX6-NEXT: {{  $}}
103    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
104    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
105    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
106    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
107    %0:sgpr(s64) = COPY $sgpr0_sgpr1
108    %1:sgpr(s64) = COPY $sgpr2_sgpr3
109    %2:sgpr(s32) = G_ICMP intpred(slt), %0, %1
110    S_ENDPGM 0, implicit %2
111
112...
113
114---
115name:            icmp_eq_s64_vv
116legalized:       true
117regBankSelected: true
118
119body: |
120  bb.0:
121    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
122
123    ; GFX8-LABEL: name: icmp_eq_s64_vv
124    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
125    ; GFX8-NEXT: {{  $}}
126    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
127    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
128    ; GFX8-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
129    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
130    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
131    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
132    ; GFX6-LABEL: name: icmp_eq_s64_vv
133    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
134    ; GFX6-NEXT: {{  $}}
135    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
136    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
137    ; GFX6-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
138    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
139    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
140    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
141    %0:vgpr(s64) = COPY $vgpr0_vgpr1
142    %1:vgpr(s64) = COPY $vgpr2_vgpr3
143    %2:vcc(s1) = G_ICMP intpred(eq), %0, %1
144    %3:vgpr(s1) = COPY %2
145    %4:vgpr(s32) = G_ZEXT %3
146    S_ENDPGM 0, implicit %4
147
148...
149
150---
151name:            icmp_ne_s64_vv
152legalized:       true
153regBankSelected: true
154
155body: |
156  bb.0:
157    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
158
159    ; GFX8-LABEL: name: icmp_ne_s64_vv
160    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
161    ; GFX8-NEXT: {{  $}}
162    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
163    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
164    ; GFX8-NEXT: [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
165    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_NE_U64_e64_]]
166    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
167    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
168    ; GFX6-LABEL: name: icmp_ne_s64_vv
169    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
170    ; GFX6-NEXT: {{  $}}
171    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
172    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
173    ; GFX6-NEXT: [[V_CMP_NE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
174    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_NE_U64_e64_]]
175    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
176    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
177    %0:vgpr(s64) = COPY $vgpr0_vgpr1
178    %1:vgpr(s64) = COPY $vgpr2_vgpr3
179    %2:vcc(s1) = G_ICMP intpred(ne), %0, %1
180    %3:vgpr(s1) = COPY %2
181    %4:vgpr(s32) = G_ZEXT %3
182    S_ENDPGM 0, implicit %4
183
184...
185
186---
187name:            icmp_sgt_s64_vv
188legalized:       true
189regBankSelected: true
190
191body: |
192  bb.0:
193    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
194
195    ; GFX8-LABEL: name: icmp_sgt_s64_vv
196    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
197    ; GFX8-NEXT: {{  $}}
198    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
199    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
200    ; GFX8-NEXT: [[V_CMP_GT_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GT_I64_e64 [[COPY]], [[COPY1]], implicit $exec
201    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GT_I64_e64_]]
202    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
203    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
204    ; GFX6-LABEL: name: icmp_sgt_s64_vv
205    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
206    ; GFX6-NEXT: {{  $}}
207    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
208    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
209    ; GFX6-NEXT: [[V_CMP_GT_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GT_I64_e64 [[COPY]], [[COPY1]], implicit $exec
210    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GT_I64_e64_]]
211    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
212    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
213    %0:vgpr(s64) = COPY $vgpr0_vgpr1
214    %1:vgpr(s64) = COPY $vgpr2_vgpr3
215    %2:vcc(s1) = G_ICMP intpred(sgt), %0, %1
216    %3:vgpr(s1) = COPY %2
217    %4:vgpr(s32) = G_ZEXT %3
218    S_ENDPGM 0, implicit %4
219
220...
221
222---
223name:            icmp_sge_s64_vv
224legalized:       true
225regBankSelected: true
226
227body: |
228  bb.0:
229    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
230
231    ; GFX8-LABEL: name: icmp_sge_s64_vv
232    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
233    ; GFX8-NEXT: {{  $}}
234    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
235    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
236    ; GFX8-NEXT: [[V_CMP_GE_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GE_I64_e64 [[COPY]], [[COPY1]], implicit $exec
237    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GE_I64_e64_]]
238    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
239    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
240    ; GFX6-LABEL: name: icmp_sge_s64_vv
241    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
242    ; GFX6-NEXT: {{  $}}
243    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
244    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
245    ; GFX6-NEXT: [[V_CMP_GE_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GE_I64_e64 [[COPY]], [[COPY1]], implicit $exec
246    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GE_I64_e64_]]
247    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
248    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
249    %0:vgpr(s64) = COPY $vgpr0_vgpr1
250    %1:vgpr(s64) = COPY $vgpr2_vgpr3
251    %2:vcc(s1) = G_ICMP intpred(sge), %0, %1
252    %3:vgpr(s1) = COPY %2
253    %4:vgpr(s32) = G_ZEXT %3
254    S_ENDPGM 0, implicit %4
255
256...
257
258---
259name:            icmp_slt_s64_vv
260legalized:       true
261regBankSelected: true
262
263body: |
264  bb.0:
265    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
266
267    ; GFX8-LABEL: name: icmp_slt_s64_vv
268    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
269    ; GFX8-NEXT: {{  $}}
270    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
271    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
272    ; GFX8-NEXT: [[V_CMP_LT_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LT_I64_e64 [[COPY]], [[COPY1]], implicit $exec
273    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LT_I64_e64_]]
274    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
275    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
276    ; GFX6-LABEL: name: icmp_slt_s64_vv
277    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
278    ; GFX6-NEXT: {{  $}}
279    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
280    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
281    ; GFX6-NEXT: [[V_CMP_LT_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LT_I64_e64 [[COPY]], [[COPY1]], implicit $exec
282    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LT_I64_e64_]]
283    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
284    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
285    %0:vgpr(s64) = COPY $vgpr0_vgpr1
286    %1:vgpr(s64) = COPY $vgpr2_vgpr3
287    %2:vcc(s1) = G_ICMP intpred(slt), %0, %1
288    %3:vgpr(s1) = COPY %2
289    %4:vgpr(s32) = G_ZEXT %3
290    S_ENDPGM 0, implicit %4
291
292...
293
294---
295name:            icmp_sle_s64_vv
296legalized:       true
297regBankSelected: true
298
299body: |
300  bb.0:
301    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
302
303    ; GFX8-LABEL: name: icmp_sle_s64_vv
304    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
305    ; GFX8-NEXT: {{  $}}
306    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
307    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
308    ; GFX8-NEXT: [[V_CMP_LE_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LE_I64_e64 [[COPY]], [[COPY1]], implicit $exec
309    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LE_I64_e64_]]
310    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
311    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
312    ; GFX6-LABEL: name: icmp_sle_s64_vv
313    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
314    ; GFX6-NEXT: {{  $}}
315    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
316    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
317    ; GFX6-NEXT: [[V_CMP_LE_I64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LE_I64_e64 [[COPY]], [[COPY1]], implicit $exec
318    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LE_I64_e64_]]
319    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
320    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
321    %0:vgpr(s64) = COPY $vgpr0_vgpr1
322    %1:vgpr(s64) = COPY $vgpr2_vgpr3
323    %2:vcc(s1) = G_ICMP intpred(sle), %0, %1
324    %3:vgpr(s1) = COPY %2
325    %4:vgpr(s32) = G_ZEXT %3
326    S_ENDPGM 0, implicit %4
327
328...
329
330---
331name:            icmp_ugt_s64_vv
332legalized:       true
333regBankSelected: true
334
335body: |
336  bb.0:
337    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
338
339    ; GFX8-LABEL: name: icmp_ugt_s64_vv
340    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
341    ; GFX8-NEXT: {{  $}}
342    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
343    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
344    ; GFX8-NEXT: [[V_CMP_GT_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GT_U64_e64 [[COPY]], [[COPY1]], implicit $exec
345    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GT_U64_e64_]]
346    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
347    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
348    ; GFX6-LABEL: name: icmp_ugt_s64_vv
349    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
350    ; GFX6-NEXT: {{  $}}
351    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
352    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
353    ; GFX6-NEXT: [[V_CMP_GT_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GT_U64_e64 [[COPY]], [[COPY1]], implicit $exec
354    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GT_U64_e64_]]
355    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
356    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
357    %0:vgpr(s64) = COPY $vgpr0_vgpr1
358    %1:vgpr(s64) = COPY $vgpr2_vgpr3
359    %2:vcc(s1) = G_ICMP intpred(ugt), %0, %1
360    %3:vgpr(s1) = COPY %2
361    %4:vgpr(s32) = G_ZEXT %3
362    S_ENDPGM 0, implicit %4
363
364...
365
366---
367name:            icmp_uge_s64_vv
368legalized:       true
369regBankSelected: true
370
371body: |
372  bb.0:
373    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
374
375    ; GFX8-LABEL: name: icmp_uge_s64_vv
376    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
377    ; GFX8-NEXT: {{  $}}
378    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
379    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
380    ; GFX8-NEXT: [[V_CMP_GE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
381    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GE_U64_e64_]]
382    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
383    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
384    ; GFX6-LABEL: name: icmp_uge_s64_vv
385    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
386    ; GFX6-NEXT: {{  $}}
387    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
388    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
389    ; GFX6-NEXT: [[V_CMP_GE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_GE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
390    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_GE_U64_e64_]]
391    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
392    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
393    %0:vgpr(s64) = COPY $vgpr0_vgpr1
394    %1:vgpr(s64) = COPY $vgpr2_vgpr3
395    %2:vcc(s1) = G_ICMP intpred(uge), %0, %1
396    %3:vgpr(s1) = COPY %2
397    %4:vgpr(s32) = G_ZEXT %3
398    S_ENDPGM 0, implicit %4
399
400...
401
402---
403name:            icmp_ult_s64_vv
404legalized:       true
405regBankSelected: true
406
407body: |
408  bb.0:
409    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
410
411    ; GFX8-LABEL: name: icmp_ult_s64_vv
412    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
413    ; GFX8-NEXT: {{  $}}
414    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
415    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
416    ; GFX8-NEXT: [[V_CMP_LT_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LT_U64_e64 [[COPY]], [[COPY1]], implicit $exec
417    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LT_U64_e64_]]
418    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
419    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
420    ; GFX6-LABEL: name: icmp_ult_s64_vv
421    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
422    ; GFX6-NEXT: {{  $}}
423    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
424    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
425    ; GFX6-NEXT: [[V_CMP_LT_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LT_U64_e64 [[COPY]], [[COPY1]], implicit $exec
426    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LT_U64_e64_]]
427    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
428    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
429    %0:vgpr(s64) = COPY $vgpr0_vgpr1
430    %1:vgpr(s64) = COPY $vgpr2_vgpr3
431    %2:vcc(s1) = G_ICMP intpred(ult), %0, %1
432    %3:vgpr(s1) = COPY %2
433    %4:vgpr(s32) = G_ZEXT %3
434    S_ENDPGM 0, implicit %4
435
436...
437
438---
439name:            icmp_ule_s64_vv
440legalized:       true
441regBankSelected: true
442
443body: |
444  bb.0:
445    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
446
447    ; GFX8-LABEL: name: icmp_ule_s64_vv
448    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
449    ; GFX8-NEXT: {{  $}}
450    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
451    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
452    ; GFX8-NEXT: [[V_CMP_LE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
453    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LE_U64_e64_]]
454    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
455    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
456    ; GFX6-LABEL: name: icmp_ule_s64_vv
457    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
458    ; GFX6-NEXT: {{  $}}
459    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
460    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
461    ; GFX6-NEXT: [[V_CMP_LE_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_LE_U64_e64 [[COPY]], [[COPY1]], implicit $exec
462    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_LE_U64_e64_]]
463    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
464    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
465    %0:vgpr(s64) = COPY $vgpr0_vgpr1
466    %1:vgpr(s64) = COPY $vgpr2_vgpr3
467    %2:vcc(s1) = G_ICMP intpred(ule), %0, %1
468    %3:vgpr(s1) = COPY %2
469    %4:vgpr(s32) = G_ZEXT %3
470    S_ENDPGM 0, implicit %4
471
472...
473
474---
475name:            icmp_eq_p0_ss
476legalized:       true
477regBankSelected: true
478
479body: |
480  bb.0:
481    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
482
483    ; GFX8-LABEL: name: icmp_eq_p0_ss
484    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
485    ; GFX8-NEXT: {{  $}}
486    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
487    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
488    ; GFX8-NEXT: S_CMP_EQ_U64 [[COPY]], [[COPY1]], implicit-def $scc
489    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
490    ; GFX8-NEXT: S_ENDPGM 0, implicit [[COPY2]]
491    ; GFX6-LABEL: name: icmp_eq_p0_ss
492    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
493    ; GFX6-NEXT: {{  $}}
494    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
495    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(p0) = COPY $sgpr2_sgpr3
496    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](p0), [[COPY1]]
497    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
498    %0:sgpr(p0) = COPY $sgpr0_sgpr1
499    %1:sgpr(p0) = COPY $sgpr2_sgpr3
500    %2:sgpr(s32) = G_ICMP intpred(eq), %0, %1
501    S_ENDPGM 0, implicit %2
502...
503
504---
505name:            icmp_eq_p1_ss
506legalized:       true
507regBankSelected: true
508
509body: |
510  bb.0:
511    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
512
513    ; GFX8-LABEL: name: icmp_eq_p1_ss
514    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
515    ; GFX8-NEXT: {{  $}}
516    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
517    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
518    ; GFX8-NEXT: S_CMP_EQ_U64 [[COPY]], [[COPY1]], implicit-def $scc
519    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
520    ; GFX8-NEXT: S_ENDPGM 0, implicit [[COPY2]]
521    ; GFX6-LABEL: name: icmp_eq_p1_ss
522    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
523    ; GFX6-NEXT: {{  $}}
524    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
525    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
526    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](p1), [[COPY1]]
527    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
528    %0:sgpr(p1) = COPY $sgpr0_sgpr1
529    %1:sgpr(p1) = COPY $sgpr2_sgpr3
530    %2:sgpr(s32) = G_ICMP intpred(eq), %0, %1
531    S_ENDPGM 0, implicit %2
532
533...
534
535---
536name:            icmp_eq_p999_ss
537legalized:       true
538regBankSelected: true
539
540body: |
541  bb.0:
542    liveins:  $sgpr0_sgpr1, $sgpr2_sgpr3
543
544    ; GFX8-LABEL: name: icmp_eq_p999_ss
545    ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
546    ; GFX8-NEXT: {{  $}}
547    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
548    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
549    ; GFX8-NEXT: S_CMP_EQ_U64 [[COPY]], [[COPY1]], implicit-def $scc
550    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
551    ; GFX8-NEXT: S_ENDPGM 0, implicit [[COPY2]]
552    ; GFX6-LABEL: name: icmp_eq_p999_ss
553    ; GFX6: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
554    ; GFX6-NEXT: {{  $}}
555    ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p999) = COPY $sgpr0_sgpr1
556    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sgpr(p999) = COPY $sgpr2_sgpr3
557    ; GFX6-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](p999), [[COPY1]]
558    ; GFX6-NEXT: S_ENDPGM 0, implicit [[ICMP]](s32)
559    %0:sgpr(p999) = COPY $sgpr0_sgpr1
560    %1:sgpr(p999) = COPY $sgpr2_sgpr3
561    %2:sgpr(s32) = G_ICMP intpred(eq), %0, %1
562    S_ENDPGM 0, implicit %2
563
564...
565
566---
567name:            icmp_eq_p0_vv
568legalized:       true
569regBankSelected: true
570
571body: |
572  bb.0:
573    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
574
575    ; GFX8-LABEL: name: icmp_eq_p0_vv
576    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
577    ; GFX8-NEXT: {{  $}}
578    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
579    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
580    ; GFX8-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
581    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
582    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
583    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
584    ; GFX6-LABEL: name: icmp_eq_p0_vv
585    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
586    ; GFX6-NEXT: {{  $}}
587    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
588    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
589    ; GFX6-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
590    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
591    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
592    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
593    %0:vgpr(p0) = COPY $vgpr0_vgpr1
594    %1:vgpr(p0) = COPY $vgpr2_vgpr3
595    %2:vcc(s1) = G_ICMP intpred(eq), %0, %1
596    %3:vgpr(s1) = COPY %2
597    %4:vgpr(s32) = G_ZEXT %3
598    S_ENDPGM 0, implicit %4
599
600...
601
602---
603name:            icmp_eq_p1_vv
604legalized:       true
605regBankSelected: true
606
607body: |
608  bb.0:
609    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
610
611    ; GFX8-LABEL: name: icmp_eq_p1_vv
612    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
613    ; GFX8-NEXT: {{  $}}
614    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
615    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
616    ; GFX8-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
617    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
618    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
619    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
620    ; GFX6-LABEL: name: icmp_eq_p1_vv
621    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
622    ; GFX6-NEXT: {{  $}}
623    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
624    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
625    ; GFX6-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
626    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
627    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
628    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
629    %0:vgpr(p1) = COPY $vgpr0_vgpr1
630    %1:vgpr(p1) = COPY $vgpr2_vgpr3
631    %2:vcc(s1) = G_ICMP intpred(eq), %0, %1
632    %3:vgpr(s1) = COPY %2
633    %4:vgpr(s32) = G_ZEXT %3
634    S_ENDPGM 0, implicit %4
635
636...
637
638---
639name:            icmp_eq_p999_vv
640legalized:       true
641regBankSelected: true
642
643body: |
644  bb.0:
645    liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
646
647    ; GFX8-LABEL: name: icmp_eq_p999_vv
648    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
649    ; GFX8-NEXT: {{  $}}
650    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
651    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
652    ; GFX8-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
653    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
654    ; GFX8-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
655    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
656    ; GFX6-LABEL: name: icmp_eq_p999_vv
657    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
658    ; GFX6-NEXT: {{  $}}
659    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
660    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
661    ; GFX6-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY]], [[COPY1]], implicit $exec
662    ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_CMP_EQ_U64_e64_]]
663    ; GFX6-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 1, [[COPY2]], implicit $exec
664    ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e32_]]
665    %0:vgpr(p999) = COPY $vgpr0_vgpr1
666    %1:vgpr(p999) = COPY $vgpr2_vgpr3
667    %2:vcc(s1) = G_ICMP intpred(eq), %0, %1
668    %3:vgpr(s1) = COPY %2
669    %4:vgpr(s32) = G_ZEXT %3
670    S_ENDPGM 0, implicit %4
671
672...
673