xref: /netbsd-src/external/gpl3/binutils.old/dist/opcodes/i386-dis-evex.h (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1 static 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