[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / regbankselect-select.mir
blobd0d845337aa17f7f7e4fd4b76963287a5768994e
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=FAST %s
3 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=GREEDY %s
5 ---
6 name: select_s32_scc_ss
7 legalized: true
8 body: |
9   bb.0:
10     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
11     ; FAST-LABEL: name: select_s32_scc_ss
12     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
13     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
14     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
15     ; FAST: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3
16     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
17     ; FAST: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
18     ; GREEDY-LABEL: name: select_s32_scc_ss
19     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
20     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
21     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
22     ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3
23     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
24     ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
25     %0:_(s32) = COPY $sgpr0
26     %1:_(s32) = COPY $sgpr1
27     %2:_(s32) = COPY $sgpr2
28     %3:_(s32) = COPY $sgpr3
29     %4:_(s1) = G_ICMP intpred(ne), %0, %1
30     %5:_(s32) = G_SELECT %4, %2, %3
31 ...
33 ---
34 name: select_s32_scc_sv
35 legalized: true
36 body: |
37   bb.0:
38     liveins: $sgpr0, $sgpr1, $sgpr2, $vgpr0
39     ; FAST-LABEL: name: select_s32_scc_sv
40     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
41     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
42     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
43     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
44     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
45     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
46     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
47     ; GREEDY-LABEL: name: select_s32_scc_sv
48     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
49     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
50     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
51     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
52     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
53     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
54     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
55     %0:_(s32) = COPY $sgpr0
56     %1:_(s32) = COPY $sgpr1
57     %2:_(s32) = COPY $sgpr2
58     %3:_(s32) = COPY $vgpr0
59     %4:_(s1) = G_ICMP intpred(ne), %0, %1
60     %5:_(s32) = G_SELECT %4, %2, %3
62 ...
64 ---
65 name: select_s32_scc_vs
66 legalized: true
67 body: |
68   bb.0:
69     liveins: $sgpr0, $sgpr1, $sgpr2, $vgpr0
70     ; FAST-LABEL: name: select_s32_scc_vs
71     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
72     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
73     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
74     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
75     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
76     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
77     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
78     ; GREEDY-LABEL: name: select_s32_scc_vs
79     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
80     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
81     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
82     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
83     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
84     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
85     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
86     %0:_(s32) = COPY $sgpr0
87     %1:_(s32) = COPY $sgpr1
88     %2:_(s32) = COPY $sgpr2
89     %3:_(s32) = COPY $vgpr0
90     %4:_(s1) = G_ICMP intpred(ne), %0, %1
91     %5:_(s32) = G_SELECT %4, %3, %2
92 ...
94 ---
95 name: select_s32_scc_vv
96 legalized: true
97 body: |
98   bb.0:
99     liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1
100     ; FAST-LABEL: name: select_s32_scc_vv
101     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
102     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
103     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
104     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
105     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
106     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
107     ; GREEDY-LABEL: name: select_s32_scc_vv
108     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
109     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
110     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
111     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
112     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
113     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
114     %0:_(s32) = COPY $sgpr0
115     %1:_(s32) = COPY $sgpr1
116     %2:_(s32) = COPY $vgpr0
117     %3:_(s32) = COPY $vgpr1
118     %4:_(s1) = G_ICMP intpred(ne), %0, %1
119     %5:_(s32) = G_SELECT %4, %2, %3
123 name: select_s32_vcc_ss
124 legalized: true
125 body: |
126   bb.0:
127     liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1
128     ; FAST-LABEL: name: select_s32_vcc_ss
129     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
130     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
131     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
132     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
133     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
134     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
135     ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
136     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]]
137     ; GREEDY-LABEL: name: select_s32_vcc_ss
138     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
139     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
140     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
141     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
142     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
143     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
144     ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
145     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]]
146     %0:_(s32) = COPY $sgpr0
147     %1:_(s32) = COPY $sgpr1
148     %2:_(s32) = COPY $vgpr0
149     %3:_(s32) = COPY $vgpr1
150     %4:_(s1) = G_ICMP intpred(ne), %2, %3
151     %5:_(s32) = G_SELECT %4, %0, %1
155 name: select_s32_vcc_sv
156 legalized: true
157 body: |
158   bb.0:
159     liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2
160     ; FAST-LABEL: name: select_s32_vcc_sv
161     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
162     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
163     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
164     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
165     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
166     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
167     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
168     ; GREEDY-LABEL: name: select_s32_vcc_sv
169     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
170     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
171     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
172     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
173     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
174     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
175     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
176     %0:_(s32) = COPY $sgpr0
177     %1:_(s32) = COPY $vgpr0
178     %2:_(s32) = COPY $vgpr1
179     %3:_(s32) = COPY $vgpr2
180     %4:_(s1) = G_ICMP intpred(ne), %1, %2
181     %5:_(s32) = G_SELECT %4, %0, %3
185 name: select_s32_vcc_vs
186 legalized: true
187 body: |
188   bb.0:
189     liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2
190     ; FAST-LABEL: name: select_s32_vcc_vs
191     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
192     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
193     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
194     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
195     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
196     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
197     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
198     ; GREEDY-LABEL: name: select_s32_vcc_vs
199     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
200     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
201     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
202     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
203     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
204     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
205     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
206     %0:_(s32) = COPY $sgpr0
207     %1:_(s32) = COPY $vgpr0
208     %2:_(s32) = COPY $vgpr1
209     %3:_(s32) = COPY $vgpr2
210     %4:_(s1) = G_ICMP intpred(ne), %1, %2
211     %5:_(s32) = G_SELECT %4, %3, %0
215 name: select_s32_vcc_vv
216 legalized: true
217 body: |
218   bb.0:
219     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
220     ; FAST-LABEL: name: select_s32_vcc_vv
221     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
222     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
223     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
224     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3
225     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
226     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
227     ; GREEDY-LABEL: name: select_s32_vcc_vv
228     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
229     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
230     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
231     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3
232     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
233     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
234     %0:_(s32) = COPY $vgpr0
235     %1:_(s32) = COPY $vgpr1
236     %2:_(s32) = COPY $vgpr2
237     %3:_(s32) = COPY $vgpr3
238     %4:_(s1) = G_ICMP intpred(ne), %0, %1
239     %5:_(s32) = G_SELECT %4, %2, %3
243 name: select_s64_sss
244 legalized: true
245 body: |
246   bb.0:
247     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
248     ; FAST-LABEL: name: select_s64_sss
249     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
250     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
251     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
252     ; FAST: [[COPY3:%[0-9]+]]:sgpr(s64) = COPY $sgpr4_sgpr5
253     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
254     ; FAST: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
255     ; GREEDY-LABEL: name: select_s64_sss
256     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
257     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
258     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
259     ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s64) = COPY $sgpr4_sgpr5
260     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
261     ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
262     %0:_(s32) = COPY $sgpr0
263     %1:_(s32) = COPY $sgpr1
264     %2:_(s64) = COPY $sgpr2_sgpr3
265     %3:_(s64) = COPY $sgpr4_sgpr5
266     %4:_(s1) = G_ICMP intpred(ne), %0, %1
267     %5:_(s64) = G_SELECT %4, %2, %3
271 name: select_s64_ssv
272 legalized: true
273 body: |
274   bb.0:
275     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
276     ; FAST-LABEL: name: select_s64_ssv
277     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
278     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
279     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
280     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
281     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
282     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
283     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
284     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
285     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
286     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
287     ; GREEDY-LABEL: name: select_s64_ssv
288     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
289     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
290     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
291     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
292     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
293     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
294     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
295     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
296     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
297     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
298     %0:_(s32) = COPY $sgpr0
299     %1:_(s32) = COPY $sgpr1
300     %2:_(s64) = COPY $sgpr2_sgpr3
301     %3:_(s64) = COPY $vgpr0_vgpr1
302     %4:_(s1) = G_ICMP intpred(ne), %0, %1
303     %5:_(s64) = G_SELECT %4, %2, %3
308 name: select_s64_svs
309 legalized: true
310 body: |
311   bb.0:
312     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
313     ; FAST-LABEL: name: select_s64_svs
314     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
315     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
316     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
317     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
318     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
319     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
320     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
321     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
322     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
323     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
324     ; GREEDY-LABEL: name: select_s64_svs
325     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
326     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
327     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
328     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
329     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
330     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
331     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
332     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
333     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
334     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
335     %0:_(s32) = COPY $sgpr0
336     %1:_(s32) = COPY $sgpr1
337     %2:_(s64) = COPY $sgpr2_sgpr3
338     %3:_(s64) = COPY $vgpr0_vgpr1
339     %4:_(s1) = G_ICMP intpred(ne), %0, %1
340     %5:_(s64) = G_SELECT %4, %3, %2
344 name: select_s64_svv
345 legalized: true
346 body: |
347   bb.0:
348     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3
349     ; FAST-LABEL: name: select_s64_svv
350     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
351     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
352     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
353     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
354     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
355     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
356     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
357     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
358     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
359     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
360     ; GREEDY-LABEL: name: select_s64_svv
361     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
362     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
363     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
364     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
365     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
366     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
367     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
368     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
369     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
370     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
371     %0:_(s32) = COPY $sgpr0
372     %1:_(s32) = COPY $sgpr1
373     %2:_(s64) = COPY $vgpr0_vgpr1
374     %3:_(s64) = COPY $vgpr2_vgpr3
375     %4:_(s1) = G_ICMP intpred(ne), %0, %1
376     %5:_(s64) = G_SELECT %4, %2, %3
380 name: select_s64_vss
381 legalized: true
382 body: |
383   bb.0:
384     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1
385     ; FAST-LABEL: name: select_s64_vss
386     ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
387     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
388     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
389     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
390     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
391     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
392     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)
393     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
394     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
395     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
396     ; GREEDY-LABEL: name: select_s64_vss
397     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
398     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3
399     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
400     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
401     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
402     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
403     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)
404     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
405     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
406     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
407     %0:_(s64) = COPY $sgpr0_sgpr1
408     %1:_(s64) = COPY $sgpr2_sgpr3
409     %2:_(s32) = COPY $vgpr0
410     %3:_(s32) = COPY $vgpr1
411     %4:_(s1) = G_ICMP intpred(ne), %2, %3
412     %5:_(s64) = G_SELECT %4, %0, %1
416 name: select_s64_vsv
417 legalized: true
418 body: |
419   bb.0:
420     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
421     ; FAST-LABEL: name: select_s64_vsv
422     ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
423     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
424     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
425     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
426     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
427     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
428     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
429     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
430     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
431     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
432     ; GREEDY-LABEL: name: select_s64_vsv
433     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
434     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
435     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
436     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
437     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
438     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
439     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
440     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
441     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
442     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
443     %0:_(s64) = COPY $sgpr0_sgpr1
444     %1:_(s32) = COPY $vgpr0
445     %2:_(s32) = COPY $vgpr1
446     %3:_(s64) = COPY $vgpr2_vgpr3
447     %4:_(s1) = G_ICMP intpred(ne), %1, %2
448     %5:_(s64) = G_SELECT %4, %0, %3
452 name: select_s64_vvs
453 legalized: true
454 body: |
455   bb.0:
456     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
457     ; FAST-LABEL: name: select_s64_vvs
458     ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
459     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
460     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
461     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
462     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
463     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
464     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
465     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
466     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
467     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
468     ; GREEDY-LABEL: name: select_s64_vvs
469     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1
470     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
471     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
472     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
473     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
474     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
475     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)
476     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
477     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
478     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
479     %0:_(s64) = COPY $sgpr0_sgpr1
480     %1:_(s32) = COPY $vgpr0
481     %2:_(s32) = COPY $vgpr1
482     %3:_(s64) = COPY $vgpr2_vgpr3
483     %4:_(s1) = G_ICMP intpred(ne), %1, %2
484     %5:_(s64) = G_SELECT %4, %3, %0
488 name: select_s64_vvv
489 legalized: true
490 body: |
491   bb.0:
492     liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
493     ; FAST-LABEL: name: select_s64_vvv
494     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
495     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
496     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
497     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr4_vgpr5
498     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
499     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
500     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
501     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
502     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
503     ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
504     ; GREEDY-LABEL: name: select_s64_vvv
505     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
506     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
507     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
508     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr4_vgpr5
509     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
510     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)
511     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)
512     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
513     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
514     ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
515     %0:_(s32) = COPY $vgpr0
516     %1:_(s32) = COPY $vgpr1
517     %2:_(s64) = COPY $vgpr2_vgpr3
518     %3:_(s64) = COPY $vgpr4_vgpr5
519     %4:_(s1) = G_ICMP intpred(ne), %0, %1
520     %5:_(s64) = G_SELECT %4, %2, %3
524 name: select_v2s32_scc_ss
525 legalized: true
526 body: |
527   bb.0:
528     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
529     ; FAST-LABEL: name: select_v2s32_scc_ss
530     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
531     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
532     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
533     ; FAST: [[COPY3:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5
534     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
535     ; FAST: [[SELECT:%[0-9]+]]:sgpr(<2 x s32>) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
536     ; GREEDY-LABEL: name: select_v2s32_scc_ss
537     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
538     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
539     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
540     ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5
541     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
542     ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(<2 x s32>) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
543     %0:_(s32) = COPY $sgpr0
544     %1:_(s32) = COPY $sgpr1
545     %2:_(<2 x s32>) = COPY $sgpr2_sgpr3
546     %3:_(<2 x s32>) = COPY $sgpr4_sgpr5
547     %4:_(s1) = G_ICMP intpred(ne), %0, %1
548     %5:_(<2 x s32>) = G_SELECT %4, %2, %3
552 name: select_v2s32_scc_sv
553 legalized: true
554 body: |
555   bb.0:
556     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
557     ; FAST-LABEL: name: select_v2s32_scc_sv
558     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
559     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
560     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
561     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
562     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
563     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
564     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
565     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
566     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
567     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
568     ; GREEDY-LABEL: name: select_v2s32_scc_sv
569     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
570     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
571     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
572     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
573     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
574     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
575     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
576     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
577     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
578     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
579     %0:_(s32) = COPY $sgpr0
580     %1:_(s32) = COPY $sgpr1
581     %2:_(<2 x s32>) = COPY $sgpr2_sgpr3
582     %3:_(<2 x s32>) = COPY $vgpr0_vgpr1
583     %4:_(s1) = G_ICMP intpred(ne), %0, %1
584     %5:_(<2 x s32>) = G_SELECT %4, %2, %3
589 name: select_v2s32_scc_vs
590 legalized: true
591 body: |
592   bb.0:
593     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
594     ; FAST-LABEL: name: select_v2s32_scc_vs
595     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
596     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
597     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
598     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
599     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
600     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
601     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
602     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
603     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
604     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
605     ; GREEDY-LABEL: name: select_v2s32_scc_vs
606     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
607     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
608     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
609     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
610     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
611     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
612     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
613     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
614     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
615     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
616     %0:_(s32) = COPY $sgpr0
617     %1:_(s32) = COPY $sgpr1
618     %2:_(<2 x s32>) = COPY $sgpr2_sgpr3
619     %3:_(<2 x s32>) = COPY $vgpr0_vgpr1
620     %4:_(s1) = G_ICMP intpred(ne), %0, %1
621     %5:_(<2 x s32>) = G_SELECT %4, %3, %2
625 name: select_v2s32_scc_vv
626 legalized: true
627 body: |
628   bb.0:
629     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3
630     ; FAST-LABEL: name: select_v2s32_scc_vv
631     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
632     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
633     ; FAST: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
634     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
635     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
636     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
637     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
638     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
639     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
640     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
641     ; GREEDY-LABEL: name: select_v2s32_scc_vv
642     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
643     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
644     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
645     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
646     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
647     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
648     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
649     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
650     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
651     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
652     %0:_(s32) = COPY $sgpr0
653     %1:_(s32) = COPY $sgpr1
654     %2:_(<2 x s32>) = COPY $vgpr0_vgpr1
655     %3:_(<2 x s32>) = COPY $vgpr2_vgpr3
656     %4:_(s1) = G_ICMP intpred(ne), %0, %1
657     %5:_(<2 x s32>) = G_SELECT %4, %2, %3
661 name: select_v2s32_vcc_ss
662 legalized: true
663 body: |
664   bb.0:
665     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1
666     ; FAST-LABEL: name: select_v2s32_vcc_ss
667     ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
668     ; FAST: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
669     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
670     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
671     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
672     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
673     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)
674     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
675     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
676     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
677     ; GREEDY-LABEL: name: select_v2s32_vcc_ss
678     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
679     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3
680     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
681     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
682     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
683     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
684     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)
685     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
686     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
687     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
688     %0:_(<2 x s32>) = COPY $sgpr0_sgpr1
689     %1:_(<2 x s32>) = COPY $sgpr2_sgpr3
690     %2:_(s32) = COPY $vgpr0
691     %3:_(s32) = COPY $vgpr1
692     %4:_(s1) = G_ICMP intpred(ne), %2, %3
693     %5:_(<2 x s32>) = G_SELECT %4, %0, %1
697 name: select_v2s32_vcc_sv
698 legalized: true
699 body: |
700   bb.0:
701     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
702     ; FAST-LABEL: name: select_v2s32_vcc_sv
703     ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
704     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
705     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
706     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
707     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
708     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
709     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
710     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
711     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
712     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
713     ; GREEDY-LABEL: name: select_v2s32_vcc_sv
714     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
715     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
716     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
717     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
718     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
719     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
720     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
721     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
722     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
723     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
724     %0:_(<2 x s32>) = COPY $sgpr0_sgpr1
725     %1:_(s32) = COPY $vgpr0
726     %2:_(s32) = COPY $vgpr1
727     %3:_(<2 x s32>) = COPY $vgpr2_vgpr3
728     %4:_(s1) = G_ICMP intpred(ne), %1, %2
729     %5:_(<2 x s32>) = G_SELECT %4, %0, %3
733 name: select_v2s32_vcc_vs
734 legalized: true
735 body: |
736   bb.0:
737     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
738     ; FAST-LABEL: name: select_v2s32_vcc_vs
739     ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
740     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
741     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
742     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
743     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
744     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
745     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
746     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
747     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
748     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
749     ; GREEDY-LABEL: name: select_v2s32_vcc_vs
750     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1
751     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
752     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
753     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
754     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
755     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
756     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
757     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
758     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
759     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
760     %0:_(<2 x s32>) = COPY $sgpr0_sgpr1
761     %1:_(s32) = COPY $vgpr0
762     %2:_(s32) = COPY $vgpr1
763     %3:_(<2 x s32>) = COPY $vgpr2_vgpr3
764     %4:_(s1) = G_ICMP intpred(ne), %1, %2
765     %5:_(<2 x s32>) = G_SELECT %4, %3, %0
769 name: select_v2s32_vcc_vv
770 legalized: true
771 body: |
772   bb.0:
773     liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
774     ; FAST-LABEL: name: select_v2s32_vcc_vv
775     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
776     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
777     ; FAST: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
778     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5
779     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
780     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
781     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
782     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
783     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
784     ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
785     ; GREEDY-LABEL: name: select_v2s32_vcc_vv
786     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
787     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
788     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
789     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5
790     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
791     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
792     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)
793     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
794     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
795     ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)
796     %0:_(s32) = COPY $vgpr0
797     %1:_(s32) = COPY $vgpr1
798     %2:_(<2 x s32>) = COPY $vgpr2_vgpr3
799     %3:_(<2 x s32>) = COPY $vgpr4_vgpr5
800     %4:_(s1) = G_ICMP intpred(ne), %0, %1
801     %5:_(<2 x s32>) = G_SELECT %4, %2, %3
805 name: select_v4s16_scc_ss
806 legalized: true
807 body: |
808   bb.0:
809     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
810     ; FAST-LABEL: name: select_v4s16_scc_ss
811     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
812     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
813     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
814     ; FAST: [[COPY3:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
815     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
816     ; FAST: [[SELECT:%[0-9]+]]:sgpr(<4 x s16>) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
817     ; GREEDY-LABEL: name: select_v4s16_scc_ss
818     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
819     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
820     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
821     ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5
822     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
823     ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(<4 x s16>) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
824     %0:_(s32) = COPY $sgpr0
825     %1:_(s32) = COPY $sgpr1
826     %2:_(<4 x s16>) = COPY $sgpr2_sgpr3
827     %3:_(<4 x s16>) = COPY $sgpr4_sgpr5
828     %4:_(s1) = G_ICMP intpred(ne), %0, %1
829     %5:_(<4 x s16>) = G_SELECT %4, %2, %3
833 name: select_v4s16_scc_sv
834 legalized: true
835 body: |
836   bb.0:
837     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
838     ; FAST-LABEL: name: select_v4s16_scc_sv
839     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
840     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
841     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
842     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
843     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
844     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
845     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
846     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
847     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
848     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
849     ; GREEDY-LABEL: name: select_v4s16_scc_sv
850     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
851     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
852     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
853     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
854     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
855     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
856     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
857     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
858     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
859     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
860     %0:_(s32) = COPY $sgpr0
861     %1:_(s32) = COPY $sgpr1
862     %2:_(<4 x s16>) = COPY $sgpr2_sgpr3
863     %3:_(<4 x s16>) = COPY $vgpr0_vgpr1
864     %4:_(s1) = G_ICMP intpred(ne), %0, %1
865     %5:_(<4 x s16>) = G_SELECT %4, %2, %3
870 name: select_v4s16_scc_vs
871 legalized: true
872 body: |
873   bb.0:
874     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
875     ; FAST-LABEL: name: select_v4s16_scc_vs
876     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
877     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
878     ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
879     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
880     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
881     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
882     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
883     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
884     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
885     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
886     ; GREEDY-LABEL: name: select_v4s16_scc_vs
887     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
888     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
889     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
890     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
891     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
892     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
893     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
894     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
895     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
896     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
897     %0:_(s32) = COPY $sgpr0
898     %1:_(s32) = COPY $sgpr1
899     %2:_(<4 x s16>) = COPY $sgpr2_sgpr3
900     %3:_(<4 x s16>) = COPY $vgpr0_vgpr1
901     %4:_(s1) = G_ICMP intpred(ne), %0, %1
902     %5:_(<4 x s16>) = G_SELECT %4, %3, %2
906 name: select_v4s16_scc_vv
907 legalized: true
908 body: |
909   bb.0:
910     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3
911     ; FAST-LABEL: name: select_v4s16_scc_vv
912     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
913     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
914     ; FAST: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
915     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
916     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
917     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
918     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
919     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
920     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
921     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
922     ; GREEDY-LABEL: name: select_v4s16_scc_vv
923     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
924     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
925     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
926     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
927     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
928     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
929     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
930     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
931     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
932     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
933     %0:_(s32) = COPY $sgpr0
934     %1:_(s32) = COPY $sgpr1
935     %2:_(<4 x s16>) = COPY $vgpr0_vgpr1
936     %3:_(<4 x s16>) = COPY $vgpr2_vgpr3
937     %4:_(s1) = G_ICMP intpred(ne), %0, %1
938     %5:_(<4 x s16>) = G_SELECT %4, %2, %3
942 name: select_v4s16_vcc_ss
943 legalized: true
944 body: |
945   bb.0:
946     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1
947     ; FAST-LABEL: name: select_v4s16_vcc_ss
948     ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
949     ; FAST: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
950     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
951     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
952     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
953     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
954     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)
955     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
956     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
957     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
958     ; GREEDY-LABEL: name: select_v4s16_vcc_ss
959     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
960     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3
961     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
962     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
963     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
964     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
965     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)
966     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
967     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
968     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
969     %0:_(<4 x s16>) = COPY $sgpr0_sgpr1
970     %1:_(<4 x s16>) = COPY $sgpr2_sgpr3
971     %2:_(s32) = COPY $vgpr0
972     %3:_(s32) = COPY $vgpr1
973     %4:_(s1) = G_ICMP intpred(ne), %2, %3
974     %5:_(<4 x s16>) = G_SELECT %4, %0, %1
978 name: select_v4s16_vcc_sv
979 legalized: true
980 body: |
981   bb.0:
982     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
983     ; CHECK-LABEL: name: select_v4s16_vcc_sv
984     ; FAST-LABEL: name: select_v4s16_vcc_sv
985     ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
986     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
987     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
988     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
989     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
990     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
991     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
992     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
993     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
994     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
995     ; GREEDY-LABEL: name: select_v4s16_vcc_sv
996     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
997     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
998     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
999     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
1000     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1001     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
1002     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
1003     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1004     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1005     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
1006     %0:_(<4 x s16>) = COPY $sgpr0_sgpr1
1007     %1:_(s32) = COPY $vgpr0
1008     %2:_(s32) = COPY $vgpr1
1009     %3:_(<4 x s16>) = COPY $vgpr2_vgpr3
1010     %4:_(s1) = G_ICMP intpred(ne), %1, %2
1011     %5:_(<4 x s16>) = G_SELECT %4, %0, %3
1015 name: select_v4s16_vcc_vs
1016 legalized: true
1017 body: |
1018   bb.0:
1019     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
1020     ; FAST-LABEL: name: select_v4s16_vcc_vs
1021     ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
1022     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1023     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1024     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
1025     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1026     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
1027     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
1028     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1029     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1030     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
1031     ; GREEDY-LABEL: name: select_v4s16_vcc_vs
1032     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1
1033     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1034     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1035     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
1036     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1037     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
1038     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)
1039     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1040     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1041     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
1042     %0:_(<4 x s16>) = COPY $sgpr0_sgpr1
1043     %1:_(s32) = COPY $vgpr0
1044     %2:_(s32) = COPY $vgpr1
1045     %3:_(<4 x s16>) = COPY $vgpr2_vgpr3
1046     %4:_(s1) = G_ICMP intpred(ne), %1, %2
1047     %5:_(<4 x s16>) = G_SELECT %4, %3, %0
1051 name: select_v4s16_vcc_vv
1052 legalized: true
1053 body: |
1054   bb.0:
1055     liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
1056     ; FAST-LABEL: name: select_v4s16_vcc_vv
1057     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1058     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1059     ; FAST: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
1060     ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
1061     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1062     ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
1063     ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
1064     ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1065     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1066     ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
1067     ; GREEDY-LABEL: name: select_v4s16_vcc_vv
1068     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1069     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1070     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
1071     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5
1072     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1073     ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)
1074     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>)
1075     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1076     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1077     ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>)
1078     %0:_(s32) = COPY $vgpr0
1079     %1:_(s32) = COPY $vgpr1
1080     %2:_(<4 x s16>) = COPY $vgpr2_vgpr3
1081     %3:_(<4 x s16>) = COPY $vgpr4_vgpr5
1082     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1083     %5:_(<4 x s16>) = G_SELECT %4, %2, %3
1087 name: select_p1_scc_ss
1088 legalized: true
1089 body: |
1090   bb.0:
1091     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
1092     ; FAST-LABEL: name: select_p1_scc_ss
1093     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1094     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1095     ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1096     ; FAST: [[COPY3:%[0-9]+]]:sgpr(p1) = COPY $sgpr4_sgpr5
1097     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1098     ; FAST: [[SELECT:%[0-9]+]]:sgpr(p1) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
1099     ; GREEDY-LABEL: name: select_p1_scc_ss
1100     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1101     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1102     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1103     ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(p1) = COPY $sgpr4_sgpr5
1104     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1105     ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(p1) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
1106     %0:_(s32) = COPY $sgpr0
1107     %1:_(s32) = COPY $sgpr1
1108     %2:_(p1) = COPY $sgpr2_sgpr3
1109     %3:_(p1) = COPY $sgpr4_sgpr5
1110     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1111     %5:_(p1) = G_SELECT %4, %2, %3
1115 name: select_p1_scc_sv
1116 legalized: true
1117 body: |
1118   bb.0:
1119     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
1120     ; FAST-LABEL: name: select_p1_scc_sv
1121     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1122     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1123     ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1124     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1125     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1126     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1127     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1128     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1129     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1130     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1131     ; GREEDY-LABEL: name: select_p1_scc_sv
1132     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1133     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1134     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1135     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1136     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1137     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1138     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1139     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1140     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1141     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1142     %0:_(s32) = COPY $sgpr0
1143     %1:_(s32) = COPY $sgpr1
1144     %2:_(p1) = COPY $sgpr2_sgpr3
1145     %3:_(p1) = COPY $vgpr0_vgpr1
1146     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1147     %5:_(p1) = G_SELECT %4, %2, %3
1152 name: select_p1_scc_vs
1153 legalized: true
1154 body: |
1155   bb.0:
1156     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1
1157     ; FAST-LABEL: name: select_p1_scc_vs
1158     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1159     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1160     ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1161     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1162     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1163     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1164     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1165     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1166     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1167     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1168     ; GREEDY-LABEL: name: select_p1_scc_vs
1169     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1170     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1171     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1172     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1173     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1174     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1175     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1176     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1177     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1178     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1179     %0:_(s32) = COPY $sgpr0
1180     %1:_(s32) = COPY $sgpr1
1181     %2:_(p1) = COPY $sgpr2_sgpr3
1182     %3:_(p1) = COPY $vgpr0_vgpr1
1183     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1184     %5:_(p1) = G_SELECT %4, %3, %2
1188 name: select_p1_scc_vv
1189 legalized: true
1190 body: |
1191   bb.0:
1192     liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3
1193     ; FAST-LABEL: name: select_p1_scc_vv
1194     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1195     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1196     ; FAST: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1197     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1198     ; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1199     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1200     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1201     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1202     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1203     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1204     ; GREEDY-LABEL: name: select_p1_scc_vv
1205     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1206     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1207     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
1208     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1209     ; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1210     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1211     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1212     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1213     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1214     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1215     %0:_(s32) = COPY $sgpr0
1216     %1:_(s32) = COPY $sgpr1
1217     %2:_(p1) = COPY $vgpr0_vgpr1
1218     %3:_(p1) = COPY $vgpr2_vgpr3
1219     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1220     %5:_(p1) = G_SELECT %4, %2, %3
1224 name: select_p1_vcc_ss
1225 legalized: true
1226 body: |
1227   bb.0:
1228     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1
1229     ; FAST-LABEL: name: select_p1_vcc_ss
1230     ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1231     ; FAST: [[COPY1:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1232     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1233     ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1234     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
1235     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1236     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](p1)
1237     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1238     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1239     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1240     ; GREEDY-LABEL: name: select_p1_vcc_ss
1241     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1242     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3
1243     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1244     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1245     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
1246     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1247     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](p1)
1248     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1249     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1250     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1251     %0:_(p1) = COPY $sgpr0_sgpr1
1252     %1:_(p1) = COPY $sgpr2_sgpr3
1253     %2:_(s32) = COPY $vgpr0
1254     %3:_(s32) = COPY $vgpr1
1255     %4:_(s1) = G_ICMP intpred(ne), %2, %3
1256     %5:_(p1) = G_SELECT %4, %0, %1
1260 name: select_p1_vcc_sv
1261 legalized: true
1262 body: |
1263   bb.0:
1264     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
1265     ; FAST-LABEL: name: select_p1_vcc_sv
1266     ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1267     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1268     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1269     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1270     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1271     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1272     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1273     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1274     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1275     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1276     ; GREEDY-LABEL: name: select_p1_vcc_sv
1277     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1278     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1279     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1280     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1281     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1282     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1283     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1284     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1285     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1286     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1287     %0:_(p1) = COPY $sgpr0_sgpr1
1288     %1:_(s32) = COPY $vgpr0
1289     %2:_(s32) = COPY $vgpr1
1290     %3:_(p1) = COPY $vgpr2_vgpr3
1291     %4:_(s1) = G_ICMP intpred(ne), %1, %2
1292     %5:_(p1) = G_SELECT %4, %0, %3
1296 name: select_p1_vcc_vs
1297 legalized: true
1298 body: |
1299   bb.0:
1300     liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3
1301     ; FAST-LABEL: name: select_p1_vcc_vs
1302     ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1303     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1304     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1305     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1306     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1307     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1308     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1309     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1310     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1311     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1312     ; GREEDY-LABEL: name: select_p1_vcc_vs
1313     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
1314     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1315     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1316     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1317     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
1318     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1319     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1)
1320     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1321     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1322     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1323     %0:_(p1) = COPY $sgpr0_sgpr1
1324     %1:_(s32) = COPY $vgpr0
1325     %2:_(s32) = COPY $vgpr1
1326     %3:_(p1) = COPY $vgpr2_vgpr3
1327     %4:_(s1) = G_ICMP intpred(ne), %1, %2
1328     %5:_(p1) = G_SELECT %4, %3, %0
1332 name: select_p1_vcc_vv
1333 legalized: true
1334 body: |
1335   bb.0:
1336     liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
1337     ; FAST-LABEL: name: select_p1_vcc_vv
1338     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1339     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1340     ; FAST: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1341     ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr4_vgpr5
1342     ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1343     ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1344     ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1345     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1346     ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1347     ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1348     ; GREEDY-LABEL: name: select_p1_vcc_vv
1349     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1350     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1351     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
1352     ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr4_vgpr5
1353     ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
1354     ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1)
1355     ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1)
1356     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]
1357     ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]]
1358     ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
1359     %0:_(s32) = COPY $vgpr0
1360     %1:_(s32) = COPY $vgpr1
1361     %2:_(p1) = COPY $vgpr2_vgpr3
1362     %3:_(p1) = COPY $vgpr4_vgpr5
1363     %4:_(s1) = G_ICMP intpred(ne), %0, %1
1364     %5:_(p1) = G_SELECT %4, %2, %3
1368 name: select_s32_vgpr_vv
1369 legalized: true
1370 body: |
1371   bb.0:
1372     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
1373     ; FAST-LABEL: name: select_s32_vgpr_vv
1374     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1375     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1376     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
1377     ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
1378     ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1379     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]]
1380     ; GREEDY-LABEL: name: select_s32_vgpr_vv
1381     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1382     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1383     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
1384     ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
1385     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1386     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]]
1387     %0:_(s32) = COPY $vgpr0
1388     %1:_(s32) = COPY $vgpr1
1389     %2:_(s32) = COPY $vgpr2
1390     %3:_(s1) = G_TRUNC %0
1391     %4:_(s32) = G_SELECT %3, %1, %2
1395 name: select_s32_vgpr_ss
1396 legalized: true
1397 body: |
1398   bb.0:
1399     liveins: $vgpr0, $sgpr0, $sgpr1
1400     ; FAST-LABEL: name: select_s32_vgpr_ss
1401     ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1402     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1403     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1404     ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
1405     ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1406     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
1407     ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
1408     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]]
1409     ; GREEDY-LABEL: name: select_s32_vgpr_ss
1410     ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1411     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1412     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1413     ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
1414     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1415     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
1416     ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
1417     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]]
1418     %0:_(s32) = COPY $vgpr0
1419     %1:_(s32) = COPY $sgpr0
1420     %2:_(s32) = COPY $sgpr1
1421     %3:_(s1) = G_TRUNC %0
1422     %4:_(s32) = G_SELECT %3, %1, %2
1426 name: select_s32_sgpr_vv
1427 legalized: true
1428 body: |
1429   bb.0:
1430     liveins: $sgpr0, $vgpr0, $vgpr1
1431     ; FAST-LABEL: name: select_s32_sgpr_vv
1432     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1433     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1434     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1435     ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1436     ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1437     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]]
1438     ; GREEDY-LABEL: name: select_s32_sgpr_vv
1439     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1440     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1441     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
1442     ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1443     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1444     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]]
1445     %0:_(s32) = COPY $sgpr0
1446     %1:_(s32) = COPY $vgpr0
1447     %2:_(s32) = COPY $vgpr1
1448     %3:_(s1) = G_TRUNC %0
1449     %4:_(s32) = G_SELECT %3, %1, %2
1453 name: select_s32_sgpr_vs
1454 legalized: true
1455 body: |
1456   bb.0:
1457     liveins: $sgpr0, $vgpr0, $sgpr1
1458     ; FAST-LABEL: name: select_s32_sgpr_vs
1459     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1460     ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1461     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1462     ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1463     ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1464     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
1465     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY4]]
1466     ; GREEDY-LABEL: name: select_s32_sgpr_vs
1467     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1468     ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1469     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1470     ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1471     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1472     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
1473     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY4]]
1474     %0:_(s32) = COPY $sgpr0
1475     %1:_(s32) = COPY $vgpr0
1476     %2:_(s32) = COPY $sgpr1
1477     %3:_(s1) = G_TRUNC %0
1478     %4:_(s32) = G_SELECT %3, %1, %2
1482 name: select_s32_sgpr_sv
1483 legalized: true
1484 body: |
1485   bb.0:
1486     liveins: $sgpr0, $sgpr0, $vgpr0
1487     ; FAST-LABEL: name: select_s32_sgpr_sv
1488     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1489     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1490     ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1491     ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1492     ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1493     ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
1494     ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY2]]
1495     ; GREEDY-LABEL: name: select_s32_sgpr_sv
1496     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1497     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1498     ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
1499     ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1500     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1501     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
1502     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY2]]
1503     %0:_(s32) = COPY $sgpr0
1504     %1:_(s32) = COPY $sgpr1
1505     %2:_(s32) = COPY $vgpr0
1506     %3:_(s1) = G_TRUNC %0
1507     %4:_(s32) = G_SELECT %3, %1, %2
1510 # FIXME: greedy unnecessairly uses vcc/vgpr
1512 name: select_s32_sgpr_ss
1513 legalized: true
1514 body: |
1515   bb.0:
1516     liveins: $sgpr0, $sgpr1, $sgpr2
1517     ; FAST-LABEL: name: select_s32_sgpr_ss
1518     ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1519     ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1520     ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
1521     ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1522     ; FAST: [[COPY3:%[0-9]+]]:scc(s1) = COPY [[TRUNC]](s1)
1523     ; FAST: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]]
1524     ; GREEDY-LABEL: name: select_s32_sgpr_ss
1525     ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1526     ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1527     ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
1528     ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
1529     ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
1530     ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
1531     ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
1532     ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]]
1533     %0:_(s32) = COPY $sgpr0
1534     %1:_(s32) = COPY $sgpr1
1535     %2:_(s32) = COPY $sgpr2
1536     %3:_(s1) = G_TRUNC %0
1537     %4:_(s32) = G_SELECT %3, %1, %2