x86: optimize EVEX packed integer logical instructions
[external/binutils.git] / opcodes / i386-dis-evex-w.h
1   /* EVEX_W_0F10_P_0 */
2   {
3     { "vmovups",        { XM, EXEvexXNoBcst }, 0 },
4   },
5   /* EVEX_W_0F10_P_1 */
6   {
7     { "vmovss", { XMVexScalar, VexScalar, EXdScalar }, 0 },
8   },
9   /* EVEX_W_0F10_P_2 */
10   {
11     { Bad_Opcode },
12     { "vmovupd",        { XM, EXEvexXNoBcst }, 0 },
13   },
14   /* EVEX_W_0F10_P_3 */
15   {
16     { Bad_Opcode },
17     { "vmovsd", { XMVexScalar, VexScalar, EXqScalar }, 0 },
18   },
19   /* EVEX_W_0F11_P_0 */
20   {
21     { "vmovups",        { EXxS, XM }, 0 },
22   },
23   /* EVEX_W_0F11_P_1 */
24   {
25     { "vmovss", { EXdVexScalarS, VexScalar, XMScalar }, 0 },
26   },
27   /* EVEX_W_0F11_P_2 */
28   {
29     { Bad_Opcode },
30     { "vmovupd",        { EXxS, XM }, 0 },
31   },
32   /* EVEX_W_0F11_P_3 */
33   {
34     { Bad_Opcode },
35     { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar }, 0 },
36   },
37   /* EVEX_W_0F12_P_0_M_0 */
38   {
39     { "vmovlps",        { XMM, Vex, EXxmm_mq }, 0 },
40   },
41   /* EVEX_W_0F12_P_0_M_1 */
42   {
43     { "vmovhlps",       { XMM, Vex, EXxmm_mq }, 0 },
44   },
45   /* EVEX_W_0F12_P_1 */
46   {
47     { "vmovsldup",      { XM, EXEvexXNoBcst }, 0 },
48   },
49   /* EVEX_W_0F12_P_2 */
50   {
51     { Bad_Opcode },
52     { "vmovlpd",        { XMM, Vex, EXxmm_mq }, 0 },
53   },
54   /* EVEX_W_0F12_P_3 */
55   {
56     { Bad_Opcode },
57     { "vmovddup",       { XM, EXymmq }, 0 },
58   },
59   /* EVEX_W_0F13_P_0 */
60   {
61     { "vmovlps",        { EXxmm_mq, XMM }, 0 },
62   },
63   /* EVEX_W_0F13_P_2 */
64   {
65     { Bad_Opcode },
66     { "vmovlpd",        { EXxmm_mq, XMM }, 0 },
67   },
68   /* EVEX_W_0F14_P_0 */
69   {
70     { "vunpcklps",      { XM, Vex, EXx }, 0 },
71   },
72   /* EVEX_W_0F14_P_2 */
73   {
74     { Bad_Opcode },
75     { "vunpcklpd",      { XM, Vex, EXx }, 0 },
76   },
77   /* EVEX_W_0F15_P_0 */
78   {
79     { "vunpckhps",      { XM, Vex, EXx }, 0 },
80   },
81   /* EVEX_W_0F15_P_2 */
82   {
83     { Bad_Opcode },
84     { "vunpckhpd",      { XM, Vex, EXx }, 0 },
85   },
86   /* EVEX_W_0F16_P_0_M_0 */
87   {
88     { "vmovhps",        { XMM, Vex, EXxmm_mq }, 0 },
89   },
90   /* EVEX_W_0F16_P_0_M_1 */
91   {
92     { "vmovlhps",       { XMM, Vex, EXx }, 0 },
93   },
94   /* EVEX_W_0F16_P_1 */
95   {
96     { "vmovshdup",      { XM, EXx }, 0 },
97   },
98   /* EVEX_W_0F16_P_2 */
99   {
100     { Bad_Opcode },
101     { "vmovhpd",        { XMM, Vex, EXxmm_mq }, 0 },
102   },
103   /* EVEX_W_0F17_P_0 */
104   {
105     { "vmovhps",        { EXxmm_mq, XMM }, 0 },
106   },
107   /* EVEX_W_0F17_P_2 */
108   {
109     { Bad_Opcode },
110     { "vmovhpd",        { EXxmm_mq, XMM }, 0 },
111   },
112   /* EVEX_W_0F28_P_0 */
113   {
114     { "vmovaps",        { XM, EXx }, 0 },
115   },
116   /* EVEX_W_0F28_P_2 */
117   {
118     { Bad_Opcode },
119     { "vmovapd",        { XM, EXx }, 0 },
120   },
121   /* EVEX_W_0F29_P_0 */
122   {
123     { "vmovaps",        { EXxS, XM }, 0 },
124   },
125   /* EVEX_W_0F29_P_2 */
126   {
127     { Bad_Opcode },
128     { "vmovapd",        { EXxS, XM }, 0 },
129   },
130   /* EVEX_W_0F2A_P_3 */
131   {
132     { "vcvtsi2sd%LQ",   { XMScalar, VexScalar, Ed }, 0 },
133     { "vcvtsi2sd%LQ",   { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
134   },
135   /* EVEX_W_0F2B_P_0 */
136   {
137     { "vmovntps",       { EXx, XM }, 0 },
138   },
139   /* EVEX_W_0F2B_P_2 */
140   {
141     { Bad_Opcode },
142     { "vmovntpd",       { EXx, XM }, 0 },
143   },
144   /* EVEX_W_0F2E_P_0 */
145   {
146     { "vucomiss",       { XMScalar, EXxmm_md, EXxEVexS }, 0 },
147   },
148   /* EVEX_W_0F2E_P_2 */
149   {
150     { Bad_Opcode },
151     { "vucomisd",       { XMScalar, EXxmm_mq, EXxEVexS }, 0 },
152   },
153   /* EVEX_W_0F2F_P_0 */
154   {
155     { "vcomiss",        { XMScalar, EXxmm_md, EXxEVexS }, 0 },
156   },
157   /* EVEX_W_0F2F_P_2 */
158   {
159     { Bad_Opcode },
160     { "vcomisd",        { XMScalar, EXxmm_mq, EXxEVexS }, 0 },
161   },
162   /* EVEX_W_0F51_P_0 */
163   {
164     { "vsqrtps",        { XM, EXx, EXxEVexR }, 0 },
165   },
166   /* EVEX_W_0F51_P_1 */
167   {
168     { "vsqrtss",        { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
169   },
170   /* EVEX_W_0F51_P_2 */
171   {
172     { Bad_Opcode },
173     { "vsqrtpd",        { XM, EXx, EXxEVexR }, 0 },
174   },
175   /* EVEX_W_0F51_P_3 */
176   {
177     { Bad_Opcode },
178     { "vsqrtsd",        { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
179   },
180   /* EVEX_W_0F54_P_0 */
181   {
182     { "vandps", { XM, Vex, EXx }, 0 },
183   },
184   /* EVEX_W_0F54_P_2 */
185   {
186     { Bad_Opcode },
187     { "vandpd", { XM, Vex, EXx }, 0 },
188   },
189   /* EVEX_W_0F55_P_0 */
190   {
191     { "vandnps",        { XM, Vex, EXx }, 0 },
192   },
193   /* EVEX_W_0F55_P_2 */
194   {
195     { Bad_Opcode },
196     { "vandnpd",        { XM, Vex, EXx }, 0 },
197   },
198   /* EVEX_W_0F56_P_0 */
199   {
200     { "vorps",  { XM, Vex, EXx }, 0 },
201   },
202   /* EVEX_W_0F56_P_2 */
203   {
204     { Bad_Opcode },
205     { "vorpd",  { XM, Vex, EXx }, 0 },
206   },
207   /* EVEX_W_0F57_P_0 */
208   {
209     { "vxorps", { XM, Vex, EXx }, 0 },
210   },
211   /* EVEX_W_0F57_P_2 */
212   {
213     { Bad_Opcode },
214     { "vxorpd", { XM, Vex, EXx }, 0 },
215   },
216   /* EVEX_W_0F58_P_0 */
217   {
218     { "vaddps", { XM, Vex, EXx, EXxEVexR }, 0 },
219   },
220   /* EVEX_W_0F58_P_1 */
221   {
222     { "vaddss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
223   },
224   /* EVEX_W_0F58_P_2 */
225   {
226     { Bad_Opcode },
227     { "vaddpd", { XM, Vex, EXx, EXxEVexR }, 0 },
228   },
229   /* EVEX_W_0F58_P_3 */
230   {
231     { Bad_Opcode },
232     { "vaddsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
233   },
234   /* EVEX_W_0F59_P_0 */
235   {
236     { "vmulps", { XM, Vex, EXx, EXxEVexR }, 0 },
237   },
238   /* EVEX_W_0F59_P_1 */
239   {
240     { "vmulss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
241   },
242   /* EVEX_W_0F59_P_2 */
243   {
244     { Bad_Opcode },
245     { "vmulpd", { XM, Vex, EXx, EXxEVexR }, 0 },
246   },
247   /* EVEX_W_0F59_P_3 */
248   {
249     { Bad_Opcode },
250     { "vmulsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
251   },
252   /* EVEX_W_0F5A_P_0 */
253   {
254     { "vcvtps2pd",   { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 },
255   },
256   /* EVEX_W_0F5A_P_1 */
257   {
258     { "vcvtss2sd",      { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 },
259   },
260   /* EVEX_W_0F5A_P_2 */
261   {
262     { Bad_Opcode },
263     { "vcvtpd2ps%XY",   { XMxmmq, EXx, EXxEVexR }, 0 },
264   },
265   /* EVEX_W_0F5A_P_3 */
266   {
267     { Bad_Opcode },
268     { "vcvtsd2ss",      { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
269   },
270   /* EVEX_W_0F5B_P_0 */
271   {
272     { "vcvtdq2ps",      { XM, EXx, EXxEVexR }, 0 },
273     { "vcvtqq2ps%XY",   { XMxmmq, EXx, EXxEVexR }, 0 },
274   },
275   /* EVEX_W_0F5B_P_1 */
276   {
277     { "vcvttps2dq",     { XM, EXx, EXxEVexS }, 0 },
278   },
279   /* EVEX_W_0F5B_P_2 */
280   {
281     { "vcvtps2dq",      { XM, EXx, EXxEVexR }, 0 },
282   },
283   /* EVEX_W_0F5C_P_0 */
284   {
285     { "vsubps", { XM, Vex, EXx, EXxEVexR }, 0 },
286   },
287   /* EVEX_W_0F5C_P_1 */
288   {
289     { "vsubss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
290   },
291   /* EVEX_W_0F5C_P_2 */
292   {
293     { Bad_Opcode },
294     { "vsubpd", { XM, Vex, EXx, EXxEVexR }, 0 },
295   },
296   /* EVEX_W_0F5C_P_3 */
297   {
298     { Bad_Opcode },
299     { "vsubsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
300   },
301   /* EVEX_W_0F5D_P_0 */
302   {
303     { "vminps", { XM, Vex, EXx, EXxEVexS }, 0 },
304   },
305   /* EVEX_W_0F5D_P_1 */
306   {
307     { "vminss", { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 },
308   },
309   /* EVEX_W_0F5D_P_2 */
310   {
311     { Bad_Opcode },
312     { "vminpd", { XM, Vex, EXx, EXxEVexS }, 0 },
313   },
314   /* EVEX_W_0F5D_P_3 */
315   {
316     { Bad_Opcode },
317     { "vminsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS }, 0 },
318   },
319   /* EVEX_W_0F5E_P_0 */
320   {
321     { "vdivps", { XM, Vex, EXx, EXxEVexR }, 0 },
322   },
323   /* EVEX_W_0F5E_P_1 */
324   {
325     { "vdivss", { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
326   },
327   /* EVEX_W_0F5E_P_2 */
328   {
329     { Bad_Opcode },
330     { "vdivpd", { XM, Vex, EXx, EXxEVexR }, 0 },
331   },
332   /* EVEX_W_0F5E_P_3 */
333   {
334     { Bad_Opcode },
335     { "vdivsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexR }, 0 },
336   },
337   /* EVEX_W_0F5F_P_0 */
338   {
339     { "vmaxps", { XM, Vex, EXx, EXxEVexS }, 0 },
340   },
341   /* EVEX_W_0F5F_P_1 */
342   {
343     { "vmaxss", { XMScalar, VexScalar, EXxmm_md, EXxEVexS }, 0 },
344   },
345   /* EVEX_W_0F5F_P_2 */
346   {
347     { Bad_Opcode },
348     { "vmaxpd", { XM, Vex, EXx, EXxEVexS }, 0 },
349   },
350   /* EVEX_W_0F5F_P_3 */
351   {
352     { Bad_Opcode },
353     { "vmaxsd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS }, 0 },
354   },
355   /* EVEX_W_0F62_P_2 */
356   {
357     { "vpunpckldq",     { XM, Vex, EXx }, 0 },
358   },
359   /* EVEX_W_0F66_P_2 */
360   {
361     { "vpcmpgtd",       { XMask, Vex, EXx }, 0 },
362   },
363   /* EVEX_W_0F6A_P_2 */
364   {
365     { "vpunpckhdq",     { XM, Vex, EXx }, 0 },
366   },
367   /* EVEX_W_0F6B_P_2 */
368   {
369     { "vpackssdw",      { XM, Vex, EXx }, 0 },
370   },
371   /* EVEX_W_0F6C_P_2 */
372   {
373     { Bad_Opcode },
374     { "vpunpcklqdq",    { XM, Vex, EXx }, 0 },
375   },
376   /* EVEX_W_0F6D_P_2 */
377   {
378     { Bad_Opcode },
379     { "vpunpckhqdq",    { XM, Vex, EXx }, 0 },
380   },
381   /* EVEX_W_0F6F_P_1 */
382   {
383     { "vmovdqu32",      { XM, EXEvexXNoBcst }, 0 },
384     { "vmovdqu64",      { XM, EXEvexXNoBcst }, 0 },
385   },
386   /* EVEX_W_0F6F_P_2 */
387   {
388     { "vmovdqa32",      { XM, EXEvexXNoBcst }, 0 },
389     { "vmovdqa64",      { XM, EXEvexXNoBcst }, 0 },
390   },
391   /* EVEX_W_0F6F_P_3 */
392   {
393     { "vmovdqu8",       { XM, EXx }, 0 },
394     { "vmovdqu16",      { XM, EXx }, 0 },
395   },
396   /* EVEX_W_0F70_P_2 */
397   {
398     { "vpshufd",        { XM, EXx, Ib }, 0 },
399   },
400   /* EVEX_W_0F72_R_2_P_2 */
401   {
402     { "vpsrld", { Vex, EXx, Ib }, 0 },
403   },
404   /* EVEX_W_0F72_R_6_P_2 */
405   {
406     { "vpslld", { Vex, EXx, Ib }, 0 },
407   },
408   /* EVEX_W_0F73_R_2_P_2 */
409   {
410     { Bad_Opcode },
411     { "vpsrlq", { Vex, EXx, Ib }, 0 },
412   },
413   /* EVEX_W_0F73_R_6_P_2 */
414   {
415     { Bad_Opcode },
416     { "vpsllq", { Vex, EXx, Ib }, 0 },
417   },
418   /* EVEX_W_0F76_P_2 */
419   {
420     { "vpcmpeqd",       { XMask, Vex, EXx }, 0 },
421   },
422   /* EVEX_W_0F78_P_0 */
423   {
424     { "vcvttps2udq",    { XM, EXx, EXxEVexS }, 0 },
425     { "vcvttpd2udq%XY", { XMxmmq, EXx, EXxEVexS }, 0 },
426   },
427   /* EVEX_W_0F78_P_2 */
428   {
429     { "vcvttps2uqq",    { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 },
430     { "vcvttpd2uqq",    { XM, EXx, EXxEVexS }, 0 },
431   },
432   /* EVEX_W_0F79_P_0 */
433   {
434     { "vcvtps2udq",     { XM, EXx, EXxEVexR }, 0 },
435     { "vcvtpd2udq%XY",  { XMxmmq, EXx, EXxEVexR }, 0 },
436   },
437   /* EVEX_W_0F79_P_2 */
438   {
439     { "vcvtps2uqq",     { XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 },
440     { "vcvtpd2uqq",     { XM, EXx, EXxEVexR }, 0 },
441   },
442   /* EVEX_W_0F7A_P_1 */
443   {
444     { "vcvtudq2pd",     { XM, EXEvexHalfBcstXmmq }, 0 },
445     { "vcvtuqq2pd",     { XM, EXx, EXxEVexR }, 0 },
446   },
447   /* EVEX_W_0F7A_P_2 */
448   {
449     { "vcvttps2qq",     { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 },
450     { "vcvttpd2qq",     { XM, EXx, EXxEVexS }, 0 },
451   },
452   /* EVEX_W_0F7A_P_3 */
453   {
454     { "vcvtudq2ps",     { XM, EXx, EXxEVexR }, 0 },
455     { "vcvtuqq2ps%XY",  { XMxmmq, EXx, EXxEVexR }, 0 },
456   },
457   /* EVEX_W_0F7B_P_2 */
458   {
459     { "vcvtps2qq",      { XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 },
460     { "vcvtpd2qq",      { XM, EXx, EXxEVexR }, 0 },
461   },
462   /* EVEX_W_0F7B_P_3 */
463   {
464     { "vcvtusi2sd%LQ",  { XMScalar, VexScalar, Ed }, 0 },
465     { "vcvtusi2sd%LQ",  { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
466   },
467   /* EVEX_W_0F7E_P_1 */
468   {
469     { Bad_Opcode },
470     { "vmovq",  { XMScalar, EXxmm_mq }, 0 },
471   },
472   /* EVEX_W_0F7F_P_1 */
473   {
474     { "vmovdqu32",      { EXxS, XM }, 0 },
475     { "vmovdqu64",      { EXxS, XM }, 0 },
476   },
477   /* EVEX_W_0F7F_P_2 */
478   {
479     { "vmovdqa32",      { EXxS, XM }, 0 },
480     { "vmovdqa64",      { EXxS, XM }, 0 },
481   },
482   /* EVEX_W_0F7F_P_3 */
483   {
484     { "vmovdqu8",       { EXxS, XM }, 0 },
485     { "vmovdqu16",      { EXxS, XM }, 0 },
486   },
487   /* EVEX_W_0FC2_P_0 */
488   {
489     { "vcmpps", { XMask, Vex, EXx, EXxEVexS, VCMP }, 0 },
490   },
491   /* EVEX_W_0FC2_P_1 */
492   {
493     { "vcmpss", { XMask, VexScalar, EXxmm_md, EXxEVexS, VCMP }, 0 },
494   },
495   /* EVEX_W_0FC2_P_2 */
496   {
497     { Bad_Opcode },
498     { "vcmppd", { XMask, Vex, EXx, EXxEVexS, VCMP }, 0 },
499   },
500   /* EVEX_W_0FC2_P_3 */
501   {
502     { Bad_Opcode },
503     { "vcmpsd", { XMask, VexScalar, EXxmm_mq, EXxEVexS, VCMP }, 0 },
504   },
505   /* EVEX_W_0FC6_P_0 */
506   {
507     { "vshufps",        { XM, Vex, EXx, Ib }, 0 },
508   },
509   /* EVEX_W_0FC6_P_2 */
510   {
511     { Bad_Opcode },
512     { "vshufpd",        { XM, Vex, EXx, Ib }, 0 },
513   },
514   /* EVEX_W_0FD2_P_2 */
515   {
516     { "vpsrld", { XM, Vex, EXxmm }, 0 },
517   },
518   /* EVEX_W_0FD3_P_2 */
519   {
520     { Bad_Opcode },
521     { "vpsrlq", { XM, Vex, EXxmm }, 0 },
522   },
523   /* EVEX_W_0FD4_P_2 */
524   {
525     { Bad_Opcode },
526     { "vpaddq", { XM, Vex, EXx }, 0 },
527   },
528   /* EVEX_W_0FD6_P_2 */
529   {
530     { Bad_Opcode },
531     { "vmovq",  { EXxmm_mq, XMScalar }, 0 },
532   },
533   /* EVEX_W_0FE6_P_1 */
534   {
535     { "vcvtdq2pd",      { XM, EXEvexHalfBcstXmmq }, 0 },
536     { "vcvtqq2pd",      { XM, EXx, EXxEVexR }, 0 },
537   },
538   /* EVEX_W_0FE6_P_2 */
539   {
540     { Bad_Opcode },
541     { "vcvttpd2dq%XY",  { XMxmmq, EXx, EXxEVexS }, 0 },
542   },
543   /* EVEX_W_0FE6_P_3 */
544   {
545     { Bad_Opcode },
546     { "vcvtpd2dq%XY",   { XMxmmq, EXx, EXxEVexR }, 0 },
547   },
548   /* EVEX_W_0FE7_P_2 */
549   {
550     { "vmovntdq",       { EXEvexXNoBcst, XM }, 0 },
551   },
552   /* EVEX_W_0FF2_P_2 */
553   {
554     { "vpslld", { XM, Vex, EXxmm }, 0 },
555   },
556   /* EVEX_W_0FF3_P_2 */
557   {
558     { Bad_Opcode },
559     { "vpsllq", { XM, Vex, EXxmm }, 0 },
560   },
561   /* EVEX_W_0FF4_P_2 */
562   {
563     { Bad_Opcode },
564     { "vpmuludq",       { XM, Vex, EXx }, 0 },
565   },
566   /* EVEX_W_0FFA_P_2 */
567   {
568     { "vpsubd", { XM, Vex, EXx }, 0 },
569   },
570   /* EVEX_W_0FFB_P_2 */
571   {
572     { Bad_Opcode },
573     { "vpsubq", { XM, Vex, EXx }, 0 },
574   },
575   /* EVEX_W_0FFE_P_2 */
576   {
577     { "vpaddd", { XM, Vex, EXx }, 0 },
578   },
579   /* EVEX_W_0F380C_P_2 */
580   {
581     { "vpermilps",      { XM, Vex, EXx }, 0 },
582   },
583   /* EVEX_W_0F380D_P_2 */
584   {
585     { Bad_Opcode },
586     { "vpermilpd",      { XM, Vex, EXx }, 0 },
587   },
588   /* EVEX_W_0F3810_P_1 */
589   {
590     { "vpmovuswb",      { EXxmmq, XM }, 0 },
591   },
592   /* EVEX_W_0F3810_P_2 */
593   {
594     { Bad_Opcode },
595     { "vpsrlvw",        { XM, Vex, EXx }, 0 },
596   },
597   /* EVEX_W_0F3811_P_1 */
598   {
599     { "vpmovusdb",      { EXxmmqd, XM }, 0 },
600   },
601   /* EVEX_W_0F3811_P_2 */
602   {
603     { Bad_Opcode },
604     { "vpsravw",        { XM, Vex, EXx }, 0 },
605   },
606   /* EVEX_W_0F3812_P_1 */
607   {
608     { "vpmovusqb",      { EXxmmdw, XM }, 0 },
609   },
610   /* EVEX_W_0F3812_P_2 */
611   {
612     { Bad_Opcode },
613     { "vpsllvw",        { XM, Vex, EXx }, 0 },
614   },
615   /* EVEX_W_0F3813_P_1 */
616   {
617     { "vpmovusdw",      { EXxmmq, XM }, 0 },
618   },
619   /* EVEX_W_0F3813_P_2 */
620   {
621     { "vcvtph2ps",      { XM, EXxmmq, EXxEVexS }, 0 },
622   },
623   /* EVEX_W_0F3814_P_1 */
624   {
625     { "vpmovusqw",      { EXxmmqd, XM }, 0 },
626   },
627   /* EVEX_W_0F3815_P_1 */
628   {
629     { "vpmovusqd",      { EXxmmq, XM }, 0 },
630   },
631   /* EVEX_W_0F3818_P_2 */
632   {
633     { "vbroadcastss",   { XM, EXxmm_md }, 0 },
634   },
635   /* EVEX_W_0F3819_P_2 */
636   {
637     { EVEX_LEN_TABLE (EVEX_LEN_0F3819_P_2_W_0) },
638     { EVEX_LEN_TABLE (EVEX_LEN_0F3819_P_2_W_1) },
639   },
640   /* EVEX_W_0F381A_P_2 */
641   {
642     { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_0) },
643     { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_1) },
644   },
645   /* EVEX_W_0F381B_P_2 */
646   {
647     { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_0) },
648     { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_1) },
649   },
650   /* EVEX_W_0F381E_P_2 */
651   {
652     { "vpabsd", { XM, EXx }, 0 },
653   },
654   /* EVEX_W_0F381F_P_2 */
655   {
656     { Bad_Opcode },
657     { "vpabsq", { XM, EXx }, 0 },
658   },
659   /* EVEX_W_0F3820_P_1 */
660   {
661     { "vpmovswb",       { EXxmmq, XM }, 0 },
662   },
663   /* EVEX_W_0F3821_P_1 */
664   {
665     { "vpmovsdb",       { EXxmmqd, XM }, 0 },
666   },
667   /* EVEX_W_0F3822_P_1 */
668   {
669     { "vpmovsqb",       { EXxmmdw, XM }, 0 },
670   },
671   /* EVEX_W_0F3823_P_1 */
672   {
673     { "vpmovsdw",       { EXxmmq, XM }, 0 },
674   },
675   /* EVEX_W_0F3824_P_1 */
676   {
677     { "vpmovsqw",       { EXxmmqd, XM }, 0 },
678   },
679   /* EVEX_W_0F3825_P_1 */
680   {
681     { "vpmovsqd",       { EXxmmq, XM }, 0 },
682   },
683   /* EVEX_W_0F3825_P_2 */
684   {
685     { "vpmovsxdq",      { XM, EXxmmq }, 0 },
686   },
687   /* EVEX_W_0F3826_P_1 */
688   {
689     { "vptestnmb",      { XMask, Vex, EXx }, 0 },
690     { "vptestnmw",      { XMask, Vex, EXx }, 0 },
691   },
692   /* EVEX_W_0F3826_P_2 */
693   {
694     { "vptestmb",       { XMask, Vex, EXx }, 0 },
695     { "vptestmw",       { XMask, Vex, EXx }, 0 },
696   },
697   /* EVEX_W_0F3828_P_1 */
698   {
699     { "vpmovm2b",       { XM, MaskR }, 0 },
700     { "vpmovm2w",       { XM, MaskR }, 0 },
701   },
702   /* EVEX_W_0F3828_P_2 */
703   {
704     { Bad_Opcode },
705     { "vpmuldq",        { XM, Vex, EXx }, 0 },
706   },
707   /* EVEX_W_0F3829_P_1 */
708   {
709     { "vpmovb2m",       { XMask, EXx }, 0 },
710     { "vpmovw2m",       { XMask, EXx }, 0 },
711   },
712   /* EVEX_W_0F3829_P_2 */
713   {
714     { Bad_Opcode },
715     { "vpcmpeqq",       { XMask, Vex, EXx }, 0 },
716   },
717   /* EVEX_W_0F382A_P_1 */
718   {
719     { Bad_Opcode },
720     { "vpbroadcastmb2q",        { XM, MaskR }, 0 },
721   },
722   /* EVEX_W_0F382A_P_2 */
723   {
724     { "vmovntdqa",      { XM, EXEvexXNoBcst }, 0 },
725   },
726   /* EVEX_W_0F382B_P_2 */
727   {
728     { "vpackusdw",      { XM, Vex, EXx }, 0 },
729   },
730   /* EVEX_W_0F3830_P_1 */
731   {
732     { "vpmovwb",        { EXxmmq, XM }, 0 },
733   },
734   /* EVEX_W_0F3831_P_1 */
735   {
736     { "vpmovdb",        { EXxmmqd, XM }, 0 },
737   },
738   /* EVEX_W_0F3832_P_1 */
739   {
740     { "vpmovqb",        { EXxmmdw, XM }, 0 },
741   },
742   /* EVEX_W_0F3833_P_1 */
743   {
744     { "vpmovdw",        { EXxmmq, XM }, 0 },
745   },
746   /* EVEX_W_0F3834_P_1 */
747   {
748     { "vpmovqw",        { EXxmmqd, XM }, 0 },
749   },
750   /* EVEX_W_0F3835_P_1 */
751   {
752     { "vpmovqd",        { EXxmmq, XM }, 0 },
753   },
754   /* EVEX_W_0F3835_P_2 */
755   {
756     { "vpmovzxdq",      { XM, EXxmmq }, 0 },
757   },
758   /* EVEX_W_0F3837_P_2 */
759   {
760     { Bad_Opcode },
761     { "vpcmpgtq",       { XMask, Vex, EXx }, 0 },
762   },
763   /* EVEX_W_0F3838_P_1 */
764   {
765     { "vpmovm2d",       { XM, MaskR }, 0 },
766     { "vpmovm2q",       { XM, MaskR }, 0 },
767   },
768   /* EVEX_W_0F3839_P_1 */
769   {
770     { "vpmovd2m",       { XMask, EXx }, 0 },
771     { "vpmovq2m",       { XMask, EXx }, 0 },
772   },
773   /* EVEX_W_0F383A_P_1 */
774   {
775     { "vpbroadcastmw2d",        { XM, MaskR }, 0 },
776   },
777   /* EVEX_W_0F3840_P_2 */
778   {
779     { "vpmulld",        { XM, Vex, EXx }, 0 },
780     { "vpmullq",        { XM, Vex, EXx }, 0 },
781   },
782   /* EVEX_W_0F3852_P_1 */
783   {
784     { "vdpbf16ps",      { XM, Vex, EXx }, 0 },
785     { Bad_Opcode },
786   },
787   /* EVEX_W_0F3854_P_2 */
788   {
789     { "vpopcntb",       { XM, EXx }, 0 },
790     { "vpopcntw",       { XM, EXx }, 0 },
791   },
792   /* EVEX_W_0F3855_P_2 */
793   {
794     { "vpopcntd",       { XM, EXx }, 0 },
795     { "vpopcntq",       { XM, EXx }, 0 },
796   },
797   /* EVEX_W_0F3858_P_2 */
798   {
799     { "vpbroadcastd",   { XM, EXxmm_md }, 0 },
800   },
801   /* EVEX_W_0F3859_P_2 */
802   {
803     { "vbroadcasti32x2",        { XM, EXxmm_mq }, 0 },
804     { "vpbroadcastq",   { XM, EXxmm_mq }, 0 },
805   },
806   /* EVEX_W_0F385A_P_2 */
807   {
808     { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_0) },
809     { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_1) },
810   },
811   /* EVEX_W_0F385B_P_2 */
812   {
813     { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_0) },
814     { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_1) },
815   },
816   /* EVEX_W_0F3862_P_2 */
817   {
818     { "vpexpandb", { XM, EXbScalar }, 0 },
819     { "vpexpandw", { XM, EXwScalar }, 0 },
820   },
821   /* EVEX_W_0F3863_P_2 */
822   {
823     { "vpcompressb",   { EXbScalar, XM }, 0 },
824     { "vpcompressw",   { EXwScalar, XM }, 0 },
825   },
826   /* EVEX_W_0F3866_P_2 */
827   {
828     { "vpblendmb",      { XM, Vex, EXx }, 0 },
829     { "vpblendmw",      { XM, Vex, EXx }, 0 },
830   },
831   /* EVEX_W_0F3868_P_3 */
832   {
833     { "vp2intersectd", { XMask, Vex, EXx, EXxEVexS }, 0 },
834     { "vp2intersectq", { XMask, Vex, EXx, EXxEVexS }, 0 },
835   },
836   /* EVEX_W_0F3870_P_2 */
837   {
838     { Bad_Opcode },
839     { "vpshldvw",  { XM, Vex, EXx }, 0 },
840   },
841   /* EVEX_W_0F3871_P_2 */
842   {
843     { "vpshldvd",  { XM, Vex, EXx }, 0 },
844     { "vpshldvq",  { XM, Vex, EXx }, 0 },
845   },
846   /* EVEX_W_0F3872_P_1 */
847   {
848     { "vcvtneps2bf16%XY", { XMxmmq, EXx }, 0 },
849     { Bad_Opcode },
850   },
851   /* EVEX_W_0F3872_P_2 */
852   {
853     { Bad_Opcode },
854     { "vpshrdvw",  { XM, Vex, EXx }, 0 },
855   },
856   /* EVEX_W_0F3872_P_3 */
857   {
858     { "vcvtne2ps2bf16", { XM, Vex, EXx}, 0 },
859     { Bad_Opcode },
860   },
861   /* EVEX_W_0F3873_P_2 */
862   {
863     { "vpshrdvd",  { XM, Vex, EXx }, 0 },
864     { "vpshrdvq",  { XM, Vex, EXx }, 0 },
865   },
866   /* EVEX_W_0F3875_P_2 */
867   {
868     { "vpermi2b",       { XM, Vex, EXx }, 0 },
869     { "vpermi2w",       { XM, Vex, EXx }, 0 },
870   },
871   /* EVEX_W_0F3878_P_2 */
872   {
873     { "vpbroadcastb",   { XM, EXxmm_mb }, 0 },
874   },
875   /* EVEX_W_0F3879_P_2 */
876   {
877     { "vpbroadcastw",   { XM, EXxmm_mw }, 0 },
878   },
879   /* EVEX_W_0F387A_P_2 */
880   {
881     { "vpbroadcastb",   { XM, Rd }, 0 },
882   },
883   /* EVEX_W_0F387B_P_2 */
884   {
885     { "vpbroadcastw",   { XM, Rd }, 0 },
886   },
887   /* EVEX_W_0F387D_P_2 */
888   {
889     { "vpermt2b",       { XM, Vex, EXx }, 0 },
890     { "vpermt2w",       { XM, Vex, EXx }, 0 },
891   },
892   /* EVEX_W_0F3883_P_2 */
893   {
894     { Bad_Opcode },
895     { "vpmultishiftqb", { XM, Vex, EXx }, 0 },
896   },
897   /* EVEX_W_0F388D_P_2 */
898   {
899     { "vpermb", { XM, Vex, EXx }, 0 },
900     { "vpermw", { XM, Vex, EXx }, 0 },
901   },
902   /* EVEX_W_0F3891_P_2 */
903   {
904     { "vpgatherqd",     { XMxmmq, MVexVSIBQDWpX }, 0 },
905     { "vpgatherqq",     { XM, MVexVSIBQWpX }, 0 },
906   },
907   /* EVEX_W_0F3893_P_2 */
908   {
909     { "vgatherqps",     { XMxmmq, MVexVSIBQDWpX }, 0 },
910     { "vgatherqpd",     { XM, MVexVSIBQWpX }, 0 },
911   },
912   /* EVEX_W_0F38A1_P_2 */
913   {
914     { "vpscatterqd",    { MVexVSIBQDWpX, XMxmmq }, 0 },
915     { "vpscatterqq",    { MVexVSIBQWpX, XM }, 0 },
916   },
917   /* EVEX_W_0F38A3_P_2 */
918   {
919     { "vscatterqps",    { MVexVSIBQDWpX, XMxmmq }, 0 },
920     { "vscatterqpd",    { MVexVSIBQWpX, XM }, 0 },
921   },
922   /* EVEX_W_0F38C7_R_1_P_2 */
923   {
924     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_P_2_W_0) },
925     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_P_2_W_1) },
926   },
927   /* EVEX_W_0F38C7_R_2_P_2 */
928   {
929     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_P_2_W_0) },
930     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_P_2_W_1) },
931   },
932   /* EVEX_W_0F38C7_R_5_P_2 */
933   {
934     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_P_2_W_0) },
935     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_P_2_W_1) },
936   },
937   /* EVEX_W_0F38C7_R_6_P_2 */
938   {
939     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_P_2_W_0) },
940     { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_P_2_W_1) },
941   },
942   /* EVEX_W_0F3A00_P_2 */
943   {
944     { Bad_Opcode },
945     { "vpermq", { XM, EXx, Ib }, 0 },
946   },
947   /* EVEX_W_0F3A01_P_2 */
948   {
949     { Bad_Opcode },
950     { "vpermpd",        { XM, EXx, Ib }, 0 },
951   },
952   /* EVEX_W_0F3A04_P_2 */
953   {
954     { "vpermilps",      { XM, EXx, Ib }, 0 },
955   },
956   /* EVEX_W_0F3A05_P_2 */
957   {
958     { Bad_Opcode },
959     { "vpermilpd",      { XM, EXx, Ib }, 0 },
960   },
961   /* EVEX_W_0F3A08_P_2 */
962   {
963     { "vrndscaleps",    { XM, EXx, EXxEVexS, Ib }, 0 },
964   },
965   /* EVEX_W_0F3A09_P_2 */
966   {
967     { Bad_Opcode },
968     { "vrndscalepd",    { XM, EXx, EXxEVexS, Ib }, 0 },
969   },
970   /* EVEX_W_0F3A0A_P_2 */
971   {
972     { "vrndscaless",    { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 },
973   },
974   /* EVEX_W_0F3A0B_P_2 */
975   {
976     { Bad_Opcode },
977     { "vrndscalesd",    { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 },
978   },
979   /* EVEX_W_0F3A18_P_2 */
980   {
981     { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_P_2_W_0) },
982     { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_P_2_W_1) },
983   },
984   /* EVEX_W_0F3A19_P_2 */
985   {
986     { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_P_2_W_0) },
987     { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_P_2_W_1) },
988   },
989   /* EVEX_W_0F3A1A_P_2 */
990   {
991     { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_P_2_W_0) },
992     { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_P_2_W_1) },
993   },
994   /* EVEX_W_0F3A1B_P_2 */
995   {
996     { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_P_2_W_0) },
997     { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_P_2_W_1) },
998   },
999   /* EVEX_W_0F3A1D_P_2 */
1000   {
1001     { "vcvtps2ph",      { EXxmmq, XM, EXxEVexS, Ib }, 0 },
1002   },
1003   /* EVEX_W_0F3A21_P_2 */
1004   {
1005     { "vinsertps",      { XMM, Vex, EXxmm_md, Ib }, 0 },
1006   },
1007   /* EVEX_W_0F3A23_P_2 */
1008   {
1009     { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_0) },
1010     { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_1) },
1011   },
1012   /* EVEX_W_0F3A38_P_2 */
1013   {
1014     { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_0) },
1015     { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_1) },
1016   },
1017   /* EVEX_W_0F3A39_P_2 */
1018   {
1019     { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_0) },
1020     { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_1) },
1021   },
1022   /* EVEX_W_0F3A3A_P_2 */
1023   {
1024     { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_0) },
1025     { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_1) },
1026   },
1027   /* EVEX_W_0F3A3B_P_2 */
1028   {
1029     { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_0) },
1030     { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_1) },
1031   },
1032   /* EVEX_W_0F3A3E_P_2 */
1033   {
1034     { "vpcmpub",        { XMask, Vex, EXx, VPCMP }, 0 },
1035     { "vpcmpuw",        { XMask, Vex, EXx, VPCMP }, 0 },
1036   },
1037   /* EVEX_W_0F3A3F_P_2 */
1038   {
1039     { "vpcmpb", { XMask, Vex, EXx, VPCMP }, 0 },
1040     { "vpcmpw", { XMask, Vex, EXx, VPCMP }, 0 },
1041   },
1042   /* EVEX_W_0F3A42_P_2 */
1043   {
1044     { "vdbpsadbw",      { XM, Vex, EXx, Ib }, 0 },
1045   },
1046   /* EVEX_W_0F3A43_P_2 */
1047   {
1048     { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_0) },
1049     { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_1) },
1050   },
1051   /* EVEX_W_0F3A50_P_2 */
1052   {
1053     { "vrangeps",       { XM, Vex, EXx, EXxEVexS, Ib }, 0 },
1054     { "vrangepd",       { XM, Vex, EXx, EXxEVexS, Ib }, 0 },
1055   },
1056   /* EVEX_W_0F3A51_P_2 */
1057   {
1058     { "vrangess",       { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 },
1059     { "vrangesd",       { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 },
1060   },
1061   /* EVEX_W_0F3A56_P_2 */
1062   {
1063     { "vreduceps",      { XM, EXx, EXxEVexS, Ib }, 0 },
1064     { "vreducepd",      { XM, EXx, EXxEVexS, Ib }, 0 },
1065   },
1066   /* EVEX_W_0F3A57_P_2 */
1067   {
1068     { "vreducess",      { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 },
1069     { "vreducesd",      { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 },
1070   },
1071   /* EVEX_W_0F3A66_P_2 */
1072   {
1073     { "vfpclassps%XZ",  { XMask, EXx, Ib }, 0 },
1074     { "vfpclasspd%XZ",  { XMask, EXx, Ib }, 0 },
1075   },
1076   /* EVEX_W_0F3A67_P_2 */
1077   {
1078     { "vfpclassss",     { XMask, EXxmm_md, Ib }, 0 },
1079     { "vfpclasssd",     { XMask, EXxmm_mq, Ib }, 0 },
1080   },
1081   /* EVEX_W_0F3A70_P_2 */
1082   {
1083     { Bad_Opcode },
1084     { "vpshldw",   { XM, Vex, EXx, Ib }, 0 },
1085   },
1086   /* EVEX_W_0F3A71_P_2 */
1087   {
1088     { "vpshldd",   { XM, Vex, EXx, Ib }, 0 },
1089     { "vpshldq",   { XM, Vex, EXx, Ib }, 0 },
1090   },
1091   /* EVEX_W_0F3A72_P_2 */
1092   {
1093     { Bad_Opcode },
1094     { "vpshrdw",   { XM, Vex, EXx, Ib }, 0 },
1095   },
1096   /* EVEX_W_0F3A73_P_2 */
1097   {
1098     { "vpshrdd",   { XM, Vex, EXx, Ib }, 0 },
1099     { "vpshrdq",   { XM, Vex, EXx, Ib }, 0 },
1100   },
1101   /* EVEX_W_0F3ACE_P_2 */
1102   {
1103     { Bad_Opcode },
1104     { "vgf2p8affineqb",    { XM, Vex, EXx, Ib }, 0 },
1105   },
1106   /* EVEX_W_0F3ACF_P_2 */
1107   {
1108     { Bad_Opcode },
1109     { "vgf2p8affineinvqb", { XM, Vex, EXx, Ib }, 0 },
1110   },