xref: /netbsd-src/external/gpl3/gdb/dist/opcodes/i386-dis-evex.h (revision 867d70fc718005c0918b8b8b2f9d7f2d52d0a0db)
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_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     { EVEX_LEN_TABLE (EVEX_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     { EVEX_LEN_TABLE (EVEX_LEN_0FC4) },
226     { EVEX_LEN_TABLE (EVEX_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     { EVEX_LEN_TABLE (EVEX_LEN_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     { 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     { VEX_W_TABLE (EVEX_W_0F3819) },
325     { VEX_W_TABLE (EVEX_W_0F381A) },
326     { VEX_W_TABLE (EVEX_W_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     { VEX_W_TABLE (EVEX_W_0F385A) },
398     { VEX_W_TABLE (EVEX_W_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",	{ XM, MVexVSIBDWpX }, PREFIX_DATA },
459     { VEX_W_TABLE (EVEX_W_0F3891) },
460     { "vgatherdp%XW",	{ XM, MVexVSIBDWpX}, PREFIX_DATA },
461     { VEX_W_TABLE (EVEX_W_0F3893) },
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     { VEX_W_TABLE (EVEX_W_0F38A1) },
478     { "vscatterdp%XW",	{ MVexVSIBDWpX, XM }, PREFIX_DATA },
479     { VEX_W_TABLE (EVEX_W_0F38A3) },
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     { REG_TABLE (REG_EVEX_0F38C6) },
519     { REG_TABLE (REG_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 },
583   },
584   /* EVEX_0F3A */
585   {
586     /* 00 */
587     { VEX_W_TABLE (EVEX_W_0F3A00) },
588     { VEX_W_TABLE (EVEX_W_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     { EVEX_LEN_TABLE (EVEX_LEN_0F3A14) },
610     { EVEX_LEN_TABLE (EVEX_LEN_0F3A15) },
611     { EVEX_LEN_TABLE (EVEX_LEN_0F3A16) },
612     { EVEX_LEN_TABLE (EVEX_LEN_0F3A17) },
613     /* 18 */
614     { VEX_W_TABLE (EVEX_W_0F3A18) },
615     { VEX_W_TABLE (EVEX_W_0F3A19) },
616     { VEX_W_TABLE (EVEX_W_0F3A1A) },
617     { VEX_W_TABLE (EVEX_W_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     { EVEX_LEN_TABLE (EVEX_LEN_0F3A20) },
624     { VEX_W_TABLE (EVEX_W_0F3A21) },
625     { EVEX_LEN_TABLE (EVEX_LEN_0F3A22) },
626     { VEX_W_TABLE (EVEX_W_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     { VEX_W_TABLE (EVEX_W_0F3A38) },
651     { VEX_W_TABLE (EVEX_W_0F3A39) },
652     { VEX_W_TABLE (EVEX_W_0F3A3A) },
653     { VEX_W_TABLE (EVEX_W_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     { VEX_W_TABLE (EVEX_W_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 },
874   },
875 };
876