i386-dis-evex.h revision 1.6
1static const struct dis386 evex_table[][256] = {
2  /* EVEX_0F */
3  {
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_VEX_0F10) },
24    { PREFIX_TABLE (PREFIX_VEX_0F11) },
25    { PREFIX_TABLE (PREFIX_VEX_0F12) },
26    { MOD_TABLE (MOD_VEX_0F13) },
27    { "vunpcklpX",	{ XM, Vex, EXx }, PREFIX_OPCODE },
28    { "vunpckhpX",	{ XM, Vex, EXx }, PREFIX_OPCODE },
29    { PREFIX_TABLE (PREFIX_VEX_0F16) },
30    { MOD_TABLE (MOD_VEX_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_VEX_0F2A) },
53    { MOD_TABLE (MOD_VEX_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_VEX_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_VEX_0F58) },
105    { PREFIX_TABLE (PREFIX_VEX_0F59) },
106    { PREFIX_TABLE (PREFIX_VEX_0F5A) },
107    { PREFIX_TABLE (PREFIX_EVEX_0F5B) },
108    { PREFIX_TABLE (PREFIX_VEX_0F5C) },
109    { PREFIX_TABLE (PREFIX_VEX_0F5D) },
110    { PREFIX_TABLE (PREFIX_VEX_0F5E) },
111    { PREFIX_TABLE (PREFIX_VEX_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",	{ MaskG, Vex, EXx }, PREFIX_DATA },
118    { "vpcmpgtw",	{ MaskG, 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",	{ MaskG, Vex, EXx }, PREFIX_DATA },
136    { "vpcmpeqw",	{ MaskG, 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 },
292  },
293  /* EVEX_0F38 */
294  {
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    { "vpermilp%XD", { XM, Vex, EXx }, PREFIX_DATA },
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, EXdq, 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, EXdq, 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, EXdq }, PREFIX_DATA },
383    { "vrsqrt14p%XW",	{ XM, EXx }, 0 },
384    { "vrsqrt14s%XW",	{ XMScalar, VexScalar, EXdq }, 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",	{ MaskG, 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, EXdq, 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, EXdq, EXxEVexR }, PREFIX_DATA },
473    { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
474    { "vfnmsub132s%XW", { XMScalar, VexScalar, EXdq, 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, EXdq, 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, EXdq, EXxEVexR }, PREFIX_DATA },
491    { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
492    { "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq, 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, EXdq, EXxEVexR }, PREFIX_DATA },
505    { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
506    { "vfmsub231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
507    { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
508    { "vfnmadd231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA },
509    { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA },
510    { "vfnmsub231s%XW", { XMScalar, VexScalar, EXdq, 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, EXdq, EXxEVexS }, PREFIX_DATA },
525    { "vrsqrt28p%XW",	{ XM, EXx, EXxEVexS }, PREFIX_DATA },
526    { "vrsqrt28s%XW",	{ XMScalar, VexScalar, EXdq, 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 },
583  },
584  /* EVEX_0F3A */
585  {
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    { "vpermilp%XD", { XM, EXx, Ib }, PREFIX_DATA },
593    { Bad_Opcode },
594    { Bad_Opcode },
595    /* 08 */
596    { PREFIX_TABLE (PREFIX_EVEX_0F3A08) },
597    { "vrndscalep%XD", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA },
598    { PREFIX_TABLE (PREFIX_EVEX_0F3A0A) },
599    { "vrndscales%XD", { XMScalar, VexScalar, EXq, EXxEVexS, Ib }, PREFIX_DATA },
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",	{ MaskG, Vex, EXx, VPCMP }, PREFIX_DATA },
621    { "vpcmp%DQ",	{ MaskG, 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    { PREFIX_TABLE (PREFIX_EVEX_0F3A26) },
630    { PREFIX_TABLE (PREFIX_EVEX_0F3A27) },
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",	{ MaskG, Vex, EXx, VPCMP }, PREFIX_DATA },
657    { "vpcmp%BW",	{ MaskG, 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, EXdq, 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, EXdq, EXxEVexS, Ib }, PREFIX_DATA },
683    { PREFIX_TABLE (PREFIX_EVEX_0F3A56) },
684    { PREFIX_TABLE (PREFIX_EVEX_0F3A57) },
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    { PREFIX_TABLE (PREFIX_EVEX_0F3A66) },
702    { PREFIX_TABLE (PREFIX_EVEX_0F3A67) },
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    { PREFIX_TABLE (PREFIX_EVEX_0F3AC2) },
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 },
874  },
875  /* EVEX_MAP5_ */
876  {
877    /* 00 */
878    { Bad_Opcode },
879    { Bad_Opcode },
880    { Bad_Opcode },
881    { Bad_Opcode },
882    { Bad_Opcode },
883    { Bad_Opcode },
884    { Bad_Opcode },
885    { Bad_Opcode },
886    /* 08 */
887    { Bad_Opcode },
888    { Bad_Opcode },
889    { Bad_Opcode },
890    { Bad_Opcode },
891    { Bad_Opcode },
892    { Bad_Opcode },
893    { Bad_Opcode },
894    { Bad_Opcode },
895    /* 10 */
896    { PREFIX_TABLE (PREFIX_EVEX_MAP5_10) },
897    { PREFIX_TABLE (PREFIX_EVEX_MAP5_11) },
898    { Bad_Opcode },
899    { Bad_Opcode },
900    { Bad_Opcode },
901    { Bad_Opcode },
902    { Bad_Opcode },
903    { Bad_Opcode },
904    /* 18 */
905    { Bad_Opcode },
906    { Bad_Opcode },
907    { Bad_Opcode },
908    { Bad_Opcode },
909    { Bad_Opcode },
910    { PREFIX_TABLE (PREFIX_EVEX_MAP5_1D) },
911    { Bad_Opcode },
912    { Bad_Opcode },
913    /* 20 */
914    { Bad_Opcode },
915    { Bad_Opcode },
916    { Bad_Opcode },
917    { Bad_Opcode },
918    { Bad_Opcode },
919    { Bad_Opcode },
920    { Bad_Opcode },
921    { Bad_Opcode },
922    /* 28 */
923    { Bad_Opcode },
924    { Bad_Opcode },
925    { PREFIX_TABLE (PREFIX_EVEX_MAP5_2A) },
926    { Bad_Opcode },
927    { PREFIX_TABLE (PREFIX_EVEX_MAP5_2C) },
928    { PREFIX_TABLE (PREFIX_EVEX_MAP5_2D) },
929    { PREFIX_TABLE (PREFIX_EVEX_MAP5_2E) },
930    { PREFIX_TABLE (PREFIX_EVEX_MAP5_2F) },
931    /* 30 */
932    { Bad_Opcode },
933    { Bad_Opcode },
934    { Bad_Opcode },
935    { Bad_Opcode },
936    { Bad_Opcode },
937    { Bad_Opcode },
938    { Bad_Opcode },
939    { Bad_Opcode },
940    /* 38 */
941    { Bad_Opcode },
942    { Bad_Opcode },
943    { Bad_Opcode },
944    { Bad_Opcode },
945    { Bad_Opcode },
946    { Bad_Opcode },
947    { Bad_Opcode },
948    { Bad_Opcode },
949    /* 40 */
950    { Bad_Opcode },
951    { Bad_Opcode },
952    { Bad_Opcode },
953    { Bad_Opcode },
954    { Bad_Opcode },
955    { Bad_Opcode },
956    { Bad_Opcode },
957    { Bad_Opcode },
958    /* 48 */
959    { Bad_Opcode },
960    { Bad_Opcode },
961    { Bad_Opcode },
962    { Bad_Opcode },
963    { Bad_Opcode },
964    { Bad_Opcode },
965    { Bad_Opcode },
966    { Bad_Opcode },
967    /* 50 */
968    { Bad_Opcode },
969    { PREFIX_TABLE (PREFIX_EVEX_MAP5_51) },
970    { Bad_Opcode },
971    { Bad_Opcode },
972    { Bad_Opcode },
973    { Bad_Opcode },
974    { Bad_Opcode },
975    { Bad_Opcode },
976    /* 58 */
977    { PREFIX_TABLE (PREFIX_EVEX_MAP5_58) },
978    { PREFIX_TABLE (PREFIX_EVEX_MAP5_59) },
979    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5A) },
980    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5B) },
981    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5C) },
982    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5D) },
983    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5E) },
984    { PREFIX_TABLE (PREFIX_EVEX_MAP5_5F) },
985    /* 60 */
986    { Bad_Opcode },
987    { Bad_Opcode },
988    { Bad_Opcode },
989    { Bad_Opcode },
990    { Bad_Opcode },
991    { Bad_Opcode },
992    { Bad_Opcode },
993    { Bad_Opcode },
994    /* 68 */
995    { Bad_Opcode },
996    { Bad_Opcode },
997    { Bad_Opcode },
998    { Bad_Opcode },
999    { Bad_Opcode },
1000    { Bad_Opcode },
1001    { "vmovw", { XMScalar, Edw }, PREFIX_DATA },
1002    { Bad_Opcode },
1003    /* 70 */
1004    { Bad_Opcode },
1005    { Bad_Opcode },
1006    { Bad_Opcode },
1007    { Bad_Opcode },
1008    { Bad_Opcode },
1009    { Bad_Opcode },
1010    { Bad_Opcode },
1011    { Bad_Opcode },
1012    /* 78 */
1013    { PREFIX_TABLE (PREFIX_EVEX_MAP5_78) },
1014    { PREFIX_TABLE (PREFIX_EVEX_MAP5_79) },
1015    { PREFIX_TABLE (PREFIX_EVEX_MAP5_7A) },
1016    { PREFIX_TABLE (PREFIX_EVEX_MAP5_7B) },
1017    { PREFIX_TABLE (PREFIX_EVEX_MAP5_7C) },
1018    { PREFIX_TABLE (PREFIX_EVEX_MAP5_7D) },
1019    { "vmovw",	  { Edw, XMScalar }, PREFIX_DATA },
1020    { Bad_Opcode },
1021    /* 80 */
1022    { Bad_Opcode },
1023    { Bad_Opcode },
1024    { Bad_Opcode },
1025    { Bad_Opcode },
1026    { Bad_Opcode },
1027    { Bad_Opcode },
1028    { Bad_Opcode },
1029    { Bad_Opcode },
1030    /* 88 */
1031    { Bad_Opcode },
1032    { Bad_Opcode },
1033    { Bad_Opcode },
1034    { Bad_Opcode },
1035    { Bad_Opcode },
1036    { Bad_Opcode },
1037    { Bad_Opcode },
1038    { Bad_Opcode },
1039    /* 90 */
1040    { Bad_Opcode },
1041    { Bad_Opcode },
1042    { Bad_Opcode },
1043    { Bad_Opcode },
1044    { Bad_Opcode },
1045    { Bad_Opcode },
1046    { Bad_Opcode },
1047    { Bad_Opcode },
1048    /* 98 */
1049    { Bad_Opcode },
1050    { Bad_Opcode },
1051    { Bad_Opcode },
1052    { Bad_Opcode },
1053    { Bad_Opcode },
1054    { Bad_Opcode },
1055    { Bad_Opcode },
1056    { Bad_Opcode },
1057    /* A0 */
1058    { Bad_Opcode },
1059    { Bad_Opcode },
1060    { Bad_Opcode },
1061    { Bad_Opcode },
1062    { Bad_Opcode },
1063    { Bad_Opcode },
1064    { Bad_Opcode },
1065    { Bad_Opcode },
1066    /* A8 */
1067    { Bad_Opcode },
1068    { Bad_Opcode },
1069    { Bad_Opcode },
1070    { Bad_Opcode },
1071    { Bad_Opcode },
1072    { Bad_Opcode },
1073    { Bad_Opcode },
1074    { Bad_Opcode },
1075    /* B0 */
1076    { Bad_Opcode },
1077    { Bad_Opcode },
1078    { Bad_Opcode },
1079    { Bad_Opcode },
1080    { Bad_Opcode },
1081    { Bad_Opcode },
1082    { Bad_Opcode },
1083    { Bad_Opcode },
1084    /* B8 */
1085    { Bad_Opcode },
1086    { Bad_Opcode },
1087    { Bad_Opcode },
1088    { Bad_Opcode },
1089    { Bad_Opcode },
1090    { Bad_Opcode },
1091    { Bad_Opcode },
1092    { Bad_Opcode },
1093    /* C0 */
1094    { Bad_Opcode },
1095    { Bad_Opcode },
1096    { Bad_Opcode },
1097    { Bad_Opcode },
1098    { Bad_Opcode },
1099    { Bad_Opcode },
1100    { Bad_Opcode },
1101    { Bad_Opcode },
1102    /* C8 */
1103    { Bad_Opcode },
1104    { Bad_Opcode },
1105    { Bad_Opcode },
1106    { Bad_Opcode },
1107    { Bad_Opcode },
1108    { Bad_Opcode },
1109    { Bad_Opcode },
1110    { Bad_Opcode },
1111    /* D0 */
1112    { Bad_Opcode },
1113    { Bad_Opcode },
1114    { Bad_Opcode },
1115    { Bad_Opcode },
1116    { Bad_Opcode },
1117    { Bad_Opcode },
1118    { Bad_Opcode },
1119    { Bad_Opcode },
1120    /* D8 */
1121    { Bad_Opcode },
1122    { Bad_Opcode },
1123    { Bad_Opcode },
1124    { Bad_Opcode },
1125    { Bad_Opcode },
1126    { Bad_Opcode },
1127    { Bad_Opcode },
1128    { Bad_Opcode },
1129    /* E0 */
1130    { Bad_Opcode },
1131    { Bad_Opcode },
1132    { Bad_Opcode },
1133    { Bad_Opcode },
1134    { Bad_Opcode },
1135    { Bad_Opcode },
1136    { Bad_Opcode },
1137    { Bad_Opcode },
1138    /* E8 */
1139    { Bad_Opcode },
1140    { Bad_Opcode },
1141    { Bad_Opcode },
1142    { Bad_Opcode },
1143    { Bad_Opcode },
1144    { Bad_Opcode },
1145    { Bad_Opcode },
1146    { Bad_Opcode },
1147    /* F0 */
1148    { Bad_Opcode },
1149    { Bad_Opcode },
1150    { Bad_Opcode },
1151    { Bad_Opcode },
1152    { Bad_Opcode },
1153    { Bad_Opcode },
1154    { Bad_Opcode },
1155    { Bad_Opcode },
1156    /* F8 */
1157    { Bad_Opcode },
1158    { Bad_Opcode },
1159    { Bad_Opcode },
1160    { Bad_Opcode },
1161    { Bad_Opcode },
1162    { Bad_Opcode },
1163    { Bad_Opcode },
1164    { Bad_Opcode },
1165  },
1166  /* EVEX_MAP6_ */
1167  {
1168    /* 00 */
1169    { Bad_Opcode },
1170    { Bad_Opcode },
1171    { Bad_Opcode },
1172    { Bad_Opcode },
1173    { Bad_Opcode },
1174    { Bad_Opcode },
1175    { Bad_Opcode },
1176    { Bad_Opcode },
1177    /* 08 */
1178    { Bad_Opcode },
1179    { Bad_Opcode },
1180    { Bad_Opcode },
1181    { Bad_Opcode },
1182    { Bad_Opcode },
1183    { Bad_Opcode },
1184    { Bad_Opcode },
1185    { Bad_Opcode },
1186    /* 10 */
1187    { Bad_Opcode },
1188    { Bad_Opcode },
1189    { Bad_Opcode },
1190    { PREFIX_TABLE (PREFIX_EVEX_MAP6_13) },
1191    { Bad_Opcode },
1192    { Bad_Opcode },
1193    { Bad_Opcode },
1194    { Bad_Opcode },
1195    /* 18 */
1196    { Bad_Opcode },
1197    { Bad_Opcode },
1198    { Bad_Opcode },
1199    { Bad_Opcode },
1200    { Bad_Opcode },
1201    { Bad_Opcode },
1202    { Bad_Opcode },
1203    { Bad_Opcode },
1204    /* 20 */
1205    { Bad_Opcode },
1206    { Bad_Opcode },
1207    { Bad_Opcode },
1208    { Bad_Opcode },
1209    { Bad_Opcode },
1210    { Bad_Opcode },
1211    { Bad_Opcode },
1212    { Bad_Opcode },
1213    /* 28 */
1214    { Bad_Opcode },
1215    { Bad_Opcode },
1216    { Bad_Opcode },
1217    { Bad_Opcode },
1218    { "vscalefp%XH",      { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1219    { "vscalefs%XH",      { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1220    { Bad_Opcode },
1221    { Bad_Opcode },
1222    /* 30 */
1223    { Bad_Opcode },
1224    { Bad_Opcode },
1225    { Bad_Opcode },
1226    { Bad_Opcode },
1227    { Bad_Opcode },
1228    { Bad_Opcode },
1229    { Bad_Opcode },
1230    { Bad_Opcode },
1231    /* 38 */
1232    { Bad_Opcode },
1233    { Bad_Opcode },
1234    { Bad_Opcode },
1235    { Bad_Opcode },
1236    { Bad_Opcode },
1237    { Bad_Opcode },
1238    { Bad_Opcode },
1239    { Bad_Opcode },
1240    /* 40 */
1241    { Bad_Opcode },
1242    { Bad_Opcode },
1243    { "vgetexpp%XH",      { XM, EXxh, EXxEVexS }, PREFIX_DATA },
1244    { "vgetexps%XH",      { XMScalar, VexScalar, EXw, EXxEVexS }, PREFIX_DATA },
1245    { Bad_Opcode },
1246    { Bad_Opcode },
1247    { Bad_Opcode },
1248    { Bad_Opcode },
1249    /* 48 */
1250    { Bad_Opcode },
1251    { Bad_Opcode },
1252    { Bad_Opcode },
1253    { Bad_Opcode },
1254    { "vrcpp%XH",	  { XM, EXxh }, PREFIX_DATA },
1255    { "vrcps%XH",	  { XMScalar, VexScalar, EXw }, PREFIX_DATA },
1256    { "vrsqrtp%XH",       { XM, EXxh }, PREFIX_DATA },
1257    { "vrsqrts%XH",       { XMScalar, VexScalar, EXw }, PREFIX_DATA },
1258    /* 50 */
1259    { Bad_Opcode },
1260    { Bad_Opcode },
1261    { Bad_Opcode },
1262    { Bad_Opcode },
1263    { Bad_Opcode },
1264    { Bad_Opcode },
1265    { PREFIX_TABLE (PREFIX_EVEX_MAP6_56) },
1266    { PREFIX_TABLE (PREFIX_EVEX_MAP6_57) },
1267    /* 58 */
1268    { Bad_Opcode },
1269    { Bad_Opcode },
1270    { Bad_Opcode },
1271    { Bad_Opcode },
1272    { Bad_Opcode },
1273    { Bad_Opcode },
1274    { Bad_Opcode },
1275    { Bad_Opcode },
1276    /* 60 */
1277    { Bad_Opcode },
1278    { Bad_Opcode },
1279    { Bad_Opcode },
1280    { Bad_Opcode },
1281    { Bad_Opcode },
1282    { Bad_Opcode },
1283    { Bad_Opcode },
1284    { Bad_Opcode },
1285    /* 68 */
1286    { Bad_Opcode },
1287    { Bad_Opcode },
1288    { Bad_Opcode },
1289    { Bad_Opcode },
1290    { Bad_Opcode },
1291    { Bad_Opcode },
1292    { Bad_Opcode },
1293    { Bad_Opcode },
1294    /* 70 */
1295    { Bad_Opcode },
1296    { Bad_Opcode },
1297    { Bad_Opcode },
1298    { Bad_Opcode },
1299    { Bad_Opcode },
1300    { Bad_Opcode },
1301    { Bad_Opcode },
1302    { Bad_Opcode },
1303    /* 78 */
1304    { Bad_Opcode },
1305    { Bad_Opcode },
1306    { Bad_Opcode },
1307    { Bad_Opcode },
1308    { Bad_Opcode },
1309    { Bad_Opcode },
1310    { Bad_Opcode },
1311    { Bad_Opcode },
1312    /* 80 */
1313    { Bad_Opcode },
1314    { Bad_Opcode },
1315    { Bad_Opcode },
1316    { Bad_Opcode },
1317    { Bad_Opcode },
1318    { Bad_Opcode },
1319    { Bad_Opcode },
1320    { Bad_Opcode },
1321    /* 88 */
1322    { Bad_Opcode },
1323    { Bad_Opcode },
1324    { Bad_Opcode },
1325    { Bad_Opcode },
1326    { Bad_Opcode },
1327    { Bad_Opcode },
1328    { Bad_Opcode },
1329    { Bad_Opcode },
1330    /* 90 */
1331    { Bad_Opcode },
1332    { Bad_Opcode },
1333    { Bad_Opcode },
1334    { Bad_Opcode },
1335    { Bad_Opcode },
1336    { Bad_Opcode },
1337    { "vfmaddsub132p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1338    { "vfmsubadd132p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1339    /* 98 */
1340    { "vfmadd132p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1341    { "vfmadd132s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1342    { "vfmsub132p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1343    { "vfmsub132s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1344    { "vfnmadd132p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1345    { "vfnmadd132s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1346    { "vfnmsub132p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1347    { "vfnmsub132s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1348    /* A0 */
1349    { Bad_Opcode },
1350    { Bad_Opcode },
1351    { Bad_Opcode },
1352    { Bad_Opcode },
1353    { Bad_Opcode },
1354    { Bad_Opcode },
1355    { "vfmaddsub213p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1356    { "vfmsubadd213p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1357    /* A8 */
1358    { "vfmadd213p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1359    { "vfmadd213s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1360    { "vfmsub213p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1361    { "vfmsub213s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1362    { "vfnmadd213p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1363    { "vfnmadd213s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1364    { "vfnmsub213p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1365    { "vfnmsub213s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1366    /* B0 */
1367    { Bad_Opcode },
1368    { Bad_Opcode },
1369    { Bad_Opcode },
1370    { Bad_Opcode },
1371    { Bad_Opcode },
1372    { Bad_Opcode },
1373    { "vfmaddsub231p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1374    { "vfmsubadd231p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1375    /* B8 */
1376    { "vfmadd231p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1377    { "vfmadd231s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1378    { "vfmsub231p%XH",  { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1379    { "vfmsub231s%XH",  { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1380    { "vfnmadd231p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1381    { "vfnmadd231s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1382    { "vfnmsub231p%XH", { XM, Vex, EXxh, EXxEVexR }, PREFIX_DATA },
1383    { "vfnmsub231s%XH", { XMScalar, VexScalar, EXw, EXxEVexR }, PREFIX_DATA },
1384    /* C0 */
1385    { Bad_Opcode },
1386    { Bad_Opcode },
1387    { Bad_Opcode },
1388    { Bad_Opcode },
1389    { Bad_Opcode },
1390    { Bad_Opcode },
1391    { Bad_Opcode },
1392    { Bad_Opcode },
1393    /* C8 */
1394    { Bad_Opcode },
1395    { Bad_Opcode },
1396    { Bad_Opcode },
1397    { Bad_Opcode },
1398    { Bad_Opcode },
1399    { Bad_Opcode },
1400    { Bad_Opcode },
1401    { Bad_Opcode },
1402    /* D0 */
1403    { Bad_Opcode },
1404    { Bad_Opcode },
1405    { Bad_Opcode },
1406    { Bad_Opcode },
1407    { Bad_Opcode },
1408    { Bad_Opcode },
1409    { PREFIX_TABLE (PREFIX_EVEX_MAP6_D6) },
1410    { PREFIX_TABLE (PREFIX_EVEX_MAP6_D7) },
1411    /* D8 */
1412    { Bad_Opcode },
1413    { Bad_Opcode },
1414    { Bad_Opcode },
1415    { Bad_Opcode },
1416    { Bad_Opcode },
1417    { Bad_Opcode },
1418    { Bad_Opcode },
1419    { Bad_Opcode },
1420    /* E0 */
1421    { Bad_Opcode },
1422    { Bad_Opcode },
1423    { Bad_Opcode },
1424    { Bad_Opcode },
1425    { Bad_Opcode },
1426    { Bad_Opcode },
1427    { Bad_Opcode },
1428    { Bad_Opcode },
1429    /* E8 */
1430    { Bad_Opcode },
1431    { Bad_Opcode },
1432    { Bad_Opcode },
1433    { Bad_Opcode },
1434    { Bad_Opcode },
1435    { Bad_Opcode },
1436    { Bad_Opcode },
1437    { Bad_Opcode },
1438    /* F0 */
1439    { Bad_Opcode },
1440    { Bad_Opcode },
1441    { Bad_Opcode },
1442    { Bad_Opcode },
1443    { Bad_Opcode },
1444    { Bad_Opcode },
1445    { Bad_Opcode },
1446    { Bad_Opcode },
1447    /* F8 */
1448    { Bad_Opcode },
1449    { Bad_Opcode },
1450    { Bad_Opcode },
1451    { Bad_Opcode },
1452    { Bad_Opcode },
1453    { Bad_Opcode },
1454    { Bad_Opcode },
1455    { Bad_Opcode },
1456  },
1457};
1458