Add the SEC_ELF_OCTETS flag to debug sections created by the assembler.
[binutils-gdb.git] / opcodes / i386-dis-evex.h
blob151f61d95a47b9894c87722e47d9cdfaf86bbbdf
1 static const struct dis386 evex_table[][256] = {
2 /* EVEX_0F */
4 /* 00 */
5 { Bad_Opcode },
6 { Bad_Opcode },
7 { Bad_Opcode },
8 { Bad_Opcode },
9 { Bad_Opcode },
10 { Bad_Opcode },
11 { Bad_Opcode },
12 { Bad_Opcode },
13 /* 08 */
14 { Bad_Opcode },
15 { Bad_Opcode },
16 { Bad_Opcode },
17 { Bad_Opcode },
18 { Bad_Opcode },
19 { Bad_Opcode },
20 { Bad_Opcode },
21 { Bad_Opcode },
22 /* 10 */
23 { PREFIX_TABLE (PREFIX_EVEX_0F10) },
24 { PREFIX_TABLE (PREFIX_EVEX_0F11) },
25 { PREFIX_TABLE (PREFIX_EVEX_0F12) },
26 { MOD_TABLE (MOD_EVEX_0F13) },
27 { "vunpcklpX", { XM, Vex, EXx }, PREFIX_OPCODE },
28 { "vunpckhpX", { XM, Vex, EXx }, PREFIX_OPCODE },
29 { PREFIX_TABLE (PREFIX_EVEX_0F16) },
30 { MOD_TABLE (MOD_EVEX_0F17) },
31 /* 18 */
32 { Bad_Opcode },
33 { Bad_Opcode },
34 { Bad_Opcode },
35 { Bad_Opcode },
36 { Bad_Opcode },
37 { Bad_Opcode },
38 { Bad_Opcode },
39 { Bad_Opcode },
40 /* 20 */
41 { Bad_Opcode },
42 { Bad_Opcode },
43 { Bad_Opcode },
44 { Bad_Opcode },
45 { Bad_Opcode },
46 { Bad_Opcode },
47 { Bad_Opcode },
48 { Bad_Opcode },
49 /* 28 */
50 { "vmovapX", { XM, EXx }, PREFIX_OPCODE },
51 { "vmovapX", { EXxS, XM }, PREFIX_OPCODE },
52 { PREFIX_TABLE (PREFIX_EVEX_0F2A) },
53 { MOD_TABLE (MOD_EVEX_0F2B) },
54 { PREFIX_TABLE (PREFIX_VEX_0F2C) },
55 { PREFIX_TABLE (PREFIX_VEX_0F2D) },
56 { PREFIX_TABLE (PREFIX_VEX_0F2E) },
57 { PREFIX_TABLE (PREFIX_VEX_0F2F) },
58 /* 30 */
59 { Bad_Opcode },
60 { Bad_Opcode },
61 { Bad_Opcode },
62 { Bad_Opcode },
63 { Bad_Opcode },
64 { Bad_Opcode },
65 { Bad_Opcode },
66 { Bad_Opcode },
67 /* 38 */
68 { Bad_Opcode },
69 { Bad_Opcode },
70 { Bad_Opcode },
71 { Bad_Opcode },
72 { Bad_Opcode },
73 { Bad_Opcode },
74 { Bad_Opcode },
75 { Bad_Opcode },
76 /* 40 */
77 { Bad_Opcode },
78 { Bad_Opcode },
79 { Bad_Opcode },
80 { Bad_Opcode },
81 { Bad_Opcode },
82 { Bad_Opcode },
83 { Bad_Opcode },
84 { Bad_Opcode },
85 /* 48 */
86 { Bad_Opcode },
87 { Bad_Opcode },
88 { Bad_Opcode },
89 { Bad_Opcode },
90 { Bad_Opcode },
91 { Bad_Opcode },
92 { Bad_Opcode },
93 { Bad_Opcode },
94 /* 50 */
95 { Bad_Opcode },
96 { PREFIX_TABLE (PREFIX_EVEX_0F51) },
97 { Bad_Opcode },
98 { Bad_Opcode },
99 { "vandpX", { XM, Vex, EXx }, PREFIX_OPCODE },
100 { "vandnpX", { XM, Vex, EXx }, PREFIX_OPCODE },
101 { "vorpX", { XM, Vex, EXx }, PREFIX_OPCODE },
102 { "vxorpX", { XM, Vex, EXx }, PREFIX_OPCODE },
103 /* 58 */
104 { PREFIX_TABLE (PREFIX_EVEX_0F58) },
105 { PREFIX_TABLE (PREFIX_EVEX_0F59) },
106 { PREFIX_TABLE (PREFIX_EVEX_0F5A) },
107 { PREFIX_TABLE (PREFIX_EVEX_0F5B) },
108 { PREFIX_TABLE (PREFIX_EVEX_0F5C) },
109 { PREFIX_TABLE (PREFIX_EVEX_0F5D) },
110 { PREFIX_TABLE (PREFIX_EVEX_0F5E) },
111 { PREFIX_TABLE (PREFIX_EVEX_0F5F) },
112 /* 60 */
113 { "vpunpcklbw", { XM, Vex, EXx }, PREFIX_DATA },
114 { "vpunpcklwd", { XM, Vex, EXx }, PREFIX_DATA },
115 { VEX_W_TABLE (EVEX_W_0F62) },
116 { "vpacksswb", { XM, Vex, EXx }, PREFIX_DATA },
117 { "vpcmpgtb", { XMask, Vex, EXx }, PREFIX_DATA },
118 { "vpcmpgtw", { XMask, Vex, EXx }, PREFIX_DATA },
119 { VEX_W_TABLE (EVEX_W_0F66) },
120 { "vpackuswb", { XM, Vex, EXx }, PREFIX_DATA },
121 /* 68 */
122 { "vpunpckhbw", { XM, Vex, EXx }, PREFIX_DATA },
123 { "vpunpckhwd", { XM, Vex, EXx }, PREFIX_DATA },
124 { VEX_W_TABLE (EVEX_W_0F6A) },
125 { VEX_W_TABLE (EVEX_W_0F6B) },
126 { VEX_W_TABLE (EVEX_W_0F6C) },
127 { VEX_W_TABLE (EVEX_W_0F6D) },
128 { VEX_LEN_TABLE (VEX_LEN_0F6E) },
129 { PREFIX_TABLE (PREFIX_EVEX_0F6F) },
130 /* 70 */
131 { PREFIX_TABLE (PREFIX_EVEX_0F70) },
132 { REG_TABLE (REG_EVEX_0F71) },
133 { REG_TABLE (REG_EVEX_0F72) },
134 { REG_TABLE (REG_EVEX_0F73) },
135 { "vpcmpeqb", { XMask, Vex, EXx }, PREFIX_DATA },
136 { "vpcmpeqw", { XMask, Vex, EXx }, PREFIX_DATA },
137 { VEX_W_TABLE (EVEX_W_0F76) },
138 { Bad_Opcode },
139 /* 78 */
140 { PREFIX_TABLE (PREFIX_EVEX_0F78) },
141 { PREFIX_TABLE (PREFIX_EVEX_0F79) },
142 { PREFIX_TABLE (PREFIX_EVEX_0F7A) },
143 { PREFIX_TABLE (PREFIX_EVEX_0F7B) },
144 { Bad_Opcode },
145 { Bad_Opcode },
146 { PREFIX_TABLE (PREFIX_EVEX_0F7E) },
147 { PREFIX_TABLE (PREFIX_EVEX_0F7F) },
148 /* 80 */
149 { Bad_Opcode },
150 { Bad_Opcode },
151 { Bad_Opcode },
152 { Bad_Opcode },
153 { Bad_Opcode },
154 { Bad_Opcode },
155 { Bad_Opcode },
156 { Bad_Opcode },
157 /* 88 */
158 { Bad_Opcode },
159 { Bad_Opcode },
160 { Bad_Opcode },
161 { Bad_Opcode },
162 { Bad_Opcode },
163 { Bad_Opcode },
164 { Bad_Opcode },
165 { Bad_Opcode },
166 /* 90 */
167 { Bad_Opcode },
168 { Bad_Opcode },
169 { Bad_Opcode },
170 { Bad_Opcode },
171 { Bad_Opcode },
172 { Bad_Opcode },
173 { Bad_Opcode },
174 { Bad_Opcode },
175 /* 98 */
176 { Bad_Opcode },
177 { Bad_Opcode },
178 { Bad_Opcode },
179 { Bad_Opcode },
180 { Bad_Opcode },
181 { Bad_Opcode },
182 { Bad_Opcode },
183 { Bad_Opcode },
184 /* A0 */
185 { Bad_Opcode },
186 { Bad_Opcode },
187 { Bad_Opcode },
188 { Bad_Opcode },
189 { Bad_Opcode },
190 { Bad_Opcode },
191 { Bad_Opcode },
192 { Bad_Opcode },
193 /* A8 */
194 { Bad_Opcode },
195 { Bad_Opcode },
196 { Bad_Opcode },
197 { Bad_Opcode },
198 { Bad_Opcode },
199 { Bad_Opcode },
200 { Bad_Opcode },
201 { Bad_Opcode },
202 /* B0 */
203 { Bad_Opcode },
204 { Bad_Opcode },
205 { Bad_Opcode },
206 { Bad_Opcode },
207 { Bad_Opcode },
208 { Bad_Opcode },
209 { Bad_Opcode },
210 { Bad_Opcode },
211 /* B8 */
212 { Bad_Opcode },
213 { Bad_Opcode },
214 { Bad_Opcode },
215 { Bad_Opcode },
216 { Bad_Opcode },
217 { Bad_Opcode },
218 { Bad_Opcode },
219 { Bad_Opcode },
220 /* C0 */
221 { Bad_Opcode },
222 { Bad_Opcode },
223 { PREFIX_TABLE (PREFIX_EVEX_0FC2) },
224 { Bad_Opcode },
225 { VEX_LEN_TABLE (VEX_LEN_0FC4) },
226 { VEX_LEN_TABLE (VEX_LEN_0FC5) },
227 { "vshufpX", { XM, Vex, EXx, Ib }, PREFIX_OPCODE },
228 { Bad_Opcode },
229 /* C8 */
230 { Bad_Opcode },
231 { Bad_Opcode },
232 { Bad_Opcode },
233 { Bad_Opcode },
234 { Bad_Opcode },
235 { Bad_Opcode },
236 { Bad_Opcode },
237 { Bad_Opcode },
238 /* D0 */
239 { Bad_Opcode },
240 { "vpsrlw", { XM, Vex, EXxmm }, PREFIX_DATA },
241 { VEX_W_TABLE (EVEX_W_0FD2) },
242 { VEX_W_TABLE (EVEX_W_0FD3) },
243 { VEX_W_TABLE (EVEX_W_0FD4) },
244 { "vpmullw", { XM, Vex, EXx }, PREFIX_DATA },
245 { VEX_W_TABLE (EVEX_W_0FD6) },
246 { Bad_Opcode },
247 /* D8 */
248 { "vpsubusb", { XM, Vex, EXx }, PREFIX_DATA },
249 { "vpsubusw", { XM, Vex, EXx }, PREFIX_DATA },
250 { "vpminub", { XM, Vex, EXx }, PREFIX_DATA },
251 { "vpand%DQ", { XM, Vex, EXx }, PREFIX_DATA },
252 { "vpaddusb", { XM, Vex, EXx }, PREFIX_DATA },
253 { "vpaddusw", { XM, Vex, EXx }, PREFIX_DATA },
254 { "vpmaxub", { XM, Vex, EXx }, PREFIX_DATA },
255 { "vpandn%DQ", { XM, Vex, EXx }, PREFIX_DATA },
256 /* E0 */
257 { "vpavgb", { XM, Vex, EXx }, PREFIX_DATA },
258 { "vpsraw", { XM, Vex, EXxmm }, PREFIX_DATA },
259 { "vpsra%DQ", { XM, Vex, EXxmm }, PREFIX_DATA },
260 { "vpavgw", { XM, Vex, EXx }, PREFIX_DATA },
261 { "vpmulhuw", { XM, Vex, EXx }, PREFIX_DATA },
262 { "vpmulhw", { XM, Vex, EXx }, PREFIX_DATA },
263 { PREFIX_TABLE (PREFIX_EVEX_0FE6) },
264 { VEX_W_TABLE (EVEX_W_0FE7) },
265 /* E8 */
266 { "vpsubsb", { XM, Vex, EXx }, PREFIX_DATA },
267 { "vpsubsw", { XM, Vex, EXx }, PREFIX_DATA },
268 { "vpminsw", { XM, Vex, EXx }, PREFIX_DATA },
269 { "vpor%DQ", { XM, Vex, EXx }, PREFIX_DATA },
270 { "vpaddsb", { XM, Vex, EXx }, PREFIX_DATA },
271 { "vpaddsw", { XM, Vex, EXx }, PREFIX_DATA },
272 { "vpmaxsw", { XM, Vex, EXx }, PREFIX_DATA },
273 { "vpxor%DQ", { XM, Vex, EXx }, PREFIX_DATA },
274 /* F0 */
275 { Bad_Opcode },
276 { "vpsllw", { XM, Vex, EXxmm }, PREFIX_DATA },
277 { VEX_W_TABLE (EVEX_W_0FF2) },
278 { VEX_W_TABLE (EVEX_W_0FF3) },
279 { VEX_W_TABLE (EVEX_W_0FF4) },
280 { "vpmaddwd", { XM, Vex, EXx }, PREFIX_DATA },
281 { "vpsadbw", { XM, Vex, EXx }, PREFIX_DATA },
282 { Bad_Opcode },
283 /* F8 */
284 { "vpsubb", { XM, Vex, EXx }, PREFIX_DATA },
285 { "vpsubw", { XM, Vex, EXx }, PREFIX_DATA },
286 { VEX_W_TABLE (EVEX_W_0FFA) },
287 { VEX_W_TABLE (EVEX_W_0FFB) },
288 { "vpaddb", { XM, Vex, EXx }, PREFIX_DATA },
289 { "vpaddw", { XM, Vex, EXx }, PREFIX_DATA },
290 { VEX_W_TABLE (EVEX_W_0FFE) },
291 { Bad_Opcode },
293 /* EVEX_0F38 */
295 /* 00 */
296 { "vpshufb", { XM, Vex, EXx }, PREFIX_DATA },
297 { Bad_Opcode },
298 { Bad_Opcode },
299 { Bad_Opcode },
300 { "vpmaddubsw", { XM, Vex, EXx }, PREFIX_DATA },
301 { Bad_Opcode },
302 { Bad_Opcode },
303 { Bad_Opcode },
304 /* 08 */
305 { Bad_Opcode },
306 { Bad_Opcode },
307 { Bad_Opcode },
308 { "vpmulhrsw", { XM, Vex, EXx }, PREFIX_DATA },
309 { VEX_W_TABLE (VEX_W_0F380C) },
310 { VEX_W_TABLE (EVEX_W_0F380D) },
311 { Bad_Opcode },
312 { Bad_Opcode },
313 /* 10 */
314 { PREFIX_TABLE (PREFIX_EVEX_0F3810) },
315 { PREFIX_TABLE (PREFIX_EVEX_0F3811) },
316 { PREFIX_TABLE (PREFIX_EVEX_0F3812) },
317 { PREFIX_TABLE (PREFIX_EVEX_0F3813) },
318 { PREFIX_TABLE (PREFIX_EVEX_0F3814) },
319 { PREFIX_TABLE (PREFIX_EVEX_0F3815) },
320 { EVEX_LEN_TABLE (EVEX_LEN_0F3816) },
321 { Bad_Opcode },
322 /* 18 */
323 { VEX_W_TABLE (VEX_W_0F3818) },
324 { EVEX_LEN_TABLE (EVEX_LEN_0F3819) },
325 { MOD_TABLE (MOD_EVEX_0F381A) },
326 { MOD_TABLE (MOD_EVEX_0F381B) },
327 { "vpabsb", { XM, EXx }, PREFIX_DATA },
328 { "vpabsw", { XM, EXx }, PREFIX_DATA },
329 { VEX_W_TABLE (EVEX_W_0F381E) },
330 { VEX_W_TABLE (EVEX_W_0F381F) },
331 /* 20 */
332 { PREFIX_TABLE (PREFIX_EVEX_0F3820) },
333 { PREFIX_TABLE (PREFIX_EVEX_0F3821) },
334 { PREFIX_TABLE (PREFIX_EVEX_0F3822) },
335 { PREFIX_TABLE (PREFIX_EVEX_0F3823) },
336 { PREFIX_TABLE (PREFIX_EVEX_0F3824) },
337 { PREFIX_TABLE (PREFIX_EVEX_0F3825) },
338 { PREFIX_TABLE (PREFIX_EVEX_0F3826) },
339 { PREFIX_TABLE (PREFIX_EVEX_0F3827) },
340 /* 28 */
341 { PREFIX_TABLE (PREFIX_EVEX_0F3828) },
342 { PREFIX_TABLE (PREFIX_EVEX_0F3829) },
343 { PREFIX_TABLE (PREFIX_EVEX_0F382A) },
344 { VEX_W_TABLE (EVEX_W_0F382B) },
345 { "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
346 { "vscalefs%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
347 { Bad_Opcode },
348 { Bad_Opcode },
349 /* 30 */
350 { PREFIX_TABLE (PREFIX_EVEX_0F3830) },
351 { PREFIX_TABLE (PREFIX_EVEX_0F3831) },
352 { PREFIX_TABLE (PREFIX_EVEX_0F3832) },
353 { PREFIX_TABLE (PREFIX_EVEX_0F3833) },
354 { PREFIX_TABLE (PREFIX_EVEX_0F3834) },
355 { PREFIX_TABLE (PREFIX_EVEX_0F3835) },
356 { EVEX_LEN_TABLE (EVEX_LEN_0F3836) },
357 { VEX_W_TABLE (EVEX_W_0F3837) },
358 /* 38 */
359 { PREFIX_TABLE (PREFIX_EVEX_0F3838) },
360 { PREFIX_TABLE (PREFIX_EVEX_0F3839) },
361 { PREFIX_TABLE (PREFIX_EVEX_0F383A) },
362 { "vpminu%DQ", { XM, Vex, EXx }, PREFIX_DATA },
363 { "vpmaxsb", { XM, Vex, EXx }, PREFIX_DATA },
364 { "vpmaxs%DQ", { XM, Vex, EXx }, PREFIX_DATA },
365 { "vpmaxuw", { XM, Vex, EXx }, PREFIX_DATA },
366 { "vpmaxu%DQ", { XM, Vex, EXx }, PREFIX_DATA },
367 /* 40 */
368 { "vpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA },
369 { Bad_Opcode },
370 { "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
371 { "vgetexps%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
372 { "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA },
373 { "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
374 { "vpsrav%DQ", { XM, Vex, EXx }, PREFIX_DATA },
375 { "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
376 /* 48 */
377 { Bad_Opcode },
378 { Bad_Opcode },
379 { Bad_Opcode },
380 { Bad_Opcode },
381 { "vrcp14p%XW", { XM, EXx }, PREFIX_DATA },
382 { "vrcp14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
383 { "vrsqrt14p%XW", { XM, EXx }, 0 },
384 { "vrsqrt14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA },
385 /* 50 */
386 { "vpdpbusd", { XM, Vex, EXx }, PREFIX_DATA },
387 { "vpdpbusds", { XM, Vex, EXx }, PREFIX_DATA },
388 { PREFIX_TABLE (PREFIX_EVEX_0F3852) },
389 { PREFIX_TABLE (PREFIX_EVEX_0F3853) },
390 { "vpopcnt%BW", { XM, EXx }, PREFIX_DATA },
391 { "vpopcnt%DQ", { XM, EXx }, PREFIX_DATA },
392 { Bad_Opcode },
393 { Bad_Opcode },
394 /* 58 */
395 { VEX_W_TABLE (VEX_W_0F3858) },
396 { VEX_W_TABLE (EVEX_W_0F3859) },
397 { MOD_TABLE (MOD_EVEX_0F385A) },
398 { MOD_TABLE (MOD_EVEX_0F385B) },
399 { Bad_Opcode },
400 { Bad_Opcode },
401 { Bad_Opcode },
402 { Bad_Opcode },
403 /* 60 */
404 { Bad_Opcode },
405 { Bad_Opcode },
406 { "vpexpand%BW", { XM, EXbwUnit }, PREFIX_DATA },
407 { "vpcompress%BW", { EXbwUnit, XM }, PREFIX_DATA },
408 { "vpblendm%DQ", { XM, Vex, EXx }, PREFIX_DATA },
409 { "vblendmp%XW", { XM, Vex, EXx }, PREFIX_DATA },
410 { "vpblendm%BW", { XM, Vex, EXx }, PREFIX_DATA },
411 { Bad_Opcode },
412 /* 68 */
413 { PREFIX_TABLE (PREFIX_EVEX_0F3868) },
414 { Bad_Opcode },
415 { Bad_Opcode },
416 { Bad_Opcode },
417 { Bad_Opcode },
418 { Bad_Opcode },
419 { Bad_Opcode },
420 { Bad_Opcode },
421 /* 70 */
422 { VEX_W_TABLE (EVEX_W_0F3870) },
423 { "vpshldv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
424 { PREFIX_TABLE (PREFIX_EVEX_0F3872) },
425 { "vpshrdv%DQ", { XM, Vex, EXx }, PREFIX_DATA },
426 { Bad_Opcode },
427 { "vpermi2%BW", { XM, Vex, EXx }, PREFIX_DATA },
428 { "vpermi2%DQ", { XM, Vex, EXx }, PREFIX_DATA },
429 { "vpermi2p%XW", { XM, Vex, EXx }, PREFIX_DATA },
430 /* 78 */
431 { VEX_W_TABLE (VEX_W_0F3878) },
432 { VEX_W_TABLE (VEX_W_0F3879) },
433 { VEX_W_TABLE (EVEX_W_0F387A) },
434 { VEX_W_TABLE (EVEX_W_0F387B) },
435 { MOD_TABLE (MOD_EVEX_0F387C) },
436 { "vpermt2%BW", { XM, Vex, EXx }, PREFIX_DATA },
437 { "vpermt2%DQ", { XM, Vex, EXx }, PREFIX_DATA },
438 { "vpermt2p%XW", { XM, Vex, EXx }, PREFIX_DATA },
439 /* 80 */
440 { Bad_Opcode },
441 { Bad_Opcode },
442 { Bad_Opcode },
443 { VEX_W_TABLE (EVEX_W_0F3883) },
444 { Bad_Opcode },
445 { Bad_Opcode },
446 { Bad_Opcode },
447 { Bad_Opcode },
448 /* 88 */
449 { "vexpandp%XW", { XM, EXEvexXGscat }, PREFIX_DATA },
450 { "vpexpand%DQ", { XM, EXEvexXGscat }, PREFIX_DATA },
451 { "vcompressp%XW", { EXEvexXGscat, XM }, PREFIX_DATA },
452 { "vpcompress%DQ", { EXEvexXGscat, XM }, PREFIX_DATA },
453 { Bad_Opcode },
454 { "vperm%BW", { XM, Vex, EXx }, PREFIX_DATA },
455 { Bad_Opcode },
456 { "vpshufbitqmb", { XMask, Vex, EXx }, PREFIX_DATA },
457 /* 90 */
458 { "vpgatherd%DQ", { XMGatherD, MVexVSIBDWpX }, PREFIX_DATA },
459 { "vpgatherq%DQ", { XMGatherQ, MVexVSIBQWpX }, PREFIX_DATA },
460 { "vgatherdp%XW", { XMGatherD, MVexVSIBDWpX }, PREFIX_DATA },
461 { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX }, PREFIX_DATA },
462 { Bad_Opcode },
463 { Bad_Opcode },
464 { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
465 { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
466 /* 98 */
467 { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
468 { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
469 { PREFIX_TABLE (PREFIX_EVEX_0F389A) },
470 { PREFIX_TABLE (PREFIX_EVEX_0F389B) },
471 { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
472 { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
473 { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
474 { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
475 /* A0 */
476 { "vpscatterd%DQ", { MVexVSIBDWpX, XM }, PREFIX_DATA },
477 { "vpscatterq%DQ", { MVexVSIBQWpX, XMGatherQ }, PREFIX_DATA },
478 { "vscatterdp%XW", { MVexVSIBDWpX, XM }, PREFIX_DATA },
479 { "vscatterqp%XW", { MVexVSIBQWpX, XMGatherQ }, PREFIX_DATA },
480 { Bad_Opcode },
481 { Bad_Opcode },
482 { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
483 { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
484 /* A8 */
485 { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
486 { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
487 { PREFIX_TABLE (PREFIX_EVEX_0F38AA) },
488 { PREFIX_TABLE (PREFIX_EVEX_0F38AB) },
489 { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
490 { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
491 { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
492 { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
493 /* B0 */
494 { Bad_Opcode },
495 { Bad_Opcode },
496 { Bad_Opcode },
497 { Bad_Opcode },
498 { "vpmadd52luq", { XM, Vex, EXx }, PREFIX_DATA },
499 { "vpmadd52huq", { XM, Vex, EXx }, PREFIX_DATA },
500 { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
501 { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
502 /* B8 */
503 { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
504 { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
505 { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
506 { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
507 { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
508 { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
509 { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
510 { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA },
511 /* C0 */
512 { Bad_Opcode },
513 { Bad_Opcode },
514 { Bad_Opcode },
515 { Bad_Opcode },
516 { "vpconflict%DQ", { XM, EXx }, PREFIX_DATA },
517 { Bad_Opcode },
518 { MOD_TABLE (MOD_EVEX_0F38C6) },
519 { MOD_TABLE (MOD_EVEX_0F38C7) },
520 /* C8 */
521 { "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
522 { Bad_Opcode },
523 { "vrcp28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
524 { "vrcp28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
525 { "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA },
526 { "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA },
527 { Bad_Opcode },
528 { VEX_W_TABLE (VEX_W_0F38CF) },
529 /* D0 */
530 { Bad_Opcode },
531 { Bad_Opcode },
532 { Bad_Opcode },
533 { Bad_Opcode },
534 { Bad_Opcode },
535 { Bad_Opcode },
536 { Bad_Opcode },
537 { Bad_Opcode },
538 /* D8 */
539 { Bad_Opcode },
540 { Bad_Opcode },
541 { Bad_Opcode },
542 { Bad_Opcode },
543 { "vaesenc", { XM, Vex, EXx }, PREFIX_DATA },
544 { "vaesenclast", { XM, Vex, EXx }, PREFIX_DATA },
545 { "vaesdec", { XM, Vex, EXx }, PREFIX_DATA },
546 { "vaesdeclast", { XM, Vex, EXx }, PREFIX_DATA },
547 /* E0 */
548 { Bad_Opcode },
549 { Bad_Opcode },
550 { Bad_Opcode },
551 { Bad_Opcode },
552 { Bad_Opcode },
553 { Bad_Opcode },
554 { Bad_Opcode },
555 { Bad_Opcode },
556 /* E8 */
557 { Bad_Opcode },
558 { Bad_Opcode },
559 { Bad_Opcode },
560 { Bad_Opcode },
561 { Bad_Opcode },
562 { Bad_Opcode },
563 { Bad_Opcode },
564 { Bad_Opcode },
565 /* F0 */
566 { Bad_Opcode },
567 { Bad_Opcode },
568 { Bad_Opcode },
569 { Bad_Opcode },
570 { Bad_Opcode },
571 { Bad_Opcode },
572 { Bad_Opcode },
573 { Bad_Opcode },
574 /* F8 */
575 { Bad_Opcode },
576 { Bad_Opcode },
577 { Bad_Opcode },
578 { Bad_Opcode },
579 { Bad_Opcode },
580 { Bad_Opcode },
581 { Bad_Opcode },
582 { Bad_Opcode },
584 /* EVEX_0F3A */
586 /* 00 */
587 { EVEX_LEN_TABLE (EVEX_LEN_0F3A00) },
588 { EVEX_LEN_TABLE (EVEX_LEN_0F3A01) },
589 { Bad_Opcode },
590 { "valign%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
591 { VEX_W_TABLE (VEX_W_0F3A04) },
592 { VEX_W_TABLE (EVEX_W_0F3A05) },
593 { Bad_Opcode },
594 { Bad_Opcode },
595 /* 08 */
596 { VEX_W_TABLE (EVEX_W_0F3A08) },
597 { VEX_W_TABLE (EVEX_W_0F3A09) },
598 { VEX_W_TABLE (EVEX_W_0F3A0A) },
599 { VEX_W_TABLE (EVEX_W_0F3A0B) },
600 { Bad_Opcode },
601 { Bad_Opcode },
602 { Bad_Opcode },
603 { "vpalignr", { XM, Vex, EXx, Ib }, PREFIX_DATA },
604 /* 10 */
605 { Bad_Opcode },
606 { Bad_Opcode },
607 { Bad_Opcode },
608 { Bad_Opcode },
609 { VEX_LEN_TABLE (VEX_LEN_0F3A14) },
610 { VEX_LEN_TABLE (VEX_LEN_0F3A15) },
611 { VEX_LEN_TABLE (VEX_LEN_0F3A16) },
612 { VEX_LEN_TABLE (VEX_LEN_0F3A17) },
613 /* 18 */
614 { EVEX_LEN_TABLE (EVEX_LEN_0F3A18) },
615 { EVEX_LEN_TABLE (EVEX_LEN_0F3A19) },
616 { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A) },
617 { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B) },
618 { Bad_Opcode },
619 { VEX_W_TABLE (VEX_W_0F3A1D) },
620 { "vpcmpu%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
621 { "vpcmp%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
622 /* 20 */
623 { VEX_LEN_TABLE (VEX_LEN_0F3A20) },
624 { VEX_W_TABLE (EVEX_W_0F3A21) },
625 { VEX_LEN_TABLE (VEX_LEN_0F3A22) },
626 { EVEX_LEN_TABLE (EVEX_LEN_0F3A23) },
627 { Bad_Opcode },
628 { "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
629 { "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
630 { "vgetmants%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
631 /* 28 */
632 { Bad_Opcode },
633 { Bad_Opcode },
634 { Bad_Opcode },
635 { Bad_Opcode },
636 { Bad_Opcode },
637 { Bad_Opcode },
638 { Bad_Opcode },
639 { Bad_Opcode },
640 /* 30 */
641 { Bad_Opcode },
642 { Bad_Opcode },
643 { Bad_Opcode },
644 { Bad_Opcode },
645 { Bad_Opcode },
646 { Bad_Opcode },
647 { Bad_Opcode },
648 { Bad_Opcode },
649 /* 38 */
650 { EVEX_LEN_TABLE (EVEX_LEN_0F3A38) },
651 { EVEX_LEN_TABLE (EVEX_LEN_0F3A39) },
652 { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A) },
653 { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B) },
654 { Bad_Opcode },
655 { Bad_Opcode },
656 { "vpcmpu%BW", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
657 { "vpcmp%BW", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA },
658 /* 40 */
659 { Bad_Opcode },
660 { Bad_Opcode },
661 { VEX_W_TABLE (EVEX_W_0F3A42) },
662 { EVEX_LEN_TABLE (EVEX_LEN_0F3A43) },
663 { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA },
664 { Bad_Opcode },
665 { Bad_Opcode },
666 { Bad_Opcode },
667 /* 48 */
668 { Bad_Opcode },
669 { Bad_Opcode },
670 { Bad_Opcode },
671 { Bad_Opcode },
672 { Bad_Opcode },
673 { Bad_Opcode },
674 { Bad_Opcode },
675 { Bad_Opcode },
676 /* 50 */
677 { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
678 { "vranges%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
679 { Bad_Opcode },
680 { Bad_Opcode },
681 { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA },
682 { "vfixupimms%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
683 { "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
684 { "vreduces%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA },
685 /* 58 */
686 { Bad_Opcode },
687 { Bad_Opcode },
688 { Bad_Opcode },
689 { Bad_Opcode },
690 { Bad_Opcode },
691 { Bad_Opcode },
692 { Bad_Opcode },
693 { Bad_Opcode },
694 /* 60 */
695 { Bad_Opcode },
696 { Bad_Opcode },
697 { Bad_Opcode },
698 { Bad_Opcode },
699 { Bad_Opcode },
700 { Bad_Opcode },
701 { "vfpclassp%XW%XZ", { XMask, EXx, Ib }, PREFIX_DATA },
702 { "vfpclasss%XW", { XMask, EXVexWdqScalar, Ib }, PREFIX_DATA },
703 /* 68 */
704 { Bad_Opcode },
705 { Bad_Opcode },
706 { Bad_Opcode },
707 { Bad_Opcode },
708 { Bad_Opcode },
709 { Bad_Opcode },
710 { Bad_Opcode },
711 { Bad_Opcode },
712 /* 70 */
713 { VEX_W_TABLE (EVEX_W_0F3A70) },
714 { "vpshld%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
715 { VEX_W_TABLE (EVEX_W_0F3A72) },
716 { "vpshrd%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA },
717 { Bad_Opcode },
718 { Bad_Opcode },
719 { Bad_Opcode },
720 { Bad_Opcode },
721 /* 78 */
722 { Bad_Opcode },
723 { Bad_Opcode },
724 { Bad_Opcode },
725 { Bad_Opcode },
726 { Bad_Opcode },
727 { Bad_Opcode },
728 { Bad_Opcode },
729 { Bad_Opcode },
730 /* 80 */
731 { Bad_Opcode },
732 { Bad_Opcode },
733 { Bad_Opcode },
734 { Bad_Opcode },
735 { Bad_Opcode },
736 { Bad_Opcode },
737 { Bad_Opcode },
738 { Bad_Opcode },
739 /* 88 */
740 { Bad_Opcode },
741 { Bad_Opcode },
742 { Bad_Opcode },
743 { Bad_Opcode },
744 { Bad_Opcode },
745 { Bad_Opcode },
746 { Bad_Opcode },
747 { Bad_Opcode },
748 /* 90 */
749 { Bad_Opcode },
750 { Bad_Opcode },
751 { Bad_Opcode },
752 { Bad_Opcode },
753 { Bad_Opcode },
754 { Bad_Opcode },
755 { Bad_Opcode },
756 { Bad_Opcode },
757 /* 98 */
758 { Bad_Opcode },
759 { Bad_Opcode },
760 { Bad_Opcode },
761 { Bad_Opcode },
762 { Bad_Opcode },
763 { Bad_Opcode },
764 { Bad_Opcode },
765 { Bad_Opcode },
766 /* A0 */
767 { Bad_Opcode },
768 { Bad_Opcode },
769 { Bad_Opcode },
770 { Bad_Opcode },
771 { Bad_Opcode },
772 { Bad_Opcode },
773 { Bad_Opcode },
774 { Bad_Opcode },
775 /* A8 */
776 { Bad_Opcode },
777 { Bad_Opcode },
778 { Bad_Opcode },
779 { Bad_Opcode },
780 { Bad_Opcode },
781 { Bad_Opcode },
782 { Bad_Opcode },
783 { Bad_Opcode },
784 /* B0 */
785 { Bad_Opcode },
786 { Bad_Opcode },
787 { Bad_Opcode },
788 { Bad_Opcode },
789 { Bad_Opcode },
790 { Bad_Opcode },
791 { Bad_Opcode },
792 { Bad_Opcode },
793 /* B8 */
794 { Bad_Opcode },
795 { Bad_Opcode },
796 { Bad_Opcode },
797 { Bad_Opcode },
798 { Bad_Opcode },
799 { Bad_Opcode },
800 { Bad_Opcode },
801 { Bad_Opcode },
802 /* C0 */
803 { Bad_Opcode },
804 { Bad_Opcode },
805 { Bad_Opcode },
806 { Bad_Opcode },
807 { Bad_Opcode },
808 { Bad_Opcode },
809 { Bad_Opcode },
810 { Bad_Opcode },
811 /* C8 */
812 { Bad_Opcode },
813 { Bad_Opcode },
814 { Bad_Opcode },
815 { Bad_Opcode },
816 { Bad_Opcode },
817 { Bad_Opcode },
818 { VEX_W_TABLE (VEX_W_0F3ACE) },
819 { VEX_W_TABLE (VEX_W_0F3ACF) },
820 /* D0 */
821 { Bad_Opcode },
822 { Bad_Opcode },
823 { Bad_Opcode },
824 { Bad_Opcode },
825 { Bad_Opcode },
826 { Bad_Opcode },
827 { Bad_Opcode },
828 { Bad_Opcode },
829 /* D8 */
830 { Bad_Opcode },
831 { Bad_Opcode },
832 { Bad_Opcode },
833 { Bad_Opcode },
834 { Bad_Opcode },
835 { Bad_Opcode },
836 { Bad_Opcode },
837 { Bad_Opcode },
838 /* E0 */
839 { Bad_Opcode },
840 { Bad_Opcode },
841 { Bad_Opcode },
842 { Bad_Opcode },
843 { Bad_Opcode },
844 { Bad_Opcode },
845 { Bad_Opcode },
846 { Bad_Opcode },
847 /* E8 */
848 { Bad_Opcode },
849 { Bad_Opcode },
850 { Bad_Opcode },
851 { Bad_Opcode },
852 { Bad_Opcode },
853 { Bad_Opcode },
854 { Bad_Opcode },
855 { Bad_Opcode },
856 /* F0 */
857 { Bad_Opcode },
858 { Bad_Opcode },
859 { Bad_Opcode },
860 { Bad_Opcode },
861 { Bad_Opcode },
862 { Bad_Opcode },
863 { Bad_Opcode },
864 { Bad_Opcode },
865 /* F8 */
866 { Bad_Opcode },
867 { Bad_Opcode },
868 { Bad_Opcode },
869 { Bad_Opcode },
870 { Bad_Opcode },
871 { Bad_Opcode },
872 { Bad_Opcode },
873 { Bad_Opcode },