xref: /netbsd-src/external/gpl3/binutils.old/dist/opcodes/i386-dis-evex-w.h (revision c42dbd0ed2e61fe6eda8590caa852ccf34719964)
1   /* EVEX_W_0F5B_P_0 */
2   {
3     { "vcvtdq2ps",	{ XM, EXx, EXxEVexR }, 0 },
4     { "vcvtqq2ps%XY",	{ XMxmmq, EXx, EXxEVexR }, 0 },
5   },
6   /* EVEX_W_0F62 */
7   {
8     { "vpunpckldq",	{ XM, Vex, EXx }, PREFIX_DATA },
9   },
10   /* EVEX_W_0F66 */
11   {
12     { "vpcmpgtd",	{ MaskG, Vex, EXx }, PREFIX_DATA },
13   },
14   /* EVEX_W_0F6A */
15   {
16     { "vpunpckhdq",	{ XM, Vex, EXx }, PREFIX_DATA },
17   },
18   /* EVEX_W_0F6B */
19   {
20     { "vpackssdw",	{ XM, Vex, EXx }, PREFIX_DATA },
21   },
22   /* EVEX_W_0F6C */
23   {
24     { Bad_Opcode },
25     { "vpunpcklqdq",	{ XM, Vex, EXx }, PREFIX_DATA },
26   },
27   /* EVEX_W_0F6D */
28   {
29     { Bad_Opcode },
30     { "vpunpckhqdq",	{ XM, Vex, EXx }, PREFIX_DATA },
31   },
32   /* EVEX_W_0F6F_P_1 */
33   {
34     { "vmovdqu32",	{ XM, EXEvexXNoBcst }, 0 },
35     { "vmovdqu64",	{ XM, EXEvexXNoBcst }, 0 },
36   },
37   /* EVEX_W_0F6F_P_2 */
38   {
39     { "vmovdqa32",	{ XM, EXEvexXNoBcst }, 0 },
40     { "vmovdqa64",	{ XM, EXEvexXNoBcst }, 0 },
41   },
42   /* EVEX_W_0F6F_P_3 */
43   {
44     { "vmovdqu8",	{ XM, EXx }, 0 },
45     { "vmovdqu16",	{ XM, EXx }, 0 },
46   },
47   /* EVEX_W_0F70_P_2 */
48   {
49     { "vpshufd",	{ XM, EXx, Ib }, 0 },
50   },
51   /* EVEX_W_0F72_R_2 */
52   {
53     { "vpsrld",	{ Vex, EXx, Ib }, PREFIX_DATA },
54   },
55   /* EVEX_W_0F72_R_6 */
56   {
57     { "vpslld",	{ Vex, EXx, Ib }, PREFIX_DATA },
58   },
59   /* EVEX_W_0F73_R_2 */
60   {
61     { Bad_Opcode },
62     { "vpsrlq",	{ Vex, EXx, Ib }, PREFIX_DATA },
63   },
64   /* EVEX_W_0F73_R_6 */
65   {
66     { Bad_Opcode },
67     { "vpsllq",	{ Vex, EXx, Ib }, PREFIX_DATA },
68   },
69   /* EVEX_W_0F76 */
70   {
71     { "vpcmpeqd",	{ MaskG, Vex, EXx }, PREFIX_DATA },
72   },
73   /* EVEX_W_0F78_P_0 */
74   {
75     { "vcvttps2udq",	{ XM, EXx, EXxEVexS }, 0 },
76     { "vcvttpd2udq%XY",	{ XMxmmq, EXx, EXxEVexS }, 0 },
77   },
78   /* EVEX_W_0F78_P_2 */
79   {
80     { "vcvttps2uqq",	{ XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 },
81     { "vcvttpd2uqq",	{ XM, EXx, EXxEVexS }, 0 },
82   },
83   /* EVEX_W_0F79_P_0 */
84   {
85     { "vcvtps2udq",	{ XM, EXx, EXxEVexR }, 0 },
86     { "vcvtpd2udq%XY",	{ XMxmmq, EXx, EXxEVexR }, 0 },
87   },
88   /* EVEX_W_0F79_P_2 */
89   {
90     { "vcvtps2uqq",	{ XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 },
91     { "vcvtpd2uqq",	{ XM, EXx, EXxEVexR }, 0 },
92   },
93   /* EVEX_W_0F7A_P_1 */
94   {
95     { "vcvtudq2pd",	{ XM, EXEvexHalfBcstXmmq }, 0 },
96     { "vcvtuqq2pd",	{ XM, EXx, EXxEVexR }, 0 },
97   },
98   /* EVEX_W_0F7A_P_2 */
99   {
100     { "vcvttps2qq",	{ XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 },
101     { "vcvttpd2qq",	{ XM, EXx, EXxEVexS }, 0 },
102   },
103   /* EVEX_W_0F7A_P_3 */
104   {
105     { "vcvtudq2ps",	{ XM, EXx, EXxEVexR }, 0 },
106     { "vcvtuqq2ps%XY",	{ XMxmmq, EXx, EXxEVexR }, 0 },
107   },
108   /* EVEX_W_0F7B_P_2 */
109   {
110     { "vcvtps2qq",	{ XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 },
111     { "vcvtpd2qq",	{ XM, EXx, EXxEVexR }, 0 },
112   },
113   /* EVEX_W_0F7E_P_1 */
114   {
115     { Bad_Opcode },
116     { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) },
117   },
118   /* EVEX_W_0F7F_P_1 */
119   {
120     { "vmovdqu32",	{ EXxS, XM }, 0 },
121     { "vmovdqu64",	{ EXxS, XM }, 0 },
122   },
123   /* EVEX_W_0F7F_P_2 */
124   {
125     { "vmovdqa32",	{ EXxS, XM }, 0 },
126     { "vmovdqa64",	{ EXxS, XM }, 0 },
127   },
128   /* EVEX_W_0F7F_P_3 */
129   {
130     { "vmovdqu8",	{ EXxS, XM }, 0 },
131     { "vmovdqu16",	{ EXxS, XM }, 0 },
132   },
133   /* EVEX_W_0FD2 */
134   {
135     { "vpsrld",		{ XM, Vex, EXxmm }, PREFIX_DATA },
136   },
137   /* EVEX_W_0FD3 */
138   {
139     { Bad_Opcode },
140     { "vpsrlq",		{ XM, Vex, EXxmm }, PREFIX_DATA },
141   },
142   /* EVEX_W_0FD4 */
143   {
144     { Bad_Opcode },
145     { "vpaddq",		{ XM, Vex, EXx }, PREFIX_DATA },
146   },
147   /* EVEX_W_0FD6 */
148   {
149     { Bad_Opcode },
150     { VEX_LEN_TABLE (VEX_LEN_0FD6) },
151   },
152   /* EVEX_W_0FE6_P_1 */
153   {
154     { "vcvtdq2pd",	{ XM, EXEvexHalfBcstXmmq }, 0 },
155     { "vcvtqq2pd",	{ XM, EXx, EXxEVexR }, 0 },
156   },
157   /* EVEX_W_0FE7 */
158   {
159     { "vmovntdq",	{ EXEvexXNoBcst, XM }, PREFIX_DATA },
160   },
161   /* EVEX_W_0FF2 */
162   {
163     { "vpslld",		{ XM, Vex, EXxmm }, PREFIX_DATA },
164   },
165   /* EVEX_W_0FF3 */
166   {
167     { Bad_Opcode },
168     { "vpsllq",		{ XM, Vex, EXxmm }, PREFIX_DATA },
169   },
170   /* EVEX_W_0FF4 */
171   {
172     { Bad_Opcode },
173     { "vpmuludq",	{ XM, Vex, EXx }, PREFIX_DATA },
174   },
175   /* EVEX_W_0FFA */
176   {
177     { "vpsubd",		{ XM, Vex, EXx }, PREFIX_DATA },
178   },
179   /* EVEX_W_0FFB */
180   {
181     { Bad_Opcode },
182     { "vpsubq",		{ XM, Vex, EXx }, PREFIX_DATA },
183   },
184   /* EVEX_W_0FFE */
185   {
186     { "vpaddd",		{ XM, Vex, EXx }, PREFIX_DATA },
187   },
188   /* EVEX_W_0F3810_P_1 */
189   {
190     { "vpmovuswb",	{ EXxmmq, XM }, 0 },
191   },
192   /* EVEX_W_0F3810_P_2 */
193   {
194     { Bad_Opcode },
195     { "vpsrlvw",	{ XM, Vex, EXx }, 0 },
196   },
197   /* EVEX_W_0F3811_P_1 */
198   {
199     { "vpmovusdb",	{ EXxmmqd, XM }, 0 },
200   },
201   /* EVEX_W_0F3811_P_2 */
202   {
203     { Bad_Opcode },
204     { "vpsravw",	{ XM, Vex, EXx }, 0 },
205   },
206   /* EVEX_W_0F3812_P_1 */
207   {
208     { "vpmovusqb",	{ EXxmmdw, XM }, 0 },
209   },
210   /* EVEX_W_0F3812_P_2 */
211   {
212     { Bad_Opcode },
213     { "vpsllvw",	{ XM, Vex, EXx }, 0 },
214   },
215   /* EVEX_W_0F3813_P_1 */
216   {
217     { "vpmovusdw",	{ EXxmmq, XM }, 0 },
218   },
219   /* EVEX_W_0F3814_P_1 */
220   {
221     { "vpmovusqw",	{ EXxmmqd, XM }, 0 },
222   },
223   /* EVEX_W_0F3815_P_1 */
224   {
225     { "vpmovusqd",	{ EXxmmq, XM }, 0 },
226   },
227   /* EVEX_W_0F3819_L_n */
228   {
229     { "vbroadcastf32x2",	{ XM, EXq }, PREFIX_DATA },
230     { "vbroadcastsd",	{ XM, EXq }, PREFIX_DATA },
231   },
232   /* EVEX_W_0F381A_M_0_L_n */
233   {
234     { "vbroadcastf32x4",	{ XM, EXxmm }, PREFIX_DATA },
235     { "vbroadcastf64x2",	{ XM, EXxmm }, PREFIX_DATA },
236   },
237   /* EVEX_W_0F381B_M_0_L_2 */
238   {
239     { "vbroadcastf32x8",	{ XM, EXymm }, PREFIX_DATA },
240     { "vbroadcastf64x4",	{ XM, EXymm }, PREFIX_DATA },
241   },
242   /* EVEX_W_0F381E */
243   {
244     { "vpabsd",	{ XM, EXx }, PREFIX_DATA },
245   },
246   /* EVEX_W_0F381F */
247   {
248     { Bad_Opcode },
249     { "vpabsq",	{ XM, EXx }, PREFIX_DATA },
250   },
251   /* EVEX_W_0F3820_P_1 */
252   {
253     { "vpmovswb",	{ EXxmmq, XM }, 0 },
254   },
255   /* EVEX_W_0F3821_P_1 */
256   {
257     { "vpmovsdb",	{ EXxmmqd, XM }, 0 },
258   },
259   /* EVEX_W_0F3822_P_1 */
260   {
261     { "vpmovsqb",	{ EXxmmdw, XM }, 0 },
262   },
263   /* EVEX_W_0F3823_P_1 */
264   {
265     { "vpmovsdw",	{ EXxmmq, XM }, 0 },
266   },
267   /* EVEX_W_0F3824_P_1 */
268   {
269     { "vpmovsqw",	{ EXxmmqd, XM }, 0 },
270   },
271   /* EVEX_W_0F3825_P_1 */
272   {
273     { "vpmovsqd",	{ EXxmmq, XM }, 0 },
274   },
275   /* EVEX_W_0F3825_P_2 */
276   {
277     { "vpmovsxdq",	{ XM, EXxmmq }, 0 },
278   },
279   /* EVEX_W_0F3828_P_2 */
280   {
281     { Bad_Opcode },
282     { "vpmuldq",	{ XM, Vex, EXx }, 0 },
283   },
284   /* EVEX_W_0F3829_P_2 */
285   {
286     { Bad_Opcode },
287     { "vpcmpeqq",	{ MaskG, Vex, EXx }, 0 },
288   },
289   /* EVEX_W_0F382A_P_1 */
290   {
291     { Bad_Opcode },
292     { MOD_TABLE (MOD_EVEX_0F382A_P_1_W_1) },
293   },
294   /* EVEX_W_0F382A_P_2 */
295   {
296     { "vmovntdqa",	{ XM, EXEvexXNoBcst }, 0 },
297   },
298   /* EVEX_W_0F382B */
299   {
300     { "vpackusdw",	{ XM, Vex, EXx }, PREFIX_DATA },
301   },
302   /* EVEX_W_0F3830_P_1 */
303   {
304     { "vpmovwb",	{ EXxmmq, XM }, 0 },
305   },
306   /* EVEX_W_0F3831_P_1 */
307   {
308     { "vpmovdb",	{ EXxmmqd, XM }, 0 },
309   },
310   /* EVEX_W_0F3832_P_1 */
311   {
312     { "vpmovqb",	{ EXxmmdw, XM }, 0 },
313   },
314   /* EVEX_W_0F3833_P_1 */
315   {
316     { "vpmovdw",	{ EXxmmq, XM }, 0 },
317   },
318   /* EVEX_W_0F3834_P_1 */
319   {
320     { "vpmovqw",	{ EXxmmqd, XM }, 0 },
321   },
322   /* EVEX_W_0F3835_P_1 */
323   {
324     { "vpmovqd",	{ EXxmmq, XM }, 0 },
325   },
326   /* EVEX_W_0F3835_P_2 */
327   {
328     { "vpmovzxdq",	{ XM, EXxmmq }, 0 },
329   },
330   /* EVEX_W_0F3837 */
331   {
332     { Bad_Opcode },
333     { "vpcmpgtq",	{ MaskG, Vex, EXx }, PREFIX_DATA },
334   },
335   /* EVEX_W_0F383A_P_1 */
336   {
337     { MOD_TABLE (MOD_EVEX_0F383A_P_1_W_0) },
338   },
339   /* EVEX_W_0F3859 */
340   {
341     { "vbroadcasti32x2",	{ XM, EXq }, PREFIX_DATA },
342     { "vpbroadcastq",	{ XM, EXq }, PREFIX_DATA },
343   },
344   /* EVEX_W_0F385A_M_0_L_n */
345   {
346     { "vbroadcasti32x4",	{ XM, EXxmm }, PREFIX_DATA },
347     { "vbroadcasti64x2",	{ XM, EXxmm }, PREFIX_DATA },
348   },
349   /* EVEX_W_0F385B_M_0_L_2 */
350   {
351     { "vbroadcasti32x8",	{ XM, EXymm }, PREFIX_DATA },
352     { "vbroadcasti64x4",	{ XM, EXymm }, PREFIX_DATA },
353   },
354   /* EVEX_W_0F3870 */
355   {
356     { Bad_Opcode },
357     { "vpshldvw",  { XM, Vex, EXx }, PREFIX_DATA },
358   },
359   /* EVEX_W_0F3872_P_2 */
360   {
361     { Bad_Opcode },
362     { "vpshrdvw",  { XM, Vex, EXx }, 0 },
363   },
364   /* EVEX_W_0F387A */
365   {
366     { MOD_TABLE (MOD_EVEX_0F387A_W_0) },
367   },
368   /* EVEX_W_0F387B */
369   {
370     { MOD_TABLE (MOD_EVEX_0F387B_W_0) },
371   },
372   /* EVEX_W_0F3883 */
373   {
374     { Bad_Opcode },
375     { "vpmultishiftqb",	{ XM, Vex, EXx }, PREFIX_DATA },
376   },
377   /* EVEX_W_0F3A18_L_n */
378   {
379     { "vinsertf32x4",	{ XM, Vex, EXxmm, Ib }, PREFIX_DATA },
380     { "vinsertf64x2",	{ XM, Vex, EXxmm, Ib }, PREFIX_DATA },
381   },
382   /* EVEX_W_0F3A19_L_n */
383   {
384     { "vextractf32x4",	{ EXxmm, XM, Ib }, PREFIX_DATA },
385     { "vextractf64x2",	{ EXxmm, XM, Ib }, PREFIX_DATA },
386   },
387   /* EVEX_W_0F3A1A_L_2 */
388   {
389     { "vinsertf32x8",	{ XM, Vex, EXymm, Ib }, PREFIX_DATA },
390     { "vinsertf64x4",	{ XM, Vex, EXymm, Ib }, PREFIX_DATA },
391   },
392   /* EVEX_W_0F3A1B_L_2 */
393   {
394     { "vextractf32x8",	{ EXymm, XM, Ib }, PREFIX_DATA },
395     { "vextractf64x4",	{ EXymm, XM, Ib }, PREFIX_DATA },
396   },
397   /* EVEX_W_0F3A21 */
398   {
399     { VEX_LEN_TABLE (VEX_LEN_0F3A21) },
400   },
401   /* EVEX_W_0F3A23_L_n */
402   {
403     { "vshuff32x4",	{ XM, Vex, EXx, Ib }, PREFIX_DATA },
404     { "vshuff64x2",	{ XM, Vex, EXx, Ib }, PREFIX_DATA },
405   },
406   /* EVEX_W_0F3A38_L_n */
407   {
408     { "vinserti32x4",	{ XM, Vex, EXxmm, Ib }, PREFIX_DATA },
409     { "vinserti64x2",	{ XM, Vex, EXxmm, Ib }, PREFIX_DATA },
410   },
411   /* EVEX_W_0F3A39_L_n */
412   {
413     { "vextracti32x4",	{ EXxmm, XM, Ib }, PREFIX_DATA },
414     { "vextracti64x2",	{ EXxmm, XM, Ib }, PREFIX_DATA },
415   },
416   /* EVEX_W_0F3A3A_L_2 */
417   {
418     { "vinserti32x8",	{ XM, Vex, EXymm, Ib }, PREFIX_DATA },
419     { "vinserti64x4",	{ XM, Vex, EXymm, Ib }, PREFIX_DATA },
420   },
421   /* EVEX_W_0F3A3B_L_2 */
422   {
423     { "vextracti32x8",	{ EXymm, XM, Ib }, PREFIX_DATA },
424     { "vextracti64x4",	{ EXymm, XM, Ib }, PREFIX_DATA },
425   },
426   /* EVEX_W_0F3A42 */
427   {
428     { "vdbpsadbw",	{ XM, Vex, EXx, Ib }, 0 },
429   },
430   /* EVEX_W_0F3A43_L_n */
431   {
432     { "vshufi32x4",	{ XM, Vex, EXx, Ib }, PREFIX_DATA },
433     { "vshufi64x2",	{ XM, Vex, EXx, Ib }, PREFIX_DATA },
434   },
435   /* EVEX_W_0F3A70 */
436   {
437     { Bad_Opcode },
438     { "vpshldw",   { XM, Vex, EXx, Ib }, 0 },
439   },
440   /* EVEX_W_0F3A72 */
441   {
442     { Bad_Opcode },
443     { "vpshrdw",   { XM, Vex, EXx, Ib }, 0 },
444   },
445   /* EVEX_W_MAP5_5B_P_0 */
446   {
447     { "vcvtdq2ph%XY",	{ XMxmmq, EXx, EXxEVexR }, 0 },
448     { "vcvtqq2ph%XZ",	{ XMM, EXx, EXxEVexR }, 0 },
449   },
450   /* EVEX_W_MAP5_7A_P_3 */
451   {
452     { "vcvtudq2ph%XY",	{ XMxmmq, EXx, EXxEVexR }, 0 },
453     { "vcvtuqq2ph%XZ",	{ XMM, EXx, EXxEVexR }, 0 },
454   },
455