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