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
6 # Test we recognize all forms of and with mask as clearing the high bits.
8 name: v_cvt_f16_f32_altmask
9 tracksRegLiveness: true
13 ; GFX8-LABEL: name: v_cvt_f16_f32_altmask
14 ; GFX8: liveins: $vgpr0
16 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
17 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
18 ; GFX8-NEXT: %smask:sreg_32 = S_MOV_B32 65535
19 ; GFX8-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
20 ; GFX8-NEXT: $vgpr0 = COPY %op
21 ; GFX8-NEXT: $vgpr1 = COPY %op
22 ; GFX8-NEXT: $vgpr2 = COPY %op
24 ; GFX9-LABEL: name: v_cvt_f16_f32_altmask
25 ; GFX9: liveins: $vgpr0
27 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
28 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
29 ; GFX9-NEXT: %smask:sreg_32 = S_MOV_B32 65535
30 ; GFX9-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
31 ; GFX9-NEXT: $vgpr0 = COPY %op
32 ; GFX9-NEXT: $vgpr1 = COPY %op
33 ; GFX9-NEXT: $vgpr2 = COPY %op
35 ; GFX10-LABEL: name: v_cvt_f16_f32_altmask
36 ; GFX10: liveins: $vgpr0
38 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
39 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
40 ; GFX10-NEXT: %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
41 ; GFX10-NEXT: %and1:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
42 ; GFX10-NEXT: %and2:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
43 ; GFX10-NEXT: $vgpr0 = COPY %and0
44 ; GFX10-NEXT: $vgpr1 = COPY %and1
45 ; GFX10-NEXT: $vgpr2 = COPY %and2
46 %0:vgpr_32 = COPY $vgpr0
47 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
48 %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
49 %smask:sreg_32 = S_MOV_B32 65535
50 %and1:vgpr_32 = V_AND_B32_e64 %smask, %op, implicit $exec
51 %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
52 %and2:vgpr_32 = V_AND_B32_e64 %vmask, %op, implicit $exec
59 # Test we do not assume the high bits are zero
61 name: wrong_mask_value
62 tracksRegLiveness: true
66 ; GFX8-LABEL: name: wrong_mask_value
67 ; GFX8: liveins: $vgpr0
69 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
70 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
71 ; GFX8-NEXT: %mask:sreg_32 = S_MOV_B32 65534
72 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
73 ; GFX8-NEXT: $vgpr0 = COPY %and
75 ; GFX9-LABEL: name: wrong_mask_value
76 ; GFX9: liveins: $vgpr0
78 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
79 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
80 ; GFX9-NEXT: %mask:sreg_32 = S_MOV_B32 65534
81 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
82 ; GFX9-NEXT: $vgpr0 = COPY %and
84 ; GFX10-LABEL: name: wrong_mask_value
85 ; GFX10: liveins: $vgpr0
87 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
88 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
89 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e64 65534, %op, implicit $exec
90 ; GFX10-NEXT: $vgpr0 = COPY %and
91 %0:vgpr_32 = COPY $vgpr0
92 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
93 %mask:sreg_32 = S_MOV_B32 65534
94 %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
101 tracksRegLiveness: true
105 ; GFX8-LABEL: name: v_cvt_f16_f32
106 ; GFX8: liveins: $vgpr0
108 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
109 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
110 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
111 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
112 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
114 ; GFX9-LABEL: name: v_cvt_f16_f32
115 ; GFX9: liveins: $vgpr0
117 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
118 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
119 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
120 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
121 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
123 ; GFX10-LABEL: name: v_cvt_f16_f32
124 ; GFX10: liveins: $vgpr0
126 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
127 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
128 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
129 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
130 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
131 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
132 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
133 %0:vgpr_32 = COPY $vgpr0
134 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, %0, 0, 0, implicit $mode, implicit $exec
135 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 %0, implicit $mode, implicit $exec
136 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
137 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
138 $vgpr0 = COPY %and_vop3
139 $vgpr1 = COPY %and_vop1
145 tracksRegLiveness: true
149 ; GFX8-LABEL: name: v_cvt_f16_u16
150 ; GFX8: liveins: $vgpr0
152 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
153 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
154 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
155 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
156 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
158 ; GFX9-LABEL: name: v_cvt_f16_u16
159 ; GFX9: liveins: $vgpr0
161 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
162 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
163 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
164 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
165 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
167 ; GFX10-LABEL: name: v_cvt_f16_u16
168 ; GFX10: liveins: $vgpr0
170 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
171 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
172 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
173 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
174 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
175 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
176 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
177 %0:vgpr_32 = COPY $vgpr0
178 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 %0, 0, 0, implicit $mode, implicit $exec
179 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 %0, implicit $mode, implicit $exec
180 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
181 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
182 $vgpr0 = COPY %and_vop3
183 $vgpr1 = COPY %and_vop1
189 tracksRegLiveness: true
193 ; GFX8-LABEL: name: v_cvt_f16_i16
194 ; GFX8: liveins: $vgpr0
196 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
197 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
198 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
199 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
200 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
202 ; GFX9-LABEL: name: v_cvt_f16_i16
203 ; GFX9: liveins: $vgpr0
205 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
206 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
207 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
208 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
209 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
211 ; GFX10-LABEL: name: v_cvt_f16_i16
212 ; GFX10: liveins: $vgpr0
214 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
215 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
216 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
217 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
218 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
219 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
220 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
221 %0:vgpr_32 = COPY $vgpr0
222 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 %0, 0, 0, implicit $mode, implicit $exec
223 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 %0, implicit $mode, implicit $exec
224 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
225 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
226 $vgpr0 = COPY %and_vop3
227 $vgpr1 = COPY %and_vop1
233 tracksRegLiveness: true
237 ; GFX8-LABEL: name: v_rcp_f16
238 ; GFX8: liveins: $vgpr0
240 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
241 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
242 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
243 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
244 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
246 ; GFX9-LABEL: name: v_rcp_f16
247 ; GFX9: liveins: $vgpr0
249 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
250 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
251 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
252 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
253 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
255 ; GFX10-LABEL: name: v_rcp_f16
256 ; GFX10: liveins: $vgpr0
258 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
259 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
260 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
261 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
262 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
263 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
264 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
265 %0:vgpr_32 = COPY $vgpr0
266 %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
267 %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 %0, implicit $mode, implicit $exec
268 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
269 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
270 $vgpr0 = COPY %and_vop3
271 $vgpr1 = COPY %and_vop1
276 tracksRegLiveness: true
280 ; GFX8-LABEL: name: v_rsq_f16
281 ; GFX8: liveins: $vgpr0
283 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
284 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
285 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
286 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
287 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
289 ; GFX9-LABEL: name: v_rsq_f16
290 ; GFX9: liveins: $vgpr0
292 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
293 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
294 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
295 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
296 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
298 ; GFX10-LABEL: name: v_rsq_f16
299 ; GFX10: liveins: $vgpr0
301 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
302 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
303 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
304 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
305 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
306 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
307 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
308 %0:vgpr_32 = COPY $vgpr0
309 %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
310 %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 %0, implicit $mode, implicit $exec
311 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
312 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
313 $vgpr0 = COPY %and_vop3
314 $vgpr1 = COPY %and_vop1
319 tracksRegLiveness: true
323 ; GFX8-LABEL: name: v_sqrt_f16
324 ; GFX8: liveins: $vgpr0
326 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
327 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
328 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
329 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
330 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
332 ; GFX9-LABEL: name: v_sqrt_f16
333 ; GFX9: liveins: $vgpr0
335 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
336 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
337 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
338 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
339 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
341 ; GFX10-LABEL: name: v_sqrt_f16
342 ; GFX10: liveins: $vgpr0
344 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
345 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
346 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
347 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
348 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
349 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
350 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
351 %0:vgpr_32 = COPY $vgpr0
352 %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
353 %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 %0, implicit $mode, implicit $exec
354 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
355 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
356 $vgpr0 = COPY %and_vop3
357 $vgpr1 = COPY %and_vop1
363 tracksRegLiveness: true
367 ; GFX8-LABEL: name: v_log_f16
368 ; GFX8: liveins: $vgpr0
370 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
371 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
372 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
373 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
374 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
376 ; GFX9-LABEL: name: v_log_f16
377 ; GFX9: liveins: $vgpr0
379 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
380 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
381 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
382 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
383 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
385 ; GFX10-LABEL: name: v_log_f16
386 ; GFX10: liveins: $vgpr0
388 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
389 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
390 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
391 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
392 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
393 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
394 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
395 %0:vgpr_32 = COPY $vgpr0
396 %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
397 %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 %0, implicit $mode, implicit $exec
398 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
399 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
400 $vgpr0 = COPY %and_vop3
401 $vgpr1 = COPY %and_vop1
407 tracksRegLiveness: true
411 ; GFX8-LABEL: name: v_exp_f16
412 ; GFX8: liveins: $vgpr0
414 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
415 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
416 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
417 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
418 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
420 ; GFX9-LABEL: name: v_exp_f16
421 ; GFX9: liveins: $vgpr0
423 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
424 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
425 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
426 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
427 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
429 ; GFX10-LABEL: name: v_exp_f16
430 ; GFX10: liveins: $vgpr0
432 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
433 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
434 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
435 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
436 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
437 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
438 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
439 %0:vgpr_32 = COPY $vgpr0
440 %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
441 %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 %0, implicit $mode, implicit $exec
442 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
443 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
444 $vgpr0 = COPY %and_vop3
445 $vgpr1 = COPY %and_vop1
451 tracksRegLiveness: true
455 ; GFX8-LABEL: name: v_sin_f16
456 ; GFX8: liveins: $vgpr0
458 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
459 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
460 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
461 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
462 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
464 ; GFX9-LABEL: name: v_sin_f16
465 ; GFX9: liveins: $vgpr0
467 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
468 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
469 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
470 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
471 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
473 ; GFX10-LABEL: name: v_sin_f16
474 ; GFX10: liveins: $vgpr0
476 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
477 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
478 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
479 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
480 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
481 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
482 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
483 %0:vgpr_32 = COPY $vgpr0
484 %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
485 %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 %0, implicit $mode, implicit $exec
486 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
487 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
488 $vgpr0 = COPY %and_vop3
489 $vgpr1 = COPY %and_vop1
495 tracksRegLiveness: true
499 ; GFX8-LABEL: name: v_cos_f16
500 ; GFX8: liveins: $vgpr0
502 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
503 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
504 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
505 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
506 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
508 ; GFX9-LABEL: name: v_cos_f16
509 ; GFX9: liveins: $vgpr0
511 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
512 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
513 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
514 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
515 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
517 ; GFX10-LABEL: name: v_cos_f16
518 ; GFX10: liveins: $vgpr0
520 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
521 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
522 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
523 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
524 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
525 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
526 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
527 %0:vgpr_32 = COPY $vgpr0
528 %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
529 %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 %0, implicit $mode, implicit $exec
530 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
531 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
532 $vgpr0 = COPY %and_vop3
533 $vgpr1 = COPY %and_vop1
539 tracksRegLiveness: true
543 ; GFX8-LABEL: name: v_floor_f16
544 ; GFX8: liveins: $vgpr0
546 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
547 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
548 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
549 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
550 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
552 ; GFX9-LABEL: name: v_floor_f16
553 ; GFX9: liveins: $vgpr0
555 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
556 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
557 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
558 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
559 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
561 ; GFX10-LABEL: name: v_floor_f16
562 ; GFX10: liveins: $vgpr0
564 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
565 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
566 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
567 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
568 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
569 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
570 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
571 %0:vgpr_32 = COPY $vgpr0
572 %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
573 %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 %0, implicit $mode, implicit $exec
574 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
575 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
576 $vgpr0 = COPY %and_vop3
577 $vgpr1 = COPY %and_vop1
583 tracksRegLiveness: true
587 ; GFX8-LABEL: name: v_ceil_f16
588 ; GFX8: liveins: $vgpr0
590 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
591 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
592 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
593 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
594 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
596 ; GFX9-LABEL: name: v_ceil_f16
597 ; GFX9: liveins: $vgpr0
599 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
600 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
601 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
602 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
603 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
605 ; GFX10-LABEL: name: v_ceil_f16
606 ; GFX10: liveins: $vgpr0
608 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
609 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
610 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
611 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
612 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
613 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
614 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
615 %0:vgpr_32 = COPY $vgpr0
616 %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
617 %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 %0, implicit $mode, implicit $exec
618 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
619 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
620 $vgpr0 = COPY %and_vop3
621 $vgpr1 = COPY %and_vop1
627 tracksRegLiveness: true
631 ; GFX8-LABEL: name: v_trunc_f16
632 ; GFX8: liveins: $vgpr0
634 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
635 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
636 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
637 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
638 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
640 ; GFX9-LABEL: name: v_trunc_f16
641 ; GFX9: liveins: $vgpr0
643 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
644 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
645 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
646 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
647 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
649 ; GFX10-LABEL: name: v_trunc_f16
650 ; GFX10: liveins: $vgpr0
652 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
653 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
654 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
655 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
656 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
657 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
658 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
659 %0:vgpr_32 = COPY $vgpr0
660 %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
661 %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 %0, implicit $mode, implicit $exec
662 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
663 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
664 $vgpr0 = COPY %and_vop3
665 $vgpr1 = COPY %and_vop1
671 tracksRegLiveness: true
675 ; GFX8-LABEL: name: v_rndne_f16
676 ; GFX8: liveins: $vgpr0
678 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
679 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
680 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
681 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
682 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
684 ; GFX9-LABEL: name: v_rndne_f16
685 ; GFX9: liveins: $vgpr0
687 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
688 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
689 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
690 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
691 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
693 ; GFX10-LABEL: name: v_rndne_f16
694 ; GFX10: liveins: $vgpr0
696 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
697 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
698 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
699 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
700 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
701 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
702 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
703 %0:vgpr_32 = COPY $vgpr0
704 %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
705 %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 %0, implicit $mode, implicit $exec
706 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
707 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
708 $vgpr0 = COPY %and_vop3
709 $vgpr1 = COPY %and_vop1
715 tracksRegLiveness: true
719 ; GFX8-LABEL: name: v_fract_f16
720 ; GFX8: liveins: $vgpr0
722 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
723 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
724 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
725 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
726 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
728 ; GFX9-LABEL: name: v_fract_f16
729 ; GFX9: liveins: $vgpr0
731 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
732 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
733 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
734 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
735 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
737 ; GFX10-LABEL: name: v_fract_f16
738 ; GFX10: liveins: $vgpr0
740 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
741 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
742 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
743 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
744 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
745 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
746 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
747 %0:vgpr_32 = COPY $vgpr0
748 %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
749 %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 %0, implicit $mode, implicit $exec
750 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
751 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
752 $vgpr0 = COPY %and_vop3
753 $vgpr1 = COPY %and_vop1
758 name: v_frexp_mant_f16
759 tracksRegLiveness: true
763 ; GFX8-LABEL: name: v_frexp_mant_f16
764 ; GFX8: liveins: $vgpr0
766 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
767 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
768 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
769 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
770 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
772 ; GFX9-LABEL: name: v_frexp_mant_f16
773 ; GFX9: liveins: $vgpr0
775 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
776 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
777 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
778 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
779 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
781 ; GFX10-LABEL: name: v_frexp_mant_f16
782 ; GFX10: liveins: $vgpr0
784 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
785 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
786 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
787 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
788 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
789 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
790 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
791 %0:vgpr_32 = COPY $vgpr0
792 %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
793 %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 %0, implicit $mode, implicit $exec
794 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
795 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
796 $vgpr0 = COPY %and_vop3
797 $vgpr1 = COPY %and_vop1
802 name: v_frexp_exp_f16
803 tracksRegLiveness: true
807 ; GFX8-LABEL: name: v_frexp_exp_f16
808 ; GFX8: liveins: $vgpr0
810 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
811 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
812 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
813 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
814 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
816 ; GFX9-LABEL: name: v_frexp_exp_f16
817 ; GFX9: liveins: $vgpr0
819 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
820 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
821 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
822 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
823 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
825 ; GFX10-LABEL: name: v_frexp_exp_f16
826 ; GFX10: liveins: $vgpr0
828 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
829 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
830 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
831 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
832 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
833 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
834 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
835 %0:vgpr_32 = COPY $vgpr0
836 %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
837 %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 %0, implicit $mode, implicit $exec
838 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
839 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
840 $vgpr0 = COPY %and_vop3
841 $vgpr1 = COPY %and_vop1
847 tracksRegLiveness: true
850 liveins: $vgpr0, $vgpr1
851 ; GFX8-LABEL: name: v_ldexp_f16
852 ; GFX8: liveins: $vgpr0, $vgpr1
854 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
855 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
856 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
857 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
858 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
859 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
861 ; GFX9-LABEL: name: v_ldexp_f16
862 ; GFX9: liveins: $vgpr0, $vgpr1
864 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
865 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
866 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
867 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
868 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
869 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
871 ; GFX10-LABEL: name: v_ldexp_f16
872 ; GFX10: liveins: $vgpr0, $vgpr1
874 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
875 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
876 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
877 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
878 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
879 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
880 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
881 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
882 %0:vgpr_32 = COPY $vgpr0
883 %1:vgpr_32 = COPY $vgpr1
884 %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
885 %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 %0, %1, implicit $mode, implicit $exec
886 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
887 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
888 $vgpr0 = COPY %and_vop3
889 $vgpr1 = COPY %and_vop2
895 tracksRegLiveness: true
898 liveins: $vgpr0, $vgpr1
899 ; GFX8-LABEL: name: v_lshlrev_b16
900 ; GFX8: liveins: $vgpr0, $vgpr1
902 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
903 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
904 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
905 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
906 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
907 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
909 ; GFX9-LABEL: name: v_lshlrev_b16
910 ; GFX9: liveins: $vgpr0, $vgpr1
912 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
913 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
914 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
915 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
916 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
917 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
919 ; GFX10-LABEL: name: v_lshlrev_b16
920 ; GFX10: liveins: $vgpr0, $vgpr1
922 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
923 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
924 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
925 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
926 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
927 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
928 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
929 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
930 %0:vgpr_32 = COPY $vgpr0
931 %1:vgpr_32 = COPY $vgpr1
932 %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 %0, %1, implicit $mode, implicit $exec
933 %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 %0, %1, implicit $mode, implicit $exec
934 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
935 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
936 $vgpr0 = COPY %and_vop3
937 $vgpr1 = COPY %and_vop2
943 tracksRegLiveness: true
946 liveins: $vgpr0, $vgpr1
947 ; GFX8-LABEL: name: v_lshrrev_b16
948 ; GFX8: liveins: $vgpr0, $vgpr1
950 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
951 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
952 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
953 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
954 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
955 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
957 ; GFX9-LABEL: name: v_lshrrev_b16
958 ; GFX9: liveins: $vgpr0, $vgpr1
960 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
961 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
962 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
963 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
964 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
965 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
967 ; GFX10-LABEL: name: v_lshrrev_b16
968 ; GFX10: liveins: $vgpr0, $vgpr1
970 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
971 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
972 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
973 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
974 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
975 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
976 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
977 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
978 %0:vgpr_32 = COPY $vgpr0
979 %1:vgpr_32 = COPY $vgpr1
980 %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 %0, %1, implicit $mode, implicit $exec
981 %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 %0, %1, implicit $mode, implicit $exec
982 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
983 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
984 $vgpr0 = COPY %and_vop3
985 $vgpr1 = COPY %and_vop2
991 tracksRegLiveness: true
994 liveins: $vgpr0, $vgpr1
995 ; GFX8-LABEL: name: v_ashrrev_i16
996 ; GFX8: liveins: $vgpr0, $vgpr1
998 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
999 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1000 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1001 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1002 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1003 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1005 ; GFX9-LABEL: name: v_ashrrev_i16
1006 ; GFX9: liveins: $vgpr0, $vgpr1
1008 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1009 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1010 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1011 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1012 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1013 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1015 ; GFX10-LABEL: name: v_ashrrev_i16
1016 ; GFX10: liveins: $vgpr0, $vgpr1
1017 ; GFX10-NEXT: {{ $}}
1018 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1019 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1020 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1021 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1022 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1023 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1024 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1025 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1026 %0:vgpr_32 = COPY $vgpr0
1027 %1:vgpr_32 = COPY $vgpr1
1028 %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 %0, %1, implicit $mode, implicit $exec
1029 %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 %0, %1, implicit $mode, implicit $exec
1030 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1031 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1032 $vgpr0 = COPY %and_vop3
1033 $vgpr1 = COPY %and_vop2
1039 tracksRegLiveness: true
1042 liveins: $vgpr0, $vgpr1
1043 ; GFX8-LABEL: name: v_add_u16
1044 ; GFX8: liveins: $vgpr0, $vgpr1
1046 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1047 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1048 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1049 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1050 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1051 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1053 ; GFX9-LABEL: name: v_add_u16
1054 ; GFX9: liveins: $vgpr0, $vgpr1
1056 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1057 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1058 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1059 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1060 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1061 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1063 ; GFX10-LABEL: name: v_add_u16
1064 ; GFX10: liveins: $vgpr0, $vgpr1
1065 ; GFX10-NEXT: {{ $}}
1066 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1067 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1068 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1069 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1070 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1071 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1072 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1073 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1074 %0:vgpr_32 = COPY $vgpr0
1075 %1:vgpr_32 = COPY $vgpr1
1076 %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1077 %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 %0, %1, implicit $mode, implicit $exec
1078 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1079 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1080 $vgpr0 = COPY %and_vop3
1081 $vgpr1 = COPY %and_vop2
1087 tracksRegLiveness: true
1090 liveins: $vgpr0, $vgpr1
1091 ; GFX8-LABEL: name: v_sub_u16
1092 ; GFX8: liveins: $vgpr0, $vgpr1
1094 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1095 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1096 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1097 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1098 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1099 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1101 ; GFX9-LABEL: name: v_sub_u16
1102 ; GFX9: liveins: $vgpr0, $vgpr1
1104 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1105 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1106 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1107 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1108 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1109 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1111 ; GFX10-LABEL: name: v_sub_u16
1112 ; GFX10: liveins: $vgpr0, $vgpr1
1113 ; GFX10-NEXT: {{ $}}
1114 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1115 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1116 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1117 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1118 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1119 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1120 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1121 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1122 %0:vgpr_32 = COPY $vgpr0
1123 %1:vgpr_32 = COPY $vgpr1
1124 %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1125 %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 %0, %1, implicit $mode, implicit $exec
1126 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1127 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1128 $vgpr0 = COPY %and_vop3
1129 $vgpr1 = COPY %and_vop2
1135 tracksRegLiveness: true
1138 liveins: $vgpr0, $vgpr1
1139 ; GFX8-LABEL: name: v_subrev_u16
1140 ; GFX8: liveins: $vgpr0, $vgpr1
1142 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1143 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1144 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1145 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1146 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1147 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1149 ; GFX9-LABEL: name: v_subrev_u16
1150 ; GFX9: liveins: $vgpr0, $vgpr1
1152 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1153 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1154 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1155 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1156 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1157 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1159 ; GFX10-LABEL: name: v_subrev_u16
1160 ; GFX10: liveins: $vgpr0, $vgpr1
1161 ; GFX10-NEXT: {{ $}}
1162 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1163 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1164 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1165 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1166 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1167 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1168 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1169 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1170 %0:vgpr_32 = COPY $vgpr0
1171 %1:vgpr_32 = COPY $vgpr1
1172 %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1173 %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 %0, %1, implicit $mode, implicit $exec
1174 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1175 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1176 $vgpr0 = COPY %and_vop3
1177 $vgpr1 = COPY %and_vop2
1183 tracksRegLiveness: true
1186 liveins: $vgpr0, $vgpr1
1187 ; GFX8-LABEL: name: v_mul_lo_u16
1188 ; GFX8: liveins: $vgpr0, $vgpr1
1190 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1191 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1192 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1193 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1194 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1195 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1197 ; GFX9-LABEL: name: v_mul_lo_u16
1198 ; GFX9: liveins: $vgpr0, $vgpr1
1200 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1201 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1202 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1203 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1204 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1205 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1207 ; GFX10-LABEL: name: v_mul_lo_u16
1208 ; GFX10: liveins: $vgpr0, $vgpr1
1209 ; GFX10-NEXT: {{ $}}
1210 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1211 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1212 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1213 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1214 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1215 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1216 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1217 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1218 %0:vgpr_32 = COPY $vgpr0
1219 %1:vgpr_32 = COPY $vgpr1
1220 %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 %0, %1, implicit $mode, implicit $exec
1221 %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 %0, %1, implicit $mode, implicit $exec
1222 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1223 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1224 $vgpr0 = COPY %and_vop3
1225 $vgpr1 = COPY %and_vop2
1231 tracksRegLiveness: true
1234 liveins: $vgpr0, $vgpr1
1235 ; GFX8-LABEL: name: v_add_f16
1236 ; GFX8: liveins: $vgpr0, $vgpr1
1238 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1239 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1240 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1241 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1242 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1243 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1245 ; GFX9-LABEL: name: v_add_f16
1246 ; GFX9: liveins: $vgpr0, $vgpr1
1248 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1249 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1250 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1251 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1252 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1253 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1255 ; GFX10-LABEL: name: v_add_f16
1256 ; GFX10: liveins: $vgpr0, $vgpr1
1257 ; GFX10-NEXT: {{ $}}
1258 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1259 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1260 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1261 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1262 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1263 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1264 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1265 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1266 %0:vgpr_32 = COPY $vgpr0
1267 %1:vgpr_32 = COPY $vgpr1
1268 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1269 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1270 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1271 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1272 $vgpr0 = COPY %and_vop3
1273 $vgpr1 = COPY %and_vop2
1279 tracksRegLiveness: true
1282 liveins: $vgpr0, $vgpr1
1283 ; GFX8-LABEL: name: v_sub_f16
1284 ; GFX8: liveins: $vgpr0, $vgpr1
1286 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1287 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1288 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1289 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1290 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1291 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1293 ; GFX9-LABEL: name: v_sub_f16
1294 ; GFX9: liveins: $vgpr0, $vgpr1
1296 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1297 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1298 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1299 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1300 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1301 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1303 ; GFX10-LABEL: name: v_sub_f16
1304 ; GFX10: liveins: $vgpr0, $vgpr1
1305 ; GFX10-NEXT: {{ $}}
1306 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1307 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1308 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1309 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1310 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1311 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1312 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1313 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1314 %0:vgpr_32 = COPY $vgpr0
1315 %1:vgpr_32 = COPY $vgpr1
1316 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1317 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1318 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1319 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1320 $vgpr0 = COPY %and_vop3
1321 $vgpr1 = COPY %and_vop2
1327 tracksRegLiveness: true
1330 liveins: $vgpr0, $vgpr1
1331 ; GFX8-LABEL: name: v_subrev_f16
1332 ; GFX8: liveins: $vgpr0, $vgpr1
1334 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1335 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1336 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1337 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1338 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1339 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1341 ; GFX9-LABEL: name: v_subrev_f16
1342 ; GFX9: liveins: $vgpr0, $vgpr1
1344 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1345 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1346 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1347 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1348 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1349 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1351 ; GFX10-LABEL: name: v_subrev_f16
1352 ; GFX10: liveins: $vgpr0, $vgpr1
1353 ; GFX10-NEXT: {{ $}}
1354 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1355 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1356 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1357 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1358 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1359 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1360 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1361 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1362 %0:vgpr_32 = COPY $vgpr0
1363 %1:vgpr_32 = COPY $vgpr1
1364 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1365 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1366 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1367 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1368 $vgpr0 = COPY %and_vop3
1369 $vgpr1 = COPY %and_vop2
1375 tracksRegLiveness: true
1378 liveins: $vgpr0, $vgpr1
1379 ; GFX8-LABEL: name: v_mul_f16
1380 ; GFX8: liveins: $vgpr0, $vgpr1
1382 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1383 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1384 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1385 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1386 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1387 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1389 ; GFX9-LABEL: name: v_mul_f16
1390 ; GFX9: liveins: $vgpr0, $vgpr1
1392 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1393 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1394 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1395 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1396 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1397 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1399 ; GFX10-LABEL: name: v_mul_f16
1400 ; GFX10: liveins: $vgpr0, $vgpr1
1401 ; GFX10-NEXT: {{ $}}
1402 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1403 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1404 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1405 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1406 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1407 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1408 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1409 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1410 %0:vgpr_32 = COPY $vgpr0
1411 %1:vgpr_32 = COPY $vgpr1
1412 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1413 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1414 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1415 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1416 $vgpr0 = COPY %and_vop3
1417 $vgpr1 = COPY %and_vop2
1423 tracksRegLiveness: true
1426 liveins: $vgpr0, $vgpr1
1427 ; GFX8-LABEL: name: v_max_f16
1428 ; GFX8: liveins: $vgpr0, $vgpr1
1430 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1431 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1432 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1433 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1434 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1435 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1437 ; GFX9-LABEL: name: v_max_f16
1438 ; GFX9: liveins: $vgpr0, $vgpr1
1440 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1441 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1442 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1443 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1444 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1445 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1447 ; GFX10-LABEL: name: v_max_f16
1448 ; GFX10: liveins: $vgpr0, $vgpr1
1449 ; GFX10-NEXT: {{ $}}
1450 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1451 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1452 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1453 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1454 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1455 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1456 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1457 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1458 %0:vgpr_32 = COPY $vgpr0
1459 %1:vgpr_32 = COPY $vgpr1
1460 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1461 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1462 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1463 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1464 $vgpr0 = COPY %and_vop3
1465 $vgpr1 = COPY %and_vop2
1471 tracksRegLiveness: true
1474 liveins: $vgpr0, $vgpr1
1475 ; GFX8-LABEL: name: v_min_f16
1476 ; GFX8: liveins: $vgpr0, $vgpr1
1478 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1479 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1480 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1481 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1482 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1483 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1485 ; GFX9-LABEL: name: v_min_f16
1486 ; GFX9: liveins: $vgpr0, $vgpr1
1488 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1489 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1490 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1491 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1492 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1493 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1495 ; GFX10-LABEL: name: v_min_f16
1496 ; GFX10: liveins: $vgpr0, $vgpr1
1497 ; GFX10-NEXT: {{ $}}
1498 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1499 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1500 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1501 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1502 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1503 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1504 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1505 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1506 %0:vgpr_32 = COPY $vgpr0
1507 %1:vgpr_32 = COPY $vgpr1
1508 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1509 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1510 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1511 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1512 $vgpr0 = COPY %and_vop3
1513 $vgpr1 = COPY %and_vop2
1519 tracksRegLiveness: true
1522 liveins: $vgpr0, $vgpr1
1523 ; GFX8-LABEL: name: v_max_u16
1524 ; GFX8: liveins: $vgpr0, $vgpr1
1526 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1527 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1528 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1529 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1530 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1531 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1533 ; GFX9-LABEL: name: v_max_u16
1534 ; GFX9: liveins: $vgpr0, $vgpr1
1536 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1537 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1538 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1539 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1540 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1541 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1543 ; GFX10-LABEL: name: v_max_u16
1544 ; GFX10: liveins: $vgpr0, $vgpr1
1545 ; GFX10-NEXT: {{ $}}
1546 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1547 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1548 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1549 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1550 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1551 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1552 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1553 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1554 %0:vgpr_32 = COPY $vgpr0
1555 %1:vgpr_32 = COPY $vgpr1
1556 %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 %0, %1, implicit $mode, implicit $exec
1557 %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 %0, %1, implicit $mode, implicit $exec
1558 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1559 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1560 $vgpr0 = COPY %and_vop3
1561 $vgpr1 = COPY %and_vop2
1566 tracksRegLiveness: true
1569 liveins: $vgpr0, $vgpr1
1570 ; GFX8-LABEL: name: v_min_u16
1571 ; GFX8: liveins: $vgpr0, $vgpr1
1573 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1574 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1575 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1576 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1577 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1578 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1580 ; GFX9-LABEL: name: v_min_u16
1581 ; GFX9: liveins: $vgpr0, $vgpr1
1583 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1584 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1585 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1586 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1587 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1588 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1590 ; GFX10-LABEL: name: v_min_u16
1591 ; GFX10: liveins: $vgpr0, $vgpr1
1592 ; GFX10-NEXT: {{ $}}
1593 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1594 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1595 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1596 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1597 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1598 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1599 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1600 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1601 %0:vgpr_32 = COPY $vgpr0
1602 %1:vgpr_32 = COPY $vgpr1
1603 %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 %0, %1, implicit $mode, implicit $exec
1604 %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 %0, %1, implicit $mode, implicit $exec
1605 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1606 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1607 $vgpr0 = COPY %and_vop3
1608 $vgpr1 = COPY %and_vop2
1614 tracksRegLiveness: true
1617 liveins: $vgpr0, $vgpr1
1618 ; GFX8-LABEL: name: v_max_i16
1619 ; GFX8: liveins: $vgpr0, $vgpr1
1621 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1622 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1623 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1624 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1625 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1626 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1628 ; GFX9-LABEL: name: v_max_i16
1629 ; GFX9: liveins: $vgpr0, $vgpr1
1631 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1632 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1633 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1634 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1635 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1636 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1638 ; GFX10-LABEL: name: v_max_i16
1639 ; GFX10: liveins: $vgpr0, $vgpr1
1640 ; GFX10-NEXT: {{ $}}
1641 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1642 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1643 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1644 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1645 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1646 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1647 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1648 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1649 %0:vgpr_32 = COPY $vgpr0
1650 %1:vgpr_32 = COPY $vgpr1
1651 %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 %0, %1, implicit $mode, implicit $exec
1652 %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 %0, %1, implicit $mode, implicit $exec
1653 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1654 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1655 $vgpr0 = COPY %and_vop3
1656 $vgpr1 = COPY %and_vop2
1661 tracksRegLiveness: true
1664 liveins: $vgpr0, $vgpr1
1665 ; GFX8-LABEL: name: v_min_i16
1666 ; GFX8: liveins: $vgpr0, $vgpr1
1668 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1669 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1670 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1671 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1672 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1673 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1675 ; GFX9-LABEL: name: v_min_i16
1676 ; GFX9: liveins: $vgpr0, $vgpr1
1678 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1679 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1680 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1681 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1682 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1683 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1685 ; GFX10-LABEL: name: v_min_i16
1686 ; GFX10: liveins: $vgpr0, $vgpr1
1687 ; GFX10-NEXT: {{ $}}
1688 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1689 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1690 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1691 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1692 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1693 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1694 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1695 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1696 %0:vgpr_32 = COPY $vgpr0
1697 %1:vgpr_32 = COPY $vgpr1
1698 %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 %0, %1, implicit $mode, implicit $exec
1699 %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 %0, %1, implicit $mode, implicit $exec
1700 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1701 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1702 $vgpr0 = COPY %and_vop3
1703 $vgpr1 = COPY %and_vop2
1709 tracksRegLiveness: true
1712 liveins: $vgpr0, $vgpr1, $vgpr2
1713 ; GFX8-LABEL: name: v_mad_f16
1714 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1716 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1717 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1718 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1719 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1720 ; GFX8-NEXT: $vgpr0 = COPY %op
1722 ; GFX9-LABEL: name: v_mad_f16
1723 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1725 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1726 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1727 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1728 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1729 ; GFX9-NEXT: $vgpr0 = COPY %op
1731 ; GFX10-LABEL: name: v_mad_f16
1732 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1733 ; GFX10-NEXT: {{ $}}
1734 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1735 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1736 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1737 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1738 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1739 ; GFX10-NEXT: $vgpr0 = COPY %and
1740 %0:vgpr_32 = COPY $vgpr0
1741 %1:vgpr_32 = COPY $vgpr1
1742 %2:vgpr_32 = COPY $vgpr2
1743 %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1744 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1751 tracksRegLiveness: true
1754 liveins: $vgpr0, $vgpr1, $vgpr2
1755 ; GFX8-LABEL: name: v_fma_f16
1756 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1758 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1759 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1760 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1761 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1762 ; GFX8-NEXT: $vgpr0 = COPY %op
1764 ; GFX9-LABEL: name: v_fma_f16
1765 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1767 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1768 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1769 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1770 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1771 ; GFX9-NEXT: $vgpr0 = COPY %op
1773 ; GFX10-LABEL: name: v_fma_f16
1774 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1775 ; GFX10-NEXT: {{ $}}
1776 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1777 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1778 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1779 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1780 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1781 ; GFX10-NEXT: $vgpr0 = COPY %and
1782 %0:vgpr_32 = COPY $vgpr0
1783 %1:vgpr_32 = COPY $vgpr1
1784 %2:vgpr_32 = COPY $vgpr2
1785 %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1786 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1792 name: v_div_fixup_f16
1793 tracksRegLiveness: true
1796 liveins: $vgpr0, $vgpr1, $vgpr2
1797 ; GFX8-LABEL: name: v_div_fixup_f16
1798 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1800 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1801 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1802 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1803 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1804 ; GFX8-NEXT: $vgpr0 = COPY %op
1806 ; GFX9-LABEL: name: v_div_fixup_f16
1807 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1809 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1810 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1811 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1812 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1813 ; GFX9-NEXT: $vgpr0 = COPY %op
1815 ; GFX10-LABEL: name: v_div_fixup_f16
1816 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1817 ; GFX10-NEXT: {{ $}}
1818 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1819 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1820 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1821 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1822 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1823 ; GFX10-NEXT: $vgpr0 = COPY %and
1824 %0:vgpr_32 = COPY $vgpr0
1825 %1:vgpr_32 = COPY $vgpr1
1826 %2:vgpr_32 = COPY $vgpr2
1827 %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1828 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1835 tracksRegLiveness: true
1838 liveins: $vgpr0, $vgpr1
1839 ; GFX8-LABEL: name: v_madak_f16
1840 ; GFX8: liveins: $vgpr0, $vgpr1
1842 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1843 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1844 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1845 ; GFX8-NEXT: $vgpr0 = COPY %op
1847 ; GFX9-LABEL: name: v_madak_f16
1848 ; GFX9: liveins: $vgpr0, $vgpr1
1850 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1851 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1852 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1853 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1854 ; GFX9-NEXT: $vgpr0 = COPY %and
1856 ; GFX10-LABEL: name: v_madak_f16
1857 ; GFX10: liveins: $vgpr0, $vgpr1
1858 ; GFX10-NEXT: {{ $}}
1859 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1860 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1861 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1862 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1863 ; GFX10-NEXT: $vgpr0 = COPY %and
1864 %0:vgpr_32 = COPY $vgpr0
1865 %1:vgpr_32 = COPY $vgpr1
1866 %op:vgpr_32 = nofpexcept V_MADAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1867 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1874 tracksRegLiveness: true
1877 liveins: $vgpr0, $vgpr1
1878 ; GFX8-LABEL: name: v_madmk_f16
1879 ; GFX8: liveins: $vgpr0, $vgpr1
1881 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1882 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1883 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1884 ; GFX8-NEXT: $vgpr0 = COPY %op
1886 ; GFX9-LABEL: name: v_madmk_f16
1887 ; GFX9: liveins: $vgpr0, $vgpr1
1889 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1890 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1891 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1892 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1893 ; GFX9-NEXT: $vgpr0 = COPY %and
1895 ; GFX10-LABEL: name: v_madmk_f16
1896 ; GFX10: liveins: $vgpr0, $vgpr1
1897 ; GFX10-NEXT: {{ $}}
1898 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1899 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1900 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1901 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1902 ; GFX10-NEXT: $vgpr0 = COPY %and
1903 %0:vgpr_32 = COPY $vgpr0
1904 %1:vgpr_32 = COPY $vgpr1
1905 %op:vgpr_32 = nofpexcept V_MADMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1906 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1913 tracksRegLiveness: true
1916 liveins: $vgpr0, $vgpr1
1917 ; GFX8-LABEL: name: v_fmaak_f16
1918 ; GFX8: liveins: $vgpr0, $vgpr1
1920 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1921 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1922 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1923 ; GFX8-NEXT: $vgpr0 = COPY %op
1925 ; GFX9-LABEL: name: v_fmaak_f16
1926 ; GFX9: liveins: $vgpr0, $vgpr1
1928 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1929 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1930 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1931 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1932 ; GFX9-NEXT: $vgpr0 = COPY %and
1934 ; GFX10-LABEL: name: v_fmaak_f16
1935 ; GFX10: liveins: $vgpr0, $vgpr1
1936 ; GFX10-NEXT: {{ $}}
1937 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1938 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1939 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1940 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1941 ; GFX10-NEXT: $vgpr0 = COPY %and
1942 %0:vgpr_32 = COPY $vgpr0
1943 %1:vgpr_32 = COPY $vgpr1
1944 %op:vgpr_32 = nofpexcept V_FMAAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1945 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1952 tracksRegLiveness: true
1955 liveins: $vgpr0, $vgpr1
1956 ; GFX8-LABEL: name: v_fmamk_f16
1957 ; GFX8: liveins: $vgpr0, $vgpr1
1959 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1960 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1961 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1962 ; GFX8-NEXT: $vgpr0 = COPY %op
1964 ; GFX9-LABEL: name: v_fmamk_f16
1965 ; GFX9: liveins: $vgpr0, $vgpr1
1967 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1968 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1969 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1970 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1971 ; GFX9-NEXT: $vgpr0 = COPY %and
1973 ; GFX10-LABEL: name: v_fmamk_f16
1974 ; GFX10: liveins: $vgpr0, $vgpr1
1975 ; GFX10-NEXT: {{ $}}
1976 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1977 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1978 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1979 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1980 ; GFX10-NEXT: $vgpr0 = COPY %and
1981 %0:vgpr_32 = COPY $vgpr0
1982 %1:vgpr_32 = COPY $vgpr1
1983 %op:vgpr_32 = nofpexcept V_FMAMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1984 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1991 tracksRegLiveness: true
1994 liveins: $vgpr0, $vgpr1, $vgpr2
1995 ; GFX8-LABEL: name: v_mac_f16
1996 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1998 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1999 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2000 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2001 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2002 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2003 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
2004 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
2006 ; GFX9-LABEL: name: v_mac_f16
2007 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
2009 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2010 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2011 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2012 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2013 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2014 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2015 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2016 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
2017 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
2019 ; GFX10-LABEL: name: v_mac_f16
2020 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
2021 ; GFX10-NEXT: {{ $}}
2022 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2023 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2024 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2025 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2026 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2027 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2028 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2029 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
2030 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
2031 %0:vgpr_32 = COPY $vgpr0
2032 %1:vgpr_32 = COPY $vgpr1
2033 %2:vgpr_32 = COPY $vgpr2
2034 %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
2035 %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
2036 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2037 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2038 $vgpr0 = COPY %and_vop2
2039 $vgpr0 = COPY %and_vop3
2045 tracksRegLiveness: true
2048 liveins: $vgpr0, $vgpr1, $vgpr2
2049 ; GFX8-LABEL: name: v_fmac_f16
2050 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
2052 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2053 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2054 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2055 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2056 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2057 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
2058 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
2060 ; GFX9-LABEL: name: v_fmac_f16
2061 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
2063 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2064 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2065 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2066 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2067 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2068 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2069 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2070 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
2071 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
2073 ; GFX10-LABEL: name: v_fmac_f16
2074 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
2075 ; GFX10-NEXT: {{ $}}
2076 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2077 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2078 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2079 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
2080 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
2081 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2082 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2083 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
2084 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
2085 %0:vgpr_32 = COPY $vgpr0
2086 %1:vgpr_32 = COPY $vgpr1
2087 %2:vgpr_32 = COPY $vgpr2
2088 %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
2089 %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
2090 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
2091 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2092 $vgpr0 = COPY %and_vop2
2093 $vgpr0 = COPY %and_vop3
2098 name: no_fold_v_mad_mixlo_f16
2099 tracksRegLiveness: true
2102 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2103 ; GFX8-LABEL: name: no_fold_v_mad_mixlo_f16
2104 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2106 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2107 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2108 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2109 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2110 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2111 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2112 ; GFX8-NEXT: $vgpr0 = COPY %and
2114 ; GFX9-LABEL: name: no_fold_v_mad_mixlo_f16
2115 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2117 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2118 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2119 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2120 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2121 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2122 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2123 ; GFX9-NEXT: $vgpr0 = COPY %and
2125 ; GFX10-LABEL: name: no_fold_v_mad_mixlo_f16
2126 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2127 ; GFX10-NEXT: {{ $}}
2128 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2129 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2130 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2131 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2132 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2133 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2134 ; GFX10-NEXT: $vgpr0 = COPY %and
2135 %0:vgpr_32 = COPY $vgpr0
2136 %1:vgpr_32 = COPY $vgpr1
2137 %2:vgpr_32 = COPY $vgpr2
2138 %3:vgpr_32 = COPY $vgpr3
2139 %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2140 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2146 name: no_fold_v_mad_mixhi_f16
2147 tracksRegLiveness: true
2150 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2151 ; GFX8-LABEL: name: no_fold_v_mad_mixhi_f16
2152 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2154 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2155 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2156 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2157 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2158 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2159 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2160 ; GFX8-NEXT: $vgpr0 = COPY %and
2162 ; GFX9-LABEL: name: no_fold_v_mad_mixhi_f16
2163 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2165 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2166 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2167 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2168 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2169 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2170 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2171 ; GFX9-NEXT: $vgpr0 = COPY %and
2173 ; GFX10-LABEL: name: no_fold_v_mad_mixhi_f16
2174 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2175 ; GFX10-NEXT: {{ $}}
2176 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2177 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2178 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2179 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2180 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2181 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2182 ; GFX10-NEXT: $vgpr0 = COPY %and
2183 %0:vgpr_32 = COPY $vgpr0
2184 %1:vgpr_32 = COPY $vgpr1
2185 %2:vgpr_32 = COPY $vgpr2
2186 %3:vgpr_32 = COPY $vgpr3
2187 %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2188 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec