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