dis_tables_sse.inc 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453
  1. /////////////////////////////////////////////////////////////////////////
  2. // $Id: dis_tables_sse.inc 11878 2013-10-11 20:09:51Z sshwarts $
  3. /////////////////////////////////////////////////////////////////////////
  4. //
  5. // Copyright (c) 2005-2013 Stanislav Shwartsman
  6. // Written by Stanislav Shwartsman [sshwarts at sourceforge net]
  7. //
  8. // This library is free software; you can redistribute it and/or
  9. // modify it under the terms of the GNU Lesser General Public
  10. // License as published by the Free Software Foundation; either
  11. // version 2 of the License, or (at your option) any later version.
  12. //
  13. // This library is distributed in the hope that it will be useful,
  14. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. // Lesser General Public License for more details.
  17. //
  18. // You should have received a copy of the GNU Lesser General Public
  19. // License along with this library; if not, write to the Free Software
  20. // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  21. //
  22. /////////////////////////////////////////////////////////////////////////
  23. /* ************************************************************************ */
  24. /* SSE opcodes */
  25. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_ERR[4] = {
  26. /* -- */ { 0, &Ia_Invalid },
  27. /* 66 */ { 0, &Ia_Invalid },
  28. /* F3 */ { 0, &Ia_Invalid },
  29. /* F2 */ { 0, &Ia_Invalid }
  30. };
  31. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f10[4] = {
  32. /* -- */ { 0, &Ia_movups_Vps_Wps },
  33. /* 66 */ { 0, &Ia_movupd_Vpd_Wpd },
  34. /* F3 */ { 0, &Ia_movss_Vss_Wss },
  35. /* F2 */ { 0, &Ia_movsd_Vsd_Wsd }
  36. };
  37. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f11[4] = {
  38. /* -- */ { 0, &Ia_movups_Wps_Vps },
  39. /* 66 */ { 0, &Ia_movupd_Wpd_Vpd },
  40. /* F3 */ { 0, &Ia_movss_Wss_Vss },
  41. /* F2 */ { 0, &Ia_movsd_Wsd_Vsd }
  42. };
  43. static BxDisasmOpcodeTable_t BxDisasmGroupModMOVHLPS[2] = {
  44. /* R */ { 0, &Ia_movhlps_Vps_Udq },
  45. /* M */ { 0, &Ia_movlps_Vps_Mq }
  46. };
  47. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f12[4] = {
  48. /* -- */ { GRPMOD(MOVHLPS) },
  49. /* 66 */ { 0, &Ia_movlpd_Vpd_Mq },
  50. /* F3 */ { 0, &Ia_movsldup_Vdq_Wdq },
  51. /* F2 */ { 0, &Ia_movddup_Vdq_Wq }
  52. };
  53. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f13[2] = {
  54. /* -- */ { 0, &Ia_movlps_Mq_Vps },
  55. /* 66 */ { 0, &Ia_movlpd_Mq_Vpd }
  56. };
  57. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f14[2] = {
  58. /* -- */ { 0, &Ia_unpcklps_Vps_Wps },
  59. /* 66 */ { 0, &Ia_unpcklpd_Vpd_Wpd }
  60. };
  61. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f15[2] = {
  62. /* -- */ { 0, &Ia_unpckhps_Vps_Wps },
  63. /* 66 */ { 0, &Ia_unpckhpd_Vpd_Wpd }
  64. };
  65. static BxDisasmOpcodeTable_t BxDisasmGroupModMOVLHPS[2] = {
  66. /* R */ { 0, &Ia_movlhps_Vps_Udq },
  67. /* M */ { 0, &Ia_movhps_Vps_Mq }
  68. };
  69. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f16[4] = {
  70. /* -- */ { GRPMOD(MOVLHPS) },
  71. /* 66 */ { 0, &Ia_movhpd_Vpd_Mq },
  72. /* F3 */ { 0, &Ia_movshdup_Vdq_Wdq },
  73. /* F2 */ { 0, &Ia_Invalid }
  74. };
  75. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f17[2] = {
  76. /* -- */ { 0, &Ia_movhps_Mq_Vps },
  77. /* 66 */ { 0, &Ia_movhpd_Mq_Vpd },
  78. };
  79. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f28[2] = {
  80. /* -- */ { 0, &Ia_movaps_Vps_Wps },
  81. /* 66 */ { 0, &Ia_movapd_Vpd_Wpd }
  82. };
  83. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f29[2] = {
  84. /* -- */ { 0, &Ia_movaps_Wps_Vps },
  85. /* 66 */ { 0, &Ia_movapd_Wpd_Vpd }
  86. };
  87. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2a[4] = {
  88. /* -- */ { 0, &Ia_cvtpi2ps_Vps_Qq },
  89. /* 66 */ { 0, &Ia_cvtpi2pd_Vpd_Qq },
  90. /* F3 */ { 0, &Ia_cvtsi2ss_Vss_Ey },
  91. /* F2 */ { 0, &Ia_cvtsi2sd_Vsd_Ey }
  92. };
  93. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2b[4] = {
  94. /* -- */ { 0, &Ia_movntps_Mps_Vps },
  95. /* 66 */ { 0, &Ia_movntpd_Mpd_Vpd },
  96. /* F3 */ { 0, &Ia_movntss_Mss_Vss }, // SSE4A
  97. /* F2 */ { 0, &Ia_movntsd_Msd_Vsd } // SSE4A
  98. };
  99. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2c[4] = {
  100. /* -- */ { 0, &Ia_cvttps2pi_Pq_Wps },
  101. /* 66 */ { 0, &Ia_cvttpd2pi_Pq_Wpd },
  102. /* F3 */ { 0, &Ia_cvttss2si_Gy_Wss },
  103. /* F2 */ { 0, &Ia_cvttsd2si_Gy_Wsd }
  104. };
  105. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2d[4] = {
  106. /* -- */ { 0, &Ia_cvtps2pi_Pq_Wps },
  107. /* 66 */ { 0, &Ia_cvtpd2pi_Pq_Wpd },
  108. /* F3 */ { 0, &Ia_cvtss2si_Gy_Wss },
  109. /* F2 */ { 0, &Ia_cvtsd2si_Gy_Wsd }
  110. };
  111. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2e[2] = {
  112. /* -- */ { 0, &Ia_ucomiss_Vss_Wss },
  113. /* 66 */ { 0, &Ia_ucomisd_Vsd_Wsd }
  114. };
  115. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2f[2] = {
  116. /* -- */ { 0, &Ia_comiss_Vss_Wss },
  117. /* 66 */ { 0, &Ia_comisd_Vsd_Wsd }
  118. };
  119. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f50[2] = {
  120. /* -- */ { 0, &Ia_movmskps_Gd_Ups },
  121. /* 66 */ { 0, &Ia_movmskpd_Gd_Upd }
  122. };
  123. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f51[4] = {
  124. /* -- */ { 0, &Ia_sqrtps_Vps_Wps },
  125. /* 66 */ { 0, &Ia_sqrtpd_Vpd_Wpd },
  126. /* F3 */ { 0, &Ia_sqrtss_Vss_Wss },
  127. /* F2 */ { 0, &Ia_sqrtsd_Vsd_Wsd }
  128. };
  129. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f52[4] = {
  130. /* -- */ { 0, &Ia_rsqrtps_Vps_Wps },
  131. /* 66 */ { 0, &Ia_Invalid },
  132. /* F3 */ { 0, &Ia_rsqrtss_Vss_Wss },
  133. /* F2 */ { 0, &Ia_Invalid }
  134. };
  135. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f53[4] = {
  136. /* -- */ { 0, &Ia_rcpps_Vps_Wps },
  137. /* 66 */ { 0, &Ia_Invalid },
  138. /* F3 */ { 0, &Ia_rcpss_Vss_Wss },
  139. /* F2 */ { 0, &Ia_Invalid }
  140. };
  141. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f54[2] = {
  142. /* -- */ { 0, &Ia_andps_Vps_Wps },
  143. /* 66 */ { 0, &Ia_andpd_Vpd_Wpd }
  144. };
  145. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f55[2] = {
  146. /* -- */ { 0, &Ia_andnps_Vps_Wps },
  147. /* 66 */ { 0, &Ia_andnpd_Vpd_Wpd }
  148. };
  149. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f56[2] = {
  150. /* -- */ { 0, &Ia_orps_Vps_Wps },
  151. /* 66 */ { 0, &Ia_orpd_Vpd_Wpd }
  152. };
  153. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f57[2] = {
  154. /* -- */ { 0, &Ia_xorps_Vps_Wps },
  155. /* 66 */ { 0, &Ia_xorpd_Vpd_Wpd },
  156. };
  157. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f58[4] = {
  158. /* -- */ { 0, &Ia_addps_Vps_Wps },
  159. /* 66 */ { 0, &Ia_addpd_Vpd_Wpd },
  160. /* F3 */ { 0, &Ia_addss_Vss_Wss },
  161. /* F2 */ { 0, &Ia_addsd_Vsd_Wsd }
  162. };
  163. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f59[4] = {
  164. /* -- */ { 0, &Ia_mulps_Vps_Wps },
  165. /* 66 */ { 0, &Ia_mulpd_Vpd_Wpd },
  166. /* F3 */ { 0, &Ia_mulss_Vss_Wss },
  167. /* F2 */ { 0, &Ia_mulsd_Vsd_Wsd }
  168. };
  169. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5a[4] = {
  170. /* -- */ { 0, &Ia_cvtps2pd_Vpd_Wps },
  171. /* 66 */ { 0, &Ia_cvtpd2ps_Vps_Wpd },
  172. /* F3 */ { 0, &Ia_cvtss2sd_Vsd_Wss },
  173. /* F2 */ { 0, &Ia_cvtsd2ss_Vss_Wsd }
  174. };
  175. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5b[4] = {
  176. /* -- */ { 0, &Ia_cvtdq2ps_Vps_Wdq },
  177. /* 66 */ { 0, &Ia_cvtps2dq_Vdq_Wps },
  178. /* F3 */ { 0, &Ia_cvttps2dq_Vdq_Wps },
  179. /* F2 */ { 0, &Ia_Invalid }
  180. };
  181. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5c[4] = {
  182. /* -- */ { 0, &Ia_subps_Vps_Wps },
  183. /* 66 */ { 0, &Ia_subpd_Vpd_Wpd },
  184. /* F3 */ { 0, &Ia_subss_Vss_Wss },
  185. /* F2 */ { 0, &Ia_subsd_Vsd_Wsd }
  186. };
  187. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5d[4] = {
  188. /* -- */ { 0, &Ia_minps_Vps_Wps },
  189. /* 66 */ { 0, &Ia_minpd_Vpd_Wpd },
  190. /* F3 */ { 0, &Ia_minss_Vss_Wss },
  191. /* F2 */ { 0, &Ia_minsd_Vsd_Wsd }
  192. };
  193. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5e[4] = {
  194. /* -- */ { 0, &Ia_divps_Vps_Wps },
  195. /* 66 */ { 0, &Ia_divpd_Vpd_Wpd },
  196. /* F3 */ { 0, &Ia_divss_Vss_Wss },
  197. /* F2 */ { 0, &Ia_divsd_Vsd_Wsd }
  198. };
  199. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5f[4] = {
  200. /* -- */ { 0, &Ia_maxps_Vps_Wps },
  201. /* 66 */ { 0, &Ia_maxpd_Vpd_Wpd },
  202. /* F3 */ { 0, &Ia_maxss_Vss_Wss },
  203. /* F2 */ { 0, &Ia_maxsd_Vsd_Wsd }
  204. };
  205. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f60[2] = {
  206. /* -- */ { 0, &Ia_punpcklbw_Pq_Qd },
  207. /* 66 */ { 0, &Ia_punpcklbw_Vdq_Wdq }
  208. };
  209. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f61[2] = {
  210. /* -- */ { 0, &Ia_punpcklwd_Pq_Qd },
  211. /* 66 */ { 0, &Ia_punpcklwd_Vdq_Wdq }
  212. };
  213. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f62[2] = {
  214. /* -- */ { 0, &Ia_punpckldq_Pq_Qd },
  215. /* 66 */ { 0, &Ia_punpckldq_Vdq_Wdq }
  216. };
  217. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f63[2] = {
  218. /* -- */ { 0, &Ia_packsswb_Pq_Qq },
  219. /* 66 */ { 0, &Ia_packsswb_Vdq_Wdq }
  220. };
  221. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f64[2] = {
  222. /* -- */ { 0, &Ia_pcmpgtb_Pq_Qq },
  223. /* 66 */ { 0, &Ia_pcmpgtb_Vdq_Wdq }
  224. };
  225. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f65[2] = {
  226. /* -- */ { 0, &Ia_pcmpgtw_Pq_Qq },
  227. /* 66 */ { 0, &Ia_pcmpgtw_Vdq_Wdq }
  228. };
  229. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f66[2] = {
  230. /* -- */ { 0, &Ia_pcmpgtd_Pq_Qq },
  231. /* 66 */ { 0, &Ia_pcmpgtd_Vdq_Wdq }
  232. };
  233. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f67[2] = {
  234. /* -- */ { 0, &Ia_packuswb_Pq_Qq },
  235. /* 66 */ { 0, &Ia_packuswb_Vdq_Wdq }
  236. };
  237. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f68[2] = {
  238. /* -- */ { 0, &Ia_punpckhbw_Pq_Qq },
  239. /* 66 */ { 0, &Ia_punpckhbw_Vdq_Wdq }
  240. };
  241. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f69[2] = {
  242. /* -- */ { 0, &Ia_punpckhwd_Pq_Qq },
  243. /* 66 */ { 0, &Ia_punpckhwd_Vdq_Wdq }
  244. };
  245. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6a[2] = {
  246. /* -- */ { 0, &Ia_punpckhdq_Pq_Qq },
  247. /* 66 */ { 0, &Ia_punpckhdq_Vdq_Wdq }
  248. };
  249. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6b[2] = {
  250. /* -- */ { 0, &Ia_packssdw_Pq_Qq },
  251. /* 66 */ { 0, &Ia_packssdw_Vdq_Wdq }
  252. };
  253. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6e[2] = {
  254. /* -- */ { 0, &Ia_movd_Pq_Ed },
  255. /* 66 */ { 0, &Ia_movd_Vdq_Ed }
  256. };
  257. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6eQ[2] = {
  258. /* -- */ { 0, &Ia_movq_Pq_Eq },
  259. /* 66 */ { 0, &Ia_movq_Vdq_Eq }
  260. };
  261. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6f[4] = {
  262. /* -- */ { 0, &Ia_movq_Pq_Qq },
  263. /* 66 */ { 0, &Ia_movdqa_Vdq_Wdq },
  264. /* F3 */ { 0, &Ia_movdqu_Vdq_Wdq },
  265. /* F2 */ { 0, &Ia_Invalid }
  266. };
  267. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f70[4] = {
  268. /* -- */ { 0, &Ia_pshufw_Pq_Qq_Ib },
  269. /* 66 */ { 0, &Ia_pshufd_Vdq_Wdq_Ib },
  270. /* F3 */ { 0, &Ia_pshufhw_Vdq_Wdq_Ib },
  271. /* F2 */ { 0, &Ia_pshuflw_Vdq_Wdq_Ib }
  272. };
  273. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f74[2] = {
  274. /* -- */ { 0, &Ia_pcmpeqb_Pq_Qq },
  275. /* 66 */ { 0, &Ia_pcmpeqb_Vdq_Wdq }
  276. };
  277. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f75[2] = {
  278. /* -- */ { 0, &Ia_pcmpeqw_Pq_Qq },
  279. /* 66 */ { 0, &Ia_pcmpeqw_Vdq_Wdq }
  280. };
  281. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f76[2] = {
  282. /* -- */ { 0, &Ia_pcmpeqd_Pq_Qq },
  283. /* 66 */ { 0, &Ia_pcmpeqd_Vdq_Wdq }
  284. };
  285. static BxDisasmOpcodeTable_t BxDisasmGroupSSE4A_G17[8] = {
  286. /* 0 */ { 0, &Ia_extrq_Udq_Ib_Ib }, // SSE4A
  287. /* 1 */ { 0, &Ia_Invalid },
  288. /* 2 */ { 0, &Ia_Invalid },
  289. /* 3 */ { 0, &Ia_Invalid },
  290. /* 4 */ { 0, &Ia_Invalid },
  291. /* 5 */ { 0, &Ia_Invalid },
  292. /* 6 */ { 0, &Ia_Invalid },
  293. /* 7 */ { 0, &Ia_Invalid }
  294. };
  295. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f78[4] = {
  296. /* -- */ { 0, &Ia_vmread_Ed_Gd }, // VMX
  297. /* 66 */ { GRPN(SSE4A_G17) }, // SSE4A
  298. /* F3 */ { 0, &Ia_Invalid },
  299. /* F2 */ { 0, &Ia_insertq_Vdq_Uq_Ib_Ib } // SSE4A
  300. };
  301. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f78Q[4] = {
  302. /* -- */ { 0, &Ia_vmread_Eq_Gq }, // VMX
  303. /* 66 */ { GRPN(SSE4A_G17) }, // SSE4A
  304. /* F3 */ { 0, &Ia_Invalid },
  305. /* F2 */ { 0, &Ia_insertq_Vdq_Uq_Ib_Ib } // SSE4A
  306. };
  307. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f79[4] = {
  308. /* -- */ { 0, &Ia_vmwrite_Gd_Ed }, // VMX
  309. /* 66 */ { 0, &Ia_extrq_Vdq_Uq }, // SSE4A
  310. /* F3 */ { 0, &Ia_Invalid },
  311. /* F2 */ { 0, &Ia_insertq_Vdq_Udq } // SSE4A
  312. };
  313. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f79Q[4] = {
  314. /* -- */ { 0, &Ia_vmwrite_Gq_Eq }, // VMX
  315. /* 66 */ { 0, &Ia_extrq_Vdq_Uq }, // SSE4A
  316. /* F3 */ { 0, &Ia_Invalid },
  317. /* F2 */ { 0, &Ia_insertq_Vdq_Udq } // SSE4A
  318. };
  319. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7c[4] = {
  320. /* -- */ { 0, &Ia_Invalid },
  321. /* 66 */ { 0, &Ia_haddpd_Vpd_Wpd },
  322. /* F3 */ { 0, &Ia_Invalid },
  323. /* F2 */ { 0, &Ia_haddps_Vps_Wps }
  324. };
  325. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7d[4] = {
  326. /* -- */ { 0, &Ia_Invalid },
  327. /* 66 */ { 0, &Ia_hsubpd_Vpd_Wpd },
  328. /* F3 */ { 0, &Ia_Invalid },
  329. /* F2 */ { 0, &Ia_hsubps_Vps_Wps }
  330. };
  331. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7e[4] = {
  332. /* -- */ { 0, &Ia_movd_Ed_Pq },
  333. /* 66 */ { 0, &Ia_movd_Ed_Vd },
  334. /* F3 */ { 0, &Ia_movq_Vq_Wq },
  335. /* F2 */ { 0, &Ia_Invalid }
  336. };
  337. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7eQ[4] = {
  338. /* -- */ { 0, &Ia_movq_Eq_Pq },
  339. /* 66 */ { 0, &Ia_movq_Eq_Vq },
  340. /* F2 */ { 0, &Ia_movq_Vq_Wq },
  341. /* F3 */ { 0, &Ia_Invalid }
  342. };
  343. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7f[4] = {
  344. /* -- */ { 0, &Ia_movq_Qq_Pq },
  345. /* 66 */ { 0, &Ia_movdqa_Wdq_Vdq },
  346. /* F2 */ { 0, &Ia_movdqu_Wdq_Vdq },
  347. /* F3 */ { 0, &Ia_Invalid }
  348. };
  349. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc2[4] = {
  350. /* -- */ { 0, &Ia_cmpps_Vps_Wps_Ib },
  351. /* 66 */ { 0, &Ia_cmppd_Vpd_Wpd_Ib },
  352. /* F3 */ { 0, &Ia_cmpss_Vss_Wss_Ib },
  353. /* F2 */ { 0, &Ia_cmpsd_Vsd_Wsd_Ib }
  354. };
  355. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc4[2] = {
  356. /* -- */ { 0, &Ia_pinsrw_Pq_Ew_Ib },
  357. /* 66 */ { 0, &Ia_pinsrw_Vdq_Ew_Ib }
  358. };
  359. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc5[2] = {
  360. /* -- */ { 0, &Ia_pextrw_Gd_Nq_Ib },
  361. /* 66 */ { 0, &Ia_pextrw_Gd_Udq_Ib }
  362. };
  363. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc6[2] = {
  364. /* -- */ { 0, &Ia_shufps_Vps_Wps_Ib },
  365. /* 66 */ { 0, &Ia_shufpd_Vpd_Wpd_Ib }
  366. };
  367. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd0[4] = {
  368. /* -- */ { 0, &Ia_Invalid },
  369. /* 66 */ { 0, &Ia_addsubpd_Vpd_Wpd },
  370. /* F2 */ { 0, &Ia_Invalid },
  371. /* F3 */ { 0, &Ia_addsubps_Vps_Wps },
  372. };
  373. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd1[2] = {
  374. /* -- */ { 0, &Ia_psrlw_Pq_Qq },
  375. /* 66 */ { 0, &Ia_psrlw_Vdq_Wdq }
  376. };
  377. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd2[2] = {
  378. /* -- */ { 0, &Ia_psrld_Pq_Qq },
  379. /* 66 */ { 0, &Ia_psrld_Vdq_Wdq }
  380. };
  381. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd3[2] = {
  382. /* -- */ { 0, &Ia_psrlq_Pq_Qq },
  383. /* 66 */ { 0, &Ia_psrlq_Vdq_Wdq }
  384. };
  385. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd4[2] = {
  386. /* -- */ { 0, &Ia_paddq_Pq_Qq },
  387. /* 66 */ { 0, &Ia_paddq_Vdq_Wdq }
  388. };
  389. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd5[2] = {
  390. /* -- */ { 0, &Ia_pmullw_Pq_Qq },
  391. /* 66 */ { 0, &Ia_pmullw_Vdq_Wdq }
  392. };
  393. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd6[4] = {
  394. /* -- */ { 0, &Ia_Invalid },
  395. /* 66 */ { 0, &Ia_movq_Wq_Vq },
  396. /* F3 */ { 0, &Ia_movq2dq_Vdq_Qq },
  397. /* F2 */ { 0, &Ia_movdq2q_Pq_Udq }
  398. };
  399. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd7[2] = {
  400. /* -- */ { 0, &Ia_pmovmskb_Gd_Nq },
  401. /* 66 */ { 0, &Ia_pmovmskb_Gd_Udq }
  402. };
  403. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd8[2] = {
  404. /* -- */ { 0, &Ia_psubusb_Pq_Qq },
  405. /* 66 */ { 0, &Ia_psubusb_Vdq_Wdq }
  406. };
  407. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd9[2] = {
  408. /* -- */ { 0, &Ia_psubusw_Pq_Qq },
  409. /* 66 */ { 0, &Ia_psubusw_Vdq_Wdq }
  410. };
  411. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fda[2] = {
  412. /* -- */ { 0, &Ia_pminub_Pq_Qq },
  413. /* 66 */ { 0, &Ia_pminub_Vdq_Wdq }
  414. };
  415. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdb[2] = {
  416. /* -- */ { 0, &Ia_pand_Pq_Qq },
  417. /* 66 */ { 0, &Ia_pand_Vdq_Wdq }
  418. };
  419. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdc[2] = {
  420. /* -- */ { 0, &Ia_paddusb_Pq_Qq },
  421. /* 66 */ { 0, &Ia_paddusb_Vdq_Wdq }
  422. };
  423. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdd[2] = {
  424. /* -- */ { 0, &Ia_paddusw_Pq_Qq },
  425. /* 66 */ { 0, &Ia_paddusw_Vdq_Wdq }
  426. };
  427. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fde[2] = {
  428. /* -- */ { 0, &Ia_pmaxub_Pq_Qq },
  429. /* 66 */ { 0, &Ia_pmaxub_Vdq_Wdq }
  430. };
  431. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdf[2] = {
  432. /* -- */ { 0, &Ia_pandn_Pq_Qq },
  433. /* 66 */ { 0, &Ia_pandn_Vdq_Wdq }
  434. };
  435. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe0[2] = {
  436. /* -- */ { 0, &Ia_pavgb_Pq_Qq },
  437. /* 66 */ { 0, &Ia_pavgb_Vdq_Wdq }
  438. };
  439. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe1[2] = {
  440. /* -- */ { 0, &Ia_psraw_Pq_Qq },
  441. /* 66 */ { 0, &Ia_psraw_Vdq_Wdq }
  442. };
  443. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe2[2] = {
  444. /* -- */ { 0, &Ia_psrad_Pq_Qq },
  445. /* 66 */ { 0, &Ia_psrad_Vdq_Wdq }
  446. };
  447. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe3[2] = {
  448. /* -- */ { 0, &Ia_pavgw_Pq_Qq },
  449. /* 66 */ { 0, &Ia_pavgw_Vdq_Wdq }
  450. };
  451. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe4[2] = {
  452. /* -- */ { 0, &Ia_pmulhuw_Pq_Qq },
  453. /* 66 */ { 0, &Ia_pmulhuw_Vdq_Wdq }
  454. };
  455. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe5[2] = {
  456. /* -- */ { 0, &Ia_pmulhw_Pq_Qq },
  457. /* 66 */ { 0, &Ia_pmulhw_Vdq_Wdq }
  458. };
  459. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe6[4] = {
  460. /* -- */ { 0, &Ia_Invalid },
  461. /* 66 */ { 0, &Ia_cvttpd2dq_Vq_Wpd },
  462. /* F3 */ { 0, &Ia_cvtdq2pd_Vpd_Wq },
  463. /* F2 */ { 0, &Ia_cvtpd2dq_Vq_Wpd }
  464. };
  465. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe7[2] = {
  466. /* -- */ { 0, &Ia_movntq_Mq_Pq },
  467. /* 66 */ { 0, &Ia_movntdq_Mdq_Vdq }
  468. };
  469. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe8[2] = {
  470. /* -- */ { 0, &Ia_psubsb_Pq_Qq },
  471. /* 66 */ { 0, &Ia_psubsb_Vdq_Wdq }
  472. };
  473. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe9[2] = {
  474. /* -- */ { 0, &Ia_psubsw_Pq_Qq },
  475. /* 66 */ { 0, &Ia_psubsw_Vdq_Wdq }
  476. };
  477. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fea[2] = {
  478. /* -- */ { 0, &Ia_pminsw_Pq_Qq },
  479. /* 66 */ { 0, &Ia_pminsw_Vdq_Wdq }
  480. };
  481. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0feb[2] = {
  482. /* -- */ { 0, &Ia_por_Pq_Qq },
  483. /* 66 */ { 0, &Ia_por_Vdq_Wdq }
  484. };
  485. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fec[2] = {
  486. /* -- */ { 0, &Ia_paddsb_Pq_Qq },
  487. /* 66 */ { 0, &Ia_paddsb_Vdq_Wdq }
  488. };
  489. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fed[2] = {
  490. /* -- */ { 0, &Ia_paddsw_Pq_Qq },
  491. /* 66 */ { 0, &Ia_paddsw_Vdq_Wdq }
  492. };
  493. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fee[2] = {
  494. /* -- */ { 0, &Ia_pmaxsw_Pq_Qq },
  495. /* 66 */ { 0, &Ia_pmaxsw_Vdq_Wdq }
  496. };
  497. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fef[2] = {
  498. /* -- */ { 0, &Ia_pxor_Pq_Qq },
  499. /* 66 */ { 0, &Ia_pxor_Vdq_Wdq }
  500. };
  501. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff1[2] = {
  502. /* -- */ { 0, &Ia_psllw_Pq_Qq },
  503. /* 66 */ { 0, &Ia_psllw_Vdq_Wdq }
  504. };
  505. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff2[2] = {
  506. /* -- */ { 0, &Ia_pslld_Pq_Qq },
  507. /* 66 */ { 0, &Ia_pslld_Vdq_Wdq }
  508. };
  509. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff3[2] = {
  510. /* -- */ { 0, &Ia_psllq_Pq_Qq },
  511. /* 66 */ { 0, &Ia_psllq_Vdq_Wdq }
  512. };
  513. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff4[2] = {
  514. /* -- */ { 0, &Ia_pmuludq_Pq_Qq },
  515. /* 66 */ { 0, &Ia_pmuludq_Vdq_Wdq }
  516. };
  517. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff5[2] = {
  518. /* -- */ { 0, &Ia_pmaddwd_Pq_Qq },
  519. /* 66 */ { 0, &Ia_pmaddwd_Vdq_Wdq }
  520. };
  521. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff6[2] = {
  522. /* -- */ { 0, &Ia_psadbw_Pq_Qq },
  523. /* 66 */ { 0, &Ia_psadbw_Vdq_Wdq }
  524. };
  525. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff7[2] = {
  526. /* -- */ { 0, &Ia_maskmovq_Pq_Nq },
  527. /* 66 */ { 0, &Ia_maskmovdqu_Vdq_Udq }
  528. };
  529. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff8[2] = {
  530. /* -- */ { 0, &Ia_psubb_Pq_Qq },
  531. /* 66 */ { 0, &Ia_psubb_Vdq_Wdq }
  532. };
  533. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff9[2] = {
  534. /* -- */ { 0, &Ia_psubw_Pq_Qq },
  535. /* 66 */ { 0, &Ia_psubw_Vdq_Wdq }
  536. };
  537. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffa[2] = {
  538. /* -- */ { 0, &Ia_psubd_Pq_Qq },
  539. /* 66 */ { 0, &Ia_psubd_Vdq_Wdq }
  540. };
  541. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffb[2] = {
  542. /* -- */ { 0, &Ia_psubq_Pq_Qq },
  543. /* 66 */ { 0, &Ia_psubq_Vdq_Wdq }
  544. };
  545. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffc[2] = {
  546. /* -- */ { 0, &Ia_paddb_Pq_Qq },
  547. /* 66 */ { 0, &Ia_paddb_Vdq_Wdq }
  548. };
  549. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffd[2] = {
  550. /* -- */ { 0, &Ia_paddw_Pq_Qq },
  551. /* 66 */ { 0, &Ia_paddw_Vdq_Wdq }
  552. };
  553. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffe[2] = {
  554. /* -- */ { 0, &Ia_paddd_Pq_Qq },
  555. /* 66 */ { 0, &Ia_paddd_Vdq_Wdq }
  556. };
  557. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1202[2] = {
  558. /* -- */ { 0, &Ia_psrlw_Nq_Ib },
  559. /* 66 */ { 0, &Ia_psrlw_Udq_Ib }
  560. };
  561. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1204[2] = {
  562. /* -- */ { 0, &Ia_psraw_Nq_Ib },
  563. /* 66 */ { 0, &Ia_psraw_Udq_Ib }
  564. };
  565. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1206[2] = {
  566. /* -- */ { 0, &Ia_psllw_Nq_Ib },
  567. /* 66 */ { 0, &Ia_psllw_Udq_Ib }
  568. };
  569. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1302[2] = {
  570. /* -- */ { 0, &Ia_psrld_Nq_Ib },
  571. /* 66 */ { 0, &Ia_psrld_Udq_Ib }
  572. };
  573. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1304[2] = {
  574. /* -- */ { 0, &Ia_psrad_Nq_Ib },
  575. /* 66 */ { 0, &Ia_psrad_Udq_Ib }
  576. };
  577. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1306[2] = {
  578. /* -- */ { 0, &Ia_pslld_Nq_Ib },
  579. /* 66 */ { 0, &Ia_pslld_Udq_Ib }
  580. };
  581. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1402[2] = {
  582. /* -- */ { 0, &Ia_psrlq_Nq_Ib },
  583. /* 66 */ { 0, &Ia_psrlq_Udq_Ib }
  584. };
  585. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1406[2] = {
  586. /* -- */ { 0, &Ia_psllq_Nq_Ib },
  587. /* 66 */ { 0, &Ia_psllq_Udq_Ib }
  588. };
  589. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3800[2] = {
  590. /* -- */ { 0, &Ia_pshufb_Pq_Qq }, // SSSE3
  591. /* 66 */ { 0, &Ia_pshufb_Vdq_Wdq }
  592. };
  593. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3801[2] = {
  594. /* -- */ { 0, &Ia_phaddw_Pq_Qq }, // SSSE3
  595. /* 66 */ { 0, &Ia_phaddw_Vdq_Wdq }
  596. };
  597. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3802[2] = {
  598. /* -- */ { 0, &Ia_phaddd_Pq_Qq }, // SSSE3
  599. /* 66 */ { 0, &Ia_phaddd_Vdq_Wdq }
  600. };
  601. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3803[2] = {
  602. /* -- */ { 0, &Ia_phaddsw_Pq_Qq }, // SSSE3
  603. /* 66 */ { 0, &Ia_phaddsw_Vdq_Wdq }
  604. };
  605. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3804[2] = {
  606. /* -- */ { 0, &Ia_pmaddubsw_Pq_Qq }, // SSSE3
  607. /* 66 */ { 0, &Ia_pmaddubsw_Vdq_Wdq }
  608. };
  609. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3805[2] = {
  610. /* -- */ { 0, &Ia_phsubw_Pq_Qq }, // SSSE3
  611. /* 66 */ { 0, &Ia_phsubw_Vdq_Wdq }
  612. };
  613. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3806[2] = {
  614. /* -- */ { 0, &Ia_phsubd_Pq_Qq }, // SSSE3
  615. /* 66 */ { 0, &Ia_phsubd_Vdq_Wdq }
  616. };
  617. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3807[2] = {
  618. /* -- */ { 0, &Ia_phsubsw_Pq_Qq }, // SSSE3
  619. /* 66 */ { 0, &Ia_phsubsw_Vdq_Wdq }
  620. };
  621. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3808[2] = {
  622. /* -- */ { 0, &Ia_psignb_Pq_Qq }, // SSSE3
  623. /* 66 */ { 0, &Ia_psignb_Vdq_Wdq }
  624. };
  625. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3809[2] = {
  626. /* -- */ { 0, &Ia_psignw_Pq_Qq }, // SSSE3
  627. /* 66 */ { 0, &Ia_psignw_Vdq_Wdq }
  628. };
  629. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380a[2] = {
  630. /* -- */ { 0, &Ia_psignd_Pq_Qq }, // SSSE3
  631. /* 66 */ { 0, &Ia_psignd_Vdq_Wdq }
  632. };
  633. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380b[2] = {
  634. /* -- */ { 0, &Ia_pmulhrsw_Pq_Qq }, // SSSE3
  635. /* 66 */ { 0, &Ia_pmulhrsw_Vdq_Wdq }
  636. };
  637. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381c[2] = {
  638. /* -- */ { 0, &Ia_pabsb_Pq_Qq }, // SSSE3
  639. /* 66 */ { 0, &Ia_pabsb_Vdq_Wdq }
  640. };
  641. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381d[2] = {
  642. /* -- */ { 0, &Ia_pabsw_Pq_Qq }, // SSSE3
  643. /* 66 */ { 0, &Ia_pabsw_Vdq_Wdq }
  644. };
  645. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381e[2] = {
  646. /* -- */ { 0, &Ia_pabsd_Pq_Qq }, // SSSE3
  647. /* 66 */ { 0, &Ia_pabsd_Vdq_Wdq }
  648. };
  649. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0w[4] = {
  650. /* -- */ { 0, &Ia_movbe_Gw_Mw },
  651. /* 66 */ { 0, &Ia_Invalid },
  652. /* F3 */ { 0, &Ia_Invalid },
  653. /* F2 */ { 0, &Ia_crc32_Gd_Eb }
  654. };
  655. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0d[4] = {
  656. /* -- */ { 0, &Ia_movbe_Gd_Md },
  657. /* 66 */ { 0, &Ia_Invalid },
  658. /* F3 */ { 0, &Ia_Invalid },
  659. /* F2 */ { 0, &Ia_crc32_Gd_Eb }
  660. };
  661. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0q[4] = {
  662. /* -- */ { 0, &Ia_movbe_Gq_Mq },
  663. /* 66 */ { 0, &Ia_Invalid },
  664. /* F3 */ { 0, &Ia_Invalid },
  665. /* F2 */ { 0, &Ia_crc32_Gd_Eb }
  666. };
  667. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_0f38f0[3] = {
  668. /* 16 */ { GRPSSE(0f38f0w) },
  669. /* 32 */ { GRPSSE(0f38f0d) },
  670. /* 64 */ { GRPSSE(0f38f0q) },
  671. };
  672. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1w[4] = {
  673. /* -- */ { 0, &Ia_movbe_Mw_Gw },
  674. /* 66 */ { 0, &Ia_Invalid },
  675. /* F3 */ { 0, &Ia_Invalid },
  676. /* F2 */ { 0, &Ia_crc32_Gd_Ew }
  677. };
  678. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1d[4] = {
  679. /* -- */ { 0, &Ia_movbe_Md_Gd },
  680. /* 66 */ { 0, &Ia_Invalid },
  681. /* F3 */ { 0, &Ia_Invalid },
  682. /* F2 */ { 0, &Ia_crc32_Gd_Ed }
  683. };
  684. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1q[4] = {
  685. /* -- */ { 0, &Ia_movbe_Mq_Gq },
  686. /* 66 */ { 0, &Ia_Invalid },
  687. /* F3 */ { 0, &Ia_Invalid },
  688. /* F2 */ { 0, &Ia_crc32_Gd_Eq }
  689. };
  690. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_0f38f1[3] = {
  691. /* 16 */ { GRPSSE(0f38f1w) },
  692. /* 32 */ { GRPSSE(0f38f1d) },
  693. /* 64 */ { GRPSSE(0f38f1q) },
  694. };
  695. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_adcx[3] = {
  696. /* 16 */ { 0, &Ia_adcx_Gd_Ed },
  697. /* 32 */ { 0, &Ia_adcx_Gd_Ed },
  698. /* 64 */ { 0, &Ia_adcx_Gq_Eq },
  699. };
  700. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_adox[3] = {
  701. /* 16 */ { 0, &Ia_adox_Gd_Ed },
  702. /* 32 */ { 0, &Ia_adox_Gd_Ed },
  703. /* 64 */ { 0, &Ia_adox_Gq_Eq },
  704. };
  705. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f6[4] = {
  706. /* -- */ { 0, &Ia_Invalid },
  707. /* 66 */ { GR64BIT(adcx) },
  708. /* F3 */ { GR64BIT(adox) },
  709. /* F2 */ { 0, &Ia_Invalid }
  710. };
  711. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0f[2] = {
  712. /* -- */ { 0, &Ia_palignr_Pq_Qq_Ib }, // SSSE3
  713. /* 66 */ { 0, &Ia_palignr_Vdq_Wdq_Ib }
  714. };
  715. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pextr[3] = {
  716. /* 16 */ { 0, &Ia_pextrd_Ed_Vdq_Ib },
  717. /* 32 */ { 0, &Ia_pextrd_Ed_Vdq_Ib },
  718. /* 64 */ { 0, &Ia_pextrq_Eq_Vdq_Ib },
  719. };
  720. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a16[2] = {
  721. /* -- */ { 0, &Ia_Invalid },
  722. /* 66 */ { GR64BIT(pextr) } // SSE4
  723. };
  724. static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pinsr[3] = {
  725. /* 16 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib },
  726. /* 32 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib },
  727. /* 64 */ { 0, &Ia_pinsrq_Vdq_Eq_Ib },
  728. };
  729. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a22[2] = {
  730. /* -- */ { 0, &Ia_Invalid },
  731. /* 66 */ { GR64BIT(pinsr) } // SSE4
  732. };
  733. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcw[4] = {
  734. /* -- */ { 0, &Ia_bsfw_Gw_Ew },
  735. /* 66 */ { 0, &Ia_bsfw_Gw_Ew },
  736. /* F3 */ { 0, &Ia_tzcntw_Gw_Ew },
  737. /* F2 */ { 0, &Ia_bsfw_Gw_Ew }
  738. };
  739. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcd[4] = {
  740. /* -- */ { 0, &Ia_bsfl_Gd_Ed },
  741. /* 66 */ { 0, &Ia_bsfl_Gd_Ed },
  742. /* F3 */ { 0, &Ia_tzcntl_Gd_Ed },
  743. /* F2 */ { 0, &Ia_bsfl_Gd_Ed }
  744. };
  745. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcq[4] = {
  746. /* -- */ { 0, &Ia_bsfq_Gq_Eq },
  747. /* 66 */ { 0, &Ia_bsfq_Gq_Eq },
  748. /* F3 */ { 0, &Ia_tzcntq_Gq_Eq },
  749. /* F2 */ { 0, &Ia_bsfq_Gq_Eq }
  750. };
  751. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdw[4] = {
  752. /* -- */ { 0, &Ia_bsrw_Gw_Ew },
  753. /* 66 */ { 0, &Ia_bsrw_Gw_Ew },
  754. /* F3 */ { 0, &Ia_lzcntw_Gw_Ew },
  755. /* F2 */ { 0, &Ia_bsrw_Gw_Ew }
  756. };
  757. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdd[4] = {
  758. /* -- */ { 0, &Ia_bsrl_Gd_Ed },
  759. /* 66 */ { 0, &Ia_bsrl_Gd_Ed },
  760. /* F3 */ { 0, &Ia_lzcntl_Gd_Ed },
  761. /* F2 */ { 0, &Ia_bsrl_Gd_Ed }
  762. };
  763. static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdq[4] = {
  764. /* -- */ { 0, &Ia_bsrq_Gq_Eq },
  765. /* 66 */ { 0, &Ia_bsrq_Gq_Eq },
  766. /* F3 */ { 0, &Ia_lzcntq_Gq_Eq },
  767. /* F2 */ { 0, &Ia_bsrq_Gq_Eq }
  768. };
  769. /* ************************************************************************ */
  770. /* 3-byte opcode table (Table A-4, 0F 38) */
  771. static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
  772. /* 00 */ { GRPSSE2(0f3800) },
  773. /* 01 */ { GRPSSE2(0f3801) },
  774. /* 02 */ { GRPSSE2(0f3802) },
  775. /* 03 */ { GRPSSE2(0f3803) },
  776. /* 04 */ { GRPSSE2(0f3804) },
  777. /* 05 */ { GRPSSE2(0f3805) },
  778. /* 06 */ { GRPSSE2(0f3806) },
  779. /* 07 */ { GRPSSE2(0f3807) },
  780. /* 08 */ { GRPSSE2(0f3808) },
  781. /* 09 */ { GRPSSE2(0f3809) },
  782. /* 0A */ { GRPSSE2(0f380a) },
  783. /* 0B */ { GRPSSE2(0f380b) },
  784. /* 0C */ { 0, &Ia_Invalid },
  785. /* 0D */ { 0, &Ia_Invalid },
  786. /* 0E */ { 0, &Ia_Invalid },
  787. /* 0F */ { 0, &Ia_Invalid },
  788. /* 10 */ { GRPSSE66(Ia_pblendvb_Vdq_Wdq) },
  789. /* 11 */ { 0, &Ia_Invalid },
  790. /* 12 */ { 0, &Ia_Invalid },
  791. /* 13 */ { 0, &Ia_Invalid },
  792. /* 14 */ { GRPSSE66(Ia_blendvps_Vps_Wps) },
  793. /* 15 */ { GRPSSE66(Ia_blendvpd_Vpd_Wpd) },
  794. /* 16 */ { 0, &Ia_Invalid },
  795. /* 17 */ { GRPSSE66(Ia_ptest_Vdq_Wdq) },
  796. /* 18 */ { 0, &Ia_Invalid },
  797. /* 19 */ { 0, &Ia_Invalid },
  798. /* 1A */ { 0, &Ia_Invalid },
  799. /* 1B */ { 0, &Ia_Invalid },
  800. /* 1C */ { GRPSSE2(0f381c) },
  801. /* 1D */ { GRPSSE2(0f381d) },
  802. /* 1E */ { GRPSSE2(0f381e) },
  803. /* 1F */ { 0, &Ia_Invalid },
  804. /* 20 */ { GRPSSE66(Ia_pmovsxbw_Vdq_Wq) },
  805. /* 21 */ { GRPSSE66(Ia_pmovsxbd_Vdq_Wd) },
  806. /* 22 */ { GRPSSE66(Ia_pmovsxbq_Vdq_Ww) },
  807. /* 23 */ { GRPSSE66(Ia_pmovsxwd_Vdq_Wq) },
  808. /* 24 */ { GRPSSE66(Ia_pmovsxwq_Vdq_Wd) },
  809. /* 25 */ { GRPSSE66(Ia_pmovsxdq_Vdq_Wq) },
  810. /* 26 */ { 0, &Ia_Invalid },
  811. /* 27 */ { 0, &Ia_Invalid },
  812. /* 28 */ { GRPSSE66(Ia_pmuldq_Vdq_Wdq) },
  813. /* 29 */ { GRPSSE66(Ia_pcmpeqq_Vdq_Wdq) },
  814. /* 2A */ { GRPSSE66(Ia_movntdqa_Vdq_Mdq) },
  815. /* 2B */ { GRPSSE66(Ia_packusdw_Vdq_Wdq) },
  816. /* 2C */ { 0, &Ia_Invalid },
  817. /* 2D */ { 0, &Ia_Invalid },
  818. /* 2E */ { 0, &Ia_Invalid },
  819. /* 2F */ { 0, &Ia_Invalid },
  820. /* 30 */ { GRPSSE66(Ia_pmovzxbw_Vdq_Wq) },
  821. /* 31 */ { GRPSSE66(Ia_pmovzxbd_Vdq_Wd) },
  822. /* 32 */ { GRPSSE66(Ia_pmovzxbq_Vdq_Ww) },
  823. /* 33 */ { GRPSSE66(Ia_pmovzxwd_Vdq_Wq) },
  824. /* 34 */ { GRPSSE66(Ia_pmovzxwq_Vdq_Wd) },
  825. /* 35 */ { GRPSSE66(Ia_pmovzxdq_Vdq_Wq) },
  826. /* 36 */ { 0, &Ia_Invalid },
  827. /* 37 */ { GRPSSE66(Ia_pcmpgtq_Vdq_Wdq) },
  828. /* 38 */ { GRPSSE66(Ia_pminsb_Vdq_Wdq) },
  829. /* 39 */ { GRPSSE66(Ia_pminsd_Vdq_Wdq) },
  830. /* 3A */ { GRPSSE66(Ia_pminuw_Vdq_Wdq) },
  831. /* 3B */ { GRPSSE66(Ia_pminud_Vdq_Wdq) },
  832. /* 3C */ { GRPSSE66(Ia_pmaxsb_Vdq_Wdq) },
  833. /* 3D */ { GRPSSE66(Ia_pmaxsd_Vdq_Wdq) },
  834. /* 3E */ { GRPSSE66(Ia_pmaxuw_Vdq_Wdq) },
  835. /* 3F */ { GRPSSE66(Ia_pmaxud_Vdq_Wdq) },
  836. /* 40 */ { GRPSSE66(Ia_pmulld_Vdq_Wdq) },
  837. /* 41 */ { GRPSSE66(Ia_phminposuw_Vdq_Wdq) },
  838. /* 42 */ { 0, &Ia_Invalid },
  839. /* 43 */ { 0, &Ia_Invalid },
  840. /* 44 */ { 0, &Ia_Invalid },
  841. /* 45 */ { 0, &Ia_Invalid },
  842. /* 46 */ { 0, &Ia_Invalid },
  843. /* 47 */ { 0, &Ia_Invalid },
  844. /* 48 */ { 0, &Ia_Invalid },
  845. /* 49 */ { 0, &Ia_Invalid },
  846. /* 4A */ { 0, &Ia_Invalid },
  847. /* 4B */ { 0, &Ia_Invalid },
  848. /* 4C */ { 0, &Ia_Invalid },
  849. /* 4D */ { 0, &Ia_Invalid },
  850. /* 4E */ { 0, &Ia_Invalid },
  851. /* 4F */ { 0, &Ia_Invalid },
  852. /* 50 */ { 0, &Ia_Invalid },
  853. /* 51 */ { 0, &Ia_Invalid },
  854. /* 52 */ { 0, &Ia_Invalid },
  855. /* 53 */ { 0, &Ia_Invalid },
  856. /* 54 */ { 0, &Ia_Invalid },
  857. /* 55 */ { 0, &Ia_Invalid },
  858. /* 56 */ { 0, &Ia_Invalid },
  859. /* 57 */ { 0, &Ia_Invalid },
  860. /* 58 */ { 0, &Ia_Invalid },
  861. /* 59 */ { 0, &Ia_Invalid },
  862. /* 5A */ { 0, &Ia_Invalid },
  863. /* 5B */ { 0, &Ia_Invalid },
  864. /* 5C */ { 0, &Ia_Invalid },
  865. /* 5D */ { 0, &Ia_Invalid },
  866. /* 5E */ { 0, &Ia_Invalid },
  867. /* 5F */ { 0, &Ia_Invalid },
  868. /* 60 */ { 0, &Ia_Invalid },
  869. /* 61 */ { 0, &Ia_Invalid },
  870. /* 62 */ { 0, &Ia_Invalid },
  871. /* 63 */ { 0, &Ia_Invalid },
  872. /* 64 */ { 0, &Ia_Invalid },
  873. /* 65 */ { 0, &Ia_Invalid },
  874. /* 66 */ { 0, &Ia_Invalid },
  875. /* 67 */ { 0, &Ia_Invalid },
  876. /* 68 */ { 0, &Ia_Invalid },
  877. /* 69 */ { 0, &Ia_Invalid },
  878. /* 6A */ { 0, &Ia_Invalid },
  879. /* 6B */ { 0, &Ia_Invalid },
  880. /* 6C */ { 0, &Ia_Invalid },
  881. /* 6D */ { 0, &Ia_Invalid },
  882. /* 6E */ { 0, &Ia_Invalid },
  883. /* 6F */ { 0, &Ia_Invalid },
  884. /* 70 */ { 0, &Ia_Invalid },
  885. /* 71 */ { 0, &Ia_Invalid },
  886. /* 72 */ { 0, &Ia_Invalid },
  887. /* 73 */ { 0, &Ia_Invalid },
  888. /* 74 */ { 0, &Ia_Invalid },
  889. /* 75 */ { 0, &Ia_Invalid },
  890. /* 76 */ { 0, &Ia_Invalid },
  891. /* 77 */ { 0, &Ia_Invalid },
  892. /* 78 */ { 0, &Ia_Invalid },
  893. /* 79 */ { 0, &Ia_Invalid },
  894. /* 7A */ { 0, &Ia_Invalid },
  895. /* 7B */ { 0, &Ia_Invalid },
  896. /* 7C */ { 0, &Ia_Invalid },
  897. /* 7D */ { 0, &Ia_Invalid },
  898. /* 7E */ { 0, &Ia_Invalid },
  899. /* 7F */ { 0, &Ia_Invalid },
  900. /* 80 */ { GRPSSE66(Ia_invept_Gy_Mdq) },
  901. /* 81 */ { GRPSSE66(Ia_invvpid_Gy_Mdq) },
  902. /* 82 */ { GRPSSE66(Ia_invpcid_Gy_Mdq) },
  903. /* 83 */ { 0, &Ia_Invalid },
  904. /* 84 */ { 0, &Ia_Invalid },
  905. /* 85 */ { 0, &Ia_Invalid },
  906. /* 86 */ { 0, &Ia_Invalid },
  907. /* 87 */ { 0, &Ia_Invalid },
  908. /* 88 */ { 0, &Ia_Invalid },
  909. /* 89 */ { 0, &Ia_Invalid },
  910. /* 8A */ { 0, &Ia_Invalid },
  911. /* 8B */ { 0, &Ia_Invalid },
  912. /* 8C */ { 0, &Ia_Invalid },
  913. /* 8D */ { 0, &Ia_Invalid },
  914. /* 8E */ { 0, &Ia_Invalid },
  915. /* 8F */ { 0, &Ia_Invalid },
  916. /* 90 */ { 0, &Ia_Invalid },
  917. /* 91 */ { 0, &Ia_Invalid },
  918. /* 92 */ { 0, &Ia_Invalid },
  919. /* 93 */ { 0, &Ia_Invalid },
  920. /* 94 */ { 0, &Ia_Invalid },
  921. /* 95 */ { 0, &Ia_Invalid },
  922. /* 96 */ { 0, &Ia_Invalid },
  923. /* 97 */ { 0, &Ia_Invalid },
  924. /* 98 */ { 0, &Ia_Invalid },
  925. /* 99 */ { 0, &Ia_Invalid },
  926. /* 9A */ { 0, &Ia_Invalid },
  927. /* 9B */ { 0, &Ia_Invalid },
  928. /* 9C */ { 0, &Ia_Invalid },
  929. /* 9D */ { 0, &Ia_Invalid },
  930. /* 9E */ { 0, &Ia_Invalid },
  931. /* 9F */ { 0, &Ia_Invalid },
  932. /* A0 */ { 0, &Ia_Invalid },
  933. /* A1 */ { 0, &Ia_Invalid },
  934. /* A2 */ { 0, &Ia_Invalid },
  935. /* A3 */ { 0, &Ia_Invalid },
  936. /* A4 */ { 0, &Ia_Invalid },
  937. /* A5 */ { 0, &Ia_Invalid },
  938. /* A6 */ { 0, &Ia_Invalid },
  939. /* A7 */ { 0, &Ia_Invalid },
  940. /* A8 */ { 0, &Ia_Invalid },
  941. /* A9 */ { 0, &Ia_Invalid },
  942. /* AA */ { 0, &Ia_Invalid },
  943. /* AB */ { 0, &Ia_Invalid },
  944. /* AC */ { 0, &Ia_Invalid },
  945. /* AD */ { 0, &Ia_Invalid },
  946. /* AE */ { 0, &Ia_Invalid },
  947. /* AF */ { 0, &Ia_Invalid },
  948. /* B0 */ { 0, &Ia_Invalid },
  949. /* B1 */ { 0, &Ia_Invalid },
  950. /* B2 */ { 0, &Ia_Invalid },
  951. /* B3 */ { 0, &Ia_Invalid },
  952. /* B4 */ { 0, &Ia_Invalid },
  953. /* B5 */ { 0, &Ia_Invalid },
  954. /* B6 */ { 0, &Ia_Invalid },
  955. /* B7 */ { 0, &Ia_Invalid },
  956. /* B8 */ { 0, &Ia_Invalid },
  957. /* B9 */ { 0, &Ia_Invalid },
  958. /* BA */ { 0, &Ia_Invalid },
  959. /* BB */ { 0, &Ia_Invalid },
  960. /* BC */ { 0, &Ia_Invalid },
  961. /* BD */ { 0, &Ia_Invalid },
  962. /* BE */ { 0, &Ia_Invalid },
  963. /* BF */ { 0, &Ia_Invalid },
  964. /* C0 */ { 0, &Ia_Invalid },
  965. /* C1 */ { 0, &Ia_Invalid },
  966. /* C2 */ { 0, &Ia_Invalid },
  967. /* C3 */ { 0, &Ia_Invalid },
  968. /* C4 */ { 0, &Ia_Invalid },
  969. /* C5 */ { 0, &Ia_Invalid },
  970. /* C6 */ { 0, &Ia_Invalid },
  971. /* C7 */ { 0, &Ia_Invalid },
  972. /* C8 */ { GRPSSENONE(Ia_sha1nexte_Vdq_Wdq) },
  973. /* C9 */ { GRPSSENONE(Ia_sha1msg1_Vdq_Wdq) },
  974. /* CA */ { GRPSSENONE(Ia_sha1msg2_Vdq_Wdq) },
  975. /* CB */ { GRPSSENONE(Ia_sha256rnds2_Vdq_Wdq) },
  976. /* CC */ { GRPSSENONE(Ia_sha256msg1_Vdq_Wdq) },
  977. /* CD */ { GRPSSENONE(Ia_sha256msg2_Vdq_Wdq) },
  978. /* CE */ { 0, &Ia_Invalid },
  979. /* CF */ { 0, &Ia_Invalid },
  980. /* D0 */ { 0, &Ia_Invalid },
  981. /* D1 */ { 0, &Ia_Invalid },
  982. /* D2 */ { 0, &Ia_Invalid },
  983. /* D3 */ { 0, &Ia_Invalid },
  984. /* D4 */ { 0, &Ia_Invalid },
  985. /* D5 */ { 0, &Ia_Invalid },
  986. /* D6 */ { 0, &Ia_Invalid },
  987. /* D7 */ { 0, &Ia_Invalid },
  988. /* D8 */ { 0, &Ia_Invalid },
  989. /* D9 */ { 0, &Ia_Invalid },
  990. /* DA */ { 0, &Ia_Invalid },
  991. /* DB */ { GRPSSE66(Ia_aesimc_Vdq_Wdq) },
  992. /* DC */ { GRPSSE66(Ia_aesenc_Vdq_Wdq) },
  993. /* DD */ { GRPSSE66(Ia_aesenclast_Vdq_Wdq) },
  994. /* DE */ { GRPSSE66(Ia_aesdec_Vdq_Wdq) },
  995. /* DF */ { GRPSSE66(Ia_aesdeclast_Vdq_Wdq) },
  996. /* E0 */ { 0, &Ia_Invalid },
  997. /* E1 */ { 0, &Ia_Invalid },
  998. /* E2 */ { 0, &Ia_Invalid },
  999. /* E3 */ { 0, &Ia_Invalid },
  1000. /* E4 */ { 0, &Ia_Invalid },
  1001. /* E5 */ { 0, &Ia_Invalid },
  1002. /* E6 */ { 0, &Ia_Invalid },
  1003. /* E7 */ { 0, &Ia_Invalid },
  1004. /* E8 */ { 0, &Ia_Invalid },
  1005. /* E9 */ { 0, &Ia_Invalid },
  1006. /* EA */ { 0, &Ia_Invalid },
  1007. /* EB */ { 0, &Ia_Invalid },
  1008. /* EC */ { 0, &Ia_Invalid },
  1009. /* ED */ { 0, &Ia_Invalid },
  1010. /* EE */ { 0, &Ia_Invalid },
  1011. /* EF */ { 0, &Ia_Invalid },
  1012. /* F0 */ { GR64BIT(0f38f0) },
  1013. /* F1 */ { GR64BIT(0f38f1) },
  1014. /* F2 */ { 0, &Ia_Invalid },
  1015. /* F3 */ { 0, &Ia_Invalid },
  1016. /* F4 */ { 0, &Ia_Invalid },
  1017. /* F5 */ { 0, &Ia_Invalid },
  1018. /* F6 */ { GRPSSE(0f38f6) },
  1019. /* F7 */ { 0, &Ia_Invalid },
  1020. /* F8 */ { 0, &Ia_Invalid },
  1021. /* F9 */ { 0, &Ia_Invalid },
  1022. /* FA */ { 0, &Ia_Invalid },
  1023. /* FB */ { 0, &Ia_Invalid },
  1024. /* FC */ { 0, &Ia_Invalid },
  1025. /* FD */ { 0, &Ia_Invalid },
  1026. /* FE */ { 0, &Ia_Invalid },
  1027. /* FF */ { 0, &Ia_Invalid }
  1028. };
  1029. /* ************************************************************************ */
  1030. /* 3-byte opcode table (Table A-5, 0F 3A) */
  1031. static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
  1032. /* 00 */ { 0, &Ia_Invalid },
  1033. /* 01 */ { 0, &Ia_Invalid },
  1034. /* 02 */ { 0, &Ia_Invalid },
  1035. /* 03 */ { 0, &Ia_Invalid },
  1036. /* 04 */ { 0, &Ia_Invalid },
  1037. /* 05 */ { 0, &Ia_Invalid },
  1038. /* 06 */ { 0, &Ia_Invalid },
  1039. /* 07 */ { 0, &Ia_Invalid },
  1040. /* 08 */ { GRPSSE66(Ia_roundps_Vps_Wps_Ib) },
  1041. /* 09 */ { GRPSSE66(Ia_roundpd_Vpd_Wpd_Ib) },
  1042. /* 0A */ { GRPSSE66(Ia_roundss_Vss_Wss_Ib) },
  1043. /* 0B */ { GRPSSE66(Ia_roundsd_Vsd_Wsd_Ib) },
  1044. /* 0C */ { GRPSSE66(Ia_blendps_Vps_Wps_Ib) },
  1045. /* 0D */ { GRPSSE66(Ia_blendpd_Vpd_Wpd_Ib) },
  1046. /* 0E */ { GRPSSE66(Ia_pblendw_Vdq_Wdq_Ib) },
  1047. /* 0F */ { GRPSSE2(0f3a0f) },
  1048. /* 10 */ { 0, &Ia_Invalid },
  1049. /* 11 */ { 0, &Ia_Invalid },
  1050. /* 12 */ { 0, &Ia_Invalid },
  1051. /* 13 */ { 0, &Ia_Invalid },
  1052. /* 14 */ { GRPSSE66(Ia_pextrb_Ebd_Vdq_Ib) },
  1053. /* 15 */ { GRPSSE66(Ia_pextrw_Ewd_Vdq_Ib) },
  1054. /* 16 */ { GRPSSE2(0f3a16) },
  1055. /* 17 */ { GRPSSE66(Ia_extractps_Ed_Vdq_Ib) },
  1056. /* 18 */ { 0, &Ia_Invalid },
  1057. /* 19 */ { 0, &Ia_Invalid },
  1058. /* 1A */ { 0, &Ia_Invalid },
  1059. /* 1B */ { 0, &Ia_Invalid },
  1060. /* 1C */ { 0, &Ia_Invalid },
  1061. /* 1D */ { 0, &Ia_Invalid },
  1062. /* 1E */ { 0, &Ia_Invalid },
  1063. /* 1F */ { 0, &Ia_Invalid },
  1064. /* 20 */ { GRPSSE66(Ia_pinsrb_Vdq_Ew_Ib) },
  1065. /* 21 */ { GRPSSE66(Ia_insertps_Vps_Wss_Ib) },
  1066. /* 22 */ { GRPSSE2(0f3a22) },
  1067. /* 23 */ { 0, &Ia_Invalid },
  1068. /* 24 */ { 0, &Ia_Invalid },
  1069. /* 25 */ { 0, &Ia_Invalid },
  1070. /* 26 */ { 0, &Ia_Invalid },
  1071. /* 27 */ { 0, &Ia_Invalid },
  1072. /* 28 */ { 0, &Ia_Invalid },
  1073. /* 29 */ { 0, &Ia_Invalid },
  1074. /* 2A */ { 0, &Ia_Invalid },
  1075. /* 2B */ { 0, &Ia_Invalid },
  1076. /* 2C */ { 0, &Ia_Invalid },
  1077. /* 2D */ { 0, &Ia_Invalid },
  1078. /* 2E */ { 0, &Ia_Invalid },
  1079. /* 2F */ { 0, &Ia_Invalid },
  1080. /* 30 */ { 0, &Ia_Invalid },
  1081. /* 31 */ { 0, &Ia_Invalid },
  1082. /* 32 */ { 0, &Ia_Invalid },
  1083. /* 33 */ { 0, &Ia_Invalid },
  1084. /* 34 */ { 0, &Ia_Invalid },
  1085. /* 35 */ { 0, &Ia_Invalid },
  1086. /* 36 */ { 0, &Ia_Invalid },
  1087. /* 37 */ { 0, &Ia_Invalid },
  1088. /* 38 */ { 0, &Ia_Invalid },
  1089. /* 39 */ { 0, &Ia_Invalid },
  1090. /* 3A */ { 0, &Ia_Invalid },
  1091. /* 3B */ { 0, &Ia_Invalid },
  1092. /* 3C */ { 0, &Ia_Invalid },
  1093. /* 3D */ { 0, &Ia_Invalid },
  1094. /* 3E */ { 0, &Ia_Invalid },
  1095. /* 3F */ { 0, &Ia_Invalid },
  1096. /* 40 */ { GRPSSE66(Ia_dpps_Vps_Wps_Ib) },
  1097. /* 41 */ { GRPSSE66(Ia_dppd_Vpd_Wpd_Ib) },
  1098. /* 42 */ { GRPSSE66(Ia_mpsadbw_Vdq_Wdq_Ib) },
  1099. /* 43 */ { 0, &Ia_Invalid },
  1100. /* 44 */ { GRPSSE66(Ia_pclmulqdq_Vdq_Wdq_Ib) },
  1101. /* 45 */ { 0, &Ia_Invalid },
  1102. /* 46 */ { 0, &Ia_Invalid },
  1103. /* 47 */ { 0, &Ia_Invalid },
  1104. /* 48 */ { 0, &Ia_Invalid },
  1105. /* 49 */ { 0, &Ia_Invalid },
  1106. /* 4A */ { 0, &Ia_Invalid },
  1107. /* 4B */ { 0, &Ia_Invalid },
  1108. /* 4C */ { 0, &Ia_Invalid },
  1109. /* 4D */ { 0, &Ia_Invalid },
  1110. /* 4E */ { 0, &Ia_Invalid },
  1111. /* 4F */ { 0, &Ia_Invalid },
  1112. /* 50 */ { 0, &Ia_Invalid },
  1113. /* 51 */ { 0, &Ia_Invalid },
  1114. /* 52 */ { 0, &Ia_Invalid },
  1115. /* 53 */ { 0, &Ia_Invalid },
  1116. /* 54 */ { 0, &Ia_Invalid },
  1117. /* 55 */ { 0, &Ia_Invalid },
  1118. /* 56 */ { 0, &Ia_Invalid },
  1119. /* 57 */ { 0, &Ia_Invalid },
  1120. /* 58 */ { 0, &Ia_Invalid },
  1121. /* 59 */ { 0, &Ia_Invalid },
  1122. /* 5A */ { 0, &Ia_Invalid },
  1123. /* 5B */ { 0, &Ia_Invalid },
  1124. /* 5C */ { 0, &Ia_Invalid },
  1125. /* 5D */ { 0, &Ia_Invalid },
  1126. /* 5E */ { 0, &Ia_Invalid },
  1127. /* 5F */ { 0, &Ia_Invalid },
  1128. /* 60 */ { GRPSSE66(Ia_pcmpestrm_Vdq_Wdq_Ib) },
  1129. /* 61 */ { GRPSSE66(Ia_pcmpestri_Vdq_Wdq_Ib) },
  1130. /* 62 */ { GRPSSE66(Ia_pcmpistrm_Vdq_Wdq_Ib) },
  1131. /* 63 */ { GRPSSE66(Ia_pcmpistri_Vdq_Wdq_Ib) },
  1132. /* 64 */ { 0, &Ia_Invalid },
  1133. /* 65 */ { 0, &Ia_Invalid },
  1134. /* 66 */ { 0, &Ia_Invalid },
  1135. /* 67 */ { 0, &Ia_Invalid },
  1136. /* 68 */ { 0, &Ia_Invalid },
  1137. /* 69 */ { 0, &Ia_Invalid },
  1138. /* 6A */ { 0, &Ia_Invalid },
  1139. /* 6B */ { 0, &Ia_Invalid },
  1140. /* 6C */ { 0, &Ia_Invalid },
  1141. /* 6D */ { 0, &Ia_Invalid },
  1142. /* 6E */ { 0, &Ia_Invalid },
  1143. /* 6F */ { 0, &Ia_Invalid },
  1144. /* 70 */ { 0, &Ia_Invalid },
  1145. /* 71 */ { 0, &Ia_Invalid },
  1146. /* 72 */ { 0, &Ia_Invalid },
  1147. /* 73 */ { 0, &Ia_Invalid },
  1148. /* 74 */ { 0, &Ia_Invalid },
  1149. /* 75 */ { 0, &Ia_Invalid },
  1150. /* 76 */ { 0, &Ia_Invalid },
  1151. /* 77 */ { 0, &Ia_Invalid },
  1152. /* 78 */ { 0, &Ia_Invalid },
  1153. /* 79 */ { 0, &Ia_Invalid },
  1154. /* 7A */ { 0, &Ia_Invalid },
  1155. /* 7B */ { 0, &Ia_Invalid },
  1156. /* 7C */ { 0, &Ia_Invalid },
  1157. /* 7D */ { 0, &Ia_Invalid },
  1158. /* 7E */ { 0, &Ia_Invalid },
  1159. /* 7F */ { 0, &Ia_Invalid },
  1160. /* 80 */ { 0, &Ia_Invalid },
  1161. /* 81 */ { 0, &Ia_Invalid },
  1162. /* 82 */ { 0, &Ia_Invalid },
  1163. /* 83 */ { 0, &Ia_Invalid },
  1164. /* 84 */ { 0, &Ia_Invalid },
  1165. /* 85 */ { 0, &Ia_Invalid },
  1166. /* 86 */ { 0, &Ia_Invalid },
  1167. /* 87 */ { 0, &Ia_Invalid },
  1168. /* 88 */ { 0, &Ia_Invalid },
  1169. /* 89 */ { 0, &Ia_Invalid },
  1170. /* 8A */ { 0, &Ia_Invalid },
  1171. /* 8B */ { 0, &Ia_Invalid },
  1172. /* 8C */ { 0, &Ia_Invalid },
  1173. /* 8D */ { 0, &Ia_Invalid },
  1174. /* 8E */ { 0, &Ia_Invalid },
  1175. /* 8F */ { 0, &Ia_Invalid },
  1176. /* 90 */ { 0, &Ia_Invalid },
  1177. /* 91 */ { 0, &Ia_Invalid },
  1178. /* 92 */ { 0, &Ia_Invalid },
  1179. /* 93 */ { 0, &Ia_Invalid },
  1180. /* 94 */ { 0, &Ia_Invalid },
  1181. /* 95 */ { 0, &Ia_Invalid },
  1182. /* 96 */ { 0, &Ia_Invalid },
  1183. /* 97 */ { 0, &Ia_Invalid },
  1184. /* 98 */ { 0, &Ia_Invalid },
  1185. /* 99 */ { 0, &Ia_Invalid },
  1186. /* 9A */ { 0, &Ia_Invalid },
  1187. /* 9B */ { 0, &Ia_Invalid },
  1188. /* 9C */ { 0, &Ia_Invalid },
  1189. /* 9D */ { 0, &Ia_Invalid },
  1190. /* 9E */ { 0, &Ia_Invalid },
  1191. /* 9F */ { 0, &Ia_Invalid },
  1192. /* A0 */ { 0, &Ia_Invalid },
  1193. /* A1 */ { 0, &Ia_Invalid },
  1194. /* A2 */ { 0, &Ia_Invalid },
  1195. /* A3 */ { 0, &Ia_Invalid },
  1196. /* A4 */ { 0, &Ia_Invalid },
  1197. /* A5 */ { 0, &Ia_Invalid },
  1198. /* A6 */ { 0, &Ia_Invalid },
  1199. /* A7 */ { 0, &Ia_Invalid },
  1200. /* A8 */ { 0, &Ia_Invalid },
  1201. /* A9 */ { 0, &Ia_Invalid },
  1202. /* AA */ { 0, &Ia_Invalid },
  1203. /* AB */ { 0, &Ia_Invalid },
  1204. /* AC */ { 0, &Ia_Invalid },
  1205. /* AD */ { 0, &Ia_Invalid },
  1206. /* AE */ { 0, &Ia_Invalid },
  1207. /* AF */ { 0, &Ia_Invalid },
  1208. /* B0 */ { 0, &Ia_Invalid },
  1209. /* B1 */ { 0, &Ia_Invalid },
  1210. /* B2 */ { 0, &Ia_Invalid },
  1211. /* B3 */ { 0, &Ia_Invalid },
  1212. /* B4 */ { 0, &Ia_Invalid },
  1213. /* B5 */ { 0, &Ia_Invalid },
  1214. /* B6 */ { 0, &Ia_Invalid },
  1215. /* B7 */ { 0, &Ia_Invalid },
  1216. /* B8 */ { 0, &Ia_Invalid },
  1217. /* B9 */ { 0, &Ia_Invalid },
  1218. /* BA */ { 0, &Ia_Invalid },
  1219. /* BB */ { 0, &Ia_Invalid },
  1220. /* BC */ { 0, &Ia_Invalid },
  1221. /* BD */ { 0, &Ia_Invalid },
  1222. /* BE */ { 0, &Ia_Invalid },
  1223. /* BF */ { 0, &Ia_Invalid },
  1224. /* C0 */ { 0, &Ia_Invalid },
  1225. /* C1 */ { 0, &Ia_Invalid },
  1226. /* C2 */ { 0, &Ia_Invalid },
  1227. /* C3 */ { 0, &Ia_Invalid },
  1228. /* C4 */ { 0, &Ia_Invalid },
  1229. /* C5 */ { 0, &Ia_Invalid },
  1230. /* C6 */ { 0, &Ia_Invalid },
  1231. /* C7 */ { 0, &Ia_Invalid },
  1232. /* C8 */ { 0, &Ia_Invalid },
  1233. /* C9 */ { 0, &Ia_Invalid },
  1234. /* CA */ { 0, &Ia_Invalid },
  1235. /* CB */ { 0, &Ia_Invalid },
  1236. /* CC */ { GRPSSENONE(Ia_sha1rnds4_Vdq_Wdq_Ib) },
  1237. /* CD */ { 0, &Ia_Invalid },
  1238. /* CE */ { 0, &Ia_Invalid },
  1239. /* CF */ { 0, &Ia_Invalid },
  1240. /* D0 */ { 0, &Ia_Invalid },
  1241. /* D1 */ { 0, &Ia_Invalid },
  1242. /* D2 */ { 0, &Ia_Invalid },
  1243. /* D3 */ { 0, &Ia_Invalid },
  1244. /* D4 */ { 0, &Ia_Invalid },
  1245. /* D5 */ { 0, &Ia_Invalid },
  1246. /* D6 */ { 0, &Ia_Invalid },
  1247. /* D7 */ { 0, &Ia_Invalid },
  1248. /* D8 */ { 0, &Ia_Invalid },
  1249. /* D9 */ { 0, &Ia_Invalid },
  1250. /* DA */ { 0, &Ia_Invalid },
  1251. /* DB */ { 0, &Ia_Invalid },
  1252. /* DC */ { 0, &Ia_Invalid },
  1253. /* DD */ { 0, &Ia_Invalid },
  1254. /* DE */ { 0, &Ia_Invalid },
  1255. /* DF */ { GRPSSE66(Ia_aeskeygenassist_Vdq_Wdq_Ib) },
  1256. /* E0 */ { 0, &Ia_Invalid },
  1257. /* E1 */ { 0, &Ia_Invalid },
  1258. /* E2 */ { 0, &Ia_Invalid },
  1259. /* E3 */ { 0, &Ia_Invalid },
  1260. /* E4 */ { 0, &Ia_Invalid },
  1261. /* E5 */ { 0, &Ia_Invalid },
  1262. /* E6 */ { 0, &Ia_Invalid },
  1263. /* E7 */ { 0, &Ia_Invalid },
  1264. /* E8 */ { 0, &Ia_Invalid },
  1265. /* E9 */ { 0, &Ia_Invalid },
  1266. /* EA */ { 0, &Ia_Invalid },
  1267. /* EB */ { 0, &Ia_Invalid },
  1268. /* EC */ { 0, &Ia_Invalid },
  1269. /* ED */ { 0, &Ia_Invalid },
  1270. /* EE */ { 0, &Ia_Invalid },
  1271. /* EF */ { 0, &Ia_Invalid },
  1272. /* F0 */ { 0, &Ia_Invalid },
  1273. /* F1 */ { 0, &Ia_Invalid },
  1274. /* F2 */ { 0, &Ia_Invalid },
  1275. /* F3 */ { 0, &Ia_Invalid },
  1276. /* F4 */ { 0, &Ia_Invalid },
  1277. /* F5 */ { 0, &Ia_Invalid },
  1278. /* F6 */ { 0, &Ia_Invalid },
  1279. /* F7 */ { 0, &Ia_Invalid },
  1280. /* F8 */ { 0, &Ia_Invalid },
  1281. /* F9 */ { 0, &Ia_Invalid },
  1282. /* FA */ { 0, &Ia_Invalid },
  1283. /* FB */ { 0, &Ia_Invalid },
  1284. /* FC */ { 0, &Ia_Invalid },
  1285. /* FD */ { 0, &Ia_Invalid },
  1286. /* FE */ { 0, &Ia_Invalid },
  1287. /* FF */ { 0, &Ia_Invalid }
  1288. };