1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX8 %s
3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX9 %s
4# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX10 %s
5
6# Test we recognize all forms of and with mask as clearing the high bits.
7---
8name: v_cvt_f16_f32_altmask
9tracksRegLiveness: true
10body:             |
11  bb.0:
12    liveins: $vgpr0
13    ; GFX8-LABEL: name: v_cvt_f16_f32_altmask
14    ; GFX8: liveins: $vgpr0
15    ; GFX8-NEXT: {{  $}}
16    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
17    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
18    ; GFX8-NEXT: %smask:sreg_32 = S_MOV_B32 65535
19    ; GFX8-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
20    ; GFX8-NEXT: $vgpr0 = COPY %op
21    ; GFX8-NEXT: $vgpr1 = COPY %op
22    ; GFX8-NEXT: $vgpr2 = COPY %op
23    ; GFX9-LABEL: name: v_cvt_f16_f32_altmask
24    ; GFX9: liveins: $vgpr0
25    ; GFX9-NEXT: {{  $}}
26    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
27    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
28    ; GFX9-NEXT: %smask:sreg_32 = S_MOV_B32 65535
29    ; GFX9-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
30    ; GFX9-NEXT: $vgpr0 = COPY %op
31    ; GFX9-NEXT: $vgpr1 = COPY %op
32    ; GFX9-NEXT: $vgpr2 = COPY %op
33    ; GFX10-LABEL: name: v_cvt_f16_f32_altmask
34    ; GFX10: liveins: $vgpr0
35    ; GFX10-NEXT: {{  $}}
36    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
37    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
38    ; GFX10-NEXT: %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
39    ; GFX10-NEXT: %and1:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
40    ; GFX10-NEXT: %and2:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
41    ; GFX10-NEXT: $vgpr0 = COPY %and0
42    ; GFX10-NEXT: $vgpr1 = COPY %and1
43    ; GFX10-NEXT: $vgpr2 = COPY %and2
44    %0:vgpr_32 = COPY $vgpr0
45    %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
46    %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
47    %smask:sreg_32 = S_MOV_B32 65535
48    %and1:vgpr_32 = V_AND_B32_e64 %smask, %op, implicit $exec
49    %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
50    %and2:vgpr_32 = V_AND_B32_e64 %vmask, %op, implicit $exec
51    $vgpr0 = COPY %and0
52    $vgpr1 = COPY %and1
53    $vgpr2 = COPY %and2
54
55...
56
57# Test we do not assume the high bits are zero
58---
59name: wrong_mask_value
60tracksRegLiveness: true
61body:             |
62  bb.0:
63    liveins: $vgpr0
64    ; GFX8-LABEL: name: wrong_mask_value
65    ; GFX8: liveins: $vgpr0
66    ; GFX8-NEXT: {{  $}}
67    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
68    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
69    ; GFX8-NEXT: %mask:sreg_32 = S_MOV_B32 65534
70    ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
71    ; GFX8-NEXT: $vgpr0 = COPY %and
72    ; GFX9-LABEL: name: wrong_mask_value
73    ; GFX9: liveins: $vgpr0
74    ; GFX9-NEXT: {{  $}}
75    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
76    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
77    ; GFX9-NEXT: %mask:sreg_32 = S_MOV_B32 65534
78    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
79    ; GFX9-NEXT: $vgpr0 = COPY %and
80    ; GFX10-LABEL: name: wrong_mask_value
81    ; GFX10: liveins: $vgpr0
82    ; GFX10-NEXT: {{  $}}
83    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
84    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
85    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e64 65534, %op, implicit $exec
86    ; GFX10-NEXT: $vgpr0 = COPY %and
87    %0:vgpr_32 = COPY $vgpr0
88    %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
89    %mask:sreg_32 = S_MOV_B32 65534
90    %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
91    $vgpr0 = COPY %and
92
93...
94
95---
96name: v_cvt_f16_f32
97tracksRegLiveness: true
98body:             |
99  bb.0:
100    liveins: $vgpr0
101    ; GFX8-LABEL: name: v_cvt_f16_f32
102    ; GFX8: liveins: $vgpr0
103    ; GFX8-NEXT: {{  $}}
104    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
105    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
106    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
107    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
108    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
109    ; GFX9-LABEL: name: v_cvt_f16_f32
110    ; GFX9: liveins: $vgpr0
111    ; GFX9-NEXT: {{  $}}
112    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
113    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
114    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
115    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
116    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
117    ; GFX10-LABEL: name: v_cvt_f16_f32
118    ; GFX10: liveins: $vgpr0
119    ; GFX10-NEXT: {{  $}}
120    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
121    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
122    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
123    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
124    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
125    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
126    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
127    %0:vgpr_32 = COPY $vgpr0
128    %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, %0, 0, 0, implicit $mode, implicit $exec
129    %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 %0, implicit $mode, implicit $exec
130    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
131    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
132    $vgpr0 = COPY %and_vop3
133    $vgpr1 = COPY %and_vop1
134
135...
136
137---
138name: v_cvt_f16_u16
139tracksRegLiveness: true
140body:             |
141  bb.0:
142    liveins: $vgpr0
143    ; GFX8-LABEL: name: v_cvt_f16_u16
144    ; GFX8: liveins: $vgpr0
145    ; GFX8-NEXT: {{  $}}
146    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
147    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
148    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
149    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
150    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
151    ; GFX9-LABEL: name: v_cvt_f16_u16
152    ; GFX9: liveins: $vgpr0
153    ; GFX9-NEXT: {{  $}}
154    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
155    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
156    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
157    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
158    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
159    ; GFX10-LABEL: name: v_cvt_f16_u16
160    ; GFX10: liveins: $vgpr0
161    ; GFX10-NEXT: {{  $}}
162    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
163    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
164    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
165    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
166    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
167    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
168    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
169    %0:vgpr_32 = COPY $vgpr0
170    %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 %0, 0, 0, implicit $mode, implicit $exec
171    %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 %0, implicit $mode, implicit $exec
172    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
173    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
174    $vgpr0 = COPY %and_vop3
175    $vgpr1 = COPY %and_vop1
176
177...
178
179---
180name: v_cvt_f16_i16
181tracksRegLiveness: true
182body:             |
183  bb.0:
184    liveins: $vgpr0
185    ; GFX8-LABEL: name: v_cvt_f16_i16
186    ; GFX8: liveins: $vgpr0
187    ; GFX8-NEXT: {{  $}}
188    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
189    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
190    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
191    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
192    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
193    ; GFX9-LABEL: name: v_cvt_f16_i16
194    ; GFX9: liveins: $vgpr0
195    ; GFX9-NEXT: {{  $}}
196    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
197    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
198    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
199    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
200    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
201    ; GFX10-LABEL: name: v_cvt_f16_i16
202    ; GFX10: liveins: $vgpr0
203    ; GFX10-NEXT: {{  $}}
204    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
205    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
206    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
207    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
208    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
209    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
210    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
211    %0:vgpr_32 = COPY $vgpr0
212    %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 %0, 0, 0, implicit $mode, implicit $exec
213    %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 %0, implicit $mode, implicit $exec
214    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
215    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
216    $vgpr0 = COPY %and_vop3
217    $vgpr1 = COPY %and_vop1
218
219...
220
221---
222name: v_rcp_f16
223tracksRegLiveness: true
224body:             |
225  bb.0:
226    liveins: $vgpr0
227    ; GFX8-LABEL: name: v_rcp_f16
228    ; GFX8: liveins: $vgpr0
229    ; GFX8-NEXT: {{  $}}
230    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
231    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
232    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
233    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
234    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
235    ; GFX9-LABEL: name: v_rcp_f16
236    ; GFX9: liveins: $vgpr0
237    ; GFX9-NEXT: {{  $}}
238    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
239    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
240    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
241    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
242    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
243    ; GFX10-LABEL: name: v_rcp_f16
244    ; GFX10: liveins: $vgpr0
245    ; GFX10-NEXT: {{  $}}
246    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
247    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
248    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
249    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
250    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
251    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
252    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
253    %0:vgpr_32 = COPY $vgpr0
254    %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
255    %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 %0, implicit $mode, implicit $exec
256    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
257    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
258    $vgpr0 = COPY %and_vop3
259    $vgpr1 = COPY %and_vop1
260
261...
262---
263name: v_rsq_f16
264tracksRegLiveness: true
265body:             |
266  bb.0:
267    liveins: $vgpr0
268    ; GFX8-LABEL: name: v_rsq_f16
269    ; GFX8: liveins: $vgpr0
270    ; GFX8-NEXT: {{  $}}
271    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
272    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
273    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
274    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
275    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
276    ; GFX9-LABEL: name: v_rsq_f16
277    ; GFX9: liveins: $vgpr0
278    ; GFX9-NEXT: {{  $}}
279    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
280    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
281    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
282    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
283    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
284    ; GFX10-LABEL: name: v_rsq_f16
285    ; GFX10: liveins: $vgpr0
286    ; GFX10-NEXT: {{  $}}
287    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
288    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
289    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
290    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
291    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
292    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
293    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
294    %0:vgpr_32 = COPY $vgpr0
295    %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
296    %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 %0, implicit $mode, implicit $exec
297    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
298    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
299    $vgpr0 = COPY %and_vop3
300    $vgpr1 = COPY %and_vop1
301
302...
303---
304name: v_sqrt_f16
305tracksRegLiveness: true
306body:             |
307  bb.0:
308    liveins: $vgpr0
309    ; GFX8-LABEL: name: v_sqrt_f16
310    ; GFX8: liveins: $vgpr0
311    ; GFX8-NEXT: {{  $}}
312    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
313    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
314    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
315    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
316    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
317    ; GFX9-LABEL: name: v_sqrt_f16
318    ; GFX9: liveins: $vgpr0
319    ; GFX9-NEXT: {{  $}}
320    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
321    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
322    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
323    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
324    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
325    ; GFX10-LABEL: name: v_sqrt_f16
326    ; GFX10: liveins: $vgpr0
327    ; GFX10-NEXT: {{  $}}
328    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
329    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
330    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
331    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
332    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
333    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
334    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
335    %0:vgpr_32 = COPY $vgpr0
336    %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
337    %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 %0, implicit $mode, implicit $exec
338    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
339    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
340    $vgpr0 = COPY %and_vop3
341    $vgpr1 = COPY %and_vop1
342
343...
344
345---
346name: v_log_f16
347tracksRegLiveness: true
348body:             |
349  bb.0:
350    liveins: $vgpr0
351    ; GFX8-LABEL: name: v_log_f16
352    ; GFX8: liveins: $vgpr0
353    ; GFX8-NEXT: {{  $}}
354    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
355    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
356    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
357    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
358    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
359    ; GFX9-LABEL: name: v_log_f16
360    ; GFX9: liveins: $vgpr0
361    ; GFX9-NEXT: {{  $}}
362    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
363    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
364    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
365    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
366    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
367    ; GFX10-LABEL: name: v_log_f16
368    ; GFX10: liveins: $vgpr0
369    ; GFX10-NEXT: {{  $}}
370    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
371    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
372    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
373    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
374    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
375    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
376    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
377    %0:vgpr_32 = COPY $vgpr0
378    %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
379    %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 %0, implicit $mode, implicit $exec
380    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
381    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
382    $vgpr0 = COPY %and_vop3
383    $vgpr1 = COPY %and_vop1
384
385...
386
387---
388name: v_exp_f16
389tracksRegLiveness: true
390body:             |
391  bb.0:
392    liveins: $vgpr0
393    ; GFX8-LABEL: name: v_exp_f16
394    ; GFX8: liveins: $vgpr0
395    ; GFX8-NEXT: {{  $}}
396    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
397    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
398    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
399    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
400    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
401    ; GFX9-LABEL: name: v_exp_f16
402    ; GFX9: liveins: $vgpr0
403    ; GFX9-NEXT: {{  $}}
404    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
405    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
406    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
407    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
408    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
409    ; GFX10-LABEL: name: v_exp_f16
410    ; GFX10: liveins: $vgpr0
411    ; GFX10-NEXT: {{  $}}
412    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
413    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
414    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
415    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
416    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
417    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
418    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
419    %0:vgpr_32 = COPY $vgpr0
420    %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
421    %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 %0, implicit $mode, implicit $exec
422    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
423    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
424    $vgpr0 = COPY %and_vop3
425    $vgpr1 = COPY %and_vop1
426
427...
428
429---
430name: v_sin_f16
431tracksRegLiveness: true
432body:             |
433  bb.0:
434    liveins: $vgpr0
435    ; GFX8-LABEL: name: v_sin_f16
436    ; GFX8: liveins: $vgpr0
437    ; GFX8-NEXT: {{  $}}
438    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
439    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
440    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
441    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
442    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
443    ; GFX9-LABEL: name: v_sin_f16
444    ; GFX9: liveins: $vgpr0
445    ; GFX9-NEXT: {{  $}}
446    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
447    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
448    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
449    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
450    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
451    ; GFX10-LABEL: name: v_sin_f16
452    ; GFX10: liveins: $vgpr0
453    ; GFX10-NEXT: {{  $}}
454    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
455    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
456    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
457    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
458    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
459    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
460    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
461    %0:vgpr_32 = COPY $vgpr0
462    %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
463    %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 %0, implicit $mode, implicit $exec
464    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
465    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
466    $vgpr0 = COPY %and_vop3
467    $vgpr1 = COPY %and_vop1
468
469...
470
471---
472name: v_cos_f16
473tracksRegLiveness: true
474body:             |
475  bb.0:
476    liveins: $vgpr0
477    ; GFX8-LABEL: name: v_cos_f16
478    ; GFX8: liveins: $vgpr0
479    ; GFX8-NEXT: {{  $}}
480    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
481    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
482    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
483    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
484    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
485    ; GFX9-LABEL: name: v_cos_f16
486    ; GFX9: liveins: $vgpr0
487    ; GFX9-NEXT: {{  $}}
488    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
489    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
490    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
491    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
492    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
493    ; GFX10-LABEL: name: v_cos_f16
494    ; GFX10: liveins: $vgpr0
495    ; GFX10-NEXT: {{  $}}
496    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
497    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
498    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
499    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
500    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
501    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
502    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
503    %0:vgpr_32 = COPY $vgpr0
504    %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
505    %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 %0, implicit $mode, implicit $exec
506    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
507    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
508    $vgpr0 = COPY %and_vop3
509    $vgpr1 = COPY %and_vop1
510
511...
512
513---
514name: v_floor_f16
515tracksRegLiveness: true
516body:             |
517  bb.0:
518    liveins: $vgpr0
519    ; GFX8-LABEL: name: v_floor_f16
520    ; GFX8: liveins: $vgpr0
521    ; GFX8-NEXT: {{  $}}
522    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
523    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
524    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
525    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
526    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
527    ; GFX9-LABEL: name: v_floor_f16
528    ; GFX9: liveins: $vgpr0
529    ; GFX9-NEXT: {{  $}}
530    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
531    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
532    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
533    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
534    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
535    ; GFX10-LABEL: name: v_floor_f16
536    ; GFX10: liveins: $vgpr0
537    ; GFX10-NEXT: {{  $}}
538    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
539    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
540    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
541    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
542    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
543    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
544    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
545    %0:vgpr_32 = COPY $vgpr0
546    %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
547    %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 %0, implicit $mode, implicit $exec
548    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
549    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
550    $vgpr0 = COPY %and_vop3
551    $vgpr1 = COPY %and_vop1
552
553...
554
555---
556name: v_ceil_f16
557tracksRegLiveness: true
558body:             |
559  bb.0:
560    liveins: $vgpr0
561    ; GFX8-LABEL: name: v_ceil_f16
562    ; GFX8: liveins: $vgpr0
563    ; GFX8-NEXT: {{  $}}
564    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
565    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
566    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
567    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
568    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
569    ; GFX9-LABEL: name: v_ceil_f16
570    ; GFX9: liveins: $vgpr0
571    ; GFX9-NEXT: {{  $}}
572    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
573    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
574    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
575    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
576    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
577    ; GFX10-LABEL: name: v_ceil_f16
578    ; GFX10: liveins: $vgpr0
579    ; GFX10-NEXT: {{  $}}
580    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
581    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
582    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
583    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
584    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
585    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
586    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
587    %0:vgpr_32 = COPY $vgpr0
588    %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
589    %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 %0, implicit $mode, implicit $exec
590    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
591    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
592    $vgpr0 = COPY %and_vop3
593    $vgpr1 = COPY %and_vop1
594
595...
596
597---
598name: v_trunc_f16
599tracksRegLiveness: true
600body:             |
601  bb.0:
602    liveins: $vgpr0
603    ; GFX8-LABEL: name: v_trunc_f16
604    ; GFX8: liveins: $vgpr0
605    ; GFX8-NEXT: {{  $}}
606    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
607    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
608    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
609    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
610    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
611    ; GFX9-LABEL: name: v_trunc_f16
612    ; GFX9: liveins: $vgpr0
613    ; GFX9-NEXT: {{  $}}
614    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
615    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
616    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
617    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
618    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
619    ; GFX10-LABEL: name: v_trunc_f16
620    ; GFX10: liveins: $vgpr0
621    ; GFX10-NEXT: {{  $}}
622    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
623    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
624    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
625    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
626    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
627    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
628    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
629    %0:vgpr_32 = COPY $vgpr0
630    %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
631    %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 %0, implicit $mode, implicit $exec
632    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
633    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
634    $vgpr0 = COPY %and_vop3
635    $vgpr1 = COPY %and_vop1
636
637...
638
639---
640name: v_rndne_f16
641tracksRegLiveness: true
642body:             |
643  bb.0:
644    liveins: $vgpr0
645    ; GFX8-LABEL: name: v_rndne_f16
646    ; GFX8: liveins: $vgpr0
647    ; GFX8-NEXT: {{  $}}
648    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
649    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
650    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
651    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
652    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
653    ; GFX9-LABEL: name: v_rndne_f16
654    ; GFX9: liveins: $vgpr0
655    ; GFX9-NEXT: {{  $}}
656    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
657    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
658    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
659    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
660    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
661    ; GFX10-LABEL: name: v_rndne_f16
662    ; GFX10: liveins: $vgpr0
663    ; GFX10-NEXT: {{  $}}
664    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
665    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
666    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
667    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
668    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
669    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
670    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
671    %0:vgpr_32 = COPY $vgpr0
672    %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
673    %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 %0, implicit $mode, implicit $exec
674    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
675    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
676    $vgpr0 = COPY %and_vop3
677    $vgpr1 = COPY %and_vop1
678
679...
680
681---
682name: v_fract_f16
683tracksRegLiveness: true
684body:             |
685  bb.0:
686    liveins: $vgpr0
687    ; GFX8-LABEL: name: v_fract_f16
688    ; GFX8: liveins: $vgpr0
689    ; GFX8-NEXT: {{  $}}
690    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
691    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
692    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
693    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
694    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
695    ; GFX9-LABEL: name: v_fract_f16
696    ; GFX9: liveins: $vgpr0
697    ; GFX9-NEXT: {{  $}}
698    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
699    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
700    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
701    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
702    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
703    ; GFX10-LABEL: name: v_fract_f16
704    ; GFX10: liveins: $vgpr0
705    ; GFX10-NEXT: {{  $}}
706    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
707    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
708    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
709    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
710    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
711    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
712    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
713    %0:vgpr_32 = COPY $vgpr0
714    %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
715    %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 %0, implicit $mode, implicit $exec
716    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
717    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
718    $vgpr0 = COPY %and_vop3
719    $vgpr1 = COPY %and_vop1
720
721...
722
723---
724name: v_frexp_mant_f16
725tracksRegLiveness: true
726body:             |
727  bb.0:
728    liveins: $vgpr0
729    ; GFX8-LABEL: name: v_frexp_mant_f16
730    ; GFX8: liveins: $vgpr0
731    ; GFX8-NEXT: {{  $}}
732    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
733    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
734    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
735    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
736    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
737    ; GFX9-LABEL: name: v_frexp_mant_f16
738    ; GFX9: liveins: $vgpr0
739    ; GFX9-NEXT: {{  $}}
740    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
741    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
742    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
743    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
744    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
745    ; GFX10-LABEL: name: v_frexp_mant_f16
746    ; GFX10: liveins: $vgpr0
747    ; GFX10-NEXT: {{  $}}
748    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
749    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
750    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
751    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
752    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
753    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
754    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
755    %0:vgpr_32 = COPY $vgpr0
756    %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
757    %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 %0, implicit $mode, implicit $exec
758    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
759    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
760    $vgpr0 = COPY %and_vop3
761    $vgpr1 = COPY %and_vop1
762
763...
764
765---
766name: v_frexp_exp_f16
767tracksRegLiveness: true
768body:             |
769  bb.0:
770    liveins: $vgpr0
771    ; GFX8-LABEL: name: v_frexp_exp_f16
772    ; GFX8: liveins: $vgpr0
773    ; GFX8-NEXT: {{  $}}
774    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
775    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
776    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
777    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
778    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
779    ; GFX9-LABEL: name: v_frexp_exp_f16
780    ; GFX9: liveins: $vgpr0
781    ; GFX9-NEXT: {{  $}}
782    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
783    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
784    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
785    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
786    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
787    ; GFX10-LABEL: name: v_frexp_exp_f16
788    ; GFX10: liveins: $vgpr0
789    ; GFX10-NEXT: {{  $}}
790    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
791    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
792    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
793    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
794    ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
795    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
796    ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
797    %0:vgpr_32 = COPY $vgpr0
798    %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
799    %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 %0, implicit $mode, implicit $exec
800    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
801    %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
802    $vgpr0 = COPY %and_vop3
803    $vgpr1 = COPY %and_vop1
804
805...
806
807---
808name: v_ldexp_f16
809tracksRegLiveness: true
810body:             |
811  bb.0:
812    liveins: $vgpr0, $vgpr1
813    ; GFX8-LABEL: name: v_ldexp_f16
814    ; GFX8: liveins: $vgpr0, $vgpr1
815    ; GFX8-NEXT: {{  $}}
816    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
817    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
818    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
819    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
820    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
821    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
822    ; GFX9-LABEL: name: v_ldexp_f16
823    ; GFX9: liveins: $vgpr0, $vgpr1
824    ; GFX9-NEXT: {{  $}}
825    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
826    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
827    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
828    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
829    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
830    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
831    ; GFX10-LABEL: name: v_ldexp_f16
832    ; GFX10: liveins: $vgpr0, $vgpr1
833    ; GFX10-NEXT: {{  $}}
834    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
835    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
836    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
837    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
838    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
839    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
840    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
841    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
842    %0:vgpr_32 = COPY $vgpr0
843    %1:vgpr_32 = COPY $vgpr1
844    %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
845    %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 %0, %1, implicit $mode, implicit $exec
846    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
847    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
848    $vgpr0 = COPY %and_vop3
849    $vgpr1 = COPY %and_vop2
850
851...
852
853---
854name: v_lshlrev_b16
855tracksRegLiveness: true
856body:             |
857  bb.0:
858    liveins: $vgpr0, $vgpr1
859    ; GFX8-LABEL: name: v_lshlrev_b16
860    ; GFX8: liveins: $vgpr0, $vgpr1
861    ; GFX8-NEXT: {{  $}}
862    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
863    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
864    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
865    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
866    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
867    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
868    ; GFX9-LABEL: name: v_lshlrev_b16
869    ; GFX9: liveins: $vgpr0, $vgpr1
870    ; GFX9-NEXT: {{  $}}
871    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
872    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
873    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
874    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
875    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
876    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
877    ; GFX10-LABEL: name: v_lshlrev_b16
878    ; GFX10: liveins: $vgpr0, $vgpr1
879    ; GFX10-NEXT: {{  $}}
880    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
881    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
882    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
883    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
884    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
885    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
886    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
887    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
888    %0:vgpr_32 = COPY $vgpr0
889    %1:vgpr_32 = COPY $vgpr1
890    %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 %0, %1, implicit $mode, implicit $exec
891    %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 %0, %1, implicit $mode, implicit $exec
892    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
893    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
894    $vgpr0 = COPY %and_vop3
895    $vgpr1 = COPY %and_vop2
896
897...
898
899---
900name: v_lshrrev_b16
901tracksRegLiveness: true
902body:             |
903  bb.0:
904    liveins: $vgpr0, $vgpr1
905    ; GFX8-LABEL: name: v_lshrrev_b16
906    ; GFX8: liveins: $vgpr0, $vgpr1
907    ; GFX8-NEXT: {{  $}}
908    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
909    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
910    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
911    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
912    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
913    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
914    ; GFX9-LABEL: name: v_lshrrev_b16
915    ; GFX9: liveins: $vgpr0, $vgpr1
916    ; GFX9-NEXT: {{  $}}
917    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
918    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
919    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
920    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
921    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
922    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
923    ; GFX10-LABEL: name: v_lshrrev_b16
924    ; GFX10: liveins: $vgpr0, $vgpr1
925    ; GFX10-NEXT: {{  $}}
926    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
927    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
928    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
929    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
930    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
931    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
932    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
933    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
934    %0:vgpr_32 = COPY $vgpr0
935    %1:vgpr_32 = COPY $vgpr1
936    %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 %0, %1, implicit $mode, implicit $exec
937    %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 %0, %1, implicit $mode, implicit $exec
938    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
939    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
940    $vgpr0 = COPY %and_vop3
941    $vgpr1 = COPY %and_vop2
942
943...
944
945---
946name: v_ashrrev_i16
947tracksRegLiveness: true
948body:             |
949  bb.0:
950    liveins: $vgpr0, $vgpr1
951    ; GFX8-LABEL: name: v_ashrrev_i16
952    ; GFX8: liveins: $vgpr0, $vgpr1
953    ; GFX8-NEXT: {{  $}}
954    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
955    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
956    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
957    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
958    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
959    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
960    ; GFX9-LABEL: name: v_ashrrev_i16
961    ; GFX9: liveins: $vgpr0, $vgpr1
962    ; GFX9-NEXT: {{  $}}
963    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
964    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
965    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
966    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
967    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
968    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
969    ; GFX10-LABEL: name: v_ashrrev_i16
970    ; GFX10: liveins: $vgpr0, $vgpr1
971    ; GFX10-NEXT: {{  $}}
972    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
973    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
974    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
975    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
976    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
977    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
978    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
979    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
980    %0:vgpr_32 = COPY $vgpr0
981    %1:vgpr_32 = COPY $vgpr1
982    %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 %0, %1, implicit $mode, implicit $exec
983    %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 %0, %1, implicit $mode, implicit $exec
984    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
985    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
986    $vgpr0 = COPY %and_vop3
987    $vgpr1 = COPY %and_vop2
988
989...
990
991---
992name: v_add_u16
993tracksRegLiveness: true
994body:             |
995  bb.0:
996    liveins: $vgpr0, $vgpr1
997    ; GFX8-LABEL: name: v_add_u16
998    ; GFX8: liveins: $vgpr0, $vgpr1
999    ; GFX8-NEXT: {{  $}}
1000    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1001    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1002    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1003    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1004    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1005    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1006    ; GFX9-LABEL: name: v_add_u16
1007    ; GFX9: liveins: $vgpr0, $vgpr1
1008    ; GFX9-NEXT: {{  $}}
1009    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1010    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1011    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1012    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1013    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1014    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1015    ; GFX10-LABEL: name: v_add_u16
1016    ; GFX10: liveins: $vgpr0, $vgpr1
1017    ; GFX10-NEXT: {{  $}}
1018    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1019    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1020    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1021    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1022    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1023    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1024    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1025    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1026    %0:vgpr_32 = COPY $vgpr0
1027    %1:vgpr_32 = COPY $vgpr1
1028    %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1029    %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 %0, %1, implicit $mode, implicit $exec
1030    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1031    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1032    $vgpr0 = COPY %and_vop3
1033    $vgpr1 = COPY %and_vop2
1034
1035...
1036
1037---
1038name: v_sub_u16
1039tracksRegLiveness: true
1040body:             |
1041  bb.0:
1042    liveins: $vgpr0, $vgpr1
1043    ; GFX8-LABEL: name: v_sub_u16
1044    ; GFX8: liveins: $vgpr0, $vgpr1
1045    ; GFX8-NEXT: {{  $}}
1046    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1047    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1048    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1049    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1050    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1051    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1052    ; GFX9-LABEL: name: v_sub_u16
1053    ; GFX9: liveins: $vgpr0, $vgpr1
1054    ; GFX9-NEXT: {{  $}}
1055    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1056    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1057    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1058    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1059    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1060    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1061    ; GFX10-LABEL: name: v_sub_u16
1062    ; GFX10: liveins: $vgpr0, $vgpr1
1063    ; GFX10-NEXT: {{  $}}
1064    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1065    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1066    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1067    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1068    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1069    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1070    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1071    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1072    %0:vgpr_32 = COPY $vgpr0
1073    %1:vgpr_32 = COPY $vgpr1
1074    %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1075    %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 %0, %1, implicit $mode, implicit $exec
1076    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1077    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1078    $vgpr0 = COPY %and_vop3
1079    $vgpr1 = COPY %and_vop2
1080
1081...
1082
1083---
1084name: v_subrev_u16
1085tracksRegLiveness: true
1086body:             |
1087  bb.0:
1088    liveins: $vgpr0, $vgpr1
1089    ; GFX8-LABEL: name: v_subrev_u16
1090    ; GFX8: liveins: $vgpr0, $vgpr1
1091    ; GFX8-NEXT: {{  $}}
1092    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1093    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1094    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1095    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1096    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1097    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1098    ; GFX9-LABEL: name: v_subrev_u16
1099    ; GFX9: liveins: $vgpr0, $vgpr1
1100    ; GFX9-NEXT: {{  $}}
1101    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1102    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1103    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1104    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1105    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1106    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1107    ; GFX10-LABEL: name: v_subrev_u16
1108    ; GFX10: liveins: $vgpr0, $vgpr1
1109    ; GFX10-NEXT: {{  $}}
1110    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1111    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1112    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1113    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1114    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1115    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1116    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1117    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1118    %0:vgpr_32 = COPY $vgpr0
1119    %1:vgpr_32 = COPY $vgpr1
1120    %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1121    %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 %0, %1, implicit $mode, implicit $exec
1122    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1123    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1124    $vgpr0 = COPY %and_vop3
1125    $vgpr1 = COPY %and_vop2
1126
1127...
1128
1129---
1130name: v_mul_lo_u16
1131tracksRegLiveness: true
1132body:             |
1133  bb.0:
1134    liveins: $vgpr0, $vgpr1
1135    ; GFX8-LABEL: name: v_mul_lo_u16
1136    ; GFX8: liveins: $vgpr0, $vgpr1
1137    ; GFX8-NEXT: {{  $}}
1138    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1139    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1140    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1141    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1142    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1143    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1144    ; GFX9-LABEL: name: v_mul_lo_u16
1145    ; GFX9: liveins: $vgpr0, $vgpr1
1146    ; GFX9-NEXT: {{  $}}
1147    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1148    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1149    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1150    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1151    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1152    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1153    ; GFX10-LABEL: name: v_mul_lo_u16
1154    ; GFX10: liveins: $vgpr0, $vgpr1
1155    ; GFX10-NEXT: {{  $}}
1156    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1157    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1158    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1159    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1160    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1161    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1162    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1163    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1164    %0:vgpr_32 = COPY $vgpr0
1165    %1:vgpr_32 = COPY $vgpr1
1166    %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 %0, %1, implicit $mode, implicit $exec
1167    %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 %0, %1, implicit $mode, implicit $exec
1168    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1169    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1170    $vgpr0 = COPY %and_vop3
1171    $vgpr1 = COPY %and_vop2
1172
1173...
1174
1175---
1176name: v_add_f16
1177tracksRegLiveness: true
1178body:             |
1179  bb.0:
1180    liveins: $vgpr0, $vgpr1
1181    ; GFX8-LABEL: name: v_add_f16
1182    ; GFX8: liveins: $vgpr0, $vgpr1
1183    ; GFX8-NEXT: {{  $}}
1184    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1185    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1186    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1187    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1188    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1189    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1190    ; GFX9-LABEL: name: v_add_f16
1191    ; GFX9: liveins: $vgpr0, $vgpr1
1192    ; GFX9-NEXT: {{  $}}
1193    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1194    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1195    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1196    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1197    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1198    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1199    ; GFX10-LABEL: name: v_add_f16
1200    ; GFX10: liveins: $vgpr0, $vgpr1
1201    ; GFX10-NEXT: {{  $}}
1202    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1203    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1204    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1205    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1206    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1207    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1208    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1209    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1210    %0:vgpr_32 = COPY $vgpr0
1211    %1:vgpr_32 = COPY $vgpr1
1212    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1213    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1214    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1215    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1216    $vgpr0 = COPY %and_vop3
1217    $vgpr1 = COPY %and_vop2
1218
1219...
1220
1221---
1222name: v_sub_f16
1223tracksRegLiveness: true
1224body:             |
1225  bb.0:
1226    liveins: $vgpr0, $vgpr1
1227    ; GFX8-LABEL: name: v_sub_f16
1228    ; GFX8: liveins: $vgpr0, $vgpr1
1229    ; GFX8-NEXT: {{  $}}
1230    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1231    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1232    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1233    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1234    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1235    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1236    ; GFX9-LABEL: name: v_sub_f16
1237    ; GFX9: liveins: $vgpr0, $vgpr1
1238    ; GFX9-NEXT: {{  $}}
1239    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1240    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1241    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1242    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1243    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1244    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1245    ; GFX10-LABEL: name: v_sub_f16
1246    ; GFX10: liveins: $vgpr0, $vgpr1
1247    ; GFX10-NEXT: {{  $}}
1248    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1249    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1250    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1251    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1252    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1253    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1254    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1255    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1256    %0:vgpr_32 = COPY $vgpr0
1257    %1:vgpr_32 = COPY $vgpr1
1258    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1259    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1260    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1261    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1262    $vgpr0 = COPY %and_vop3
1263    $vgpr1 = COPY %and_vop2
1264
1265...
1266
1267---
1268name: v_subrev_f16
1269tracksRegLiveness: true
1270body:             |
1271  bb.0:
1272    liveins: $vgpr0, $vgpr1
1273    ; GFX8-LABEL: name: v_subrev_f16
1274    ; GFX8: liveins: $vgpr0, $vgpr1
1275    ; GFX8-NEXT: {{  $}}
1276    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1277    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1278    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1279    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1280    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1281    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1282    ; GFX9-LABEL: name: v_subrev_f16
1283    ; GFX9: liveins: $vgpr0, $vgpr1
1284    ; GFX9-NEXT: {{  $}}
1285    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1286    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1287    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1288    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1289    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1290    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1291    ; GFX10-LABEL: name: v_subrev_f16
1292    ; GFX10: liveins: $vgpr0, $vgpr1
1293    ; GFX10-NEXT: {{  $}}
1294    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1295    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1296    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1297    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1298    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1299    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1300    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1301    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1302    %0:vgpr_32 = COPY $vgpr0
1303    %1:vgpr_32 = COPY $vgpr1
1304    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1305    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1306    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1307    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1308    $vgpr0 = COPY %and_vop3
1309    $vgpr1 = COPY %and_vop2
1310
1311...
1312
1313---
1314name: v_mul_f16
1315tracksRegLiveness: true
1316body:             |
1317  bb.0:
1318    liveins: $vgpr0, $vgpr1
1319    ; GFX8-LABEL: name: v_mul_f16
1320    ; GFX8: liveins: $vgpr0, $vgpr1
1321    ; GFX8-NEXT: {{  $}}
1322    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1323    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1324    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1325    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1326    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1327    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1328    ; GFX9-LABEL: name: v_mul_f16
1329    ; GFX9: liveins: $vgpr0, $vgpr1
1330    ; GFX9-NEXT: {{  $}}
1331    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1332    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1333    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1334    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1335    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1336    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1337    ; GFX10-LABEL: name: v_mul_f16
1338    ; GFX10: liveins: $vgpr0, $vgpr1
1339    ; GFX10-NEXT: {{  $}}
1340    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1341    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1342    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1343    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1344    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1345    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1346    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1347    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1348    %0:vgpr_32 = COPY $vgpr0
1349    %1:vgpr_32 = COPY $vgpr1
1350    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1351    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1352    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1353    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1354    $vgpr0 = COPY %and_vop3
1355    $vgpr1 = COPY %and_vop2
1356
1357...
1358
1359---
1360name: v_max_f16
1361tracksRegLiveness: true
1362body:             |
1363  bb.0:
1364    liveins: $vgpr0, $vgpr1
1365    ; GFX8-LABEL: name: v_max_f16
1366    ; GFX8: liveins: $vgpr0, $vgpr1
1367    ; GFX8-NEXT: {{  $}}
1368    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1369    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1370    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1371    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1372    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1373    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1374    ; GFX9-LABEL: name: v_max_f16
1375    ; GFX9: liveins: $vgpr0, $vgpr1
1376    ; GFX9-NEXT: {{  $}}
1377    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1378    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1379    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1380    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1381    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1382    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1383    ; GFX10-LABEL: name: v_max_f16
1384    ; GFX10: liveins: $vgpr0, $vgpr1
1385    ; GFX10-NEXT: {{  $}}
1386    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1387    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1388    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1389    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1390    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1391    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1392    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1393    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1394    %0:vgpr_32 = COPY $vgpr0
1395    %1:vgpr_32 = COPY $vgpr1
1396    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1397    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1398    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1399    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1400    $vgpr0 = COPY %and_vop3
1401    $vgpr1 = COPY %and_vop2
1402
1403...
1404
1405---
1406name: v_min_f16
1407tracksRegLiveness: true
1408body:             |
1409  bb.0:
1410    liveins: $vgpr0, $vgpr1
1411    ; GFX8-LABEL: name: v_min_f16
1412    ; GFX8: liveins: $vgpr0, $vgpr1
1413    ; GFX8-NEXT: {{  $}}
1414    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1415    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1416    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1417    ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1418    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1419    ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1420    ; GFX9-LABEL: name: v_min_f16
1421    ; GFX9: liveins: $vgpr0, $vgpr1
1422    ; GFX9-NEXT: {{  $}}
1423    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1424    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1425    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1426    ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1427    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1428    ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1429    ; GFX10-LABEL: name: v_min_f16
1430    ; GFX10: liveins: $vgpr0, $vgpr1
1431    ; GFX10-NEXT: {{  $}}
1432    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1433    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1434    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1435    ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1436    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1437    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1438    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1439    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1440    %0:vgpr_32 = COPY $vgpr0
1441    %1:vgpr_32 = COPY $vgpr1
1442    %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1443    %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1444    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1445    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1446    $vgpr0 = COPY %and_vop3
1447    $vgpr1 = COPY %and_vop2
1448
1449...
1450
1451---
1452name: v_max_u16
1453tracksRegLiveness: true
1454body:             |
1455  bb.0:
1456    liveins: $vgpr0, $vgpr1
1457    ; GFX8-LABEL: name: v_max_u16
1458    ; GFX8: liveins: $vgpr0, $vgpr1
1459    ; GFX8-NEXT: {{  $}}
1460    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1461    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1462    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1463    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1464    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1465    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1466    ; GFX9-LABEL: name: v_max_u16
1467    ; GFX9: liveins: $vgpr0, $vgpr1
1468    ; GFX9-NEXT: {{  $}}
1469    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1470    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1471    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1472    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1473    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1474    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1475    ; GFX10-LABEL: name: v_max_u16
1476    ; GFX10: liveins: $vgpr0, $vgpr1
1477    ; GFX10-NEXT: {{  $}}
1478    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1479    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1480    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1481    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1482    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1483    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1484    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1485    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1486    %0:vgpr_32 = COPY $vgpr0
1487    %1:vgpr_32 = COPY $vgpr1
1488    %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 %0, %1, implicit $mode, implicit $exec
1489    %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 %0, %1, implicit $mode, implicit $exec
1490    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1491    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1492    $vgpr0 = COPY %and_vop3
1493    $vgpr1 = COPY %and_vop2
1494
1495...
1496---
1497name: v_min_u16
1498tracksRegLiveness: true
1499body:             |
1500  bb.0:
1501    liveins: $vgpr0, $vgpr1
1502    ; GFX8-LABEL: name: v_min_u16
1503    ; GFX8: liveins: $vgpr0, $vgpr1
1504    ; GFX8-NEXT: {{  $}}
1505    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1506    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1507    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1508    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1509    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1510    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1511    ; GFX9-LABEL: name: v_min_u16
1512    ; GFX9: liveins: $vgpr0, $vgpr1
1513    ; GFX9-NEXT: {{  $}}
1514    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1515    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1516    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1517    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1518    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1519    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1520    ; GFX10-LABEL: name: v_min_u16
1521    ; GFX10: liveins: $vgpr0, $vgpr1
1522    ; GFX10-NEXT: {{  $}}
1523    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1524    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1525    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1526    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1527    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1528    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1529    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1530    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1531    %0:vgpr_32 = COPY $vgpr0
1532    %1:vgpr_32 = COPY $vgpr1
1533    %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 %0, %1, implicit $mode, implicit $exec
1534    %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 %0, %1, implicit $mode, implicit $exec
1535    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1536    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1537    $vgpr0 = COPY %and_vop3
1538    $vgpr1 = COPY %and_vop2
1539
1540...
1541
1542---
1543name: v_max_i16
1544tracksRegLiveness: true
1545body:             |
1546  bb.0:
1547    liveins: $vgpr0, $vgpr1
1548    ; GFX8-LABEL: name: v_max_i16
1549    ; GFX8: liveins: $vgpr0, $vgpr1
1550    ; GFX8-NEXT: {{  $}}
1551    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1552    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1553    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1554    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1555    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1556    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1557    ; GFX9-LABEL: name: v_max_i16
1558    ; GFX9: liveins: $vgpr0, $vgpr1
1559    ; GFX9-NEXT: {{  $}}
1560    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1561    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1562    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1563    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1564    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1565    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1566    ; GFX10-LABEL: name: v_max_i16
1567    ; GFX10: liveins: $vgpr0, $vgpr1
1568    ; GFX10-NEXT: {{  $}}
1569    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1570    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1571    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1572    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1573    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1574    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1575    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1576    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1577    %0:vgpr_32 = COPY $vgpr0
1578    %1:vgpr_32 = COPY $vgpr1
1579    %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 %0, %1, implicit $mode, implicit $exec
1580    %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 %0, %1, implicit $mode, implicit $exec
1581    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1582    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1583    $vgpr0 = COPY %and_vop3
1584    $vgpr1 = COPY %and_vop2
1585
1586...
1587---
1588name: v_min_i16
1589tracksRegLiveness: true
1590body:             |
1591  bb.0:
1592    liveins: $vgpr0, $vgpr1
1593    ; GFX8-LABEL: name: v_min_i16
1594    ; GFX8: liveins: $vgpr0, $vgpr1
1595    ; GFX8-NEXT: {{  $}}
1596    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1597    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1598    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1599    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1600    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1601    ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1602    ; GFX9-LABEL: name: v_min_i16
1603    ; GFX9: liveins: $vgpr0, $vgpr1
1604    ; GFX9-NEXT: {{  $}}
1605    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1606    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1607    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1608    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1609    ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1610    ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1611    ; GFX10-LABEL: name: v_min_i16
1612    ; GFX10: liveins: $vgpr0, $vgpr1
1613    ; GFX10-NEXT: {{  $}}
1614    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1615    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1616    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1617    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1618    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1619    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1620    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1621    ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1622    %0:vgpr_32 = COPY $vgpr0
1623    %1:vgpr_32 = COPY $vgpr1
1624    %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 %0, %1, implicit $mode, implicit $exec
1625    %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 %0, %1, implicit $mode, implicit $exec
1626    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1627    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1628    $vgpr0 = COPY %and_vop3
1629    $vgpr1 = COPY %and_vop2
1630
1631...
1632
1633---
1634name: v_mad_f16
1635tracksRegLiveness: true
1636body:             |
1637  bb.0:
1638    liveins: $vgpr0, $vgpr1, $vgpr2
1639    ; GFX8-LABEL: name: v_mad_f16
1640    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1641    ; GFX8-NEXT: {{  $}}
1642    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1643    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1644    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1645    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1646    ; GFX8-NEXT: $vgpr0 = COPY %op
1647    ; GFX9-LABEL: name: v_mad_f16
1648    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1649    ; GFX9-NEXT: {{  $}}
1650    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1651    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1652    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1653    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1654    ; GFX9-NEXT: $vgpr0 = COPY %op
1655    ; GFX10-LABEL: name: v_mad_f16
1656    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1657    ; GFX10-NEXT: {{  $}}
1658    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1659    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1660    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1661    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1662    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1663    ; GFX10-NEXT: $vgpr0 = COPY %and
1664    %0:vgpr_32 = COPY $vgpr0
1665    %1:vgpr_32 = COPY $vgpr1
1666    %2:vgpr_32 = COPY $vgpr2
1667    %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1668    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1669    $vgpr0 = COPY %and
1670
1671...
1672
1673---
1674name: v_fma_f16
1675tracksRegLiveness: true
1676body:             |
1677  bb.0:
1678    liveins: $vgpr0, $vgpr1, $vgpr2
1679    ; GFX8-LABEL: name: v_fma_f16
1680    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1681    ; GFX8-NEXT: {{  $}}
1682    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1683    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1684    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1685    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1686    ; GFX8-NEXT: $vgpr0 = COPY %op
1687    ; GFX9-LABEL: name: v_fma_f16
1688    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1689    ; GFX9-NEXT: {{  $}}
1690    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1691    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1692    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1693    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1694    ; GFX9-NEXT: $vgpr0 = COPY %op
1695    ; GFX10-LABEL: name: v_fma_f16
1696    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1697    ; GFX10-NEXT: {{  $}}
1698    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1699    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1700    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1701    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1702    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1703    ; GFX10-NEXT: $vgpr0 = COPY %and
1704    %0:vgpr_32 = COPY $vgpr0
1705    %1:vgpr_32 = COPY $vgpr1
1706    %2:vgpr_32 = COPY $vgpr2
1707    %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1708    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1709    $vgpr0 = COPY %and
1710
1711...
1712
1713---
1714name: v_div_fixup_f16
1715tracksRegLiveness: true
1716body:             |
1717  bb.0:
1718    liveins: $vgpr0, $vgpr1, $vgpr2
1719    ; GFX8-LABEL: name: v_div_fixup_f16
1720    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1721    ; GFX8-NEXT: {{  $}}
1722    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1723    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1724    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1725    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1726    ; GFX8-NEXT: $vgpr0 = COPY %op
1727    ; GFX9-LABEL: name: v_div_fixup_f16
1728    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1729    ; GFX9-NEXT: {{  $}}
1730    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1731    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1732    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1733    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1734    ; GFX9-NEXT: $vgpr0 = COPY %op
1735    ; GFX10-LABEL: name: v_div_fixup_f16
1736    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1737    ; GFX10-NEXT: {{  $}}
1738    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1739    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1740    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1741    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1742    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1743    ; GFX10-NEXT: $vgpr0 = COPY %and
1744    %0:vgpr_32 = COPY $vgpr0
1745    %1:vgpr_32 = COPY $vgpr1
1746    %2:vgpr_32 = COPY $vgpr2
1747    %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1748    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1749    $vgpr0 = COPY %and
1750
1751...
1752
1753---
1754name: v_madak_f16
1755tracksRegLiveness: true
1756body:             |
1757  bb.0:
1758    liveins: $vgpr0, $vgpr1
1759    ; GFX8-LABEL: name: v_madak_f16
1760    ; GFX8: liveins: $vgpr0, $vgpr1
1761    ; GFX8-NEXT: {{  $}}
1762    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1763    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1764    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1765    ; GFX8-NEXT: $vgpr0 = COPY %op
1766    ; GFX9-LABEL: name: v_madak_f16
1767    ; GFX9: liveins: $vgpr0, $vgpr1
1768    ; GFX9-NEXT: {{  $}}
1769    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1770    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1771    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1772    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1773    ; GFX9-NEXT: $vgpr0 = COPY %and
1774    ; GFX10-LABEL: name: v_madak_f16
1775    ; GFX10: liveins: $vgpr0, $vgpr1
1776    ; GFX10-NEXT: {{  $}}
1777    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1778    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1779    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1780    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1781    ; GFX10-NEXT: $vgpr0 = COPY %and
1782    %0:vgpr_32 = COPY $vgpr0
1783    %1:vgpr_32 = COPY $vgpr1
1784    %op:vgpr_32 = nofpexcept V_MADAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1785    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1786    $vgpr0 = COPY %and
1787
1788...
1789
1790---
1791name: v_madmk_f16
1792tracksRegLiveness: true
1793body:             |
1794  bb.0:
1795    liveins: $vgpr0, $vgpr1
1796    ; GFX8-LABEL: name: v_madmk_f16
1797    ; GFX8: liveins: $vgpr0, $vgpr1
1798    ; GFX8-NEXT: {{  $}}
1799    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1800    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1801    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1802    ; GFX8-NEXT: $vgpr0 = COPY %op
1803    ; GFX9-LABEL: name: v_madmk_f16
1804    ; GFX9: liveins: $vgpr0, $vgpr1
1805    ; GFX9-NEXT: {{  $}}
1806    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1807    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1808    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1809    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1810    ; GFX9-NEXT: $vgpr0 = COPY %and
1811    ; GFX10-LABEL: name: v_madmk_f16
1812    ; GFX10: liveins: $vgpr0, $vgpr1
1813    ; GFX10-NEXT: {{  $}}
1814    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1815    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1816    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1817    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1818    ; GFX10-NEXT: $vgpr0 = COPY %and
1819    %0:vgpr_32 = COPY $vgpr0
1820    %1:vgpr_32 = COPY $vgpr1
1821    %op:vgpr_32 = nofpexcept V_MADMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1822    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1823    $vgpr0 = COPY %and
1824
1825...
1826
1827---
1828name: v_fmaak_f16
1829tracksRegLiveness: true
1830body:             |
1831  bb.0:
1832    liveins: $vgpr0, $vgpr1
1833    ; GFX8-LABEL: name: v_fmaak_f16
1834    ; GFX8: liveins: $vgpr0, $vgpr1
1835    ; GFX8-NEXT: {{  $}}
1836    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1837    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1838    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1839    ; GFX8-NEXT: $vgpr0 = COPY %op
1840    ; GFX9-LABEL: name: v_fmaak_f16
1841    ; GFX9: liveins: $vgpr0, $vgpr1
1842    ; GFX9-NEXT: {{  $}}
1843    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1844    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1845    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1846    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1847    ; GFX9-NEXT: $vgpr0 = COPY %and
1848    ; GFX10-LABEL: name: v_fmaak_f16
1849    ; GFX10: liveins: $vgpr0, $vgpr1
1850    ; GFX10-NEXT: {{  $}}
1851    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1852    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1853    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1854    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1855    ; GFX10-NEXT: $vgpr0 = COPY %and
1856    %0:vgpr_32 = COPY $vgpr0
1857    %1:vgpr_32 = COPY $vgpr1
1858    %op:vgpr_32 = nofpexcept V_FMAAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1859    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1860    $vgpr0 = COPY %and
1861
1862...
1863
1864---
1865name: v_fmamk_f16
1866tracksRegLiveness: true
1867body:             |
1868  bb.0:
1869    liveins: $vgpr0, $vgpr1
1870    ; GFX8-LABEL: name: v_fmamk_f16
1871    ; GFX8: liveins: $vgpr0, $vgpr1
1872    ; GFX8-NEXT: {{  $}}
1873    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1874    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1875    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1876    ; GFX8-NEXT: $vgpr0 = COPY %op
1877    ; GFX9-LABEL: name: v_fmamk_f16
1878    ; GFX9: liveins: $vgpr0, $vgpr1
1879    ; GFX9-NEXT: {{  $}}
1880    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1881    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1882    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1883    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1884    ; GFX9-NEXT: $vgpr0 = COPY %and
1885    ; GFX10-LABEL: name: v_fmamk_f16
1886    ; GFX10: liveins: $vgpr0, $vgpr1
1887    ; GFX10-NEXT: {{  $}}
1888    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1889    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1890    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1891    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1892    ; GFX10-NEXT: $vgpr0 = COPY %and
1893    %0:vgpr_32 = COPY $vgpr0
1894    %1:vgpr_32 = COPY $vgpr1
1895    %op:vgpr_32 = nofpexcept V_FMAMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1896    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1897    $vgpr0 = COPY %and
1898
1899...
1900
1901---
1902name: v_mac_f16
1903tracksRegLiveness: true
1904body:             |
1905  bb.0:
1906    liveins: $vgpr0, $vgpr1, $vgpr2
1907    ; GFX8-LABEL: name: v_mac_f16
1908    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1909    ; GFX8-NEXT: {{  $}}
1910    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1911    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1912    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1913    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1914    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1915    ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
1916    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1917    ; GFX9-LABEL: name: v_mac_f16
1918    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1919    ; GFX9-NEXT: {{  $}}
1920    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1921    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1922    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1923    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1924    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1925    ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1926    ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1927    ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
1928    ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
1929    ; GFX10-LABEL: name: v_mac_f16
1930    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1931    ; GFX10-NEXT: {{  $}}
1932    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1933    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1934    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1935    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1936    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1937    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1938    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1939    ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
1940    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1941    %0:vgpr_32 = COPY $vgpr0
1942    %1:vgpr_32 = COPY $vgpr1
1943    %2:vgpr_32 = COPY $vgpr2
1944    %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
1945    %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1946    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1947    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1948    $vgpr0 = COPY %and_vop2
1949    $vgpr0 = COPY %and_vop3
1950
1951...
1952
1953---
1954name: v_fmac_f16
1955tracksRegLiveness: true
1956body:             |
1957  bb.0:
1958    liveins: $vgpr0, $vgpr1, $vgpr2
1959    ; GFX8-LABEL: name: v_fmac_f16
1960    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1961    ; GFX8-NEXT: {{  $}}
1962    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1963    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1964    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1965    ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1966    ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1967    ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
1968    ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1969    ; GFX9-LABEL: name: v_fmac_f16
1970    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1971    ; GFX9-NEXT: {{  $}}
1972    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1973    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1974    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1975    ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1976    ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1977    ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1978    ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1979    ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
1980    ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
1981    ; GFX10-LABEL: name: v_fmac_f16
1982    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1983    ; GFX10-NEXT: {{  $}}
1984    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1985    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1986    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1987    ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1988    ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1989    ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1990    ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1991    ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
1992    ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1993    %0:vgpr_32 = COPY $vgpr0
1994    %1:vgpr_32 = COPY $vgpr1
1995    %2:vgpr_32 = COPY $vgpr2
1996    %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
1997    %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1998    %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1999    %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2000    $vgpr0 = COPY %and_vop2
2001    $vgpr0 = COPY %and_vop3
2002
2003...
2004
2005---
2006name: no_fold_v_mad_mixlo_f16
2007tracksRegLiveness: true
2008body:             |
2009  bb.0:
2010    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2011    ; GFX8-LABEL: name: no_fold_v_mad_mixlo_f16
2012    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2013    ; GFX8-NEXT: {{  $}}
2014    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2015    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2016    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2017    ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2018    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2019    ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2020    ; GFX8-NEXT: $vgpr0 = COPY %and
2021    ; GFX9-LABEL: name: no_fold_v_mad_mixlo_f16
2022    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2023    ; GFX9-NEXT: {{  $}}
2024    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2025    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2026    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2027    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2028    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2029    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2030    ; GFX9-NEXT: $vgpr0 = COPY %and
2031    ; GFX10-LABEL: name: no_fold_v_mad_mixlo_f16
2032    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2033    ; GFX10-NEXT: {{  $}}
2034    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2035    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2036    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2037    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2038    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2039    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2040    ; GFX10-NEXT: $vgpr0 = COPY %and
2041    %0:vgpr_32 = COPY $vgpr0
2042    %1:vgpr_32 = COPY $vgpr1
2043    %2:vgpr_32 = COPY $vgpr2
2044    %3:vgpr_32 = COPY $vgpr3
2045    %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2046    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2047    $vgpr0 = COPY %and
2048
2049...
2050
2051---
2052name: no_fold_v_mad_mixhi_f16
2053tracksRegLiveness: true
2054body:             |
2055  bb.0:
2056    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2057    ; GFX8-LABEL: name: no_fold_v_mad_mixhi_f16
2058    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2059    ; GFX8-NEXT: {{  $}}
2060    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2061    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2062    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2063    ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2064    ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2065    ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2066    ; GFX8-NEXT: $vgpr0 = COPY %and
2067    ; GFX9-LABEL: name: no_fold_v_mad_mixhi_f16
2068    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2069    ; GFX9-NEXT: {{  $}}
2070    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2071    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2072    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2073    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2074    ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2075    ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2076    ; GFX9-NEXT: $vgpr0 = COPY %and
2077    ; GFX10-LABEL: name: no_fold_v_mad_mixhi_f16
2078    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2079    ; GFX10-NEXT: {{  $}}
2080    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2081    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2082    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2083    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2084    ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2085    ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2086    ; GFX10-NEXT: $vgpr0 = COPY %and
2087    %0:vgpr_32 = COPY $vgpr0
2088    %1:vgpr_32 = COPY $vgpr1
2089    %2:vgpr_32 = COPY $vgpr2
2090    %3:vgpr_32 = COPY $vgpr3
2091    %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2092    %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2093    $vgpr0 = COPY %and
2094
2095...
2096