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
23 ; GFX9-LABEL: name: v_cvt_f16_f32_altmask
24 ; GFX9: liveins: $vgpr0
26 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
27 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
28 ; GFX9-NEXT: %smask:sreg_32 = S_MOV_B32 65535
29 ; GFX9-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
30 ; GFX9-NEXT: $vgpr0 = COPY %op
31 ; GFX9-NEXT: $vgpr1 = COPY %op
32 ; GFX9-NEXT: $vgpr2 = COPY %op
33 ; GFX10-LABEL: name: v_cvt_f16_f32_altmask
34 ; GFX10: liveins: $vgpr0
36 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
37 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
38 ; GFX10-NEXT: %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
39 ; GFX10-NEXT: %and1:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
40 ; GFX10-NEXT: %and2:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
41 ; GFX10-NEXT: $vgpr0 = COPY %and0
42 ; GFX10-NEXT: $vgpr1 = COPY %and1
43 ; GFX10-NEXT: $vgpr2 = COPY %and2
44 %0:vgpr_32 = COPY $vgpr0
45 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
46 %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
47 %smask:sreg_32 = S_MOV_B32 65535
48 %and1:vgpr_32 = V_AND_B32_e64 %smask, %op, implicit $exec
49 %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
50 %and2:vgpr_32 = V_AND_B32_e64 %vmask, %op, implicit $exec
57 # Test we do not assume the high bits are zero
59 name: wrong_mask_value
60 tracksRegLiveness: true
64 ; GFX8-LABEL: name: wrong_mask_value
65 ; GFX8: liveins: $vgpr0
67 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
68 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
69 ; GFX8-NEXT: %mask:sreg_32 = S_MOV_B32 65534
70 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
71 ; GFX8-NEXT: $vgpr0 = COPY %and
72 ; GFX9-LABEL: name: wrong_mask_value
73 ; GFX9: liveins: $vgpr0
75 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
76 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
77 ; GFX9-NEXT: %mask:sreg_32 = S_MOV_B32 65534
78 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
79 ; GFX9-NEXT: $vgpr0 = COPY %and
80 ; GFX10-LABEL: name: wrong_mask_value
81 ; GFX10: liveins: $vgpr0
83 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
84 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
85 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e64 65534, %op, implicit $exec
86 ; GFX10-NEXT: $vgpr0 = COPY %and
87 %0:vgpr_32 = COPY $vgpr0
88 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
89 %mask:sreg_32 = S_MOV_B32 65534
90 %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
97 tracksRegLiveness: true
101 ; GFX8-LABEL: name: v_cvt_f16_f32
102 ; GFX8: liveins: $vgpr0
104 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
105 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
106 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
107 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
108 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
109 ; GFX9-LABEL: name: v_cvt_f16_f32
110 ; GFX9: liveins: $vgpr0
112 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
113 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
114 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
115 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
116 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
117 ; GFX10-LABEL: name: v_cvt_f16_f32
118 ; GFX10: liveins: $vgpr0
120 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
121 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
122 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
123 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
124 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
125 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
126 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
127 %0:vgpr_32 = COPY $vgpr0
128 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, %0, 0, 0, implicit $mode, implicit $exec
129 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 %0, implicit $mode, implicit $exec
130 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
131 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
132 $vgpr0 = COPY %and_vop3
133 $vgpr1 = COPY %and_vop1
139 tracksRegLiveness: true
143 ; GFX8-LABEL: name: v_cvt_f16_u16
144 ; GFX8: liveins: $vgpr0
146 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
147 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
148 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
149 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
150 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
151 ; GFX9-LABEL: name: v_cvt_f16_u16
152 ; GFX9: liveins: $vgpr0
154 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
155 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
156 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
157 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
158 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
159 ; GFX10-LABEL: name: v_cvt_f16_u16
160 ; GFX10: liveins: $vgpr0
162 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
163 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
164 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
165 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
166 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
167 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
168 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
169 %0:vgpr_32 = COPY $vgpr0
170 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 %0, 0, 0, implicit $mode, implicit $exec
171 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 %0, implicit $mode, implicit $exec
172 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
173 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
174 $vgpr0 = COPY %and_vop3
175 $vgpr1 = COPY %and_vop1
181 tracksRegLiveness: true
185 ; GFX8-LABEL: name: v_cvt_f16_i16
186 ; GFX8: liveins: $vgpr0
188 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
189 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
190 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
191 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
192 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
193 ; GFX9-LABEL: name: v_cvt_f16_i16
194 ; GFX9: liveins: $vgpr0
196 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
197 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
198 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
199 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
200 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
201 ; GFX10-LABEL: name: v_cvt_f16_i16
202 ; GFX10: liveins: $vgpr0
204 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
205 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
206 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
207 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
208 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
209 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
210 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
211 %0:vgpr_32 = COPY $vgpr0
212 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 %0, 0, 0, implicit $mode, implicit $exec
213 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 %0, implicit $mode, implicit $exec
214 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
215 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
216 $vgpr0 = COPY %and_vop3
217 $vgpr1 = COPY %and_vop1
223 tracksRegLiveness: true
227 ; GFX8-LABEL: name: v_rcp_f16
228 ; GFX8: liveins: $vgpr0
230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
231 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
232 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
233 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
234 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
235 ; GFX9-LABEL: name: v_rcp_f16
236 ; GFX9: liveins: $vgpr0
238 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
239 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
240 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
241 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
242 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
243 ; GFX10-LABEL: name: v_rcp_f16
244 ; GFX10: liveins: $vgpr0
246 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
247 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
248 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
249 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
250 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
251 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
252 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
253 %0:vgpr_32 = COPY $vgpr0
254 %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
255 %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 %0, implicit $mode, implicit $exec
256 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
257 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
258 $vgpr0 = COPY %and_vop3
259 $vgpr1 = COPY %and_vop1
264 tracksRegLiveness: true
268 ; GFX8-LABEL: name: v_rsq_f16
269 ; GFX8: liveins: $vgpr0
271 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
272 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
273 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
274 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
275 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
276 ; GFX9-LABEL: name: v_rsq_f16
277 ; GFX9: liveins: $vgpr0
279 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
280 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
281 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
282 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
283 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
284 ; GFX10-LABEL: name: v_rsq_f16
285 ; GFX10: liveins: $vgpr0
287 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
288 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
289 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
290 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
291 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
292 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
293 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
294 %0:vgpr_32 = COPY $vgpr0
295 %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
296 %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 %0, implicit $mode, implicit $exec
297 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
298 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
299 $vgpr0 = COPY %and_vop3
300 $vgpr1 = COPY %and_vop1
305 tracksRegLiveness: true
309 ; GFX8-LABEL: name: v_sqrt_f16
310 ; GFX8: liveins: $vgpr0
312 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
313 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
314 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
315 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
316 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
317 ; GFX9-LABEL: name: v_sqrt_f16
318 ; GFX9: liveins: $vgpr0
320 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
321 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
322 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
323 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
324 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
325 ; GFX10-LABEL: name: v_sqrt_f16
326 ; GFX10: liveins: $vgpr0
328 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
329 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
330 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
331 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
332 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
333 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
334 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
335 %0:vgpr_32 = COPY $vgpr0
336 %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
337 %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 %0, implicit $mode, implicit $exec
338 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
339 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
340 $vgpr0 = COPY %and_vop3
341 $vgpr1 = COPY %and_vop1
347 tracksRegLiveness: true
351 ; GFX8-LABEL: name: v_log_f16
352 ; GFX8: liveins: $vgpr0
354 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
355 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
356 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
357 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
358 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
359 ; GFX9-LABEL: name: v_log_f16
360 ; GFX9: liveins: $vgpr0
362 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
363 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
364 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
365 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
366 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
367 ; GFX10-LABEL: name: v_log_f16
368 ; GFX10: liveins: $vgpr0
370 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
371 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
372 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
373 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
374 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
375 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
376 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
377 %0:vgpr_32 = COPY $vgpr0
378 %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
379 %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 %0, implicit $mode, implicit $exec
380 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
381 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
382 $vgpr0 = COPY %and_vop3
383 $vgpr1 = COPY %and_vop1
389 tracksRegLiveness: true
393 ; GFX8-LABEL: name: v_exp_f16
394 ; GFX8: liveins: $vgpr0
396 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
397 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
398 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
399 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
400 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
401 ; GFX9-LABEL: name: v_exp_f16
402 ; GFX9: liveins: $vgpr0
404 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
405 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
406 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
407 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
408 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
409 ; GFX10-LABEL: name: v_exp_f16
410 ; GFX10: liveins: $vgpr0
412 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
413 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
414 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
415 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
416 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
417 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
418 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
419 %0:vgpr_32 = COPY $vgpr0
420 %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
421 %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 %0, implicit $mode, implicit $exec
422 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
423 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
424 $vgpr0 = COPY %and_vop3
425 $vgpr1 = COPY %and_vop1
431 tracksRegLiveness: true
435 ; GFX8-LABEL: name: v_sin_f16
436 ; GFX8: liveins: $vgpr0
438 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
439 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
440 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
441 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
442 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
443 ; GFX9-LABEL: name: v_sin_f16
444 ; GFX9: liveins: $vgpr0
446 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
447 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
448 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
449 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
450 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
451 ; GFX10-LABEL: name: v_sin_f16
452 ; GFX10: liveins: $vgpr0
454 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
455 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
456 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
457 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
458 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
459 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
460 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
461 %0:vgpr_32 = COPY $vgpr0
462 %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
463 %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 %0, implicit $mode, implicit $exec
464 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
465 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
466 $vgpr0 = COPY %and_vop3
467 $vgpr1 = COPY %and_vop1
473 tracksRegLiveness: true
477 ; GFX8-LABEL: name: v_cos_f16
478 ; GFX8: liveins: $vgpr0
480 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
481 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
482 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
483 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
484 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
485 ; GFX9-LABEL: name: v_cos_f16
486 ; GFX9: liveins: $vgpr0
488 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
489 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
490 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
491 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
492 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
493 ; GFX10-LABEL: name: v_cos_f16
494 ; GFX10: liveins: $vgpr0
496 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
497 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
498 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
499 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
500 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
501 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
502 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
503 %0:vgpr_32 = COPY $vgpr0
504 %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
505 %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 %0, implicit $mode, implicit $exec
506 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
507 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
508 $vgpr0 = COPY %and_vop3
509 $vgpr1 = COPY %and_vop1
515 tracksRegLiveness: true
519 ; GFX8-LABEL: name: v_floor_f16
520 ; GFX8: liveins: $vgpr0
522 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
523 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
524 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
525 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
526 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
527 ; GFX9-LABEL: name: v_floor_f16
528 ; GFX9: liveins: $vgpr0
530 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
531 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
532 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
533 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
534 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
535 ; GFX10-LABEL: name: v_floor_f16
536 ; GFX10: liveins: $vgpr0
538 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
539 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
540 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
541 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
542 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
543 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
544 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
545 %0:vgpr_32 = COPY $vgpr0
546 %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
547 %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 %0, implicit $mode, implicit $exec
548 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
549 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
550 $vgpr0 = COPY %and_vop3
551 $vgpr1 = COPY %and_vop1
557 tracksRegLiveness: true
561 ; GFX8-LABEL: name: v_ceil_f16
562 ; GFX8: liveins: $vgpr0
564 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
565 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
566 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
567 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
568 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
569 ; GFX9-LABEL: name: v_ceil_f16
570 ; GFX9: liveins: $vgpr0
572 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
573 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
574 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
575 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
576 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
577 ; GFX10-LABEL: name: v_ceil_f16
578 ; GFX10: liveins: $vgpr0
580 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
581 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
582 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
583 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
584 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
585 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
586 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
587 %0:vgpr_32 = COPY $vgpr0
588 %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
589 %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 %0, implicit $mode, implicit $exec
590 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
591 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
592 $vgpr0 = COPY %and_vop3
593 $vgpr1 = COPY %and_vop1
599 tracksRegLiveness: true
603 ; GFX8-LABEL: name: v_trunc_f16
604 ; GFX8: liveins: $vgpr0
606 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
607 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
608 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
609 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
610 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
611 ; GFX9-LABEL: name: v_trunc_f16
612 ; GFX9: liveins: $vgpr0
614 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
615 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
616 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
617 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
618 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
619 ; GFX10-LABEL: name: v_trunc_f16
620 ; GFX10: liveins: $vgpr0
622 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
623 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
624 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
625 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
626 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
627 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
628 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
629 %0:vgpr_32 = COPY $vgpr0
630 %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
631 %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 %0, implicit $mode, implicit $exec
632 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
633 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
634 $vgpr0 = COPY %and_vop3
635 $vgpr1 = COPY %and_vop1
641 tracksRegLiveness: true
645 ; GFX8-LABEL: name: v_rndne_f16
646 ; GFX8: liveins: $vgpr0
648 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
649 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
650 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
651 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
652 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
653 ; GFX9-LABEL: name: v_rndne_f16
654 ; GFX9: liveins: $vgpr0
656 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
657 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
658 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
659 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
660 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
661 ; GFX10-LABEL: name: v_rndne_f16
662 ; GFX10: liveins: $vgpr0
664 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
665 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
666 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
667 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
668 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
669 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
670 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
671 %0:vgpr_32 = COPY $vgpr0
672 %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
673 %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 %0, implicit $mode, implicit $exec
674 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
675 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
676 $vgpr0 = COPY %and_vop3
677 $vgpr1 = COPY %and_vop1
683 tracksRegLiveness: true
687 ; GFX8-LABEL: name: v_fract_f16
688 ; GFX8: liveins: $vgpr0
690 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
691 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
692 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
693 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
694 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
695 ; GFX9-LABEL: name: v_fract_f16
696 ; GFX9: liveins: $vgpr0
698 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
699 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
700 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
701 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
702 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
703 ; GFX10-LABEL: name: v_fract_f16
704 ; GFX10: liveins: $vgpr0
706 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
707 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
708 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
709 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
710 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
711 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
712 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
713 %0:vgpr_32 = COPY $vgpr0
714 %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
715 %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 %0, implicit $mode, implicit $exec
716 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
717 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
718 $vgpr0 = COPY %and_vop3
719 $vgpr1 = COPY %and_vop1
724 name: v_frexp_mant_f16
725 tracksRegLiveness: true
729 ; GFX8-LABEL: name: v_frexp_mant_f16
730 ; GFX8: liveins: $vgpr0
732 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
733 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
734 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
735 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
736 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
737 ; GFX9-LABEL: name: v_frexp_mant_f16
738 ; GFX9: liveins: $vgpr0
740 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
741 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
742 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
743 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
744 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
745 ; GFX10-LABEL: name: v_frexp_mant_f16
746 ; GFX10: liveins: $vgpr0
748 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
749 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
750 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
751 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
752 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
753 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
754 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
755 %0:vgpr_32 = COPY $vgpr0
756 %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
757 %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 %0, implicit $mode, implicit $exec
758 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
759 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
760 $vgpr0 = COPY %and_vop3
761 $vgpr1 = COPY %and_vop1
766 name: v_frexp_exp_f16
767 tracksRegLiveness: true
771 ; GFX8-LABEL: name: v_frexp_exp_f16
772 ; GFX8: liveins: $vgpr0
774 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
775 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
776 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
777 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
778 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
779 ; GFX9-LABEL: name: v_frexp_exp_f16
780 ; GFX9: liveins: $vgpr0
782 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
783 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
784 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
785 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
786 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
787 ; GFX10-LABEL: name: v_frexp_exp_f16
788 ; GFX10: liveins: $vgpr0
790 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
791 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
792 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
793 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
794 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
795 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
796 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1
797 %0:vgpr_32 = COPY $vgpr0
798 %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
799 %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 %0, implicit $mode, implicit $exec
800 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
801 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
802 $vgpr0 = COPY %and_vop3
803 $vgpr1 = COPY %and_vop1
809 tracksRegLiveness: true
812 liveins: $vgpr0, $vgpr1
813 ; GFX8-LABEL: name: v_ldexp_f16
814 ; GFX8: liveins: $vgpr0, $vgpr1
816 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
817 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
818 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
819 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
820 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
821 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
822 ; GFX9-LABEL: name: v_ldexp_f16
823 ; GFX9: liveins: $vgpr0, $vgpr1
825 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
826 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
827 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
828 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
829 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
830 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
831 ; GFX10-LABEL: name: v_ldexp_f16
832 ; GFX10: liveins: $vgpr0, $vgpr1
834 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
835 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
836 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
837 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
838 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
839 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
840 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
841 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
842 %0:vgpr_32 = COPY $vgpr0
843 %1:vgpr_32 = COPY $vgpr1
844 %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
845 %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 %0, %1, implicit $mode, implicit $exec
846 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
847 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
848 $vgpr0 = COPY %and_vop3
849 $vgpr1 = COPY %and_vop2
855 tracksRegLiveness: true
858 liveins: $vgpr0, $vgpr1
859 ; GFX8-LABEL: name: v_lshlrev_b16
860 ; GFX8: liveins: $vgpr0, $vgpr1
862 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
863 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
864 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
865 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
866 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
867 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
868 ; GFX9-LABEL: name: v_lshlrev_b16
869 ; GFX9: liveins: $vgpr0, $vgpr1
871 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
872 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
873 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
874 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
875 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
876 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
877 ; GFX10-LABEL: name: v_lshlrev_b16
878 ; GFX10: liveins: $vgpr0, $vgpr1
880 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
881 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
882 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
883 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
884 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
885 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
886 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
887 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
888 %0:vgpr_32 = COPY $vgpr0
889 %1:vgpr_32 = COPY $vgpr1
890 %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 %0, %1, implicit $mode, implicit $exec
891 %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 %0, %1, implicit $mode, implicit $exec
892 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
893 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
894 $vgpr0 = COPY %and_vop3
895 $vgpr1 = COPY %and_vop2
901 tracksRegLiveness: true
904 liveins: $vgpr0, $vgpr1
905 ; GFX8-LABEL: name: v_lshrrev_b16
906 ; GFX8: liveins: $vgpr0, $vgpr1
908 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
909 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
910 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
911 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
912 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
913 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
914 ; GFX9-LABEL: name: v_lshrrev_b16
915 ; GFX9: liveins: $vgpr0, $vgpr1
917 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
918 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
919 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
920 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
921 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
922 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
923 ; GFX10-LABEL: name: v_lshrrev_b16
924 ; GFX10: liveins: $vgpr0, $vgpr1
926 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
927 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
928 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
929 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
930 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
931 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
932 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
933 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
934 %0:vgpr_32 = COPY $vgpr0
935 %1:vgpr_32 = COPY $vgpr1
936 %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 %0, %1, implicit $mode, implicit $exec
937 %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 %0, %1, implicit $mode, implicit $exec
938 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
939 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
940 $vgpr0 = COPY %and_vop3
941 $vgpr1 = COPY %and_vop2
947 tracksRegLiveness: true
950 liveins: $vgpr0, $vgpr1
951 ; GFX8-LABEL: name: v_ashrrev_i16
952 ; GFX8: liveins: $vgpr0, $vgpr1
954 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
955 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
956 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
957 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
958 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
959 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
960 ; GFX9-LABEL: name: v_ashrrev_i16
961 ; GFX9: liveins: $vgpr0, $vgpr1
963 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
964 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
965 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
966 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
967 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
968 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
969 ; GFX10-LABEL: name: v_ashrrev_i16
970 ; GFX10: liveins: $vgpr0, $vgpr1
972 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
973 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
974 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
975 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
976 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
977 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
978 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
979 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
980 %0:vgpr_32 = COPY $vgpr0
981 %1:vgpr_32 = COPY $vgpr1
982 %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 %0, %1, implicit $mode, implicit $exec
983 %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 %0, %1, implicit $mode, implicit $exec
984 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
985 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
986 $vgpr0 = COPY %and_vop3
987 $vgpr1 = COPY %and_vop2
993 tracksRegLiveness: true
996 liveins: $vgpr0, $vgpr1
997 ; GFX8-LABEL: name: v_add_u16
998 ; GFX8: liveins: $vgpr0, $vgpr1
1000 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1001 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1002 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1003 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1004 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1005 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1006 ; GFX9-LABEL: name: v_add_u16
1007 ; GFX9: liveins: $vgpr0, $vgpr1
1009 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1010 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1011 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1012 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1013 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1014 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1015 ; GFX10-LABEL: name: v_add_u16
1016 ; GFX10: liveins: $vgpr0, $vgpr1
1017 ; GFX10-NEXT: {{ $}}
1018 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1019 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1020 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1021 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1022 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1023 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1024 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1025 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1026 %0:vgpr_32 = COPY $vgpr0
1027 %1:vgpr_32 = COPY $vgpr1
1028 %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1029 %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 %0, %1, implicit $mode, implicit $exec
1030 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1031 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1032 $vgpr0 = COPY %and_vop3
1033 $vgpr1 = COPY %and_vop2
1039 tracksRegLiveness: true
1042 liveins: $vgpr0, $vgpr1
1043 ; GFX8-LABEL: name: v_sub_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_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1049 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1050 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1051 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1052 ; GFX9-LABEL: name: v_sub_u16
1053 ; GFX9: liveins: $vgpr0, $vgpr1
1055 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1056 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1057 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1058 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1059 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1060 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1061 ; GFX10-LABEL: name: v_sub_u16
1062 ; GFX10: liveins: $vgpr0, $vgpr1
1063 ; GFX10-NEXT: {{ $}}
1064 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1065 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1066 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1067 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1068 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1069 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1070 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1071 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1072 %0:vgpr_32 = COPY $vgpr0
1073 %1:vgpr_32 = COPY $vgpr1
1074 %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1075 %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 %0, %1, implicit $mode, implicit $exec
1076 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1077 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1078 $vgpr0 = COPY %and_vop3
1079 $vgpr1 = COPY %and_vop2
1085 tracksRegLiveness: true
1088 liveins: $vgpr0, $vgpr1
1089 ; GFX8-LABEL: name: v_subrev_u16
1090 ; GFX8: liveins: $vgpr0, $vgpr1
1092 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1093 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1094 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1095 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1096 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1097 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1098 ; GFX9-LABEL: name: v_subrev_u16
1099 ; GFX9: liveins: $vgpr0, $vgpr1
1101 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1102 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1103 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1104 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1105 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1106 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1107 ; GFX10-LABEL: name: v_subrev_u16
1108 ; GFX10: liveins: $vgpr0, $vgpr1
1109 ; GFX10-NEXT: {{ $}}
1110 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1111 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1112 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
1113 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1114 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1115 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1116 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1117 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1118 %0:vgpr_32 = COPY $vgpr0
1119 %1:vgpr_32 = COPY $vgpr1
1120 %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
1121 %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 %0, %1, implicit $mode, implicit $exec
1122 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1123 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1124 $vgpr0 = COPY %and_vop3
1125 $vgpr1 = COPY %and_vop2
1131 tracksRegLiveness: true
1134 liveins: $vgpr0, $vgpr1
1135 ; GFX8-LABEL: name: v_mul_lo_u16
1136 ; GFX8: liveins: $vgpr0, $vgpr1
1138 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1139 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1140 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1141 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1142 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1143 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1144 ; GFX9-LABEL: name: v_mul_lo_u16
1145 ; GFX9: liveins: $vgpr0, $vgpr1
1147 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1148 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1149 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1150 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1151 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1152 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1153 ; GFX10-LABEL: name: v_mul_lo_u16
1154 ; GFX10: liveins: $vgpr0, $vgpr1
1155 ; GFX10-NEXT: {{ $}}
1156 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1157 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1158 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1159 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1160 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1161 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1162 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1163 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1164 %0:vgpr_32 = COPY $vgpr0
1165 %1:vgpr_32 = COPY $vgpr1
1166 %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 %0, %1, implicit $mode, implicit $exec
1167 %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 %0, %1, implicit $mode, implicit $exec
1168 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1169 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1170 $vgpr0 = COPY %and_vop3
1171 $vgpr1 = COPY %and_vop2
1177 tracksRegLiveness: true
1180 liveins: $vgpr0, $vgpr1
1181 ; GFX8-LABEL: name: v_add_f16
1182 ; GFX8: liveins: $vgpr0, $vgpr1
1184 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1185 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1186 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1187 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1188 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1189 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1190 ; GFX9-LABEL: name: v_add_f16
1191 ; GFX9: liveins: $vgpr0, $vgpr1
1193 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1194 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1195 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1196 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1197 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1198 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1199 ; GFX10-LABEL: name: v_add_f16
1200 ; GFX10: liveins: $vgpr0, $vgpr1
1201 ; GFX10-NEXT: {{ $}}
1202 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1203 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1204 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1205 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1206 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1207 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1208 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1209 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1210 %0:vgpr_32 = COPY $vgpr0
1211 %1:vgpr_32 = COPY $vgpr1
1212 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1213 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1214 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1215 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1216 $vgpr0 = COPY %and_vop3
1217 $vgpr1 = COPY %and_vop2
1223 tracksRegLiveness: true
1226 liveins: $vgpr0, $vgpr1
1227 ; GFX8-LABEL: name: v_sub_f16
1228 ; GFX8: liveins: $vgpr0, $vgpr1
1230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1231 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1232 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1233 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1234 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1235 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1236 ; GFX9-LABEL: name: v_sub_f16
1237 ; GFX9: liveins: $vgpr0, $vgpr1
1239 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1240 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1241 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1242 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1243 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1244 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1245 ; GFX10-LABEL: name: v_sub_f16
1246 ; GFX10: liveins: $vgpr0, $vgpr1
1247 ; GFX10-NEXT: {{ $}}
1248 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1249 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1250 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1251 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1252 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1253 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1254 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1255 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1256 %0:vgpr_32 = COPY $vgpr0
1257 %1:vgpr_32 = COPY $vgpr1
1258 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1259 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1260 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1261 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1262 $vgpr0 = COPY %and_vop3
1263 $vgpr1 = COPY %and_vop2
1269 tracksRegLiveness: true
1272 liveins: $vgpr0, $vgpr1
1273 ; GFX8-LABEL: name: v_subrev_f16
1274 ; GFX8: liveins: $vgpr0, $vgpr1
1276 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1277 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1278 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1279 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1280 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1281 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1282 ; GFX9-LABEL: name: v_subrev_f16
1283 ; GFX9: liveins: $vgpr0, $vgpr1
1285 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1286 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1287 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1288 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1289 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1290 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1291 ; GFX10-LABEL: name: v_subrev_f16
1292 ; GFX10: liveins: $vgpr0, $vgpr1
1293 ; GFX10-NEXT: {{ $}}
1294 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1295 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1296 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1297 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1298 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1299 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1300 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1301 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1302 %0:vgpr_32 = COPY $vgpr0
1303 %1:vgpr_32 = COPY $vgpr1
1304 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1305 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1306 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1307 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1308 $vgpr0 = COPY %and_vop3
1309 $vgpr1 = COPY %and_vop2
1315 tracksRegLiveness: true
1318 liveins: $vgpr0, $vgpr1
1319 ; GFX8-LABEL: name: v_mul_f16
1320 ; GFX8: liveins: $vgpr0, $vgpr1
1322 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1323 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1324 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1325 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1326 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1327 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1328 ; GFX9-LABEL: name: v_mul_f16
1329 ; GFX9: liveins: $vgpr0, $vgpr1
1331 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1332 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1333 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1334 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1335 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1336 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1337 ; GFX10-LABEL: name: v_mul_f16
1338 ; GFX10: liveins: $vgpr0, $vgpr1
1339 ; GFX10-NEXT: {{ $}}
1340 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1341 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1342 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1343 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1344 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1345 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1346 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1347 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1348 %0:vgpr_32 = COPY $vgpr0
1349 %1:vgpr_32 = COPY $vgpr1
1350 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1351 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1352 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1353 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1354 $vgpr0 = COPY %and_vop3
1355 $vgpr1 = COPY %and_vop2
1361 tracksRegLiveness: true
1364 liveins: $vgpr0, $vgpr1
1365 ; GFX8-LABEL: name: v_max_f16
1366 ; GFX8: liveins: $vgpr0, $vgpr1
1368 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1369 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1370 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1371 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1372 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1373 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1374 ; GFX9-LABEL: name: v_max_f16
1375 ; GFX9: liveins: $vgpr0, $vgpr1
1377 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1378 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1379 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1380 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1381 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1382 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1383 ; GFX10-LABEL: name: v_max_f16
1384 ; GFX10: liveins: $vgpr0, $vgpr1
1385 ; GFX10-NEXT: {{ $}}
1386 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1387 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1388 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1389 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1390 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1391 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1392 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1393 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1394 %0:vgpr_32 = COPY $vgpr0
1395 %1:vgpr_32 = COPY $vgpr1
1396 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1397 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1398 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1399 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1400 $vgpr0 = COPY %and_vop3
1401 $vgpr1 = COPY %and_vop2
1407 tracksRegLiveness: true
1410 liveins: $vgpr0, $vgpr1
1411 ; GFX8-LABEL: name: v_min_f16
1412 ; GFX8: liveins: $vgpr0, $vgpr1
1414 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1415 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1416 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1417 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1418 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1419 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1
1420 ; GFX9-LABEL: name: v_min_f16
1421 ; GFX9: liveins: $vgpr0, $vgpr1
1423 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1424 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1425 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1426 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1427 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1428 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1
1429 ; GFX10-LABEL: name: v_min_f16
1430 ; GFX10: liveins: $vgpr0, $vgpr1
1431 ; GFX10-NEXT: {{ $}}
1432 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1433 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1434 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
1435 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1436 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1437 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1438 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1439 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1440 %0:vgpr_32 = COPY $vgpr0
1441 %1:vgpr_32 = COPY $vgpr1
1442 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
1443 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
1444 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1445 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
1446 $vgpr0 = COPY %and_vop3
1447 $vgpr1 = COPY %and_vop2
1453 tracksRegLiveness: true
1456 liveins: $vgpr0, $vgpr1
1457 ; GFX8-LABEL: name: v_max_u16
1458 ; GFX8: liveins: $vgpr0, $vgpr1
1460 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1461 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1462 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1463 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1464 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1465 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1466 ; GFX9-LABEL: name: v_max_u16
1467 ; GFX9: liveins: $vgpr0, $vgpr1
1469 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1470 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1471 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1472 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1473 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1474 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1475 ; GFX10-LABEL: name: v_max_u16
1476 ; GFX10: liveins: $vgpr0, $vgpr1
1477 ; GFX10-NEXT: {{ $}}
1478 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1479 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1480 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1481 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1482 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1483 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1484 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1485 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1486 %0:vgpr_32 = COPY $vgpr0
1487 %1:vgpr_32 = COPY $vgpr1
1488 %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 %0, %1, implicit $mode, implicit $exec
1489 %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 %0, %1, implicit $mode, implicit $exec
1490 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1491 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1492 $vgpr0 = COPY %and_vop3
1493 $vgpr1 = COPY %and_vop2
1498 tracksRegLiveness: true
1501 liveins: $vgpr0, $vgpr1
1502 ; GFX8-LABEL: name: v_min_u16
1503 ; GFX8: liveins: $vgpr0, $vgpr1
1505 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1506 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1507 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1508 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1509 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1510 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1511 ; GFX9-LABEL: name: v_min_u16
1512 ; GFX9: liveins: $vgpr0, $vgpr1
1514 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1515 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1516 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1517 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1518 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1519 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1520 ; GFX10-LABEL: name: v_min_u16
1521 ; GFX10: liveins: $vgpr0, $vgpr1
1522 ; GFX10-NEXT: {{ $}}
1523 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1524 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1525 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1526 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1527 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1528 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1529 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1530 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1531 %0:vgpr_32 = COPY $vgpr0
1532 %1:vgpr_32 = COPY $vgpr1
1533 %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 %0, %1, implicit $mode, implicit $exec
1534 %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 %0, %1, implicit $mode, implicit $exec
1535 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1536 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1537 $vgpr0 = COPY %and_vop3
1538 $vgpr1 = COPY %and_vop2
1544 tracksRegLiveness: true
1547 liveins: $vgpr0, $vgpr1
1548 ; GFX8-LABEL: name: v_max_i16
1549 ; GFX8: liveins: $vgpr0, $vgpr1
1551 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1552 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1553 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1554 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1555 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1556 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1557 ; GFX9-LABEL: name: v_max_i16
1558 ; GFX9: liveins: $vgpr0, $vgpr1
1560 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1561 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1562 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1563 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1564 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1565 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1566 ; GFX10-LABEL: name: v_max_i16
1567 ; GFX10: liveins: $vgpr0, $vgpr1
1568 ; GFX10-NEXT: {{ $}}
1569 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1570 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1571 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1572 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1573 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1574 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1575 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1576 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1577 %0:vgpr_32 = COPY $vgpr0
1578 %1:vgpr_32 = COPY $vgpr1
1579 %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 %0, %1, implicit $mode, implicit $exec
1580 %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 %0, %1, implicit $mode, implicit $exec
1581 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1582 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1583 $vgpr0 = COPY %and_vop3
1584 $vgpr1 = COPY %and_vop2
1589 tracksRegLiveness: true
1592 liveins: $vgpr0, $vgpr1
1593 ; GFX8-LABEL: name: v_min_i16
1594 ; GFX8: liveins: $vgpr0, $vgpr1
1596 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1597 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1598 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1599 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1600 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1601 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2
1602 ; GFX9-LABEL: name: v_min_i16
1603 ; GFX9: liveins: $vgpr0, $vgpr1
1605 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1606 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1607 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1608 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1609 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3
1610 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2
1611 ; GFX10-LABEL: name: v_min_i16
1612 ; GFX10: liveins: $vgpr0, $vgpr1
1613 ; GFX10-NEXT: {{ $}}
1614 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1615 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1616 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1617 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
1618 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1619 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1620 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1621 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2
1622 %0:vgpr_32 = COPY $vgpr0
1623 %1:vgpr_32 = COPY $vgpr1
1624 %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 %0, %1, implicit $mode, implicit $exec
1625 %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 %0, %1, implicit $mode, implicit $exec
1626 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1627 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1628 $vgpr0 = COPY %and_vop3
1629 $vgpr1 = COPY %and_vop2
1635 tracksRegLiveness: true
1638 liveins: $vgpr0, $vgpr1, $vgpr2
1639 ; GFX8-LABEL: name: v_mad_f16
1640 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1642 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1643 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1644 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1645 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1646 ; GFX8-NEXT: $vgpr0 = COPY %op
1647 ; GFX9-LABEL: name: v_mad_f16
1648 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1650 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1651 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1652 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1653 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1654 ; GFX9-NEXT: $vgpr0 = COPY %op
1655 ; GFX10-LABEL: name: v_mad_f16
1656 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1657 ; GFX10-NEXT: {{ $}}
1658 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1659 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1660 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1661 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1662 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1663 ; GFX10-NEXT: $vgpr0 = COPY %and
1664 %0:vgpr_32 = COPY $vgpr0
1665 %1:vgpr_32 = COPY $vgpr1
1666 %2:vgpr_32 = COPY $vgpr2
1667 %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1668 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1675 tracksRegLiveness: true
1678 liveins: $vgpr0, $vgpr1, $vgpr2
1679 ; GFX8-LABEL: name: v_fma_f16
1680 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1682 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1683 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1684 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1685 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1686 ; GFX8-NEXT: $vgpr0 = COPY %op
1687 ; GFX9-LABEL: name: v_fma_f16
1688 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1690 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1691 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1692 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1693 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1694 ; GFX9-NEXT: $vgpr0 = COPY %op
1695 ; GFX10-LABEL: name: v_fma_f16
1696 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1697 ; GFX10-NEXT: {{ $}}
1698 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1699 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1700 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1701 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1702 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1703 ; GFX10-NEXT: $vgpr0 = COPY %and
1704 %0:vgpr_32 = COPY $vgpr0
1705 %1:vgpr_32 = COPY $vgpr1
1706 %2:vgpr_32 = COPY $vgpr2
1707 %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1708 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1714 name: v_div_fixup_f16
1715 tracksRegLiveness: true
1718 liveins: $vgpr0, $vgpr1, $vgpr2
1719 ; GFX8-LABEL: name: v_div_fixup_f16
1720 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1722 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1723 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1724 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1725 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1726 ; GFX8-NEXT: $vgpr0 = COPY %op
1727 ; GFX9-LABEL: name: v_div_fixup_f16
1728 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1730 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1731 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1732 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1733 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1734 ; GFX9-NEXT: $vgpr0 = COPY %op
1735 ; GFX10-LABEL: name: v_div_fixup_f16
1736 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1737 ; GFX10-NEXT: {{ $}}
1738 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1739 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1740 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1741 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1742 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1743 ; GFX10-NEXT: $vgpr0 = COPY %and
1744 %0:vgpr_32 = COPY $vgpr0
1745 %1:vgpr_32 = COPY $vgpr1
1746 %2:vgpr_32 = COPY $vgpr2
1747 %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1748 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1755 tracksRegLiveness: true
1758 liveins: $vgpr0, $vgpr1
1759 ; GFX8-LABEL: name: v_madak_f16
1760 ; GFX8: liveins: $vgpr0, $vgpr1
1762 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1763 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1764 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1765 ; GFX8-NEXT: $vgpr0 = COPY %op
1766 ; GFX9-LABEL: name: v_madak_f16
1767 ; GFX9: liveins: $vgpr0, $vgpr1
1769 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1770 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1771 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1772 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1773 ; GFX9-NEXT: $vgpr0 = COPY %and
1774 ; GFX10-LABEL: name: v_madak_f16
1775 ; GFX10: liveins: $vgpr0, $vgpr1
1776 ; GFX10-NEXT: {{ $}}
1777 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1778 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1779 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1780 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1781 ; GFX10-NEXT: $vgpr0 = COPY %and
1782 %0:vgpr_32 = COPY $vgpr0
1783 %1:vgpr_32 = COPY $vgpr1
1784 %op:vgpr_32 = nofpexcept V_MADAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1785 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1792 tracksRegLiveness: true
1795 liveins: $vgpr0, $vgpr1
1796 ; GFX8-LABEL: name: v_madmk_f16
1797 ; GFX8: liveins: $vgpr0, $vgpr1
1799 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1800 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1801 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1802 ; GFX8-NEXT: $vgpr0 = COPY %op
1803 ; GFX9-LABEL: name: v_madmk_f16
1804 ; GFX9: liveins: $vgpr0, $vgpr1
1806 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1807 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1808 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1809 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1810 ; GFX9-NEXT: $vgpr0 = COPY %and
1811 ; GFX10-LABEL: name: v_madmk_f16
1812 ; GFX10: liveins: $vgpr0, $vgpr1
1813 ; GFX10-NEXT: {{ $}}
1814 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1815 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1816 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1817 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1818 ; GFX10-NEXT: $vgpr0 = COPY %and
1819 %0:vgpr_32 = COPY $vgpr0
1820 %1:vgpr_32 = COPY $vgpr1
1821 %op:vgpr_32 = nofpexcept V_MADMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1822 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1829 tracksRegLiveness: true
1832 liveins: $vgpr0, $vgpr1
1833 ; GFX8-LABEL: name: v_fmaak_f16
1834 ; GFX8: liveins: $vgpr0, $vgpr1
1836 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1837 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1838 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1839 ; GFX8-NEXT: $vgpr0 = COPY %op
1840 ; GFX9-LABEL: name: v_fmaak_f16
1841 ; GFX9: liveins: $vgpr0, $vgpr1
1843 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1844 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1845 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1846 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1847 ; GFX9-NEXT: $vgpr0 = COPY %and
1848 ; GFX10-LABEL: name: v_fmaak_f16
1849 ; GFX10: liveins: $vgpr0, $vgpr1
1850 ; GFX10-NEXT: {{ $}}
1851 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1852 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1853 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
1854 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1855 ; GFX10-NEXT: $vgpr0 = COPY %and
1856 %0:vgpr_32 = COPY $vgpr0
1857 %1:vgpr_32 = COPY $vgpr1
1858 %op:vgpr_32 = nofpexcept V_FMAAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
1859 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1866 tracksRegLiveness: true
1869 liveins: $vgpr0, $vgpr1
1870 ; GFX8-LABEL: name: v_fmamk_f16
1871 ; GFX8: liveins: $vgpr0, $vgpr1
1873 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1874 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1875 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1876 ; GFX8-NEXT: $vgpr0 = COPY %op
1877 ; GFX9-LABEL: name: v_fmamk_f16
1878 ; GFX9: liveins: $vgpr0, $vgpr1
1880 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1881 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1882 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1883 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1884 ; GFX9-NEXT: $vgpr0 = COPY %and
1885 ; GFX10-LABEL: name: v_fmamk_f16
1886 ; GFX10: liveins: $vgpr0, $vgpr1
1887 ; GFX10-NEXT: {{ $}}
1888 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1889 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1890 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
1891 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1892 ; GFX10-NEXT: $vgpr0 = COPY %and
1893 %0:vgpr_32 = COPY $vgpr0
1894 %1:vgpr_32 = COPY $vgpr1
1895 %op:vgpr_32 = nofpexcept V_FMAMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
1896 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
1903 tracksRegLiveness: true
1906 liveins: $vgpr0, $vgpr1, $vgpr2
1907 ; GFX8-LABEL: name: v_mac_f16
1908 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1910 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1911 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1912 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1913 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1914 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1915 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
1916 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1917 ; GFX9-LABEL: name: v_mac_f16
1918 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1920 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1921 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1922 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1923 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1924 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1925 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1926 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1927 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
1928 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
1929 ; GFX10-LABEL: name: v_mac_f16
1930 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1931 ; GFX10-NEXT: {{ $}}
1932 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1933 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1934 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1935 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1936 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1937 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1938 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1939 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
1940 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1941 %0:vgpr_32 = COPY $vgpr0
1942 %1:vgpr_32 = COPY $vgpr1
1943 %2:vgpr_32 = COPY $vgpr2
1944 %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
1945 %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1946 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1947 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1948 $vgpr0 = COPY %and_vop2
1949 $vgpr0 = COPY %and_vop3
1955 tracksRegLiveness: true
1958 liveins: $vgpr0, $vgpr1, $vgpr2
1959 ; GFX8-LABEL: name: v_fmac_f16
1960 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
1962 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1963 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1964 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1965 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1966 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1967 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2
1968 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3
1969 ; GFX9-LABEL: name: v_fmac_f16
1970 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
1972 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1973 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1974 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1975 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1976 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1977 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1978 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1979 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2
1980 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3
1981 ; GFX10-LABEL: name: v_fmac_f16
1982 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
1983 ; GFX10-NEXT: {{ $}}
1984 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
1985 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
1986 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1987 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
1988 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
1989 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1990 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
1991 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2
1992 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3
1993 %0:vgpr_32 = COPY $vgpr0
1994 %1:vgpr_32 = COPY $vgpr1
1995 %2:vgpr_32 = COPY $vgpr2
1996 %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
1997 %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
1998 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
1999 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
2000 $vgpr0 = COPY %and_vop2
2001 $vgpr0 = COPY %and_vop3
2006 name: no_fold_v_mad_mixlo_f16
2007 tracksRegLiveness: true
2010 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2011 ; GFX8-LABEL: name: no_fold_v_mad_mixlo_f16
2012 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2014 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2015 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2016 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2017 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2018 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2019 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2020 ; GFX8-NEXT: $vgpr0 = COPY %and
2021 ; GFX9-LABEL: name: no_fold_v_mad_mixlo_f16
2022 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2024 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2025 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2026 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2027 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2028 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2029 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2030 ; GFX9-NEXT: $vgpr0 = COPY %and
2031 ; GFX10-LABEL: name: no_fold_v_mad_mixlo_f16
2032 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2033 ; GFX10-NEXT: {{ $}}
2034 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2035 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2036 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2037 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2038 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2039 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2040 ; GFX10-NEXT: $vgpr0 = COPY %and
2041 %0:vgpr_32 = COPY $vgpr0
2042 %1:vgpr_32 = COPY $vgpr1
2043 %2:vgpr_32 = COPY $vgpr2
2044 %3:vgpr_32 = COPY $vgpr3
2045 %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2046 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2052 name: no_fold_v_mad_mixhi_f16
2053 tracksRegLiveness: true
2056 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2057 ; GFX8-LABEL: name: no_fold_v_mad_mixhi_f16
2058 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2060 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2061 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2062 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2063 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2064 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2065 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2066 ; GFX8-NEXT: $vgpr0 = COPY %and
2067 ; GFX9-LABEL: name: no_fold_v_mad_mixhi_f16
2068 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2070 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2071 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2072 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2073 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2074 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2075 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2076 ; GFX9-NEXT: $vgpr0 = COPY %and
2077 ; GFX10-LABEL: name: no_fold_v_mad_mixhi_f16
2078 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
2079 ; GFX10-NEXT: {{ $}}
2080 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
2081 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
2082 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
2083 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
2084 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
2085 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
2086 ; GFX10-NEXT: $vgpr0 = COPY %and
2087 %0:vgpr_32 = COPY $vgpr0
2088 %1:vgpr_32 = COPY $vgpr1
2089 %2:vgpr_32 = COPY $vgpr2
2090 %3:vgpr_32 = COPY $vgpr3
2091 %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
2092 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec