From acd1a05f6fef51a37fd025dafb6cb94f58aba478 Mon Sep 17 00:00:00 2001 From: Stanislav Shwartsman Date: Thu, 25 Jan 2007 21:44:35 +0000 Subject: [PATCH] Fixed bugs for SSE3E execution and decoding --- bochs/cpu/fetchdecode.cc | 6 +++--- bochs/cpu/mmx.cc | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bochs/cpu/fetchdecode.cc b/bochs/cpu/fetchdecode.cc index 39f3b4a80..b5c1bf51a 100644 --- a/bochs/cpu/fetchdecode.cc +++ b/bochs/cpu/fetchdecode.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: fetchdecode.cc,v 1.101 2007-01-25 19:09:36 sshwarts Exp $ +// $Id: fetchdecode.cc,v 1.102 2007-01-25 21:44:35 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -1307,13 +1307,13 @@ static const BxOpcodeInfo_t BxOpcodeInfo[512*2] = { /* 0F 36 */ { 0, &BX_CPU_C::BxError }, /* 0F 37 */ { 0, &BX_CPU_C::BxError }, #if BX_SUPPORT_SSE3E || BX_SUPPORT_SSE >= 4 - /* 0F 38 */ { BxAnother | Bx3ByteOpcode, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape + /* 0F 38 */ { BxAnother | Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA4 }, // 3-byte escape #else /* 0F 38 */ { 0, &BX_CPU_C::BxError }, #endif /* 0F 39 */ { 0, &BX_CPU_C::BxError }, #if BX_SUPPORT_SSE3E || BX_SUPPORT_SSE >= 4 - /* 0F 3A */ { BxAnother | Bx3ByteOpcode, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape + /* 0F 3A */ { BxAnother | Bx3ByteOpcode | Bx3ByteOpTable, NULL, BxOpcode3ByteTableA5 }, // 3-byte escape #else /* 0F 3A */ { 0, &BX_CPU_C::BxError }, #endif diff --git a/bochs/cpu/mmx.cc b/bochs/cpu/mmx.cc index 87b0dbf63..405fa5460 100644 --- a/bochs/cpu/mmx.cc +++ b/bochs/cpu/mmx.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: mmx.cc,v 1.55 2007-01-25 19:09:41 sshwarts Exp $ +// $Id: mmx.cc,v 1.56 2007-01-25 21:44:35 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2002 Stanislav Shwartsman @@ -140,7 +140,7 @@ void BX_CPU_C::PSHUFB_PqQq(bxInstruction_c *i) if (mask & 0x80) result.mmxubyte(j) = 0; else - result.mmxubyte(j) = op1.mmxubyte(mask & 0xf); + result.mmxubyte(j) = op1.mmxubyte(mask & 0x7); } BX_WRITE_MMX_REG(i->nnn(), result);