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