1 // RUN: llvm-mc -arch=amdgcn -mcpu=gfx900 -show-encoding %s | FileCheck -check-prefix=GFX9 %s
2 // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s 2>&1 | FileCheck -check-prefix=NOVI %s
3 // RUN: not llvm-mc -arch=amdgcn -mcpu=hawaii -show-encoding %s 2>&1 | FileCheck -check-prefix=NOVI %s
4 // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s 2>&1 | FileCheck -check-prefix=NOVI %s
6 v_lshl_add_u32 v1, v2, v3, v4
7 // GFX9: v_lshl_add_u32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xfd,0xd1,0x02,0x07,0x12,0x04]
8 // NOVI: :1: error: instruction not supported on this GPU
10 v_add_lshl_u32 v1, v2, v3, v4
11 // GFX9: v_add_lshl_u32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xfe,0xd1,0x02,0x07,0x12,0x04]
12 // NOVI: :1: error: instruction not supported on this GPU
14 v_add3_u32 v1, v2, v3, v4
15 // GFX9: v_add3_u32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xff,0xd1,0x02,0x07,0x12,0x04]
16 // NOVI: :1: error: instruction not supported on this GPU
18 v_lshl_or_b32 v1, v2, v3, v4
19 // GFX9: v_lshl_or_b32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0x00,0xd2,0x02,0x07,0x12,0x04]
20 // NOVI: :1: error: instruction not supported on this GPU
22 v_and_or_b32 v1, v2, v3, v4
23 // GFX9: v_and_or_b32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0x01,0xd2,0x02,0x07,0x12,0x04]
24 // NOVI: :1: error: instruction not supported on this GPU
26 v_or3_b32 v1, v2, v3, v4
27 // GFX9: v_or3_b32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0x02,0xd2,0x02,0x07,0x12,0x04]
28 // NOVI: :1: error: instruction not supported on this GPU
30 v_pack_b32_f16 v1, v2, v3
31 // GFX9: v_pack_b32_f16 v1, v2, v3 ; encoding: [0x01,0x00,0xa0,0xd2,0x02,0x07,0x02,0x00]
32 // NOVI: :1: error: instruction not supported on this GPU
34 v_pack_b32_f16 v5, v1, v2 op_sel:[1,0,0]
35 // GFX9: v_pack_b32_f16 v5, v1, v2 op_sel:[1,0,0] ; encoding: [0x05,0x08,0xa0,0xd2,0x01,0x05,0x02,0x00]
37 v_pack_b32_f16 v5, v1, v2 op_sel:[0,1,0]
38 // GFX9: v_pack_b32_f16 v5, v1, v2 op_sel:[0,1,0] ; encoding: [0x05,0x10,0xa0,0xd2,0x01,0x05,0x02,0x00]
40 v_pack_b32_f16 v5, v1, v2 op_sel:[0,0,1]
41 // GFX9: v_pack_b32_f16 v5, v1, v2 op_sel:[0,0,1] ; encoding: [0x05,0x40,0xa0,0xd2,0x01,0x05,0x02,0x00]
43 v_xad_u32 v1, v2, v3, v4
44 // GFX9: v_xad_u32 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf3,0xd1,0x02,0x07,0x12,0x04]
45 // NOVI: :1: error: instruction not supported on this GPU
47 v_min3_f16 v1, v2, v3, v4
48 // GFX9: v_min3_f16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf4,0xd1,0x02,0x07,0x12,0x04]
49 // NOVI: :1: error: instruction not supported on this GPU
51 v_min3_i16 v1, v2, v3, v4
52 // GFX9: v_min3_i16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf5,0xd1,0x02,0x07,0x12,0x04]
53 // NOVI: :1: error: instruction not supported on this GPU
55 v_min3_u16 v1, v2, v3, v4
56 // GFX9: v_min3_u16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf6,0xd1,0x02,0x07,0x12,0x04]
57 // NOVI: :1: error: instruction not supported on this GPU
59 v_max3_f16 v1, v2, v3, v4
60 // GFX9: v_max3_f16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf7,0xd1,0x02,0x07,0x12,0x04]
61 // NOVI: :1: error: instruction not supported on this GPU
63 v_max3_f16 v5, v1, v2, v3 op_sel:[0,0,0,0]
64 // GFX9: v_max3_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xf7,0xd1,0x01,0x05,0x0e,0x04]
66 v_max3_f16 v5, v1, v2, v3 op_sel:[1,0,0,0]
67 // GFX9: v_max3_f16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0xf7,0xd1,0x01,0x05,0x0e,0x04]
69 v_max3_f16 v5, v1, v2, v3 op_sel:[0,1,0,0]
70 // GFX9: v_max3_f16 v5, v1, v2, v3 op_sel:[0,1,0,0] ; encoding: [0x05,0x10,0xf7,0xd1,0x01,0x05,0x0e,0x04]
72 v_max3_f16 v5, v1, v2, v3 op_sel:[0,0,1,0]
73 // GFX9: v_max3_f16 v5, v1, v2, v3 op_sel:[0,0,1,0] ; encoding: [0x05,0x20,0xf7,0xd1,0x01,0x05,0x0e,0x04]
75 v_max3_f16 v5, v1, v2, v3 op_sel:[0,0,0,1]
76 // GFX9: v_max3_f16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0xf7,0xd1,0x01,0x05,0x0e,0x04]
78 v_max3_f16 v5, v1, v2, v3 op_sel:[1,1,1,1]
79 // GFX9: v_max3_f16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0xf7,0xd1,0x01,0x05,0x0e,0x04]
81 v_max3_i16 v1, v2, v3, v4
82 // GFX9: v_max3_i16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf8,0xd1,0x02,0x07,0x12,0x04]
83 // NOVI: :1: error: instruction not supported on this GPU
85 v_max3_i16 v5, v1, v2, v3 op_sel:[0,0,0,0]
86 // GFX9: v_max3_i16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xf8,0xd1,0x01,0x05,0x0e,0x04]
88 v_max3_i16 v5, v1, v2, v3 op_sel:[1,0,0,0]
89 // GFX9: v_max3_i16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0xf8,0xd1,0x01,0x05,0x0e,0x04]
91 v_max3_i16 v5, v1, v2, v3 op_sel:[0,1,0,0]
92 // GFX9: v_max3_i16 v5, v1, v2, v3 op_sel:[0,1,0,0] ; encoding: [0x05,0x10,0xf8,0xd1,0x01,0x05,0x0e,0x04]
94 v_max3_i16 v5, v1, v2, v3 op_sel:[0,0,1,0]
95 // GFX9: v_max3_i16 v5, v1, v2, v3 op_sel:[0,0,1,0] ; encoding: [0x05,0x20,0xf8,0xd1,0x01,0x05,0x0e,0x04]
97 v_max3_i16 v5, v1, v2, v3 op_sel:[0,0,0,1]
98 // GFX9: v_max3_i16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0xf8,0xd1,0x01,0x05,0x0e,0x04]
100 v_max3_i16 v5, v1, v2, v3 op_sel:[1,1,1,1]
101 // GFX9: v_max3_i16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0xf8,0xd1,0x01,0x05,0x0e,0x04]
103 v_max3_u16 v1, v2, v3, v4
104 // GFX9: v_max3_u16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xf9,0xd1,0x02,0x07,0x12,0x04]
105 // NOVI: :1: error: instruction not supported on this GPU
107 v_med3_f16 v1, v2, v3, v4
108 // GFX9: v_med3_f16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xfa,0xd1,0x02,0x07,0x12,0x04]
109 // NOVI: :1: error: instruction not supported on this GPU
111 v_med3_i16 v1, v2, v3, v4
112 // GFX9: v_med3_i16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xfb,0xd1,0x02,0x07,0x12,0x04]
113 // NOVI: :1: error: instruction not supported on this GPU
115 v_med3_u16 v1, v2, v3, v4
116 // GFX9: v_med3_u16 v1, v2, v3, v4 ; encoding: [0x01,0x00,0xfc,0xd1,0x02,0x07,0x12,0x04]
117 // NOVI: :1: error: instruction not supported on this GPU
119 v_mad_u32_u16 v5, v1, v2, v3
120 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xf1,0xd1,0x01,0x05,0x0e,0x04]
122 v_mad_u32_u16 v5, v1, v2, v3 op_sel:[1,0,0,0]
123 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0xf1,0xd1,0x01,0x05,0x0e,0x04]
125 v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,1,0,0]
126 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,1,0,0] ; encoding: [0x05,0x10,0xf1,0xd1,0x01,0x05,0x0e,0x04]
128 v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,0,1,0]
129 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,0,1,0] ; encoding: [0x05,0x20,0xf1,0xd1,0x01,0x05,0x0e,0x04]
131 v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,0,0,1]
132 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0xf1,0xd1,0x01,0x05,0x0e,0x04]
134 v_mad_u32_u16 v5, v1, v2, v3 op_sel:[1,1,1,1]
135 // GFX9: v_mad_u32_u16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0xf1,0xd1,0x01,0x05,0x0e,0x04]
137 v_mad_i32_i16 v5, v1, v2, v3
138 // GFX9: v_mad_i32_i16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xf2,0xd1,0x01,0x05,0x0e,0x04]
140 v_mad_i32_i16 v5, v1, v2, v3 op_sel:[0,0,0,1]
141 // GFX9: v_mad_i32_i16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0xf2,0xd1,0x01,0x05,0x0e,0x04]
143 v_cvt_pknorm_i16_f16 v5, v1, v2
144 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, v2 ; encoding: [0x05,0x00,0x99,0xd2,0x01,0x05,0x02,0x00]
146 v_cvt_pknorm_i16_f16 v5, -v1, v2
147 // GFX9: v_cvt_pknorm_i16_f16 v5, -v1, v2 ; encoding: [0x05,0x00,0x99,0xd2,0x01,0x05,0x02,0x20]
149 v_cvt_pknorm_i16_f16 v5, v1, -v2
150 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, -v2 ; encoding: [0x05,0x00,0x99,0xd2,0x01,0x05,0x02,0x40]
152 v_cvt_pknorm_i16_f16 v5, -v1, -v2
153 // GFX9: v_cvt_pknorm_i16_f16 v5, -v1, -v2 ; encoding: [0x05,0x00,0x99,0xd2,0x01,0x05,0x02,0x60]
155 v_cvt_pknorm_i16_f16 v5, |v1|, v2
156 // GFX9: v_cvt_pknorm_i16_f16 v5, |v1|, v2 ; encoding: [0x05,0x01,0x99,0xd2,0x01,0x05,0x02,0x00]
158 v_cvt_pknorm_i16_f16 v5, v1, |v2|
159 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, |v2| ; encoding: [0x05,0x02,0x99,0xd2,0x01,0x05,0x02,0x00]
161 v_cvt_pknorm_i16_f16 v5, v1, v2 op_sel:[0,0,0]
162 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, v2 ; encoding: [0x05,0x00,0x99,0xd2,0x01,0x05,0x02,0x00]
164 v_cvt_pknorm_i16_f16 v5, v1, v2 op_sel:[1,0,0]
165 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, v2 op_sel:[1,0,0] ; encoding: [0x05,0x08,0x99,0xd2,0x01,0x05,0x02,0x00]
167 v_cvt_pknorm_i16_f16 v5, v1, v2 op_sel:[1,1,1]
168 // GFX9: v_cvt_pknorm_i16_f16 v5, v1, v2 op_sel:[1,1,1] ; encoding: [0x05,0x58,0x99,0xd2,0x01,0x05,0x02,0x00]
170 v_cvt_pknorm_u16_f16 v5, -v1, -v2
171 // GFX9: v_cvt_pknorm_u16_f16 v5, -v1, -v2 ; encoding: [0x05,0x00,0x9a,0xd2,0x01,0x05,0x02,0x60]
173 v_cvt_pknorm_u16_f16 v5, |v1|, |v2|
174 // GFX9: v_cvt_pknorm_u16_f16 v5, |v1|, |v2| ; encoding: [0x05,0x03,0x9a,0xd2,0x01,0x05,0x02,0x00]
176 v_cvt_pknorm_u16_f16 v5, v1, v2 op_sel:[1,1,1]
177 // GFX9: v_cvt_pknorm_u16_f16 v5, v1, v2 op_sel:[1,1,1] ; encoding: [0x05,0x58,0x9a,0xd2,0x01,0x05,0x02,0x00]
180 // GFX9: v_add_i16 v5, v1, v2 ; encoding: [0x05,0x00,0x9e,0xd2,0x01,0x05,0x02,0x00]
182 v_add_i16 v5, v1, v2 op_sel:[1,1,1]
183 // GFX9: v_add_i16 v5, v1, v2 op_sel:[1,1,1] ; encoding: [0x05,0x58,0x9e,0xd2,0x01,0x05,0x02,0x00]
186 // GFX9: v_sub_i16 v5, v1, v2 ; encoding: [0x05,0x00,0x9f,0xd2,0x01,0x05,0x02,0x00]
188 v_sub_i16 v5, v1, v2 op_sel:[1,1,1]
189 // GFX9: v_sub_i16 v5, v1, v2 op_sel:[1,1,1] ; encoding: [0x05,0x58,0x9f,0xd2,0x01,0x05,0x02,0x00]
191 v_sub_i16 v5, v1, v2 clamp
192 // GFX9: v_sub_i16 v5, v1, v2 clamp ; encoding: [0x05,0x80,0x9f,0xd2,0x01,0x05,0x02,0x00]
194 v_fma_f16_e64 v5, v1, v2, v3
195 // GFX9: v_fma_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0x06,0xd2,0x01,0x05,0x0e,0x04]
197 v_fma_f16 v5, v1, -v2, v3
198 // GFX9: v_fma_f16 v5, v1, -v2, v3 ; encoding: [0x05,0x00,0x06,0xd2,0x01,0x05,0x0e,0x44]
200 v_fma_f16 v5, v1, v2, |v3|
201 // GFX9: v_fma_f16 v5, v1, v2, |v3| ; encoding: [0x05,0x04,0x06,0xd2,0x01,0x05,0x0e,0x04]
203 v_fma_f16 v5, v1, v2, v3 clamp
204 // GFX9: v_fma_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x06,0xd2,0x01,0x05,0x0e,0x04]
206 v_fma_f16 v5, v1, v2, v3 op_sel:[1,0,0,0]
207 // GFX9: v_fma_f16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0x06,0xd2,0x01,0x05,0x0e,0x04]
209 v_fma_f16 v5, v1, v2, v3 op_sel:[0,1,0,0]
210 // GFX9: v_fma_f16 v5, v1, v2, v3 op_sel:[0,1,0,0] ; encoding: [0x05,0x10,0x06,0xd2,0x01,0x05,0x0e,0x04]
212 v_fma_f16 v5, v1, v2, v3 op_sel:[1,1,1,1]
213 // GFX9: v_fma_f16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0x06,0xd2,0x01,0x05,0x0e,0x04]
215 v_fma_legacy_f16_e64 v5, v1, v2, v3
216 // GFX9: v_fma_legacy_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0xee,0xd1,0x01,0x05,0x0e,0x04]
218 v_fma_legacy_f16 v5, -v1, v2, v3
219 // GFX9: v_fma_legacy_f16 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0xee,0xd1,0x01,0x05,0x0e,0x24]
221 v_fma_legacy_f16 v5, v1, |v2|, v3
222 // GFX9: v_fma_legacy_f16 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xee,0xd1,0x01,0x05,0x0e,0x04]
224 v_fma_legacy_f16 v5, v1, v2, v3 clamp
225 // GFX9: v_fma_legacy_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xee,0xd1,0x01,0x05,0x0e,0x04]
227 v_div_fixup_f16_e64 v5, 0.5, v2, v3
228 // GFX9: v_div_fixup_f16 v5, 0.5, v2, v3 ; encoding: [0x05,0x00,0x07,0xd2,0xf0,0x04,0x0e,0x04]
230 v_div_fixup_f16 v5, v1, 0.5, v3
231 // GFX9: v_div_fixup_f16 v5, v1, 0.5, v3 ; encoding: [0x05,0x00,0x07,0xd2,0x01,0xe1,0x0d,0x04]
233 v_div_fixup_f16 v5, v1, v2, 0.5
234 // GFX9: v_div_fixup_f16 v5, v1, v2, 0.5 ; encoding: [0x05,0x00,0x07,0xd2,0x01,0x05,0xc2,0x03]
236 v_div_fixup_f16 v5, -v1, v2, v3
237 // GFX9: v_div_fixup_f16 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0x07,0xd2,0x01,0x05,0x0e,0x24]
239 v_div_fixup_f16 v5, |v1|, v2, v3
240 // GFX9: v_div_fixup_f16 v5, |v1|, v2, v3 ; encoding: [0x05,0x01,0x07,0xd2,0x01,0x05,0x0e,0x04]
242 v_div_fixup_f16 v5, v1, v2, v3 clamp
243 // GFX9: v_div_fixup_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x07,0xd2,0x01,0x05,0x0e,0x04]
245 v_div_fixup_f16 v5, v1, v2, v3 op_sel:[1,0,0,0]
246 // GFX9: v_div_fixup_f16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0x07,0xd2,0x01,0x05,0x0e,0x04]
248 v_div_fixup_f16 v5, v1, v2, v3 op_sel:[0,0,1,0]
249 // GFX9: v_div_fixup_f16 v5, v1, v2, v3 op_sel:[0,0,1,0] ; encoding: [0x05,0x20,0x07,0xd2,0x01,0x05,0x0e,0x04]
251 v_div_fixup_f16 v5, v1, v2, v3 op_sel:[0,0,0,1]
252 // GFX9: v_div_fixup_f16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0x07,0xd2,0x01,0x05,0x0e,0x04]
254 v_div_fixup_legacy_f16_e64 v5, 0.5, v2, v3
255 // GFX9: v_div_fixup_legacy_f16 v5, 0.5, v2, v3 ; encoding: [0x05,0x00,0xef,0xd1,0xf0,0x04,0x0e,0x04]
257 v_div_fixup_legacy_f16 v5, v1, 0.5, v3
258 // GFX9: v_div_fixup_legacy_f16 v5, v1, 0.5, v3 ; encoding: [0x05,0x00,0xef,0xd1,0x01,0xe1,0x0d,0x04]
260 v_div_fixup_legacy_f16 v5, v1, v2, 0.5
261 // GFX9: v_div_fixup_legacy_f16 v5, v1, v2, 0.5 ; encoding: [0x05,0x00,0xef,0xd1,0x01,0x05,0xc2,0x03]
263 v_div_fixup_legacy_f16 v5, -v1, v2, v3
264 // GFX9: v_div_fixup_legacy_f16 v5, -v1, v2, v3 ; encoding: [0x05,0x00,0xef,0xd1,0x01,0x05,0x0e,0x24]
266 v_div_fixup_legacy_f16 v5, v1, |v2|, v3
267 // GFX9: v_div_fixup_legacy_f16 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xef,0xd1,0x01,0x05,0x0e,0x04]
269 v_div_fixup_legacy_f16 v5, v1, v2, v3 clamp
270 // GFX9: v_div_fixup_legacy_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xef,0xd1,0x01,0x05,0x0e,0x04]
272 v_mad_f16_e64 v5, 0.5, v2, v3
273 // GFX9: v_mad_f16 v5, 0.5, v2, v3 ; encoding: [0x05,0x00,0x03,0xd2,0xf0,0x04,0x0e,0x04]
275 v_mad_f16 v5, v1, 0.5, v3
276 // GFX9: v_mad_f16 v5, v1, 0.5, v3 ; encoding: [0x05,0x00,0x03,0xd2,0x01,0xe1,0x0d,0x04]
278 v_mad_f16 v5, v1, v2, 0.5
279 // GFX9: v_mad_f16 v5, v1, v2, 0.5 ; encoding: [0x05,0x00,0x03,0xd2,0x01,0x05,0xc2,0x03]
281 v_mad_f16 v5, v1, v2, -v3
282 // GFX9: v_mad_f16 v5, v1, v2, -v3 ; encoding: [0x05,0x00,0x03,0xd2,0x01,0x05,0x0e,0x84]
284 v_mad_f16 v5, v1, v2, |v3|
285 // GFX9: v_mad_f16 v5, v1, v2, |v3| ; encoding: [0x05,0x04,0x03,0xd2,0x01,0x05,0x0e,0x04]
287 v_mad_f16 v5, v1, v2, v3 op_sel:[0,0,0,0]
288 // GFX9: v_mad_f16 v5, v1, v2, v3 ; encoding: [0x05,0x00,0x03,0xd2,0x01,0x05,0x0e,0x04]
290 v_mad_f16 v5, v1, v2, v3 op_sel:[1,0,0,0]
291 // GFX9: v_mad_f16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0x03,0xd2,0x01,0x05,0x0e,0x04]
293 v_mad_f16 v5, v1, v2, v3 op_sel:[0,1,0,0]
294 // GFX9: v_mad_f16 v5, v1, v2, v3 op_sel:[0,1,0,0] ; encoding: [0x05,0x10,0x03,0xd2,0x01,0x05,0x0e,0x04]
296 v_mad_f16 v5, v1, v2, v3 op_sel:[0,0,1,0]
297 // GFX9: v_mad_f16 v5, v1, v2, v3 op_sel:[0,0,1,0] ; encoding: [0x05,0x20,0x03,0xd2,0x01,0x05,0x0e,0x04]
299 v_mad_f16 v5, v1, v2, v3 op_sel:[0,0,0,1]
300 // GFX9: v_mad_f16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0x03,0xd2,0x01,0x05,0x0e,0x04]
302 v_mad_f16 v5, v1, v2, v3 op_sel:[1,1,1,1]
303 // GFX9: v_mad_f16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0x03,0xd2,0x01,0x05,0x0e,0x04]
305 v_mad_f16 v5, v1, v2, v3 clamp
306 // GFX9: v_mad_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x03,0xd2,0x01,0x05,0x0e,0x04]
308 v_mad_i16_e64 v5, 0, v2, v3
309 // GFX9: v_mad_i16 v5, 0, v2, v3 ; encoding: [0x05,0x00,0x05,0xd2,0x80,0x04,0x0e,0x04]
311 v_mad_i16 v5, v1, -1, v3
312 // GFX9: v_mad_i16 v5, v1, -1, v3 ; encoding: [0x05,0x00,0x05,0xd2,0x01,0x83,0x0d,0x04]
314 v_mad_i16 v5, v1, v2, -4.0
315 // GFX9: v_mad_i16 v5, v1, v2, -4.0 ; encoding: [0x05,0x00,0x05,0xd2,0x01,0x05,0xde,0x03]
317 v_mad_i16 v5, v1, v2, v3 clamp
318 // GFX9: v_mad_i16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x05,0xd2,0x01,0x05,0x0e,0x04]
320 v_mad_i16 v5, v1, v2, v3 op_sel:[0,0,0,1]
321 // GFX9: v_mad_i16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0x05,0xd2,0x01,0x05,0x0e,0x04]
323 v_mad_i16 v5, v1, v2, v3 op_sel:[1,1,1,1]
324 // GFX9: v_mad_i16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0x05,0xd2,0x01,0x05,0x0e,0x04]
326 v_mad_legacy_f16_e64 v5, 0.5, v2, v3
327 // GFX9: v_mad_legacy_f16 v5, 0.5, v2, v3 ; encoding: [0x05,0x00,0xea,0xd1,0xf0,0x04,0x0e,0x04]
329 v_mad_legacy_f16 v5, v1, 0.5, v3
330 // GFX9: v_mad_legacy_f16 v5, v1, 0.5, v3 ; encoding: [0x05,0x00,0xea,0xd1,0x01,0xe1,0x0d,0x04]
332 v_mad_legacy_f16 v5, v1, v2, 0.5
333 // GFX9: v_mad_legacy_f16 v5, v1, v2, 0.5 ; encoding: [0x05,0x00,0xea,0xd1,0x01,0x05,0xc2,0x03]
335 v_mad_legacy_f16 v5, v1, -v2, v3
336 // GFX9: v_mad_legacy_f16 v5, v1, -v2, v3 ; encoding: [0x05,0x00,0xea,0xd1,0x01,0x05,0x0e,0x44]
338 v_mad_legacy_f16 v5, v1, |v2|, v3
339 // GFX9: v_mad_legacy_f16 v5, v1, |v2|, v3 ; encoding: [0x05,0x02,0xea,0xd1,0x01,0x05,0x0e,0x04]
341 v_mad_legacy_f16 v5, v1, v2, v3 clamp
342 // GFX9: v_mad_legacy_f16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0xea,0xd1,0x01,0x05,0x0e,0x04]
344 v_mad_legacy_i16_e64 v5, 0, v2, v3
345 // GFX9: v_mad_legacy_i16 v5, 0, v2, v3 ; encoding: [0x05,0x00,0xec,0xd1,0x80,0x04,0x0e,0x04]
347 v_mad_legacy_i16 v5, v1, -1, v3
348 // GFX9: v_mad_legacy_i16 v5, v1, -1, v3 ; encoding: [0x05,0x00,0xec,0xd1,0x01,0x83,0x0d,0x04]
350 v_mad_legacy_i16 v5, v1, v2, -4.0
351 // GFX9: v_mad_legacy_i16 v5, v1, v2, -4.0 ; encoding: [0x05,0x00,0xec,0xd1,0x01,0x05,0xde,0x03]
353 v_mad_legacy_i16 v5, v1, v2, -4.0 clamp
354 // GFX9: v_mad_legacy_i16 v5, v1, v2, -4.0 clamp ; encoding: [0x05,0x80,0xec,0xd1,0x01,0x05,0xde,0x03]
356 v_mad_legacy_u16_e64 v5, 0, v2, v3
357 // GFX9: v_mad_legacy_u16 v5, 0, v2, v3 ; encoding: [0x05,0x00,0xeb,0xd1,0x80,0x04,0x0e,0x04]
359 v_mad_legacy_u16 v5, v1, -1, v3
360 // GFX9: v_mad_legacy_u16 v5, v1, -1, v3 ; encoding: [0x05,0x00,0xeb,0xd1,0x01,0x83,0x0d,0x04]
362 v_mad_legacy_u16 v5, v1, v2, -4.0
363 // GFX9: v_mad_legacy_u16 v5, v1, v2, -4.0 ; encoding: [0x05,0x00,0xeb,0xd1,0x01,0x05,0xde,0x03]
365 v_mad_legacy_u16 v5, v1, v2, -4.0 clamp
366 // GFX9: v_mad_legacy_u16 v5, v1, v2, -4.0 clamp ; encoding: [0x05,0x80,0xeb,0xd1,0x01,0x05,0xde,0x03]
368 v_mad_u16_e64 v5, 0, v2, v3
369 // GFX9: v_mad_u16 v5, 0, v2, v3 ; encoding: [0x05,0x00,0x04,0xd2,0x80,0x04,0x0e,0x04]
371 v_mad_u16 v5, v1, -1, v3
372 // GFX9: v_mad_u16 v5, v1, -1, v3 ; encoding: [0x05,0x00,0x04,0xd2,0x01,0x83,0x0d,0x04]
374 v_mad_u16 v5, v1, v2, -4.0
375 // GFX9: v_mad_u16 v5, v1, v2, -4.0 ; encoding: [0x05,0x00,0x04,0xd2,0x01,0x05,0xde,0x03]
377 v_mad_u16 v5, v1, v2, v3 clamp
378 // GFX9: v_mad_u16 v5, v1, v2, v3 clamp ; encoding: [0x05,0x80,0x04,0xd2,0x01,0x05,0x0e,0x04]
380 v_mad_u16 v5, v1, v2, v3 op_sel:[1,0,0,0]
381 // GFX9: v_mad_u16 v5, v1, v2, v3 op_sel:[1,0,0,0] ; encoding: [0x05,0x08,0x04,0xd2,0x01,0x05,0x0e,0x04]
383 v_mad_u16 v5, v1, v2, v3 op_sel:[0,0,0,1]
384 // GFX9: v_mad_u16 v5, v1, v2, v3 op_sel:[0,0,0,1] ; encoding: [0x05,0x40,0x04,0xd2,0x01,0x05,0x0e,0x04]
386 v_mad_u16 v5, v1, v2, v3 op_sel:[1,1,1,1]
387 // GFX9: v_mad_u16 v5, v1, v2, v3 op_sel:[1,1,1,1] ; encoding: [0x05,0x78,0x04,0xd2,0x01,0x05,0x0e,0x04]
389 v_interp_p2_f16 v5, v2, attr0.x, v3
390 // GFX9: v_interp_p2_f16 v5, v2, attr0.x, v3 ; encoding: [0x05,0x00,0x77,0xd2,0x00,0x04,0x0e,0x04]
392 v_interp_p2_f16 v5, -v2, attr0.x, v3
393 // GFX9: v_interp_p2_f16 v5, -v2, attr0.x, v3 ; encoding: [0x05,0x00,0x77,0xd2,0x00,0x04,0x0e,0x44]
395 v_interp_p2_f16 v5, v2, attr0.x, |v3|
396 // GFX9: v_interp_p2_f16 v5, v2, attr0.x, |v3| ; encoding: [0x05,0x04,0x77,0xd2,0x00,0x04,0x0e,0x04]
398 v_interp_p2_f16 v5, v2, attr0.w, v3
399 // GFX9: v_interp_p2_f16 v5, v2, attr0.w, v3 ; encoding: [0x05,0x00,0x77,0xd2,0xc0,0x04,0x0e,0x04]
401 v_interp_p2_f16 v5, v2, attr0.x, v3 high
402 // GFX9: v_interp_p2_f16 v5, v2, attr0.x, v3 high ; encoding: [0x05,0x00,0x77,0xd2,0x00,0x05,0x0e,0x04]
404 v_interp_p2_f16 v5, v2, attr0.x, v3 clamp
405 // GFX9: v_interp_p2_f16 v5, v2, attr0.x, v3 clamp ; encoding: [0x05,0x80,0x77,0xd2,0x00,0x04,0x0e,0x04]
407 v_interp_p2_legacy_f16 v5, v2, attr31.x, v3
408 // GFX9: v_interp_p2_legacy_f16 v5, v2, attr31.x, v3 ; encoding: [0x05,0x00,0x76,0xd2,0x1f,0x04,0x0e,0x04]
410 v_interp_p2_legacy_f16 v5, -v2, attr0.x, v3
411 // GFX9: v_interp_p2_legacy_f16 v5, -v2, attr0.x, v3 ; encoding: [0x05,0x00,0x76,0xd2,0x00,0x04,0x0e,0x44]
413 v_interp_p2_legacy_f16 v5, v2, attr0.x, |v3|
414 // GFX9: v_interp_p2_legacy_f16 v5, v2, attr0.x, |v3| ; encoding: [0x05,0x04,0x76,0xd2,0x00,0x04,0x0e,0x04]
416 v_interp_p2_legacy_f16 v5, v2, attr0.w, v3
417 // GFX9: v_interp_p2_legacy_f16 v5, v2, attr0.w, v3 ; encoding: [0x05,0x00,0x76,0xd2,0xc0,0x04,0x0e,0x04]
419 v_interp_p2_legacy_f16 v5, v2, attr0.x, v3 high
420 // GFX9: v_interp_p2_legacy_f16 v5, v2, attr0.x, v3 high ; encoding: [0x05,0x00,0x76,0xd2,0x00,0x05,0x0e,0x04]
422 v_interp_p2_legacy_f16 v5, v2, attr0.x, v3 clamp
423 // GFX9: v_interp_p2_legacy_f16 v5, v2, attr0.x, v3 clamp ; encoding: [0x05,0x80,0x76,0xd2,0x00,0x04,0x0e,0x04]
425 v_cvt_norm_i16_f16_e64 v5, -v1
426 // GFX9: v_cvt_norm_i16_f16_e64 v5, -v1 ; encoding: [0x05,0x00,0x8d,0xd1,0x01,0x01,0x00,0x20]
427 // NOVI: error: instruction not supported on this GPU
429 v_cvt_norm_i16_f16_e64 v5, |v1|
430 // GFX9: v_cvt_norm_i16_f16_e64 v5, |v1| ; encoding: [0x05,0x01,0x8d,0xd1,0x01,0x01,0x00,0x00]
431 // NOVI: error: instruction not supported on this GPU
433 v_cvt_norm_u16_f16_e64 v5, -v1
434 // GFX9: v_cvt_norm_u16_f16_e64 v5, -v1 ; encoding: [0x05,0x00,0x8e,0xd1,0x01,0x01,0x00,0x20]
435 // NOVI: error: instruction not supported on this GPU
437 v_cvt_norm_u16_f16_e64 v5, |v1|
438 // GFX9: v_cvt_norm_u16_f16_e64 v5, |v1| ; encoding: [0x05,0x01,0x8e,0xd1,0x01,0x01,0x00,0x00]
439 // NOVI: error: instruction not supported on this GPU
441 v_sat_pk_u8_i16_e64 v5, -1
442 // GFX9: v_sat_pk_u8_i16_e64 v5, -1 ; encoding: [0x05,0x00,0x8f,0xd1,0xc1,0x00,0x00,0x00]
443 // NOVI: error: instruction not supported on this GPU
445 v_sat_pk_u8_i16_e64 v5, v255
446 // GFX9: v_sat_pk_u8_i16_e64 v5, v255 ; encoding: [0x05,0x00,0x8f,0xd1,0xff,0x01,0x00,0x00]
447 // NOVI: error: instruction not supported on this GPU
449 v_screen_partition_4se_b32_e64 v5, v1
450 // GXF9: [0x05,0x00,0x77,0xd1,0x01,0x01,0x00,0x00]
451 // NOVI: error: instruction not supported on this GPU
453 v_screen_partition_4se_b32_e64 v5, -1
454 // GXF9: [0x05,0x00,0x77,0xd1,0xc1,0x00,0x00,0x00]
455 // NOVI: error: instruction not supported on this GPU