Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / regbankselect-icmp.mir
blob2247a9292cf513a8c375ca267d4af5e17c1fe247
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=amdgpu-regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s
3 # RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=amdgpu-regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s
4 # RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=amdgpu-regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s
5 # RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=amdgpu-regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s
7 ---
8 name: icmp_eq_s32_ss
9 legalized: true
11 body: |
12   bb.0:
13     liveins: $sgpr0, $sgpr1
14     ; GFX7-LABEL: name: icmp_eq_s32_ss
15     ; GFX7: liveins: $sgpr0, $sgpr1
16     ; GFX7-NEXT: {{  $}}
17     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
18     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
19     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
20     ; GFX7-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
21     ; GFX8-LABEL: name: icmp_eq_s32_ss
22     ; GFX8: liveins: $sgpr0, $sgpr1
23     ; GFX8-NEXT: {{  $}}
24     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
25     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
26     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
27     ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
28     %0:_(s32) = COPY $sgpr0
29     %1:_(s32) = COPY $sgpr1
30     %2:_(s1) = G_ICMP intpred(eq), %0, %1
31 ...
33 ---
34 name: icmp_eq_s32_sv
35 legalized: true
37 body: |
38   bb.0:
39     liveins: $sgpr0, $vgpr0
40     ; GFX7-LABEL: name: icmp_eq_s32_sv
41     ; GFX7: liveins: $sgpr0, $vgpr0
42     ; GFX7-NEXT: {{  $}}
43     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
44     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
45     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
46     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY1]]
47     ; GFX8-LABEL: name: icmp_eq_s32_sv
48     ; GFX8: liveins: $sgpr0, $vgpr0
49     ; GFX8-NEXT: {{  $}}
50     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
51     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
52     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
53     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY1]]
54     %0:_(s32) = COPY $sgpr0
55     %1:_(s32) = COPY $vgpr0
56     %2:_(s1) = G_ICMP intpred(eq), %0, %1
57 ...
59 ---
60 name: icmp_eq_s32_vs
61 legalized: true
63 body: |
64   bb.0:
65     liveins: $sgpr0, $vgpr0
66     ; GFX7-LABEL: name: icmp_eq_s32_vs
67     ; GFX7: liveins: $sgpr0, $vgpr0
68     ; GFX7-NEXT: {{  $}}
69     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
70     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
71     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
72     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY2]]
73     ; GFX8-LABEL: name: icmp_eq_s32_vs
74     ; GFX8: liveins: $sgpr0, $vgpr0
75     ; GFX8-NEXT: {{  $}}
76     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
77     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
78     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
79     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY2]]
80     %0:_(s32) = COPY $sgpr0
81     %1:_(s32) = COPY $vgpr0
82     %2:_(s1) = G_ICMP intpred(eq), %1, %0
83 ...
85 ---
86 name: icmp_eq_s32_vv
87 legalized: true
89 body: |
90   bb.0:
91     liveins: $vgpr0, $vgpr1
92     ; GFX7-LABEL: name: icmp_eq_s32_vv
93     ; GFX7: liveins: $vgpr0, $vgpr1
94     ; GFX7-NEXT: {{  $}}
95     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
96     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
97     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
98     ; GFX8-LABEL: name: icmp_eq_s32_vv
99     ; GFX8: liveins: $vgpr0, $vgpr1
100     ; GFX8-NEXT: {{  $}}
101     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
102     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
103     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
104     %0:_(s32) = COPY $vgpr0
105     %1:_(s32) = COPY $vgpr1
106     %2:_(s1) = G_ICMP intpred(eq), %0, %1
110 name: icmp_eq_s64_ss
111 legalized: true
113 body: |
114   bb.0:
115     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
116     ; GFX7-LABEL: name: icmp_eq_s64_ss
117     ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
118     ; GFX7-NEXT: {{  $}}
119     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
120     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
121     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
122     ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)
123     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY3]]
124     ; GFX8-LABEL: name: icmp_eq_s64_ss
125     ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
126     ; GFX8-NEXT: {{  $}}
127     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
128     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
129     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
130     ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
131     %0:_(s64) = COPY $sgpr0_sgpr1
132     %1:_(s64) = COPY $sgpr2_sgpr3
133     %2:_(s1) = G_ICMP intpred(eq), %0, %1
137 name: icmp_eq_s64_sv
138 legalized: true
140 body: |
141   bb.0:
142     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
143     ; GFX7-LABEL: name: icmp_eq_s64_sv
144     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
145     ; GFX7-NEXT: {{  $}}
146     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
147     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
148     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
149     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY1]]
150     ; GFX8-LABEL: name: icmp_eq_s64_sv
151     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
152     ; GFX8-NEXT: {{  $}}
153     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
154     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
155     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
156     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY1]]
157     %0:_(s64) = COPY $sgpr0_sgpr1
158     %1:_(s64) = COPY $vgpr0_vgpr1
159     %2:_(s1) = G_ICMP intpred(eq), %0, %1
163 name: icmp_eq_s64_vs
164 legalized: true
166 body: |
167   bb.0:
168     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
169     ; GFX7-LABEL: name: icmp_eq_s64_vs
170     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
171     ; GFX7-NEXT: {{  $}}
172     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
173     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
174     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
175     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY2]]
176     ; GFX8-LABEL: name: icmp_eq_s64_vs
177     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
178     ; GFX8-NEXT: {{  $}}
179     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
180     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
181     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
182     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY2]]
183     %0:_(s64) = COPY $sgpr0_sgpr1
184     %1:_(s64) = COPY $vgpr0_vgpr1
185     %2:_(s1) = G_ICMP intpred(eq), %1, %0
189 name: icmp_eq_s64_vv
190 legalized: true
192 body: |
193   bb.0:
194     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
195     ; GFX7-LABEL: name: icmp_eq_s64_vv
196     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
197     ; GFX7-NEXT: {{  $}}
198     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
199     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
200     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
201     ; GFX8-LABEL: name: icmp_eq_s64_vv
202     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
203     ; GFX8-NEXT: {{  $}}
204     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
205     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
206     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
207     %0:_(s64) = COPY $vgpr0_vgpr1
208     %1:_(s64) = COPY $vgpr2_vgpr3
209     %2:_(s1) = G_ICMP intpred(eq), %0, %1
213 name: icmp_ne_s64_ss
214 legalized: true
216 body: |
217   bb.0:
218     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
219     ; GFX7-LABEL: name: icmp_ne_s64_ss
220     ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
221     ; GFX7-NEXT: {{  $}}
222     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
223     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
224     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
225     ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)
226     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY3]]
227     ; GFX8-LABEL: name: icmp_ne_s64_ss
228     ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
229     ; GFX8-NEXT: {{  $}}
230     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
231     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
232     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
233     ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)
234     %0:_(s64) = COPY $sgpr0_sgpr1
235     %1:_(s64) = COPY $sgpr2_sgpr3
236     %2:_(s1) = G_ICMP intpred(ne), %0, %1
240 name: icmp_ne_s64_sv
241 legalized: true
243 body: |
244   bb.0:
245     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
246     ; GFX7-LABEL: name: icmp_ne_s64_sv
247     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
248     ; GFX7-NEXT: {{  $}}
249     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
250     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
251     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
252     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY1]]
253     ; GFX8-LABEL: name: icmp_ne_s64_sv
254     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
255     ; GFX8-NEXT: {{  $}}
256     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
257     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
258     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
259     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY1]]
260     %0:_(s64) = COPY $sgpr0_sgpr1
261     %1:_(s64) = COPY $vgpr0_vgpr1
262     %2:_(s1) = G_ICMP intpred(ne), %0, %1
266 name: icmp_ne_s64_vs
267 legalized: true
269 body: |
270   bb.0:
271     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
272     ; GFX7-LABEL: name: icmp_ne_s64_vs
273     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
274     ; GFX7-NEXT: {{  $}}
275     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
276     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
277     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
278     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY2]]
279     ; GFX8-LABEL: name: icmp_ne_s64_vs
280     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
281     ; GFX8-NEXT: {{  $}}
282     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
283     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
284     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
285     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY2]]
286     %0:_(s64) = COPY $sgpr0_sgpr1
287     %1:_(s64) = COPY $vgpr0_vgpr1
288     %2:_(s1) = G_ICMP intpred(ne), %1, %0
292 name: icmp_ne_s64_vv
293 legalized: true
295 body: |
296   bb.0:
297     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
298     ; GFX7-LABEL: name: icmp_ne_s64_vv
299     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
300     ; GFX7-NEXT: {{  $}}
301     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
302     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
303     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
304     ; GFX8-LABEL: name: icmp_ne_s64_vv
305     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
306     ; GFX8-NEXT: {{  $}}
307     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
308     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
309     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]
310     %0:_(s64) = COPY $vgpr0_vgpr1
311     %1:_(s64) = COPY $vgpr2_vgpr3
312     %2:_(s1) = G_ICMP intpred(ne), %0, %1
316 name: icmp_slt_s64_ss
317 legalized: true
319 body: |
320   bb.0:
321     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
322     ; GFX7-LABEL: name: icmp_slt_s64_ss
323     ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
324     ; GFX7-NEXT: {{  $}}
325     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
326     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
327     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
328     ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)
329     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY3]]
330     ; GFX8-LABEL: name: icmp_slt_s64_ss
331     ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
332     ; GFX8-NEXT: {{  $}}
333     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
334     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
335     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
336     ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)
337     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY3]]
338     %0:_(s64) = COPY $sgpr0_sgpr1
339     %1:_(s64) = COPY $sgpr2_sgpr3
340     %2:_(s1) = G_ICMP intpred(slt), %0, %1
344 name: icmp_slt_s64_sv
345 legalized: true
347 body: |
348   bb.0:
349     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
350     ; GFX7-LABEL: name: icmp_slt_s64_sv
351     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
352     ; GFX7-NEXT: {{  $}}
353     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
354     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
355     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
356     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY1]]
357     ; GFX8-LABEL: name: icmp_slt_s64_sv
358     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
359     ; GFX8-NEXT: {{  $}}
360     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
361     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
362     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
363     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY1]]
364     %0:_(s64) = COPY $sgpr0_sgpr1
365     %1:_(s64) = COPY $vgpr0_vgpr1
366     %2:_(s1) = G_ICMP intpred(slt), %0, %1
370 name: icmp_slt_s64_vs
371 legalized: true
373 body: |
374   bb.0:
375     liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
376     ; GFX7-LABEL: name: icmp_slt_s64_vs
377     ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
378     ; GFX7-NEXT: {{  $}}
379     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
380     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
381     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
382     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY2]]
383     ; GFX8-LABEL: name: icmp_slt_s64_vs
384     ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1
385     ; GFX8-NEXT: {{  $}}
386     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
387     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
388     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)
389     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY2]]
390     %0:_(s64) = COPY $sgpr0_sgpr1
391     %1:_(s64) = COPY $vgpr0_vgpr1
392     %2:_(s1) = G_ICMP intpred(slt), %1, %0
396 name: icmp_slt_s64_vv
397 legalized: true
399 body: |
400   bb.0:
401     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
402     ; GFX7-LABEL: name: icmp_slt_s64_vv
403     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
404     ; GFX7-NEXT: {{  $}}
405     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
406     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
407     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
408     ; GFX8-LABEL: name: icmp_slt_s64_vv
409     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
410     ; GFX8-NEXT: {{  $}}
411     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
412     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
413     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
414     %0:_(s64) = COPY $vgpr0_vgpr1
415     %1:_(s64) = COPY $vgpr2_vgpr3
416     %2:_(s1) = G_ICMP intpred(slt), %0, %1
419 # Result is already constrained to be VCC bank, despite scalar inputs.
421 name:            map_icmp_already_vcc_bank_sgpr_inputs
422 legalized:       true
423 tracksRegLiveness: true
424 body:             |
425   bb.0:
426     liveins: $sgpr0, $sgpr1
428     ; GFX7-LABEL: name: map_icmp_already_vcc_bank_sgpr_inputs
429     ; GFX7: liveins: $sgpr0, $sgpr1
430     ; GFX7-NEXT: {{  $}}
431     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
432     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
433     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
434     ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
435     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]
436     ; GFX7-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)
437     ; GFX8-LABEL: name: map_icmp_already_vcc_bank_sgpr_inputs
438     ; GFX8: liveins: $sgpr0, $sgpr1
439     ; GFX8-NEXT: {{  $}}
440     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
441     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
442     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
443     ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
444     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]
445     ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)
446     %0:_(s32) = COPY $sgpr0
447     %1:_(s32) = COPY $sgpr1
448     %2:vcc(s1) = G_ICMP intpred(eq), %0, %1
449     S_ENDPGM 0, implicit %2
452 # Result is already con strained to be VCC bank, despite scalar inputs
453 # and also has a register class.
455 name:            map_icmp_already_vcc_regclass_sgpr_inputs
456 legalized:       true
457 tracksRegLiveness: true
458 body:             |
459   bb.0:
460     liveins: $sgpr0, $sgpr1
462     ; GFX7-LABEL: name: map_icmp_already_vcc_regclass_sgpr_inputs
463     ; GFX7: liveins: $sgpr0, $sgpr1
464     ; GFX7-NEXT: {{  $}}
465     ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
466     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
467     ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
468     ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
469     ; GFX7-NEXT: [[ICMP:%[0-9]+]]:sreg_64_xexec(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]
470     ; GFX7-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)
471     ; GFX8-LABEL: name: map_icmp_already_vcc_regclass_sgpr_inputs
472     ; GFX8: liveins: $sgpr0, $sgpr1
473     ; GFX8-NEXT: {{  $}}
474     ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
475     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
476     ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
477     ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
478     ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sreg_64_xexec(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]
479     ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)
480     %0:_(s32) = COPY $sgpr0
481     %1:_(s32) = COPY $sgpr1
482     %2:sreg_64_xexec(s1) = G_ICMP intpred(eq), %0, %1
483     S_ENDPGM 0, implicit %2