integrate misaligned SSE into code
This commit is contained in:
parent
43600f3756
commit
709059ddcc
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: load.cc,v 1.1 2010-12-22 21:16:02 sshwarts Exp $
|
||||
// $Id: load.cc,v 1.2 2010-12-22 21:24:19 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2008-2009 Stanislav Shwartsman
|
||||
@ -78,7 +78,14 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::LOAD_Vdq(bxInstruction_c *i)
|
||||
{
|
||||
BxPackedXmmRegister op;
|
||||
bx_address eaddr = BX_CPU_CALL_METHODR(i->ResolveModrm, (i));
|
||||
readVirtualDQwordAligned(i->seg(), eaddr, (Bit8u *) &op);
|
||||
|
||||
if (! BX_CPU_THIS_PTR mxcsr.get_misaligned_exception_mask()) {
|
||||
read_virtual_dqword_aligned(i->seg(), eaddr, (Bit8u *) &op);
|
||||
}
|
||||
else {
|
||||
read_virtual_dqword(i->seg(), eaddr, (Bit8u *) &op);
|
||||
}
|
||||
|
||||
BX_WRITE_XMM_REG(BX_TMP_REGISTER, op);
|
||||
|
||||
BX_CPU_CALL_METHOD(i->execute2, (i));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: xmm.h,v 1.32 2010-09-26 20:35:24 sshwarts Exp $
|
||||
// $Id: xmm.h,v 1.33 2010-12-22 21:24:19 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003-2009 Stanislav Shwartsman
|
||||
@ -87,6 +87,8 @@ typedef union bx_xmm_reg_t {
|
||||
#define BX_XMM_REG_LO_QWORD BX_READ_XMM_REG_LO_QWORD
|
||||
#define BX_XMM_REG_LO_DWORD BX_READ_XMM_REG_LO_DWORD
|
||||
|
||||
#define BX_XMM_REG BX_READ_XMM_REG
|
||||
|
||||
/* store XMM register */
|
||||
#define BX_WRITE_XMM_REG(index, reg) \
|
||||
{ BX_CPU_THIS_PTR xmm[index] = (reg); }
|
||||
|
Loading…
Reference in New Issue
Block a user