1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s  | FileCheck -check-prefix=WAVE64 %s
3# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s  | FileCheck -check-prefix=WAVE32 %s
4
5---
6name: fcmp_false_s16_vv
7legalized: true
8regBankSelected: true
9
10body: |
11  bb.0:
12    liveins: $vgpr0, $vgpr1
13    ; WAVE64-LABEL: name: fcmp_false_s16_vv
14    ; WAVE64: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
15    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
16    ; WAVE64: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
17    ; WAVE64: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)
18    ; WAVE64: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[TRUNC]](s16), [[TRUNC1]]
19    ; WAVE64: S_ENDPGM 0, implicit [[FCMP]](s1)
20    ; WAVE32-LABEL: name: fcmp_false_s16_vv
21    ; WAVE32: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
22    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
23    ; WAVE32: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
24    ; WAVE32: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)
25    ; WAVE32: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[TRUNC]](s16), [[TRUNC1]]
26    ; WAVE32: S_ENDPGM 0, implicit [[FCMP]](s1)
27    %0:vgpr(s32) = COPY $vgpr0
28    %1:vgpr(s32) = COPY $vgpr1
29    %2:vgpr(s16) = G_TRUNC %0
30    %3:vgpr(s16) = G_TRUNC %1
31    %4:vcc(s1) = G_FCMP floatpred(false), %2, %3
32    S_ENDPGM 0, implicit %4
33...
34
35---
36name: fcmp_oeq_s16_vv
37legalized: true
38regBankSelected: true
39
40body: |
41  bb.0:
42    liveins: $vgpr0, $vgpr1
43    ; WAVE64-LABEL: name: fcmp_oeq_s16_vv
44    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
45    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
46    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_EQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
47    ; WAVE64: S_ENDPGM 0, implicit %4
48    ; WAVE32-LABEL: name: fcmp_oeq_s16_vv
49    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
50    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
51    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_EQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
52    ; WAVE32: S_ENDPGM 0, implicit %4
53    %0:vgpr(s32) = COPY $vgpr0
54    %1:vgpr(s32) = COPY $vgpr1
55    %2:vgpr(s16) = G_TRUNC %0
56    %3:vgpr(s16) = G_TRUNC %1
57    %4:vcc(s1) = G_FCMP floatpred(oeq), %2, %3
58    S_ENDPGM 0, implicit %4
59...
60
61---
62name: fcmp_ogt_s16_vv
63legalized: true
64regBankSelected: true
65
66body: |
67  bb.0:
68    liveins: $vgpr0, $vgpr1
69    ; WAVE64-LABEL: name: fcmp_ogt_s16_vv
70    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
71    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
72    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_GT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
73    ; WAVE64: S_ENDPGM 0, implicit %4
74    ; WAVE32-LABEL: name: fcmp_ogt_s16_vv
75    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
76    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
77    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_GT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
78    ; WAVE32: S_ENDPGM 0, implicit %4
79    %0:vgpr(s32) = COPY $vgpr0
80    %1:vgpr(s32) = COPY $vgpr1
81    %2:vgpr(s16) = G_TRUNC %0
82    %3:vgpr(s16) = G_TRUNC %1
83    %4:vcc(s1) = G_FCMP floatpred(ogt), %2, %3
84    S_ENDPGM 0, implicit %4
85...
86
87---
88name: fcmp_oge_s16_vv
89legalized: true
90regBankSelected: true
91
92body: |
93  bb.0:
94    liveins: $vgpr0, $vgpr1
95    ; WAVE64-LABEL: name: fcmp_oge_s16_vv
96    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
97    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
98    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_GE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
99    ; WAVE64: S_ENDPGM 0, implicit %4
100    ; WAVE32-LABEL: name: fcmp_oge_s16_vv
101    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
102    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
103    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_GE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
104    ; WAVE32: S_ENDPGM 0, implicit %4
105    %0:vgpr(s32) = COPY $vgpr0
106    %1:vgpr(s32) = COPY $vgpr1
107    %2:vgpr(s16) = G_TRUNC %0
108    %3:vgpr(s16) = G_TRUNC %1
109    %4:vcc(s1) = G_FCMP floatpred(oge), %2, %3
110    S_ENDPGM 0, implicit %4
111...
112
113---
114name: fcmp_olt_s16_vv
115legalized: true
116regBankSelected: true
117
118body: |
119  bb.0:
120    liveins: $vgpr0, $vgpr1
121    ; WAVE64-LABEL: name: fcmp_olt_s16_vv
122    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
123    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
124    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
125    ; WAVE64: S_ENDPGM 0, implicit %4
126    ; WAVE32-LABEL: name: fcmp_olt_s16_vv
127    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
128    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
129    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
130    ; WAVE32: S_ENDPGM 0, implicit %4
131    %0:vgpr(s32) = COPY $vgpr0
132    %1:vgpr(s32) = COPY $vgpr1
133    %2:vgpr(s16) = G_TRUNC %0
134    %3:vgpr(s16) = G_TRUNC %1
135    %4:vcc(s1) = G_FCMP floatpred(olt), %2, %3
136    S_ENDPGM 0, implicit %4
137...
138
139---
140name: fcmp_ole_s16_vv
141legalized: true
142regBankSelected: true
143
144body: |
145  bb.0:
146    liveins: $vgpr0, $vgpr1
147    ; WAVE64-LABEL: name: fcmp_ole_s16_vv
148    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
149    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
150    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
151    ; WAVE64: S_ENDPGM 0, implicit %4
152    ; WAVE32-LABEL: name: fcmp_ole_s16_vv
153    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
154    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
155    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
156    ; WAVE32: S_ENDPGM 0, implicit %4
157    %0:vgpr(s32) = COPY $vgpr0
158    %1:vgpr(s32) = COPY $vgpr1
159    %2:vgpr(s16) = G_TRUNC %0
160    %3:vgpr(s16) = G_TRUNC %1
161    %4:vcc(s1) = G_FCMP floatpred(ole), %2, %3
162    S_ENDPGM 0, implicit %4
163...
164---
165name: fcmp_one_s16_vv
166legalized: true
167regBankSelected: true
168
169body: |
170  bb.0:
171    liveins: $vgpr0, $vgpr1
172    ; WAVE64-LABEL: name: fcmp_one_s16_vv
173    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
174    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
175    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
176    ; WAVE64: S_ENDPGM 0, implicit %4
177    ; WAVE32-LABEL: name: fcmp_one_s16_vv
178    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
179    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
180    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
181    ; WAVE32: S_ENDPGM 0, implicit %4
182    %0:vgpr(s32) = COPY $vgpr0
183    %1:vgpr(s32) = COPY $vgpr1
184    %2:vgpr(s16) = G_TRUNC %0
185    %3:vgpr(s16) = G_TRUNC %1
186    %4:vcc(s1) = G_FCMP floatpred(one), %2, %3
187    S_ENDPGM 0, implicit %4
188...
189
190---
191name: fcmp_ord_s16_vv
192legalized: true
193regBankSelected: true
194
195body: |
196  bb.0:
197    liveins: $vgpr0, $vgpr1
198    ; WAVE64-LABEL: name: fcmp_ord_s16_vv
199    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
200    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
201    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
202    ; WAVE64: S_ENDPGM 0, implicit %4
203    ; WAVE32-LABEL: name: fcmp_ord_s16_vv
204    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
205    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
206    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
207    ; WAVE32: S_ENDPGM 0, implicit %4
208    %0:vgpr(s32) = COPY $vgpr0
209    %1:vgpr(s32) = COPY $vgpr1
210    %2:vgpr(s16) = G_TRUNC %0
211    %3:vgpr(s16) = G_TRUNC %1
212    %4:vcc(s1) = G_FCMP floatpred(one), %2, %3
213    S_ENDPGM 0, implicit %4
214...
215
216---
217name: fcmp_uno_s16_vv
218legalized: true
219regBankSelected: true
220
221body: |
222  bb.0:
223    liveins: $vgpr0, $vgpr1
224    ; WAVE64-LABEL: name: fcmp_uno_s16_vv
225    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
226    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
227    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_U_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
228    ; WAVE64: S_ENDPGM 0, implicit %4
229    ; WAVE32-LABEL: name: fcmp_uno_s16_vv
230    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
231    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
232    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_U_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
233    ; WAVE32: S_ENDPGM 0, implicit %4
234    %0:vgpr(s32) = COPY $vgpr0
235    %1:vgpr(s32) = COPY $vgpr1
236    %2:vgpr(s16) = G_TRUNC %0
237    %3:vgpr(s16) = G_TRUNC %1
238    %4:vcc(s1) = G_FCMP floatpred(uno), %2, %3
239    S_ENDPGM 0, implicit %4
240...
241
242---
243name: fcmp_ueq_s16_vv
244legalized: true
245regBankSelected: true
246
247body: |
248  bb.0:
249    liveins: $vgpr0, $vgpr1
250    ; WAVE64-LABEL: name: fcmp_ueq_s16_vv
251    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
252    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
253    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
254    ; WAVE64: S_ENDPGM 0, implicit %4
255    ; WAVE32-LABEL: name: fcmp_ueq_s16_vv
256    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
257    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
258    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
259    ; WAVE32: S_ENDPGM 0, implicit %4
260    %0:vgpr(s32) = COPY $vgpr0
261    %1:vgpr(s32) = COPY $vgpr1
262    %2:vgpr(s16) = G_TRUNC %0
263    %3:vgpr(s16) = G_TRUNC %1
264    %4:vcc(s1) = G_FCMP floatpred(ueq), %2, %3
265    S_ENDPGM 0, implicit %4
266...
267
268---
269name: fcmp_ugt_s16_vv
270legalized: true
271regBankSelected: true
272
273body: |
274  bb.0:
275    liveins: $vgpr0, $vgpr1
276    ; WAVE64-LABEL: name: fcmp_ugt_s16_vv
277    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
278    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
279    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
280    ; WAVE64: S_ENDPGM 0, implicit %4
281    ; WAVE32-LABEL: name: fcmp_ugt_s16_vv
282    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
283    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
284    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
285    ; WAVE32: S_ENDPGM 0, implicit %4
286    %0:vgpr(s32) = COPY $vgpr0
287    %1:vgpr(s32) = COPY $vgpr1
288    %2:vgpr(s16) = G_TRUNC %0
289    %3:vgpr(s16) = G_TRUNC %1
290    %4:vcc(s1) = G_FCMP floatpred(ugt), %2, %3
291    S_ENDPGM 0, implicit %4
292...
293
294---
295name: fcmp_uge_s16_vv
296legalized: true
297regBankSelected: true
298
299body: |
300  bb.0:
301    liveins: $vgpr0, $vgpr1
302    ; WAVE64-LABEL: name: fcmp_uge_s16_vv
303    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
304    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
305    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
306    ; WAVE64: S_ENDPGM 0, implicit %4
307    ; WAVE32-LABEL: name: fcmp_uge_s16_vv
308    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
309    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
310    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
311    ; WAVE32: S_ENDPGM 0, implicit %4
312    %0:vgpr(s32) = COPY $vgpr0
313    %1:vgpr(s32) = COPY $vgpr1
314    %2:vgpr(s16) = G_TRUNC %0
315    %3:vgpr(s16) = G_TRUNC %1
316    %4:vcc(s1) = G_FCMP floatpred(uge), %2, %3
317    S_ENDPGM 0, implicit %4
318...
319
320---
321name: fcmp_ult_s16_vv
322legalized: true
323regBankSelected: true
324
325body: |
326  bb.0:
327    liveins: $vgpr0, $vgpr1
328    ; WAVE64-LABEL: name: fcmp_ult_s16_vv
329    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
330    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
331    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NGE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
332    ; WAVE64: S_ENDPGM 0, implicit %4
333    ; WAVE32-LABEL: name: fcmp_ult_s16_vv
334    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
335    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
336    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NGE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
337    ; WAVE32: S_ENDPGM 0, implicit %4
338    %0:vgpr(s32) = COPY $vgpr0
339    %1:vgpr(s32) = COPY $vgpr1
340    %2:vgpr(s16) = G_TRUNC %0
341    %3:vgpr(s16) = G_TRUNC %1
342    %4:vcc(s1) = G_FCMP floatpred(ult), %2, %3
343    S_ENDPGM 0, implicit %4
344...
345
346---
347name: fcmp_ule_s16_vv
348legalized: true
349regBankSelected: true
350
351body: |
352  bb.0:
353    liveins: $vgpr0, $vgpr1
354    ; WAVE64-LABEL: name: fcmp_ule_s16_vv
355    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
356    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
357    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NGT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
358    ; WAVE64: S_ENDPGM 0, implicit %4
359    ; WAVE32-LABEL: name: fcmp_ule_s16_vv
360    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
361    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
362    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NGT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
363    ; WAVE32: S_ENDPGM 0, implicit %4
364    %0:vgpr(s32) = COPY $vgpr0
365    %1:vgpr(s32) = COPY $vgpr1
366    %2:vgpr(s16) = G_TRUNC %0
367    %3:vgpr(s16) = G_TRUNC %1
368    %4:vcc(s1) = G_FCMP floatpred(ule), %2, %3
369    S_ENDPGM 0, implicit %4
370...
371
372---
373name: fcmp_une_s16_vv
374legalized: true
375regBankSelected: true
376
377body: |
378  bb.0:
379    liveins: $vgpr0, $vgpr1
380    ; WAVE64-LABEL: name: fcmp_une_s16_vv
381    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
382    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
383    ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NEQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
384    ; WAVE64: S_ENDPGM 0, implicit %4
385    ; WAVE32-LABEL: name: fcmp_une_s16_vv
386    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
387    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
388    ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NEQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
389    ; WAVE32: S_ENDPGM 0, implicit %4
390    %0:vgpr(s32) = COPY $vgpr0
391    %1:vgpr(s32) = COPY $vgpr1
392    %2:vgpr(s16) = G_TRUNC %0
393    %3:vgpr(s16) = G_TRUNC %1
394    %4:vcc(s1) = G_FCMP floatpred(une), %2, %3
395    S_ENDPGM 0, implicit %4
396...
397
398---
399name: fcmp_true_s16_vv
400legalized: true
401regBankSelected: true
402
403body: |
404  bb.0:
405    liveins: $vgpr0, $vgpr1
406    ; WAVE64-LABEL: name: fcmp_true_s16_vv
407    ; WAVE64: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
408    ; WAVE64: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
409    ; WAVE64: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
410    ; WAVE64: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)
411    ; WAVE64: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[TRUNC]](s16), [[TRUNC1]]
412    ; WAVE64: S_ENDPGM 0, implicit [[FCMP]](s1)
413    ; WAVE32-LABEL: name: fcmp_true_s16_vv
414    ; WAVE32: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
415    ; WAVE32: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
416    ; WAVE32: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
417    ; WAVE32: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)
418    ; WAVE32: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[TRUNC]](s16), [[TRUNC1]]
419    ; WAVE32: S_ENDPGM 0, implicit [[FCMP]](s1)
420    %0:vgpr(s32) = COPY $vgpr0
421    %1:vgpr(s32) = COPY $vgpr1
422    %2:vgpr(s16) = G_TRUNC %0
423    %3:vgpr(s16) = G_TRUNC %1
424    %4:vcc(s1) = G_FCMP floatpred(true), %2, %3
425    S_ENDPGM 0, implicit %4
426...
427
428