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