optimized decode tables

This commit is contained in:
Stanislav Shwartsman 2010-01-31 09:45:27 +00:00
parent 9b40d6fe47
commit eae084920a
9 changed files with 366 additions and 758 deletions

View File

@ -23,15 +23,20 @@ Changes after 2.4.2:
- USB HP DeskJet 920C printer device emulation (Ben Lunt)
- BIOS
- Fix MSR_MTRRdefType configuration (prevented boot of modern Linux kernels)
- Fix MTRR configuration (prevented boot of modern Linux kernels)
- Fix interrupt vectors for INT 60h-66h (reserved for user interrupt) by
setting them to zero
- SF patches applied
[2938273] allow instrumentation to change execute by Konrad Grochowski
[2926072] Indirection operators in expressions by Derek Peschel
[2914433] makesym.perl misses symbols by John R. Jackson
[2908481] USB Printer by Ben Lunt
- these S.F. bugs were closed/fixed
[1921294] extended memory less than 1M wrong size
[1947249] BX_USE_EBDA_TABLES and MP table placement
[1933859] BX_USE_EBDA_TABLES and memory overlapping
[2923680] "help dregs" is a syntax error
[2919661] CPU may fail to do 16bit near call
[2790768] Memory corruption with SMP > 32, Panic BIOS Keyboard Error

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: fetchdecode.cc,v 1.241 2010-01-29 10:16:28 sshwarts Exp $
// $Id: fetchdecode.cc,v 1.242 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -2937,7 +2937,7 @@ modrm_done:
#if BX_SUPPORT_3DNOW
if(b1 == 0x10f)
ia_opcode = Bx3DNowOpcodeInfo[i->modRMForm.Ib].IA;
ia_opcode = Bx3DNowOpcode[i->modRMForm.Ib];
#endif
if (! BX_NULL_SEG_REG(seg_override))

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: fetchdecode.h,v 1.95 2010-01-29 10:16:28 sshwarts Exp $
// $Id: fetchdecode.h,v 1.96 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -726,264 +726,264 @@ static const BxOpcodeInfo_t BxOpcodeInfo_FloatingPointDF[64] = {
#if BX_SUPPORT_3DNOW
static const BxOpcodeInfo_t Bx3DNowOpcodeInfo[256] = {
static Bit16u Bx3DNowOpcode[256] = {
// 256 entries for 3DNow opcodes, by suffix
/* 00 */ { 0, BX_IA_ERROR },
/* 01 */ { 0, BX_IA_ERROR },
/* 02 */ { 0, BX_IA_ERROR },
/* 03 */ { 0, BX_IA_ERROR },
/* 04 */ { 0, BX_IA_ERROR },
/* 05 */ { 0, BX_IA_ERROR },
/* 06 */ { 0, BX_IA_ERROR },
/* 07 */ { 0, BX_IA_ERROR },
/* 08 */ { 0, BX_IA_ERROR },
/* 09 */ { 0, BX_IA_ERROR },
/* 0A */ { 0, BX_IA_ERROR },
/* 0B */ { 0, BX_IA_ERROR },
/* 0C */ { 0, BX_IA_PI2FW_PqQq },
/* 0D */ { 0, BX_IA_PI2FD_PqQq },
/* 0E */ { 0, BX_IA_ERROR },
/* 0F */ { 0, BX_IA_ERROR },
/* 10 */ { 0, BX_IA_ERROR },
/* 11 */ { 0, BX_IA_ERROR },
/* 12 */ { 0, BX_IA_ERROR },
/* 13 */ { 0, BX_IA_ERROR },
/* 14 */ { 0, BX_IA_ERROR },
/* 15 */ { 0, BX_IA_ERROR },
/* 16 */ { 0, BX_IA_ERROR },
/* 17 */ { 0, BX_IA_ERROR },
/* 18 */ { 0, BX_IA_ERROR },
/* 19 */ { 0, BX_IA_ERROR },
/* 1A */ { 0, BX_IA_ERROR },
/* 1B */ { 0, BX_IA_ERROR },
/* 1C */ { 0, BX_IA_PF2IW_PqQq },
/* 1D */ { 0, BX_IA_PF2ID_PqQq },
/* 1E */ { 0, BX_IA_ERROR },
/* 1F */ { 0, BX_IA_ERROR },
/* 20 */ { 0, BX_IA_ERROR },
/* 21 */ { 0, BX_IA_ERROR },
/* 22 */ { 0, BX_IA_ERROR },
/* 23 */ { 0, BX_IA_ERROR },
/* 24 */ { 0, BX_IA_ERROR },
/* 25 */ { 0, BX_IA_ERROR },
/* 26 */ { 0, BX_IA_ERROR },
/* 27 */ { 0, BX_IA_ERROR },
/* 28 */ { 0, BX_IA_ERROR },
/* 29 */ { 0, BX_IA_ERROR },
/* 2A */ { 0, BX_IA_ERROR },
/* 2B */ { 0, BX_IA_ERROR },
/* 2C */ { 0, BX_IA_ERROR },
/* 2D */ { 0, BX_IA_ERROR },
/* 2E */ { 0, BX_IA_ERROR },
/* 2F */ { 0, BX_IA_ERROR },
/* 30 */ { 0, BX_IA_ERROR },
/* 31 */ { 0, BX_IA_ERROR },
/* 32 */ { 0, BX_IA_ERROR },
/* 33 */ { 0, BX_IA_ERROR },
/* 34 */ { 0, BX_IA_ERROR },
/* 35 */ { 0, BX_IA_ERROR },
/* 36 */ { 0, BX_IA_ERROR },
/* 37 */ { 0, BX_IA_ERROR },
/* 38 */ { 0, BX_IA_ERROR },
/* 39 */ { 0, BX_IA_ERROR },
/* 3A */ { 0, BX_IA_ERROR },
/* 3B */ { 0, BX_IA_ERROR },
/* 3C */ { 0, BX_IA_ERROR },
/* 3D */ { 0, BX_IA_ERROR },
/* 3E */ { 0, BX_IA_ERROR },
/* 3F */ { 0, BX_IA_ERROR },
/* 40 */ { 0, BX_IA_ERROR },
/* 41 */ { 0, BX_IA_ERROR },
/* 42 */ { 0, BX_IA_ERROR },
/* 43 */ { 0, BX_IA_ERROR },
/* 44 */ { 0, BX_IA_ERROR },
/* 45 */ { 0, BX_IA_ERROR },
/* 46 */ { 0, BX_IA_ERROR },
/* 47 */ { 0, BX_IA_ERROR },
/* 48 */ { 0, BX_IA_ERROR },
/* 49 */ { 0, BX_IA_ERROR },
/* 4A */ { 0, BX_IA_ERROR },
/* 4B */ { 0, BX_IA_ERROR },
/* 4C */ { 0, BX_IA_ERROR },
/* 4D */ { 0, BX_IA_ERROR },
/* 4E */ { 0, BX_IA_ERROR },
/* 4F */ { 0, BX_IA_ERROR },
/* 50 */ { 0, BX_IA_ERROR },
/* 51 */ { 0, BX_IA_ERROR },
/* 52 */ { 0, BX_IA_ERROR },
/* 53 */ { 0, BX_IA_ERROR },
/* 54 */ { 0, BX_IA_ERROR },
/* 55 */ { 0, BX_IA_ERROR },
/* 56 */ { 0, BX_IA_ERROR },
/* 57 */ { 0, BX_IA_ERROR },
/* 58 */ { 0, BX_IA_ERROR },
/* 59 */ { 0, BX_IA_ERROR },
/* 5A */ { 0, BX_IA_ERROR },
/* 5B */ { 0, BX_IA_ERROR },
/* 5C */ { 0, BX_IA_ERROR },
/* 5D */ { 0, BX_IA_ERROR },
/* 5E */ { 0, BX_IA_ERROR },
/* 5F */ { 0, BX_IA_ERROR },
/* 60 */ { 0, BX_IA_ERROR },
/* 61 */ { 0, BX_IA_ERROR },
/* 62 */ { 0, BX_IA_ERROR },
/* 63 */ { 0, BX_IA_ERROR },
/* 64 */ { 0, BX_IA_ERROR },
/* 65 */ { 0, BX_IA_ERROR },
/* 66 */ { 0, BX_IA_ERROR },
/* 67 */ { 0, BX_IA_ERROR },
/* 68 */ { 0, BX_IA_ERROR },
/* 69 */ { 0, BX_IA_ERROR },
/* 6A */ { 0, BX_IA_ERROR },
/* 6B */ { 0, BX_IA_ERROR },
/* 6C */ { 0, BX_IA_ERROR },
/* 6D */ { 0, BX_IA_ERROR },
/* 6E */ { 0, BX_IA_ERROR },
/* 6F */ { 0, BX_IA_ERROR },
/* 70 */ { 0, BX_IA_ERROR },
/* 71 */ { 0, BX_IA_ERROR },
/* 72 */ { 0, BX_IA_ERROR },
/* 73 */ { 0, BX_IA_ERROR },
/* 74 */ { 0, BX_IA_ERROR },
/* 75 */ { 0, BX_IA_ERROR },
/* 76 */ { 0, BX_IA_ERROR },
/* 77 */ { 0, BX_IA_ERROR },
/* 78 */ { 0, BX_IA_ERROR },
/* 79 */ { 0, BX_IA_ERROR },
/* 7A */ { 0, BX_IA_ERROR },
/* 7B */ { 0, BX_IA_ERROR },
/* 7C */ { 0, BX_IA_ERROR },
/* 7D */ { 0, BX_IA_ERROR },
/* 7E */ { 0, BX_IA_ERROR },
/* 7F */ { 0, BX_IA_ERROR },
/* 80 */ { 0, BX_IA_ERROR },
/* 81 */ { 0, BX_IA_ERROR },
/* 82 */ { 0, BX_IA_ERROR },
/* 83 */ { 0, BX_IA_ERROR },
/* 84 */ { 0, BX_IA_ERROR },
/* 85 */ { 0, BX_IA_ERROR },
/* 86 */ { 0, BX_IA_ERROR },
/* 87 */ { 0, BX_IA_ERROR },
/* 88 */ { 0, BX_IA_ERROR },
/* 89 */ { 0, BX_IA_ERROR },
/* 8A */ { 0, BX_IA_PFNACC_PqQq },
/* 8B */ { 0, BX_IA_ERROR },
/* 8C */ { 0, BX_IA_ERROR },
/* 8D */ { 0, BX_IA_ERROR },
/* 8E */ { 0, BX_IA_PFPNACC_PqQq },
/* 8F */ { 0, BX_IA_ERROR },
/* 90 */ { 0, BX_IA_PFCMPGE_PqQq },
/* 91 */ { 0, BX_IA_ERROR },
/* 92 */ { 0, BX_IA_ERROR },
/* 93 */ { 0, BX_IA_ERROR },
/* 94 */ { 0, BX_IA_PFMIN_PqQq },
/* 95 */ { 0, BX_IA_ERROR },
/* 96 */ { 0, BX_IA_PFRCP_PqQq },
/* 97 */ { 0, BX_IA_PFRSQRT_PqQq },
/* 98 */ { 0, BX_IA_ERROR },
/* 99 */ { 0, BX_IA_ERROR },
/* 9A */ { 0, BX_IA_PFSUB_PqQq },
/* 9B */ { 0, BX_IA_ERROR },
/* 9C */ { 0, BX_IA_ERROR },
/* 9D */ { 0, BX_IA_ERROR },
/* 9E */ { 0, BX_IA_PFADD_PqQq },
/* 9F */ { 0, BX_IA_ERROR },
/* A0 */ { 0, BX_IA_PFCMPGT_PqQq },
/* A1 */ { 0, BX_IA_ERROR },
/* A2 */ { 0, BX_IA_ERROR },
/* A3 */ { 0, BX_IA_ERROR },
/* A4 */ { 0, BX_IA_PFMAX_PqQq },
/* A5 */ { 0, BX_IA_ERROR },
/* A6 */ { 0, BX_IA_PFRCPIT1_PqQq },
/* A7 */ { 0, BX_IA_PFRSQIT1_PqQq },
/* A8 */ { 0, BX_IA_ERROR },
/* A9 */ { 0, BX_IA_ERROR },
/* AA */ { 0, BX_IA_PFSUBR_PqQq },
/* AB */ { 0, BX_IA_ERROR },
/* AC */ { 0, BX_IA_ERROR },
/* AD */ { 0, BX_IA_ERROR },
/* AE */ { 0, BX_IA_PFACC_PqQq },
/* AF */ { 0, BX_IA_ERROR },
/* B0 */ { 0, BX_IA_PFCMPEQ_PqQq },
/* B1 */ { 0, BX_IA_ERROR },
/* B2 */ { 0, BX_IA_ERROR },
/* B3 */ { 0, BX_IA_ERROR },
/* B4 */ { 0, BX_IA_PFMUL_PqQq },
/* B5 */ { 0, BX_IA_ERROR },
/* B6 */ { 0, BX_IA_PFRCPIT2_PqQq },
/* B7 */ { 0, BX_IA_PMULHRW_PqQq },
/* B8 */ { 0, BX_IA_ERROR },
/* B9 */ { 0, BX_IA_ERROR },
/* BA */ { 0, BX_IA_ERROR },
/* BB */ { 0, BX_IA_PSWAPD_PqQq },
/* BC */ { 0, BX_IA_ERROR },
/* BD */ { 0, BX_IA_ERROR },
/* BE */ { 0, BX_IA_ERROR },
/* BF */ { 0, BX_IA_PAVGB_PqQq },
/* C0 */ { 0, BX_IA_ERROR },
/* C1 */ { 0, BX_IA_ERROR },
/* C2 */ { 0, BX_IA_ERROR },
/* C3 */ { 0, BX_IA_ERROR },
/* C4 */ { 0, BX_IA_ERROR },
/* C5 */ { 0, BX_IA_ERROR },
/* C6 */ { 0, BX_IA_ERROR },
/* C7 */ { 0, BX_IA_ERROR },
/* C8 */ { 0, BX_IA_ERROR },
/* C9 */ { 0, BX_IA_ERROR },
/* CA */ { 0, BX_IA_ERROR },
/* CB */ { 0, BX_IA_ERROR },
/* CC */ { 0, BX_IA_ERROR },
/* CD */ { 0, BX_IA_ERROR },
/* CE */ { 0, BX_IA_ERROR },
/* CF */ { 0, BX_IA_ERROR },
/* D0 */ { 0, BX_IA_ERROR },
/* D1 */ { 0, BX_IA_ERROR },
/* D2 */ { 0, BX_IA_ERROR },
/* D3 */ { 0, BX_IA_ERROR },
/* D4 */ { 0, BX_IA_ERROR },
/* D5 */ { 0, BX_IA_ERROR },
/* D6 */ { 0, BX_IA_ERROR },
/* D7 */ { 0, BX_IA_ERROR },
/* D8 */ { 0, BX_IA_ERROR },
/* D9 */ { 0, BX_IA_ERROR },
/* DA */ { 0, BX_IA_ERROR },
/* DB */ { 0, BX_IA_ERROR },
/* DC */ { 0, BX_IA_ERROR },
/* DD */ { 0, BX_IA_ERROR },
/* DE */ { 0, BX_IA_ERROR },
/* DF */ { 0, BX_IA_ERROR },
/* E0 */ { 0, BX_IA_ERROR },
/* E1 */ { 0, BX_IA_ERROR },
/* E2 */ { 0, BX_IA_ERROR },
/* E3 */ { 0, BX_IA_ERROR },
/* E4 */ { 0, BX_IA_ERROR },
/* E5 */ { 0, BX_IA_ERROR },
/* E6 */ { 0, BX_IA_ERROR },
/* E7 */ { 0, BX_IA_ERROR },
/* E8 */ { 0, BX_IA_ERROR },
/* E9 */ { 0, BX_IA_ERROR },
/* EA */ { 0, BX_IA_ERROR },
/* EB */ { 0, BX_IA_ERROR },
/* EC */ { 0, BX_IA_ERROR },
/* ED */ { 0, BX_IA_ERROR },
/* EE */ { 0, BX_IA_ERROR },
/* EF */ { 0, BX_IA_ERROR },
/* F0 */ { 0, BX_IA_ERROR },
/* F1 */ { 0, BX_IA_ERROR },
/* F2 */ { 0, BX_IA_ERROR },
/* F3 */ { 0, BX_IA_ERROR },
/* F4 */ { 0, BX_IA_ERROR },
/* F5 */ { 0, BX_IA_ERROR },
/* F6 */ { 0, BX_IA_ERROR },
/* F7 */ { 0, BX_IA_ERROR },
/* F8 */ { 0, BX_IA_ERROR },
/* F9 */ { 0, BX_IA_ERROR },
/* FA */ { 0, BX_IA_ERROR },
/* FB */ { 0, BX_IA_ERROR },
/* FC */ { 0, BX_IA_ERROR },
/* FD */ { 0, BX_IA_ERROR },
/* FE */ { 0, BX_IA_ERROR },
/* FF */ { 0, BX_IA_ERROR }
/* 00 */ BX_IA_ERROR,
/* 01 */ BX_IA_ERROR,
/* 02 */ BX_IA_ERROR,
/* 03 */ BX_IA_ERROR,
/* 04 */ BX_IA_ERROR,
/* 05 */ BX_IA_ERROR,
/* 06 */ BX_IA_ERROR,
/* 07 */ BX_IA_ERROR,
/* 08 */ BX_IA_ERROR,
/* 09 */ BX_IA_ERROR,
/* 0A */ BX_IA_ERROR,
/* 0B */ BX_IA_ERROR,
/* 0C */ BX_IA_PI2FW_PqQq,
/* 0D */ BX_IA_PI2FD_PqQq,
/* 0E */ BX_IA_ERROR,
/* 0F */ BX_IA_ERROR,
/* 10 */ BX_IA_ERROR,
/* 11 */ BX_IA_ERROR,
/* 12 */ BX_IA_ERROR,
/* 13 */ BX_IA_ERROR,
/* 14 */ BX_IA_ERROR,
/* 15 */ BX_IA_ERROR,
/* 16 */ BX_IA_ERROR,
/* 17 */ BX_IA_ERROR,
/* 18 */ BX_IA_ERROR,
/* 19 */ BX_IA_ERROR,
/* 1A */ BX_IA_ERROR,
/* 1B */ BX_IA_ERROR,
/* 1C */ BX_IA_PF2IW_PqQq,
/* 1D */ BX_IA_PF2ID_PqQq,
/* 1E */ BX_IA_ERROR,
/* 1F */ BX_IA_ERROR,
/* 20 */ BX_IA_ERROR,
/* 21 */ BX_IA_ERROR,
/* 22 */ BX_IA_ERROR,
/* 23 */ BX_IA_ERROR,
/* 24 */ BX_IA_ERROR,
/* 25 */ BX_IA_ERROR,
/* 26 */ BX_IA_ERROR,
/* 27 */ BX_IA_ERROR,
/* 28 */ BX_IA_ERROR,
/* 29 */ BX_IA_ERROR,
/* 2A */ BX_IA_ERROR,
/* 2B */ BX_IA_ERROR,
/* 2C */ BX_IA_ERROR,
/* 2D */ BX_IA_ERROR,
/* 2E */ BX_IA_ERROR,
/* 2F */ BX_IA_ERROR,
/* 30 */ BX_IA_ERROR,
/* 31 */ BX_IA_ERROR,
/* 32 */ BX_IA_ERROR,
/* 33 */ BX_IA_ERROR,
/* 34 */ BX_IA_ERROR,
/* 35 */ BX_IA_ERROR,
/* 36 */ BX_IA_ERROR,
/* 37 */ BX_IA_ERROR,
/* 38 */ BX_IA_ERROR,
/* 39 */ BX_IA_ERROR,
/* 3A */ BX_IA_ERROR,
/* 3B */ BX_IA_ERROR,
/* 3C */ BX_IA_ERROR,
/* 3D */ BX_IA_ERROR,
/* 3E */ BX_IA_ERROR,
/* 3F */ BX_IA_ERROR,
/* 40 */ BX_IA_ERROR,
/* 41 */ BX_IA_ERROR,
/* 42 */ BX_IA_ERROR,
/* 43 */ BX_IA_ERROR,
/* 44 */ BX_IA_ERROR,
/* 45 */ BX_IA_ERROR,
/* 46 */ BX_IA_ERROR,
/* 47 */ BX_IA_ERROR,
/* 48 */ BX_IA_ERROR,
/* 49 */ BX_IA_ERROR,
/* 4A */ BX_IA_ERROR,
/* 4B */ BX_IA_ERROR,
/* 4C */ BX_IA_ERROR,
/* 4D */ BX_IA_ERROR,
/* 4E */ BX_IA_ERROR,
/* 4F */ BX_IA_ERROR,
/* 50 */ BX_IA_ERROR,
/* 51 */ BX_IA_ERROR,
/* 52 */ BX_IA_ERROR,
/* 53 */ BX_IA_ERROR,
/* 54 */ BX_IA_ERROR,
/* 55 */ BX_IA_ERROR,
/* 56 */ BX_IA_ERROR,
/* 57 */ BX_IA_ERROR,
/* 58 */ BX_IA_ERROR,
/* 59 */ BX_IA_ERROR,
/* 5A */ BX_IA_ERROR,
/* 5B */ BX_IA_ERROR,
/* 5C */ BX_IA_ERROR,
/* 5D */ BX_IA_ERROR,
/* 5E */ BX_IA_ERROR,
/* 5F */ BX_IA_ERROR,
/* 60 */ BX_IA_ERROR,
/* 61 */ BX_IA_ERROR,
/* 62 */ BX_IA_ERROR,
/* 63 */ BX_IA_ERROR,
/* 64 */ BX_IA_ERROR,
/* 65 */ BX_IA_ERROR,
/* 66 */ BX_IA_ERROR,
/* 67 */ BX_IA_ERROR,
/* 68 */ BX_IA_ERROR,
/* 69 */ BX_IA_ERROR,
/* 6A */ BX_IA_ERROR,
/* 6B */ BX_IA_ERROR,
/* 6C */ BX_IA_ERROR,
/* 6D */ BX_IA_ERROR,
/* 6E */ BX_IA_ERROR,
/* 6F */ BX_IA_ERROR,
/* 70 */ BX_IA_ERROR,
/* 71 */ BX_IA_ERROR,
/* 72 */ BX_IA_ERROR,
/* 73 */ BX_IA_ERROR,
/* 74 */ BX_IA_ERROR,
/* 75 */ BX_IA_ERROR,
/* 76 */ BX_IA_ERROR,
/* 77 */ BX_IA_ERROR,
/* 78 */ BX_IA_ERROR,
/* 79 */ BX_IA_ERROR,
/* 7A */ BX_IA_ERROR,
/* 7B */ BX_IA_ERROR,
/* 7C */ BX_IA_ERROR,
/* 7D */ BX_IA_ERROR,
/* 7E */ BX_IA_ERROR,
/* 7F */ BX_IA_ERROR,
/* 80 */ BX_IA_ERROR,
/* 81 */ BX_IA_ERROR,
/* 82 */ BX_IA_ERROR,
/* 83 */ BX_IA_ERROR,
/* 84 */ BX_IA_ERROR,
/* 85 */ BX_IA_ERROR,
/* 86 */ BX_IA_ERROR,
/* 87 */ BX_IA_ERROR,
/* 88 */ BX_IA_ERROR,
/* 89 */ BX_IA_ERROR,
/* 8A */ BX_IA_PFNACC_PqQq,
/* 8B */ BX_IA_ERROR,
/* 8C */ BX_IA_ERROR,
/* 8D */ BX_IA_ERROR,
/* 8E */ BX_IA_PFPNACC_PqQq,
/* 8F */ BX_IA_ERROR,
/* 90 */ BX_IA_PFCMPGE_PqQq,
/* 91 */ BX_IA_ERROR,
/* 92 */ BX_IA_ERROR,
/* 93 */ BX_IA_ERROR,
/* 94 */ BX_IA_PFMIN_PqQq,
/* 95 */ BX_IA_ERROR,
/* 96 */ BX_IA_PFRCP_PqQq,
/* 97 */ BX_IA_PFRSQRT_PqQq,
/* 98 */ BX_IA_ERROR,
/* 99 */ BX_IA_ERROR,
/* 9A */ BX_IA_PFSUB_PqQq,
/* 9B */ BX_IA_ERROR,
/* 9C */ BX_IA_ERROR,
/* 9D */ BX_IA_ERROR,
/* 9E */ BX_IA_PFADD_PqQq,
/* 9F */ BX_IA_ERROR,
/* A0 */ BX_IA_PFCMPGT_PqQq,
/* A1 */ BX_IA_ERROR,
/* A2 */ BX_IA_ERROR,
/* A3 */ BX_IA_ERROR,
/* A4 */ BX_IA_PFMAX_PqQq,
/* A5 */ BX_IA_ERROR,
/* A6 */ BX_IA_PFRCPIT1_PqQq,
/* A7 */ BX_IA_PFRSQIT1_PqQq,
/* A8 */ BX_IA_ERROR,
/* A9 */ BX_IA_ERROR,
/* AA */ BX_IA_PFSUBR_PqQq,
/* AB */ BX_IA_ERROR,
/* AC */ BX_IA_ERROR,
/* AD */ BX_IA_ERROR,
/* AE */ BX_IA_PFACC_PqQq,
/* AF */ BX_IA_ERROR,
/* B0 */ BX_IA_PFCMPEQ_PqQq,
/* B1 */ BX_IA_ERROR,
/* B2 */ BX_IA_ERROR,
/* B3 */ BX_IA_ERROR,
/* B4 */ BX_IA_PFMUL_PqQq,
/* B5 */ BX_IA_ERROR,
/* B6 */ BX_IA_PFRCPIT2_PqQq,
/* B7 */ BX_IA_PMULHRW_PqQq,
/* B8 */ BX_IA_ERROR,
/* B9 */ BX_IA_ERROR,
/* BA */ BX_IA_ERROR,
/* BB */ BX_IA_PSWAPD_PqQq,
/* BC */ BX_IA_ERROR,
/* BD */ BX_IA_ERROR,
/* BE */ BX_IA_ERROR,
/* BF */ BX_IA_PAVGB_PqQq,
/* C0 */ BX_IA_ERROR,
/* C1 */ BX_IA_ERROR,
/* C2 */ BX_IA_ERROR,
/* C3 */ BX_IA_ERROR,
/* C4 */ BX_IA_ERROR,
/* C5 */ BX_IA_ERROR,
/* C6 */ BX_IA_ERROR,
/* C7 */ BX_IA_ERROR,
/* C8 */ BX_IA_ERROR,
/* C9 */ BX_IA_ERROR,
/* CA */ BX_IA_ERROR,
/* CB */ BX_IA_ERROR,
/* CC */ BX_IA_ERROR,
/* CD */ BX_IA_ERROR,
/* CE */ BX_IA_ERROR,
/* CF */ BX_IA_ERROR,
/* D0 */ BX_IA_ERROR,
/* D1 */ BX_IA_ERROR,
/* D2 */ BX_IA_ERROR,
/* D3 */ BX_IA_ERROR,
/* D4 */ BX_IA_ERROR,
/* D5 */ BX_IA_ERROR,
/* D6 */ BX_IA_ERROR,
/* D7 */ BX_IA_ERROR,
/* D8 */ BX_IA_ERROR,
/* D9 */ BX_IA_ERROR,
/* DA */ BX_IA_ERROR,
/* DB */ BX_IA_ERROR,
/* DC */ BX_IA_ERROR,
/* DD */ BX_IA_ERROR,
/* DE */ BX_IA_ERROR,
/* DF */ BX_IA_ERROR,
/* E0 */ BX_IA_ERROR,
/* E1 */ BX_IA_ERROR,
/* E2 */ BX_IA_ERROR,
/* E3 */ BX_IA_ERROR,
/* E4 */ BX_IA_ERROR,
/* E5 */ BX_IA_ERROR,
/* E6 */ BX_IA_ERROR,
/* E7 */ BX_IA_ERROR,
/* E8 */ BX_IA_ERROR,
/* E9 */ BX_IA_ERROR,
/* EA */ BX_IA_ERROR,
/* EB */ BX_IA_ERROR,
/* EC */ BX_IA_ERROR,
/* ED */ BX_IA_ERROR,
/* EE */ BX_IA_ERROR,
/* EF */ BX_IA_ERROR,
/* F0 */ BX_IA_ERROR,
/* F1 */ BX_IA_ERROR,
/* F2 */ BX_IA_ERROR,
/* F3 */ BX_IA_ERROR,
/* F4 */ BX_IA_ERROR,
/* F5 */ BX_IA_ERROR,
/* F6 */ BX_IA_ERROR,
/* F7 */ BX_IA_ERROR,
/* F8 */ BX_IA_ERROR,
/* F9 */ BX_IA_ERROR,
/* FA */ BX_IA_ERROR,
/* FB */ BX_IA_ERROR,
/* FC */ BX_IA_ERROR,
/* FD */ BX_IA_ERROR,
/* FE */ BX_IA_ERROR,
/* FF */ BX_IA_ERROR
};
#endif

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: fetchdecode64.cc,v 1.243 2010-01-29 10:16:28 sshwarts Exp $
// $Id: fetchdecode64.cc,v 1.244 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -3841,7 +3841,7 @@ modrm_done:
#if BX_SUPPORT_3DNOW
if(b1 == 0x10f)
ia_opcode = Bx3DNowOpcodeInfo[i->modRMForm.Ib].IA;
ia_opcode = Bx3DNowOpcode[i->modRMForm.Ib];
#endif
if (! BX_NULL_SEG_REG(seg_override))

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: dis_decode.cc,v 1.52 2009-10-14 20:45:29 sshwarts Exp $
// $Id: dis_decode.cc,v 1.53 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -221,6 +221,20 @@ x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_
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

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: dis_tables.h,v 1.37 2009-10-14 20:45:29 sshwarts Exp $
// $Id: dis_tables.h,v 1.38 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -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

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: dis_tables.inc,v 1.29 2010-01-11 21:27:59 sshwarts Exp $
// $Id: dis_tables.inc,v 1.30 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380b[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381e[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0f[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a16[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a22[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7f[4] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes16[256*2] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes32[256*2] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64w[256*2] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64d[256*2] = {
/* 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 @@ static BxDisasmOpcodeTable_t BxDisasmOpcodes64q[256*2] = {
/* 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 },

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: disasm.h,v 1.53 2009-12-28 13:52:40 sshwarts Exp $
// $Id: disasm.h,v 1.54 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -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 {

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: opcodes.inc,v 1.30 2010-01-11 21:27:59 sshwarts Exp $
// $Id: opcodes.inc,v 1.31 2010-01-31 09:45:27 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2005-2009 Stanislav Shwartsman
@ -323,7 +323,7 @@ Ia_fcomps_Md = { "fcomp", "fcomps", Md, XX, XX, XX, IA_X87 },
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_fdivrp_STi_ST0 = { "fdivrp", "fdivrp", STi, ST0, XX, XX, IA_X87 },
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_fptan = { "fptan", "fptan", XX, XX, XX, XX, IA_X87 },
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 },