From: Stanislav S. <ssh...@us...> - 2010-01-31 09:45:36
|
Update of /cvsroot/bochs/bochs/disasm In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv9620/disasm Modified Files: dis_decode.cc dis_tables.h dis_tables.inc disasm.h opcodes.inc Log Message: optimized decode tables Index: dis_decode.cc =================================================================== RCS file: /cvsroot/bochs/bochs/disasm/dis_decode.cc,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- dis_decode.cc 14 Oct 2009 20:45:29 -0000 1.52 +++ dis_decode.cc 31 Jan 2010 09:45:27 -0000 1.53 @@ -221,6 +221,20 @@ entry = &(OPCODE_TABLE(entry)[insn.nnn & 7]); break; + case _GRPSSE66: + /* SSE opcode group with only prefix 0x66 allowed */ + sse_opcode = 1; + if (sse_prefix != SSE_PREFIX_66) + entry = &(OPCODE_TABLE(entry)[sse_prefix]); + break; + + case _GRPSSEF2: + /* SSE opcode group with only prefix 0xF2 allowed */ + sse_opcode = 1; + if (sse_prefix != SSE_PREFIX_F2) + entry = &(OPCODE_TABLE(entry)[sse_prefix]); + break; + case _GRPSSE: sse_opcode = 1; /* For SSE opcodes, look into another 4 entries table Index: dis_tables.h =================================================================== RCS file: /cvsroot/bochs/bochs/disasm/dis_tables.h,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- dis_tables.h 14 Oct 2009 20:45:29 -0000 1.37 +++ dis_tables.h 31 Jan 2010 09:45:27 -0000 1.38 @@ -28,12 +28,16 @@ #define _GRPFP 3 #define _GRP3DNOW 4 #define _GRPSSE 5 -#define _GRPRM 6 -#define _GRP3BOP 7 -#define _GRP64B 8 +#define _GRPSSE66 6 +#define _GRPSSEF2 7 +#define _GRPRM 8 +#define _GRP3BOP 9 +#define _GRP64B 10 /* ************************************************************************ */ #define GRPSSE(n) _GRPSSE, BxDisasmGroupSSE_##n +#define GRPSSE66(n) _GRPSSE66, BxDisasmGroupSSE_ERR +#define GRPSSEF2(n) _GRPSSEF2, BxDisasmGroupSSE_ERR #define GRPN(n) _GROUPN, BxDisasmGroup##n #define GRPRM(n) _GRPRM, BxDisasmGroupRm##n #define GRPMOD(n) _SPLIT11B, BxDisasmGroupMod##n Index: dis_tables.inc =================================================================== RCS file: /cvsroot/bochs/bochs/disasm/dis_tables.inc,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- dis_tables.inc 11 Jan 2010 21:27:59 -0000 1.29 +++ dis_tables.inc 31 Jan 2010 09:45:27 -0000 1.30 @@ -24,6 +24,13 @@ /* ************************************************************************ */ /* SSE opcodes */ +static BxDisasmOpcodeTable_t BxDisasmGroupSSE_ERR[4] = { + /* -- */ { 0, &Ia_Invalid }, + /* 66 */ { 0, &Ia_Invalid }, + /* F2 */ { 0, &Ia_Invalid }, + /* F3 */ { 0, &Ia_Invalid } +}; + static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f10[4] = { /* -- */ { 0, &Ia_movups_Vps_Wps }, /* 66 */ { 0, &Ia_movupd_Vpd_Wpd }, @@ -261,34 +268,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3810[4] = { - /* F2 */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pblendvb_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3814[4] = { - /* F2 */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_blendvps_Vps_Wps }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3815[4] = { - /* F2 */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_blendvpd_Vpd_Wpd }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3817[4] = { - /* F2 */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_ptest_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381c[4] = { /* -- */ { 0, &Ia_pabsb_Pq_Qq }, // SSE3E /* 66 */ { 0, &Ia_pabsb_Vdq_Wdq }, @@ -310,231 +289,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3820[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxbw_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3821[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxbd_Vdq_Wd }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3822[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxbq_Vdq_Ww }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3823[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxwd_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3824[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxwq_Vdq_Wd }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3825[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovsxdq_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3828[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmuldq_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3829[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pcmpeqq_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f382a[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_movntdqa_Vdq_Mdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f382b[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_packusdw_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3830[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxbw_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3831[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxbd_Vdq_Wd }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3832[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxbq_Vdq_Ww }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3833[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxwd_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3834[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxwq_Vdq_Wd }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3835[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmovzxdq_Vdq_Wq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3837[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pcmpgtq_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3838[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pminsb_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3839[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pminsd_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383a[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pminuw_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383b[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pminud_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383c[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmaxsb_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383d[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmaxsd_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383e[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmaxuw_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f383f[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmaxud_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3840[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pmulld_Vdq_Wdq }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3841[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_phminposuw_Vdq_Wdq }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38db[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_aesimc_Vdq_Wdq }, // AES - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38dc[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_aesenc_Vdq_Wdq }, // AES - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38dd[4] = { - /* -- */ { 0, &Ia_Invalid }, // AES - /* 66 */ { 0, &Ia_aesenclast_Vdq_Wdq }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38de[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_aesdec_Vdq_Wdq }, // AES - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38df[4] = { - /* -- */ { 0, &Ia_Invalid }, // AES - /* 66 */ { 0, &Ia_aesdeclast_Vdq_Wdq }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_movbe_GvEv[3] = { /* 16 */ { 0, &Ia_movbe_Gw_Ew }, /* 32 */ { 0, &Ia_movbe_Gd_Ed }, @@ -567,55 +321,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a08[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_roundps_Vps_Wps_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a09[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_roundpd_Vpd_Wpd_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0a[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_roundss_Vss_Wss_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0b[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_roundsd_Vsd_Wsd_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0c[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_blendps_Vps_Wps_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0d[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_blendpd_Vpd_Wpd_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0e[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_pblendw_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0f[4] = { /* -- */ { 0, &Ia_palignr_Pq_Qq_Ib }, // SSE3E /* 66 */ { 0, &Ia_palignr_Vdq_Wdq_Ib }, @@ -623,20 +328,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a14[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_pextrb_Hbd_Udq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a15[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_pextrw_Hwd_Udq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pextr[3] = { /* 16 */ { 0, &Ia_pextrd_Hd_Udq_Ib }, /* 32 */ { 0, &Ia_pextrd_Hd_Udq_Ib }, @@ -650,27 +341,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a17[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_extractps_Hd_Udq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a20[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_pinsrb_Vdq_Ed_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a21[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_insertps_Vps_Wss_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pinsr[3] = { /* 16 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib }, /* 32 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib }, @@ -684,69 +354,6 @@ /* F3 */ { 0, &Ia_Invalid } }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a40[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_dpps_Vps_Wps_Ib }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a41[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_dppd_Vpd_Wpd_Ib }, // SSE4 - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a42[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4 - /* 66 */ { 0, &Ia_mpsadbw_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a44[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_pclmulqdq_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a60[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4.2 - /* 66 */ { 0, &Ia_pcmpestrm_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a61[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4.2 - /* 66 */ { 0, &Ia_pcmpestri_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a62[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4.2 - /* 66 */ { 0, &Ia_pcmpistrm_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a63[4] = { - /* -- */ { 0, &Ia_Invalid }, // SSE4.2 - /* 66 */ { 0, &Ia_pcmpistri_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3adf[4] = { - /* -- */ { 0, &Ia_Invalid }, // AES - /* 66 */ { 0, &Ia_aeskeygenassist_Vdq_Wdq_Ib }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_Invalid } -}; - static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f50[4] = { /* -- */ { 0, &Ia_movmskps_Gd_Vps }, /* 66 */ { 0, &Ia_movmskpd_Gd_Vpd }, @@ -1080,27 +687,6 @@ /* F3 */ { 0, &Ia_movdqu_Wdq_Vdq }, }; -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fb8w[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_Invalid }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_popcnt_Gw_Ew } // SSE4.2 -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fb8d[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_Invalid }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_popcnt_Gd_Ed } // SSE4.2 -}; - -static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fb8q[4] = { - /* -- */ { 0, &Ia_Invalid }, - /* 66 */ { 0, &Ia_Invalid }, - /* F2 */ { 0, &Ia_Invalid }, - /* F3 */ { 0, &Ia_popcnt_Gq_Eq } // SSE4.2 -}; - static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc2[4] = { /* -- */ { 0, &Ia_cmpps_Vps_Wps_Ib }, /* 66 */ { 0, &Ia_cmppd_Vpd_Wpd_Ib }, @@ -3076,14 +2662,14 @@ /* 0D */ { 0, &Ia_Invalid }, /* 0E */ { 0, &Ia_Invalid }, /* 0F */ { 0, &Ia_Invalid }, - /* 10 */ { GRPSSE(0f3810) }, + /* 10 */ { GRPSSE66(Ia_pblendvb_Vdq_Wdq) }, /* 11 */ { 0, &Ia_Invalid }, /* 12 */ { 0, &Ia_Invalid }, /* 13 */ { 0, &Ia_Invalid }, - /* 14 */ { GRPSSE(0f3814) }, - /* 15 */ { GRPSSE(0f3815) }, + /* 14 */ { GRPSSE66(Ia_blendvps_Vps_Wps) }, + /* 15 */ { GRPSSE66(Ia_blendvpd_Vpd_Wpd) }, /* 16 */ { 0, &Ia_Invalid }, - /* 17 */ { GRPSSE(0f3817) }, + /* 17 */ { GRPSSE66(Ia_ptest_Vdq_Wdq) }, /* 18 */ { 0, &Ia_Invalid }, /* 19 */ { 0, &Ia_Invalid }, /* 1A */ { 0, &Ia_Invalid }, @@ -3092,40 +2678,40 @@ /* 1D */ { GRPSSE(0f381d) }, /* 1E */ { GRPSSE(0f381e) }, /* 1F */ { 0, &Ia_Invalid }, - /* 20 */ { GRPSSE(0f3820) }, - /* 21 */ { GRPSSE(0f3821) }, - /* 22 */ { GRPSSE(0f3822) }, - /* 23 */ { GRPSSE(0f3823) }, - /* 24 */ { GRPSSE(0f3824) }, - /* 25 */ { GRPSSE(0f3825) }, + /* 20 */ { GRPSSE66(Ia_pmovsxbw_Vdq_Wq) }, + /* 21 */ { GRPSSE66(Ia_pmovsxbd_Vdq_Wd) }, + /* 22 */ { GRPSSE66(Ia_pmovsxbq_Vdq_Ww) }, + /* 23 */ { GRPSSE66(Ia_pmovsxwd_Vdq_Wq) }, + /* 24 */ { GRPSSE66(Ia_pmovsxwq_Vdq_Wd) }, + /* 25 */ { GRPSSE66(Ia_pmovsxdq_Vdq_Wq) }, /* 26 */ { 0, &Ia_Invalid }, /* 27 */ { 0, &Ia_Invalid }, - /* 28 */ { GRPSSE(0f3828) }, - /* 29 */ { GRPSSE(0f3829) }, - /* 2A */ { GRPSSE(0f382a) }, - /* 2B */ { GRPSSE(0f382b) }, + /* 28 */ { GRPSSE66(Ia_pmuldq_Vdq_Wdq) }, + /* 29 */ { GRPSSE66(Ia_pcmpeqq_Vdq_Wdq) }, + /* 2A */ { GRPSSE66(Ia_movntdqa_Vdq_Mdq) }, + /* 2B */ { GRPSSE66(Ia_packusdw_Vdq_Wdq) }, /* 2C */ { 0, &Ia_Invalid }, /* 2D */ { 0, &Ia_Invalid }, /* 2E */ { 0, &Ia_Invalid }, /* 2F */ { 0, &Ia_Invalid }, - /* 30 */ { GRPSSE(0f3830) }, - /* 31 */ { GRPSSE(0f3831) }, - /* 32 */ { GRPSSE(0f3832) }, - /* 33 */ { GRPSSE(0f3833) }, - /* 34 */ { GRPSSE(0f3834) }, - /* 35 */ { GRPSSE(0f3835) }, + /* 30 */ { GRPSSE66(Ia_pmovzxbw_Vdq_Wq) }, + /* 31 */ { GRPSSE66(Ia_pmovzxbd_Vdq_Wd) }, + /* 32 */ { GRPSSE66(Ia_pmovzxbq_Vdq_Ww) }, + /* 33 */ { GRPSSE66(Ia_pmovzxwd_Vdq_Wq) }, + /* 34 */ { GRPSSE66(Ia_pmovzxwq_Vdq_Wd) }, + /* 35 */ { GRPSSE66(Ia_pmovzxdq_Vdq_Wq) }, /* 36 */ { 0, &Ia_Invalid }, - /* 37 */ { GRPSSE(0f3837) }, - /* 38 */ { GRPSSE(0f3838) }, - /* 39 */ { GRPSSE(0f3839) }, - /* 3A */ { GRPSSE(0f383a) }, - /* 3B */ { GRPSSE(0f383b) }, - /* 3C */ { GRPSSE(0f383c) }, - /* 3D */ { GRPSSE(0f383d) }, - /* 3E */ { GRPSSE(0f383e) }, - /* 3F */ { GRPSSE(0f383f) }, - /* 40 */ { GRPSSE(0f3840) }, - /* 41 */ { GRPSSE(0f3841) }, + /* 37 */ { GRPSSE66(Ia_pcmpgtq_Vdq_Wdq) }, + /* 38 */ { GRPSSE66(Ia_pminsb_Vdq_Wdq) }, + /* 39 */ { GRPSSE66(Ia_pminsd_Vdq_Wdq) }, + /* 3A */ { GRPSSE66(Ia_pminuw_Vdq_Wdq) }, + /* 3B */ { GRPSSE66(Ia_pminud_Vdq_Wdq) }, + /* 3C */ { GRPSSE66(Ia_pmaxsb_Vdq_Wdq) }, + /* 3D */ { GRPSSE66(Ia_pmaxsd_Vdq_Wdq) }, + /* 3E */ { GRPSSE66(Ia_pmaxuw_Vdq_Wdq) }, + /* 3F */ { GRPSSE66(Ia_pmaxud_Vdq_Wdq) }, + /* 40 */ { GRPSSE66(Ia_pmulld_Vdq_Wdq) }, + /* 41 */ { GRPSSE66(Ia_phminposuw_Vdq_Wdq) }, /* 42 */ { 0, &Ia_Invalid }, /* 43 */ { 0, &Ia_Invalid }, /* 44 */ { 0, &Ia_Invalid }, @@ -3279,11 +2865,11 @@ /* D8 */ { 0, &Ia_Invalid }, /* D9 */ { 0, &Ia_Invalid }, /* DA */ { 0, &Ia_Invalid }, - /* DB */ { GRPSSE(0f38db) }, - /* DC */ { GRPSSE(0f38dc) }, - /* DD */ { GRPSSE(0f38dd) }, - /* DE */ { GRPSSE(0f38de) }, - /* DF */ { GRPSSE(0f38df) }, + /* DB */ { GRPSSE66(Ia_aesimc_Vdq_Wdq) }, + /* DC */ { GRPSSE66(Ia_aesenc_Vdq_Wdq) }, + /* DD */ { GRPSSE66(Ia_aesenclast_Vdq_Wdq) }, + /* DE */ { GRPSSE66(Ia_aesdec_Vdq_Wdq) }, + /* DF */ { GRPSSE66(Ia_aesdeclast_Vdq_Wdq) }, /* E0 */ { 0, &Ia_Invalid }, /* E1 */ { 0, &Ia_Invalid }, /* E2 */ { 0, &Ia_Invalid }, @@ -3329,22 +2915,22 @@ /* 05 */ { 0, &Ia_Invalid }, /* 06 */ { 0, &Ia_Invalid }, /* 07 */ { 0, &Ia_Invalid }, - /* 08 */ { GRPSSE(0f3a08) }, - /* 09 */ { GRPSSE(0f3a09) }, - /* 0A */ { GRPSSE(0f3a0a) }, - /* 0B */ { GRPSSE(0f3a0b) }, - /* 0C */ { GRPSSE(0f3a0c) }, - /* 0D */ { GRPSSE(0f3a0d) }, - /* 0E */ { GRPSSE(0f3a0e) }, + /* 08 */ { GRPSSE66(Ia_roundps_Vps_Wps_Ib) }, + /* 09 */ { GRPSSE66(Ia_roundpd_Vpd_Wpd_Ib) }, + /* 0A */ { GRPSSE66(Ia_roundss_Vss_Wss_Ib) }, + /* 0B */ { GRPSSE66(Ia_roundsd_Vsd_Wsd_Ib) }, + /* 0C */ { GRPSSE66(Ia_blendps_Vps_Wps_Ib) }, + /* 0D */ { GRPSSE66(Ia_blendpd_Vpd_Wpd_Ib) }, + /* 0E */ { GRPSSE66(Ia_pblendw_Vdq_Wdq_Ib) }, /* 0F */ { GRPSSE(0f3a0f) }, /* 10 */ { 0, &Ia_Invalid }, /* 11 */ { 0, &Ia_Invalid }, /* 12 */ { 0, &Ia_Invalid }, /* 13 */ { 0, &Ia_Invalid }, - /* 14 */ { GRPSSE(0f3a14) }, - /* 15 */ { GRPSSE(0f3a15) }, + /* 14 */ { GRPSSE66(Ia_pextrb_Hbd_Udq_Ib) }, + /* 15 */ { GRPSSE66(Ia_pextrw_Hwd_Udq_Ib) }, /* 16 */ { GRPSSE(0f3a16) }, - /* 17 */ { GRPSSE(0f3a17) }, + /* 17 */ { GRPSSE66(Ia_extractps_Hd_Udq_Ib) }, /* 18 */ { 0, &Ia_Invalid }, /* 19 */ { 0, &Ia_Invalid }, /* 1A */ { 0, &Ia_Invalid }, @@ -3353,8 +2939,8 @@ /* 1D */ { 0, &Ia_Invalid }, /* 1E */ { 0, &Ia_Invalid }, /* 1F */ { 0, &Ia_Invalid }, - /* 20 */ { GRPSSE(0f3a20) }, - /* 21 */ { GRPSSE(0f3a21) }, + /* 20 */ { GRPSSE66(Ia_pinsrb_Vdq_Ed_Ib) }, + /* 21 */ { GRPSSE66(Ia_insertps_Vps_Wss_Ib) }, /* 22 */ { GRPSSE(0f3a22) }, /* 23 */ { 0, &Ia_Invalid }, /* 24 */ { 0, &Ia_Invalid }, @@ -3385,11 +2971,11 @@ /* 3D */ { 0, &Ia_Invalid }, /* 3E */ { 0, &Ia_Invalid }, /* 3F */ { 0, &Ia_Invalid }, - /* 40 */ { GRPSSE(0f3a40) }, - /* 41 */ { GRPSSE(0f3a41) }, - /* 42 */ { GRPSSE(0f3a42) }, + /* 40 */ { GRPSSE66(Ia_dpps_Vps_Wps_Ib) }, + /* 41 */ { GRPSSE66(Ia_dppd_Vpd_Wpd_Ib) }, + /* 42 */ { GRPSSE66(Ia_mpsadbw_Vdq_Wdq_Ib) }, /* 43 */ { 0, &Ia_Invalid }, - /* 44 */ { GRPSSE(0f3a44) }, + /* 44 */ { GRPSSE66(Ia_pclmulqdq_Vdq_Wdq_Ib) }, /* 45 */ { 0, &Ia_Invalid }, /* 46 */ { 0, &Ia_Invalid }, /* 47 */ { 0, &Ia_Invalid }, @@ -3417,10 +3003,10 @@ /* 5D */ { 0, &Ia_Invalid }, /* 5E */ { 0, &Ia_Invalid }, /* 5F */ { 0, &Ia_Invalid }, - /* 60 */ { GRPSSE(0f3a60) }, - /* 61 */ { GRPSSE(0f3a61) }, - /* 62 */ { GRPSSE(0f3a62) }, - /* 63 */ { GRPSSE(0f3a63) }, + /* 60 */ { GRPSSE66(Ia_pcmpestrm_Vdq_Wdq_Ib) }, + /* 61 */ { GRPSSE66(Ia_pcmpestri_Vdq_Wdq_Ib) }, + /* 62 */ { GRPSSE66(Ia_pcmpistrm_Vdq_Wdq_Ib) }, + /* 63 */ { GRPSSE66(Ia_pcmpistri_Vdq_Wdq_Ib) }, /* 64 */ { 0, &Ia_Invalid }, /* 65 */ { 0, &Ia_Invalid }, /* 66 */ { 0, &Ia_Invalid }, @@ -3544,7 +3130,7 @@ /* DC */ { 0, &Ia_Invalid }, /* DD */ { 0, &Ia_Invalid }, /* DE */ { 0, &Ia_Invalid }, - /* DF */ { GRPSSE(0f3adf) }, + /* DF */ { GRPSSE66(Ia_aeskeygenassist_Vdq_Wdq_Ib) }, /* E0 */ { 0, &Ia_Invalid }, /* E1 */ { 0, &Ia_Invalid }, /* E2 */ { 0, &Ia_Invalid }, @@ -4025,7 +3611,7 @@ /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp }, /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb }, /* 0F B7 */ { 0, &Ia_movw_Gw_Ew }, - /* 0F B8 */ { GRPSSE(0fb8w) }, + /* 0F B8 */ { GRPSSEF2(Ia_popcnt_Gw_Ew) }, /* 0F B9 */ { 0, &Ia_ud2b }, /* 0F BA */ { GRPN(G8EwIb) }, /* 0F BB */ { 0, &Ia_btcw_Ew_Gw }, @@ -4546,7 +4132,7 @@ /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp }, /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb }, /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew }, - /* 0F B8 */ { GRPSSE(0fb8d) }, + /* 0F B8 */ { GRPSSEF2(Ia_popcnt_Gd_Ed) }, /* 0F B9 */ { 0, &Ia_ud2b }, /* 0F BA */ { GRPN(G8EdIb) }, /* 0F BB */ { 0, &Ia_btcl_Ed_Gd }, @@ -5067,7 +4653,7 @@ /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp }, /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb }, /* 0F B7 */ { 0, &Ia_movw_Gw_Ew }, - /* 0F B8 */ { GRPSSE(0fb8w) }, + /* 0F B8 */ { GRPSSEF2(Ia_popcnt_Gw_Ew) }, /* 0F B9 */ { 0, &Ia_ud2b }, /* 0F BA */ { GRPN(G8EwIb) }, /* 0F BB */ { 0, &Ia_btcw_Ew_Gw }, @@ -5585,7 +5171,7 @@ /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp }, /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb }, /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew }, - /* 0F B8 */ { GRPSSE(0fb8d) }, + /* 0F B8 */ { GRPSSEF2(Ia_popcnt_Gd_Ed) }, /* 0F B9 */ { 0, &Ia_ud2b }, /* 0F BA */ { GRPN(G8EdIb) }, /* 0F BB */ { 0, &Ia_btcl_Ed_Gd }, @@ -6103,7 +5689,7 @@ /* 0F B5 */ { 0, &Ia_lgsq_Gq_Mp }, /* 0F B6 */ { 0, &Ia_movzbq_Gq_Eb }, /* 0F B7 */ { 0, &Ia_movzwq_Gq_Ew }, - /* 0F B8 */ { GRPSSE(0fb8q) }, + /* 0F B8 */ { GRPSSEF2(Ia_popcnt_Gq_Eq) }, /* 0F B9 */ { 0, &Ia_ud2b }, /* 0F BA */ { GRPN(G8EqIb) }, /* 0F BB */ { 0, &Ia_btcq_Eq_Gq }, Index: disasm.h =================================================================== RCS file: /cvsroot/bochs/bochs/disasm/disasm.h,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -r1.53 -r1.54 --- disasm.h 28 Dec 2009 13:52:40 -0000 1.53 +++ disasm.h 31 Jan 2010 09:45:27 -0000 1.54 @@ -66,7 +66,6 @@ #define IA_PCLMULQDQ 0x01000000 /* PCLMULQDQ instruction */ #define IA_MOVBE 0x02000000 /* MOVBE Intel Atom(R) instruction */ #define IA_AVX 0x04000000 /* AVX instruction */ -#define IA_LEGACY 0x80000000 /* legacy instruction */ /* general purpose bit register */ enum { Index: opcodes.inc =================================================================== RCS file: /cvsroot/bochs/bochs/disasm/opcodes.inc,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- opcodes.inc 11 Jan 2010 21:27:59 -0000 1.30 +++ opcodes.inc 31 Jan 2010 09:45:27 -0000 1.31 @@ -323,7 +323,7 @@ Ia_fcoms_Md = { "fcom", "fcoms", Md, XX, XX, XX, IA_X87 }, Ia_fcos = { "fcos", "fcos", XX, XX, XX, XX, IA_X87 }, Ia_fdecstp = { "fdecstp", "fdecstp", XX, XX, XX, XX, IA_X87 }, -Ia_fdisi = { "fdisi (287 legacy)", "fdisi (287 legacy)", XX, XX, XX, XX, IA_X87 | IA_LEGACY }, +Ia_fdisi = { "fdisi (287 legacy)", "fdisi (287 legacy)", XX, XX, XX, XX, IA_X87 }, Ia_fdiv_ST0_STi = { "fdiv", "fdiv", ST0, STi, XX, XX, IA_X87 }, Ia_fdiv_STi_ST0 = { "fdiv", "fdiv", STi, ST0, XX, XX, IA_X87 }, Ia_fdivl_Mq = { "fdiv", "fdivl", Mq, XX, XX, XX, IA_X87 }, @@ -335,7 +335,7 @@ Ia_fdivrs_Md = { "fdivr", "fdivrs", Md, XX, XX, XX, IA_X87 }, Ia_fdivs_Md = { "fdiv", "fdivs", Md, XX, XX, XX, IA_X87 }, Ia_femms = { "femms", "femms", XX, XX, XX, XX, IA_3DNOW }, -Ia_feni = { "feni (287 legacy)", "feni(287 legacy)", XX, XX, XX, XX, IA_X87 | IA_LEGACY }, +Ia_feni = { "feni (287 legacy)", "feni(287 legacy)", XX, XX, XX, XX, IA_X87 }, Ia_ffree_STi = { "ffree", "ffree", STi, XX, XX, XX, IA_X87 }, Ia_ffreep_STi = { "ffreep", "ffreep", STi, XX, XX, XX, IA_X87 }, Ia_fiaddl_Md = { "fiadd", "fiaddl", Md, XX, XX, XX, IA_X87 }, @@ -399,7 +399,7 @@ Ia_frndint = { "frndint", "frndint", XX, XX, XX, XX, IA_X87 }, Ia_frstor = { "frstor", "frstor", Mx, XX, XX, XX, IA_X87 }, Ia_fscale = { "fscale", "fscale", XX, XX, XX, XX, IA_X87 }, -Ia_fsetpm = { "fsetpm (287 legacy)", "fsetpm (287 legacy)", XX, XX, XX, XX, IA_X87 | IA_LEGACY }, +Ia_fsetpm = { "fsetpm (287 legacy)", "fsetpm (287 legacy)", XX, XX, XX, XX, IA_X87 }, Ia_fsin = { "fsin", "fsin", XX, XX, XX, XX, IA_X87 }, Ia_fsincos = { "fsincos", "fsincos", XX, XX, XX, XX, IA_X87 }, Ia_fsqrt = { "fsqrt", "fsqrt", XX, XX, XX, XX, IA_X87 }, |