minimize SSE tables, minor speedup in SSE code
This commit is contained in:
parent
15aec6efee
commit
b9de22961c
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: access32.cc,v 1.23 2009-02-17 19:20:46 sshwarts Exp $
|
||||
// $Id: access32.cc,v 1.24 2009-02-26 21:56:53 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2008 Stanislav Shwartsman
|
||||
@ -320,7 +320,7 @@ BX_CPU_C::write_virtual_dqword_aligned_32(unsigned s, Bit32u offset, const BxPac
|
||||
if (offset <= (seg->cache.u.segment.limit_scaled-15)) {
|
||||
accessOK:
|
||||
laddr = BX_CPU_THIS_PTR get_laddr32(s, offset);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 15);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 0);
|
||||
Bit32u lpf = AlignedAccessLPFOf(laddr, 15);
|
||||
bx_TLB_entry *tlbEntry = &BX_CPU_THIS_PTR TLB.entry[tlbIndex];
|
||||
if (tlbEntry->lpf == lpf) {
|
||||
@ -643,7 +643,7 @@ BX_CPU_C::read_virtual_dqword_aligned_32(unsigned s, Bit32u offset, BxPackedXmmR
|
||||
if (offset <= (seg->cache.u.segment.limit_scaled-15)) {
|
||||
accessOK:
|
||||
laddr = BX_CPU_THIS_PTR get_laddr32(s, offset);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 15);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 0);
|
||||
Bit32u lpf = AlignedAccessLPFOf(laddr, 15);
|
||||
bx_TLB_entry *tlbEntry = &BX_CPU_THIS_PTR TLB.entry[tlbIndex];
|
||||
if (tlbEntry->lpf == lpf) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: access64.cc,v 1.22 2009-01-16 18:18:58 sshwarts Exp $
|
||||
// $Id: access64.cc,v 1.23 2009-02-26 21:56:57 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2008 Stanislav Shwartsman
|
||||
@ -261,7 +261,7 @@ BX_CPU_C::write_virtual_dqword_aligned_64(unsigned s, Bit64u offset, const BxPac
|
||||
BX_INSTR_MEM_DATA_ACCESS(BX_CPU_ID, s, offset, 16, BX_WRITE);
|
||||
|
||||
Bit64u laddr = BX_CPU_THIS_PTR get_laddr64(s, offset);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 15);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 0);
|
||||
Bit64u lpf = AlignedAccessLPFOf(laddr, 15);
|
||||
bx_TLB_entry *tlbEntry = &BX_CPU_THIS_PTR TLB.entry[tlbIndex];
|
||||
if (tlbEntry->lpf == lpf) {
|
||||
@ -515,7 +515,7 @@ BX_CPU_C::read_virtual_dqword_aligned_64(unsigned s, Bit64u offset, BxPackedXmmR
|
||||
BX_INSTR_MEM_DATA_ACCESS(BX_CPU_ID, s, offset, 16, BX_READ);
|
||||
|
||||
Bit64u laddr = BX_CPU_THIS_PTR get_laddr64(s, offset);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 15);
|
||||
unsigned tlbIndex = BX_TLB_INDEX_OF(laddr, 0);
|
||||
Bit64u lpf = AlignedAccessLPFOf(laddr, 15);
|
||||
bx_TLB_entry *tlbEntry = &BX_CPU_THIS_PTR TLB.entry[tlbIndex];
|
||||
if (tlbEntry->lpf == lpf) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.577 2009-02-20 22:00:42 sshwarts Exp $
|
||||
// $Id: cpu.h,v 1.578 2009-02-26 21:56:58 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -3866,11 +3866,11 @@ enum {
|
||||
#define BxGroupX 0x0070 // bits 6..4: opcode groups definition
|
||||
#define BxGroupN 0x0010 // Group encoding: 001
|
||||
#define BxPrefixSSE 0x0020 // Group encoding: 010
|
||||
#define BxFPEscape 0x0030 // Group encoding: 011
|
||||
#define BxRMGroup 0x0040 // Group encoding: 100
|
||||
#define Bx3ByteOp 0x0050 // Group encoding: 101
|
||||
#define BxOSizeGrp 0x0060 // Group encoding: 110
|
||||
// Group encoding: 111
|
||||
#define BxPrefixSSE66 0x0030 // Group encoding: 011
|
||||
#define BxFPEscape 0x0040 // Group encoding: 100
|
||||
#define BxRMGroup 0x0050 // Group encoding: 101
|
||||
#define Bx3ByteOp 0x0060 // Group encoding: 110
|
||||
#define BxOSizeGrp 0x0070 // Group encoding: 111
|
||||
|
||||
#define BxLockable 0x0080 // bit 7
|
||||
#define BxArithDstRM 0x0100 // bit 8
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode.cc,v 1.222 2009-01-31 10:43:23 sshwarts Exp $
|
||||
// $Id: fetchdecode.cc,v 1.223 2009-02-26 21:56:59 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -557,7 +557,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = {
|
||||
#endif
|
||||
/* 0F 39 /wr */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wr */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /wr */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wr */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -1120,7 +1120,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32R[512*2] = {
|
||||
#endif
|
||||
/* 0F 39 /dr */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dr */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /dr */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dr */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -1690,7 +1690,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = {
|
||||
#endif
|
||||
/* 0F 39 /wm */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wm */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /wm */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wm */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -2253,7 +2253,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo32M[512*2] = {
|
||||
#endif
|
||||
/* 0F 39 /dm */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dm */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /dm */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dm */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -2778,6 +2778,12 @@ modrm_done:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
case BxPrefixSSE66:
|
||||
/* For SSE opcodes with prefix 66 only */
|
||||
if (sse_prefix != SSE_PREFIX_66) {
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[0]); // BX_IA_ERROR
|
||||
}
|
||||
continue;
|
||||
case BxFPEscape:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b2 & 0x3f]);
|
||||
break;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode.h,v 1.82 2009-01-31 15:01:29 sshwarts Exp $
|
||||
// $Id: fetchdecode.h,v 1.83 2009-02-26 21:57:00 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005 Stanislav Shwartsman
|
||||
@ -1848,30 +1848,6 @@ static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f380b[3] = {
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3810[3] = {
|
||||
/* 66 */ { 0, BX_IA_PBLENDVB_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3814[3] = {
|
||||
/* 66 */ { 0, BX_IA_BLENDVPS_VpsWps },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3815[3] = {
|
||||
/* 66 */ { 0, BX_IA_BLENDVPD_VpdWpd },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3817[3] = {
|
||||
/* 66 */ { 0, BX_IA_PTEST_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f381c[3] = {
|
||||
/* 66 */ { 0, BX_IA_PABSB_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
@ -1890,198 +1866,6 @@ static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f381e[3] = {
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3820[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXBW_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3821[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXBD_VdqWd },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3822[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXBQ_VdqWw },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3823[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXWD_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3824[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXWQ_VdqWd },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3825[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVSXDQ_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3828[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMULDQ_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3829[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPEQQ_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f382a[3] = {
|
||||
/* 66 */ { 0, BX_IA_MOVNTDQA_VdqMdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f382b[3] = {
|
||||
/* 66 */ { 0, BX_IA_PACKUSDW_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3830[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXBW_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3831[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXBD_VdqWd },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3832[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXBQ_VdqWw },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3833[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXWD_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3834[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXWQ_VdqWd },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3835[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMOVZXDQ_VdqWq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3837[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPGTQ_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3838[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMINSB_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3839[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMINSD_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383a[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMINUW_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383b[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMINUD_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383c[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMAXSB_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383d[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMAXSD_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383e[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMAXUW_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383f[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMAXUD_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3840[3] = {
|
||||
/* 66 */ { 0, BX_IA_PMULLD_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3841[3] = {
|
||||
/* 66 */ { 0, BX_IA_PHMINPOSUW_VdqWdq },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38db[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESIMC_VdqWdq }, // AES
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38dc[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESENC_VdqWdq }, // AES
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38dd[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESENCLAST_VdqWdq }, // AES
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38de[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESDEC_VdqWdq }, // AES
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38df[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESDECLAST_VdqWdq }, // AES
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f38f0[3] = {
|
||||
/* 66 */ { 0, BX_IA_ERROR },
|
||||
/* F2 */ { 0, BX_IA_CRC32_GdEb },
|
||||
@ -2124,145 +1908,12 @@ static const BxOpcodeInfo_t BxOpcodeGroupOsize0f38f1[BX_SUPPORT_X86_64 + 2] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a08[3] = {
|
||||
/* 66 */ { 0, BX_IA_ROUNDPS_VpsWpsIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a09[3] = {
|
||||
/* 66 */ { 0, BX_IA_ROUNDPD_VpdWpdIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0a[3] = {
|
||||
/* 66 */ { 0, BX_IA_ROUNDSS_VssWssIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0b[3] = {
|
||||
/* 66 */ { 0, BX_IA_ROUNDSD_VsdWsdIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0c[3] = {
|
||||
/* 66 */ { 0, BX_IA_BLENDPS_VpsWpsIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0d[3] = {
|
||||
/* 66 */ { 0, BX_IA_BLENDPD_VpdWpdIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0e[3] = {
|
||||
/* 66 */ { 0, BX_IA_PBLENDW_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0f[3] = {
|
||||
/* 66 */ { 0, BX_IA_PALIGNR_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a14[3] = {
|
||||
/* 66 */ { 0, BX_IA_PEXTRB_HbdUdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a15[3] = {
|
||||
/* 66 */ { 0, BX_IA_PEXTRW_HwdUdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a16[3] = {
|
||||
/* 66 */ { 0, BX_IA_PEXTRD_HdUdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a17[3] = {
|
||||
/* 66 */ { 0, BX_IA_EXTRACTPS_HdUpsIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a20[3] = {
|
||||
/* 66 */ { 0, BX_IA_PINSRB_VdqEbIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a21[3] = {
|
||||
/* 66 */ { 0, BX_IA_INSERTPS_VpsWssIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a22[3] = {
|
||||
/* 66 */ { 0, BX_IA_PINSRD_VdqEdIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a40[3] = {
|
||||
/* 66 */ { 0, BX_IA_DPPS_VpsWpsIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a41[3] = {
|
||||
/* 66 */ { 0, BX_IA_DPPD_VpdWpdIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a42[3] = {
|
||||
/* 66 */ { 0, BX_IA_MPSADBW_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a60[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPESTRM_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a61[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPESTRI_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a62[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPISTRM_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a63[3] = {
|
||||
/* 66 */ { 0, BX_IA_PCMPISTRI_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3adf[3] = {
|
||||
/* 66 */ { 0, BX_IA_AESKEYGENASSIST_VdqWdqIb },
|
||||
/* F2 */ { 0, BX_IA_ERROR },
|
||||
/* F3 */ { 0, BX_IA_ERROR }
|
||||
};
|
||||
|
||||
|
||||
/* ************************************************************************ */
|
||||
/* 3-byte opcode table (Table A-4, 0F 38) */
|
||||
|
||||
@ -2283,14 +1934,14 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f38[256] = {
|
||||
/* 0D */ { 0, BX_IA_ERROR },
|
||||
/* 0E */ { 0, BX_IA_ERROR },
|
||||
/* 0F */ { 0, BX_IA_ERROR },
|
||||
/* 10 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3810 },
|
||||
/* 10 */ { BxPrefixSSE66, BX_IA_PBLENDVB_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 11 */ { 0, BX_IA_ERROR },
|
||||
/* 12 */ { 0, BX_IA_ERROR },
|
||||
/* 13 */ { 0, BX_IA_ERROR },
|
||||
/* 14 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3814 },
|
||||
/* 15 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3815 },
|
||||
/* 14 */ { BxPrefixSSE66, BX_IA_BLENDVPS_VpsWps, BxOpcodeGroupSSE_ERR },
|
||||
/* 15 */ { BxPrefixSSE66, BX_IA_BLENDVPD_VpdWpd, BxOpcodeGroupSSE_ERR },
|
||||
/* 16 */ { 0, BX_IA_ERROR },
|
||||
/* 17 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3817 },
|
||||
/* 17 */ { BxPrefixSSE66, BX_IA_PTEST_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 18 */ { 0, BX_IA_ERROR },
|
||||
/* 19 */ { 0, BX_IA_ERROR },
|
||||
/* 1A */ { 0, BX_IA_ERROR },
|
||||
@ -2299,40 +1950,40 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f38[256] = {
|
||||
/* 1D */ { BxPrefixSSE, BX_IA_PABSW_PqQq, BxOpcodeGroupSSE_0f381d },
|
||||
/* 1E */ { BxPrefixSSE, BX_IA_PABSD_PqQq, BxOpcodeGroupSSE_0f381e },
|
||||
/* 1F */ { 0, BX_IA_ERROR },
|
||||
/* 20 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3820 },
|
||||
/* 21 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3821 },
|
||||
/* 22 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3822 },
|
||||
/* 23 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3823 },
|
||||
/* 24 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3824 },
|
||||
/* 25 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3825 },
|
||||
/* 20 */ { BxPrefixSSE66, BX_IA_PMOVSXBW_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 21 */ { BxPrefixSSE66, BX_IA_PMOVSXBD_VdqWd, BxOpcodeGroupSSE_ERR },
|
||||
/* 22 */ { BxPrefixSSE66, BX_IA_PMOVSXBQ_VdqWw, BxOpcodeGroupSSE_ERR },
|
||||
/* 23 */ { BxPrefixSSE66, BX_IA_PMOVSXWD_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 24 */ { BxPrefixSSE66, BX_IA_PMOVSXWQ_VdqWd, BxOpcodeGroupSSE_ERR },
|
||||
/* 25 */ { BxPrefixSSE66, BX_IA_PMOVSXDQ_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 26 */ { 0, BX_IA_ERROR },
|
||||
/* 27 */ { 0, BX_IA_ERROR },
|
||||
/* 28 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3828 },
|
||||
/* 29 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3829 },
|
||||
/* 2A */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f382a },
|
||||
/* 2B */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f382b },
|
||||
/* 28 */ { BxPrefixSSE66, BX_IA_PMULDQ_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 29 */ { BxPrefixSSE66, BX_IA_PCMPEQQ_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 2A */ { BxPrefixSSE66, BX_IA_MOVNTDQA_VdqMdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 2B */ { BxPrefixSSE66, BX_IA_PACKUSDW_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 2C */ { 0, BX_IA_ERROR },
|
||||
/* 2D */ { 0, BX_IA_ERROR },
|
||||
/* 2E */ { 0, BX_IA_ERROR },
|
||||
/* 2F */ { 0, BX_IA_ERROR },
|
||||
/* 30 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3830 },
|
||||
/* 31 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3831 },
|
||||
/* 32 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3832 },
|
||||
/* 33 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3833 },
|
||||
/* 34 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3834 },
|
||||
/* 35 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3835 },
|
||||
/* 30 */ { BxPrefixSSE66, BX_IA_PMOVZXBW_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 31 */ { BxPrefixSSE66, BX_IA_PMOVZXBD_VdqWd, BxOpcodeGroupSSE_ERR },
|
||||
/* 32 */ { BxPrefixSSE66, BX_IA_PMOVZXBQ_VdqWw, BxOpcodeGroupSSE_ERR },
|
||||
/* 33 */ { BxPrefixSSE66, BX_IA_PMOVZXWD_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 34 */ { BxPrefixSSE66, BX_IA_PMOVZXWQ_VdqWd, BxOpcodeGroupSSE_ERR },
|
||||
/* 35 */ { BxPrefixSSE66, BX_IA_PMOVZXDQ_VdqWq, BxOpcodeGroupSSE_ERR },
|
||||
/* 36 */ { 0, BX_IA_ERROR },
|
||||
/* 37 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3837 },
|
||||
/* 38 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3838 },
|
||||
/* 39 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3839 },
|
||||
/* 3A */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383a },
|
||||
/* 3B */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383b },
|
||||
/* 3C */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383c },
|
||||
/* 3D */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383d },
|
||||
/* 3E */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383e },
|
||||
/* 3F */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f383f },
|
||||
/* 40 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3840 },
|
||||
/* 41 */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3841 },
|
||||
/* 37 */ { BxPrefixSSE66, BX_IA_PCMPGTQ_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 38 */ { BxPrefixSSE66, BX_IA_PMINSB_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 39 */ { BxPrefixSSE66, BX_IA_PMINSD_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3A */ { BxPrefixSSE66, BX_IA_PMINUW_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3B */ { BxPrefixSSE66, BX_IA_PMINUD_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3C */ { BxPrefixSSE66, BX_IA_PMAXSB_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3D */ { BxPrefixSSE66, BX_IA_PMAXSD_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3E */ { BxPrefixSSE66, BX_IA_PMAXUW_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 3F */ { BxPrefixSSE66, BX_IA_PMAXUD_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 40 */ { BxPrefixSSE66, BX_IA_PMULLD_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 41 */ { BxPrefixSSE66, BX_IA_PHMINPOSUW_VdqWdq, BxOpcodeGroupSSE_ERR },
|
||||
/* 42 */ { 0, BX_IA_ERROR },
|
||||
/* 43 */ { 0, BX_IA_ERROR },
|
||||
/* 44 */ { 0, BX_IA_ERROR },
|
||||
@ -2486,11 +2137,11 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f38[256] = {
|
||||
/* D8 */ { 0, BX_IA_ERROR },
|
||||
/* D9 */ { 0, BX_IA_ERROR },
|
||||
/* DA */ { 0, BX_IA_ERROR },
|
||||
/* DB */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f38db },
|
||||
/* DC */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f38dc },
|
||||
/* DD */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f38dd },
|
||||
/* DE */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f38de },
|
||||
/* DF */ { BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f38df },
|
||||
/* DB */ { BxPrefixSSE66, BX_IA_AESIMC_VdqWdq, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* DC */ { BxPrefixSSE66, BX_IA_AESENC_VdqWdq, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* DD */ { BxPrefixSSE66, BX_IA_AESENCLAST_VdqWdq, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* DE */ { BxPrefixSSE66, BX_IA_AESDEC_VdqWdq, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* DF */ { BxPrefixSSE66, BX_IA_AESDECLAST_VdqWdq, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* E0 */ { 0, BX_IA_ERROR },
|
||||
/* E1 */ { 0, BX_IA_ERROR },
|
||||
/* E2 */ { 0, BX_IA_ERROR },
|
||||
@ -2537,22 +2188,22 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* 05 */ { 0, BX_IA_ERROR },
|
||||
/* 06 */ { 0, BX_IA_ERROR },
|
||||
/* 07 */ { 0, BX_IA_ERROR },
|
||||
/* 08 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a08 },
|
||||
/* 09 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a09 },
|
||||
/* 0A */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a0a },
|
||||
/* 0B */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a0b },
|
||||
/* 0C */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a0c },
|
||||
/* 0D */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a0d },
|
||||
/* 0E */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a0e },
|
||||
/* 0F */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_PALIGNR_PqQqIb, BxOpcodeGroupSSE_0f3a0f },
|
||||
/* 08 */ { BxPrefixSSE66, BX_IA_ROUNDPS_VpsWpsIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 09 */ { BxPrefixSSE66, BX_IA_ROUNDPD_VpdWpdIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0A */ { BxPrefixSSE66, BX_IA_ROUNDSS_VssWssIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0B */ { BxPrefixSSE66, BX_IA_ROUNDSD_VsdWsdIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0C */ { BxPrefixSSE66, BX_IA_BLENDPS_VpsWpsIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0D */ { BxPrefixSSE66, BX_IA_BLENDPD_VpdWpdIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0E */ { BxPrefixSSE66, BX_IA_PBLENDW_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 0F */ { BxPrefixSSE, BX_IA_PALIGNR_PqQqIb, BxOpcodeGroupSSE_0f3a0f },
|
||||
/* 10 */ { 0, BX_IA_ERROR },
|
||||
/* 11 */ { 0, BX_IA_ERROR },
|
||||
/* 12 */ { 0, BX_IA_ERROR },
|
||||
/* 13 */ { 0, BX_IA_ERROR },
|
||||
/* 14 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a14 },
|
||||
/* 15 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a15 },
|
||||
/* 16 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a16 },
|
||||
/* 17 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a17 },
|
||||
/* 14 */ { BxPrefixSSE66, BX_IA_PEXTRB_HbdUdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 15 */ { BxPrefixSSE66, BX_IA_PEXTRW_HwdUdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 16 */ { BxPrefixSSE66, BX_IA_PEXTRD_HdUdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 17 */ { BxPrefixSSE66, BX_IA_EXTRACTPS_HdUpsIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 18 */ { 0, BX_IA_ERROR },
|
||||
/* 19 */ { 0, BX_IA_ERROR },
|
||||
/* 1A */ { 0, BX_IA_ERROR },
|
||||
@ -2561,9 +2212,9 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* 1D */ { 0, BX_IA_ERROR },
|
||||
/* 1E */ { 0, BX_IA_ERROR },
|
||||
/* 1F */ { 0, BX_IA_ERROR },
|
||||
/* 20 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a20 },
|
||||
/* 21 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a21 },
|
||||
/* 22 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a22 },
|
||||
/* 20 */ { BxPrefixSSE66, BX_IA_PINSRB_VdqEbIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 21 */ { BxPrefixSSE66, BX_IA_INSERTPS_VpsWssIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 22 */ { BxPrefixSSE66, BX_IA_PINSRD_VdqEdIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 23 */ { 0, BX_IA_ERROR },
|
||||
/* 24 */ { 0, BX_IA_ERROR },
|
||||
/* 25 */ { 0, BX_IA_ERROR },
|
||||
@ -2593,9 +2244,9 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* 3D */ { 0, BX_IA_ERROR },
|
||||
/* 3E */ { 0, BX_IA_ERROR },
|
||||
/* 3F */ { 0, BX_IA_ERROR },
|
||||
/* 40 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a40 },
|
||||
/* 41 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a41 },
|
||||
/* 42 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a42 },
|
||||
/* 40 */ { BxPrefixSSE66, BX_IA_DPPS_VpsWpsIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 41 */ { BxPrefixSSE66, BX_IA_DPPD_VpdWpdIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 42 */ { BxPrefixSSE66, BX_IA_MPSADBW_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 43 */ { 0, BX_IA_ERROR },
|
||||
/* 44 */ { 0, BX_IA_ERROR },
|
||||
/* 45 */ { 0, BX_IA_ERROR },
|
||||
@ -2625,10 +2276,10 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* 5D */ { 0, BX_IA_ERROR },
|
||||
/* 5E */ { 0, BX_IA_ERROR },
|
||||
/* 5F */ { 0, BX_IA_ERROR },
|
||||
/* 60 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a60 },
|
||||
/* 61 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a61 },
|
||||
/* 62 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a62 },
|
||||
/* 63 */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3a63 },
|
||||
/* 60 */ { BxPrefixSSE66, BX_IA_PCMPESTRM_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 61 */ { BxPrefixSSE66, BX_IA_PCMPESTRI_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 62 */ { BxPrefixSSE66, BX_IA_PCMPISTRM_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 63 */ { BxPrefixSSE66, BX_IA_PCMPISTRI_VdqWdqIb, BxOpcodeGroupSSE_ERR },
|
||||
/* 64 */ { 0, BX_IA_ERROR },
|
||||
/* 65 */ { 0, BX_IA_ERROR },
|
||||
/* 66 */ { 0, BX_IA_ERROR },
|
||||
@ -2752,7 +2403,7 @@ static const BxOpcodeInfo_t BxOpcode3ByteTable0f3a[256] = {
|
||||
/* DC */ { 0, BX_IA_ERROR },
|
||||
/* DD */ { 0, BX_IA_ERROR },
|
||||
/* DE */ { 0, BX_IA_ERROR },
|
||||
/* DF */ { BxImmediate_Ib | BxPrefixSSE, BX_IA_ERROR, BxOpcodeGroupSSE_0f3adf },
|
||||
/* DF */ { BxPrefixSSE66, BX_IA_AESKEYGENASSIST_VdqWdqIb, BxOpcodeGroupSSE_ERR }, // AES
|
||||
/* E0 */ { 0, BX_IA_ERROR },
|
||||
/* E1 */ { 0, BX_IA_ERROR },
|
||||
/* E2 */ { 0, BX_IA_ERROR },
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fetchdecode64.cc,v 1.225 2009-02-06 15:03:47 sshwarts Exp $
|
||||
// $Id: fetchdecode64.cc,v 1.226 2009-02-26 21:57:01 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||
@ -505,7 +505,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /wr */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wr */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /wr */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wr */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -1032,7 +1032,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /dr */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dr */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /dr */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dr */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -1559,7 +1559,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64R[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /qr */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /qr */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /qr */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /qr */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -2092,7 +2092,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /wm */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /wm */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /wm */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /wm */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -2619,7 +2619,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /dm */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /dm */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /dm */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /dm */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -3146,7 +3146,7 @@ static const BxOpcodeInfo_t BxOpcodeInfo64M[512*3] = {
|
||||
#endif
|
||||
/* 0F 39 /qm */ { 0, BX_IA_ERROR },
|
||||
#if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
|
||||
/* 0F 3A /qm */ { Bx3ByteOp, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
/* 0F 3A /qm */ { Bx3ByteOp | BxImmediate_Ib, BX_IA_ERROR, BxOpcode3ByteTable0f3a }, // 3-byte escape
|
||||
#else
|
||||
/* 0F 3A /qm */ { 0, BX_IA_ERROR },
|
||||
#endif
|
||||
@ -3693,6 +3693,12 @@ modrm_done:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
case BxPrefixSSE66:
|
||||
/* For SSE opcodes with prefix 66 only */
|
||||
if (sse_prefix != SSE_PREFIX_66) {
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[0]); // BX_IA_ERROR
|
||||
}
|
||||
continue;
|
||||
case BxFPEscape:
|
||||
OpcodeInfoPtr = &(OpcodeInfoPtr->AnotherArray[b2 & 0x3f]);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user