According to the Intel (and AMD) manuals a lot different SSE/SSE2 opcodes has EXACTLY the same operation.
Deleted first three redundant opcodes (move integer data): MOVLPS_VpsMq (0f 12) = MOVLPD_VsdMq (66 0f 12) MOVLPS_MqVps (0f 13) = MOVLPD_MqVsd (66 0f 13) MOVHPS_VpsMq (0f 16) = MOVHPD_VpdMq (66 0f 16) MOVHPS_MqVps (0f 17) = MOVHPD_MqVpd (66 0f 17) Until under examination: XORPS,XORPD ORPS,ORPD ANDPS,ANDPD ANDNPS,ANDNPD MOVUPS,MOVUPD
This commit is contained in:
parent
968b2744f4
commit
7ccf1de78f
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: cpu.h,v 1.114 2002-11-13 21:35:16 sshwarts Exp $
|
// $Id: cpu.h,v 1.115 2002-11-13 22:24:02 sshwarts Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -2120,12 +2120,8 @@ union {
|
|||||||
BX_SMF void MOVSD_VsdWsd(bxInstruction_c *i);
|
BX_SMF void MOVSD_VsdWsd(bxInstruction_c *i);
|
||||||
BX_SMF void MOVUPD_WpdVpd(bxInstruction_c *i);
|
BX_SMF void MOVUPD_WpdVpd(bxInstruction_c *i);
|
||||||
BX_SMF void MOVSD_WsdVsd(bxInstruction_c *i);
|
BX_SMF void MOVSD_WsdVsd(bxInstruction_c *i);
|
||||||
BX_SMF void MOVLPD_VsdMq(bxInstruction_c *i);
|
|
||||||
BX_SMF void MOVLPD_MqVsd(bxInstruction_c *i);
|
|
||||||
BX_SMF void UNPCKLPD_VpdWq(bxInstruction_c *i);
|
BX_SMF void UNPCKLPD_VpdWq(bxInstruction_c *i);
|
||||||
BX_SMF void UNPCKHPD_VpdWq(bxInstruction_c *i);
|
BX_SMF void UNPCKHPD_VpdWq(bxInstruction_c *i);
|
||||||
BX_SMF void MOVHPD_VpdMq(bxInstruction_c *i);
|
|
||||||
BX_SMF void MOVHPD_MqVpd(bxInstruction_c *i);
|
|
||||||
BX_SMF void CVTPI2PD_VpdQd(bxInstruction_c *i);
|
BX_SMF void CVTPI2PD_VpdQd(bxInstruction_c *i);
|
||||||
BX_SMF void CVTSI2SD_VsdEd(bxInstruction_c *i);
|
BX_SMF void CVTSI2SD_VsdEd(bxInstruction_c *i);
|
||||||
BX_SMF void CVTTPD2PI_PqWpd(bxInstruction_c *i);
|
BX_SMF void CVTTPD2PI_PqWpd(bxInstruction_c *i);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: fetchdecode.cc,v 1.32 2002-11-13 21:35:17 sshwarts Exp $
|
// $Id: fetchdecode.cc,v 1.33 2002-11-13 22:24:02 sshwarts Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -219,6 +219,10 @@ static BxOpcodeInfo_t opcodesMOV_EdGd[2] = {
|
|||||||
MOVAPS_VpsWps (0f 28) = MOVAPD_VpdWpd (66 0f 28)
|
MOVAPS_VpsWps (0f 28) = MOVAPD_VpdWpd (66 0f 28)
|
||||||
MOVAPS_WpsVps (0f 29) = MOVAPD_WpdVpd (66 0f 29)
|
MOVAPS_WpsVps (0f 29) = MOVAPD_WpdVpd (66 0f 29)
|
||||||
MOVNTPS_MdqVps (0f 2b) = MOVNTPD_MdqVpd (66 0f 2b)
|
MOVNTPS_MdqVps (0f 2b) = MOVNTPD_MdqVpd (66 0f 2b)
|
||||||
|
MOVLPS_VpsMq (0f 12) = MOVLPD_VsdMq (66 0f 12)
|
||||||
|
MOVLPS_MqVps (0f 13) = MOVLPD_MqVsd (66 0f 13)
|
||||||
|
MOVHPS_VpsMq (0f 16) = MOVHPD_VpdMq (66 0f 16)
|
||||||
|
MOVHPS_MqVps (0f 17) = MOVHPD_MqVpd (66 0f 17)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f10[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f10[4] = {
|
||||||
@ -237,14 +241,14 @@ static BxOpcodeInfo_t BxOpcodeGroupSSE_0f11[4] = {
|
|||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f12[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f12[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
/* -- */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVLPD_VsdMq },
|
/* 66 */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f13[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f13[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
/* -- */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVLPD_MqVsd },
|
/* 66 */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
@ -265,14 +269,14 @@ static BxOpcodeInfo_t BxOpcodeGroupSSE_0f15[4] = {
|
|||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f16[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f16[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
/* -- */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVHPD_VpdMq },
|
/* 66 */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f17[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f17[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
/* -- */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVHPD_MqVpd },
|
/* 66 */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: fetchdecode64.cc,v 1.28 2002-11-13 21:35:17 sshwarts Exp $
|
// $Id: fetchdecode64.cc,v 1.29 2002-11-13 22:24:03 sshwarts Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001 MandrakeSoft S.A.
|
// Copyright (C) 2001 MandrakeSoft S.A.
|
||||||
@ -285,6 +285,10 @@ static BxOpcodeInfo_t opcodesMOV_EdGd[2] = {
|
|||||||
MOVAPS_VpsWps (0f 28) = MOVAPD_VpdWpd (66 0f 28)
|
MOVAPS_VpsWps (0f 28) = MOVAPD_VpdWpd (66 0f 28)
|
||||||
MOVAPS_WpsVps (0f 29) = MOVAPD_WpdVpd (66 0f 29)
|
MOVAPS_WpsVps (0f 29) = MOVAPD_WpdVpd (66 0f 29)
|
||||||
MOVNTPS_MdqVps (0f 2b) = MOVNTPD_MdqVpd (66 0f 2b)
|
MOVNTPS_MdqVps (0f 2b) = MOVNTPD_MdqVpd (66 0f 2b)
|
||||||
|
MOVLPS_VpsMq (0f 12) = MOVLPD_VsdMq (66 0f 12)
|
||||||
|
MOVLPS_MqVps (0f 13) = MOVLPD_MqVsd (66 0f 13)
|
||||||
|
MOVHPS_VpsMq (0f 16) = MOVHPD_VpdMq (66 0f 16)
|
||||||
|
MOVHPS_MqVps (0f 17) = MOVHPD_MqVpd (66 0f 17)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f10[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f10[4] = {
|
||||||
@ -303,14 +307,14 @@ static BxOpcodeInfo_t BxOpcodeGroupSSE_0f11[4] = {
|
|||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f12[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f12[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
/* -- */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVLPD_VsdMq },
|
/* 66 */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f13[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f13[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
/* -- */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVLPD_MqVsd },
|
/* 66 */ { 0, &BX_CPU_C::MOVLPS_MqVps },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
@ -331,14 +335,14 @@ static BxOpcodeInfo_t BxOpcodeGroupSSE_0f15[4] = {
|
|||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f16[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f16[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
/* -- */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVHPD_VpdMq },
|
/* 66 */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
|
||||||
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f17[4] = {
|
static BxOpcodeInfo_t BxOpcodeGroupSSE_0f17[4] = {
|
||||||
/* -- */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
/* -- */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
||||||
/* 66 */ { 0, &BX_CPU_C::MOVHPD_MqVpd },
|
/* 66 */ { 0, &BX_CPU_C::MOVHPS_MqVps },
|
||||||
/* F2 */ { 0, &BX_CPU_C::BxError },
|
/* F2 */ { 0, &BX_CPU_C::BxError },
|
||||||
/* F3 */ { 0, &BX_CPU_C::BxError }
|
/* F3 */ { 0, &BX_CPU_C::BxError }
|
||||||
};
|
};
|
||||||
|
@ -72,30 +72,6 @@ void BX_CPU_C::MOVSD_WsdVsd(bxInstruction_c *i)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BX_CPU_C::MOVLPD_VsdMq(bxInstruction_c *i)
|
|
||||||
{
|
|
||||||
#if BX_SUPPORT_SSE >= 2
|
|
||||||
BX_CPU_THIS_PTR prepareSSE();
|
|
||||||
|
|
||||||
BX_PANIC(("MOVLPD_VsdMq: SSE2 instruction still not implemented"));
|
|
||||||
#else
|
|
||||||
BX_INFO(("MOVLPD_VsdMq: SSE2 not supported in current configuration"));
|
|
||||||
UndefinedOpcode(i);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void BX_CPU_C::MOVLPD_MqVsd(bxInstruction_c *i)
|
|
||||||
{
|
|
||||||
#if BX_SUPPORT_SSE >= 2
|
|
||||||
BX_CPU_THIS_PTR prepareSSE();
|
|
||||||
|
|
||||||
BX_PANIC(("MOVLPD_MqVsd: SSE2 instruction still not implemented"));
|
|
||||||
#else
|
|
||||||
BX_INFO(("MOVLPD_MqVsd: SSE2 not supported in current configuration"));
|
|
||||||
UndefinedOpcode(i);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void BX_CPU_C::UNPCKLPD_VpdWq(bxInstruction_c *i)
|
void BX_CPU_C::UNPCKLPD_VpdWq(bxInstruction_c *i)
|
||||||
{
|
{
|
||||||
#if BX_SUPPORT_SSE >= 2
|
#if BX_SUPPORT_SSE >= 2
|
||||||
@ -120,30 +96,6 @@ void BX_CPU_C::UNPCKHPD_VpdWq(bxInstruction_c *i)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BX_CPU_C::MOVHPD_VpdMq(bxInstruction_c *i)
|
|
||||||
{
|
|
||||||
#if BX_SUPPORT_SSE >= 2
|
|
||||||
BX_CPU_THIS_PTR prepareSSE();
|
|
||||||
|
|
||||||
BX_PANIC(("MOVHPD_VpdMq: SSE2 instruction still not implemented"));
|
|
||||||
#else
|
|
||||||
BX_INFO(("MOVHPD_VpdMq: SSE2 not supported in current configuration"));
|
|
||||||
UndefinedOpcode(i);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void BX_CPU_C::MOVHPD_MqVpd(bxInstruction_c *i)
|
|
||||||
{
|
|
||||||
#if BX_SUPPORT_SSE >= 2
|
|
||||||
BX_CPU_THIS_PTR prepareSSE();
|
|
||||||
|
|
||||||
BX_PANIC(("MOVHPD_MqVpd: SSE2 instruction still not implemented"));
|
|
||||||
#else
|
|
||||||
BX_INFO(("MOVHPD_MqVpd: SSE2 not supported in current configuration"));
|
|
||||||
UndefinedOpcode(i);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void BX_CPU_C::CVTPI2PD_VpdQd(bxInstruction_c *i)
|
void BX_CPU_C::CVTPI2PD_VpdQd(bxInstruction_c *i)
|
||||||
{
|
{
|
||||||
#if BX_SUPPORT_SSE >= 2
|
#if BX_SUPPORT_SSE >= 2
|
||||||
|
Loading…
Reference in New Issue
Block a user