i386-dis-evex-w.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  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. },