From: Julian Seward Date: Wed, 6 Apr 2005 01:45:44 +0000 (+0000) Subject: As per r1121, avoid WaW stalls writing the guest state for movss mem->reg. X-Git-Tag: svn/VALGRIND_3_0_1^2~211 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4ee879ef2e75d11b7f6387718f054801e56fd7b5;p=thirdparty%2Fvalgrind.git As per r1121, avoid WaW stalls writing the guest state for movss mem->reg. git-svn-id: svn://svn.valgrind.org/vex/trunk@1123 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 5dd7638fe6..1b4681fd1b 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -7805,7 +7805,11 @@ DisResult disInstr ( /*IN*/ Bool resteerOK, delta += 3+1; } else { addr = disAMode ( &alen, sorb, delta+3, dis_buf ); - putXMMReg( gregOfRM(modrm), mkV128(0) ); + /* zero bits 127:64 */ + putXMMRegLane64( gregOfRM(modrm), 1, mkU64(0) ); + /* zero bits 63:32 */ + putXMMRegLane32( gregOfRM(modrm), 1, mkU32(0) ); + /* write bits 31:0 */ putXMMRegLane32( gregOfRM(modrm), 0, loadLE(Ity_I32, mkexpr(addr)) ); DIP("movss %s,%s\n", dis_buf, @@ -9278,7 +9282,9 @@ DisResult disInstr ( /*IN*/ Bool resteerOK, delta += 3+1; } else { addr = disAMode ( &alen, sorb, delta+3, dis_buf ); + /* zero bits 127:64 */ putXMMRegLane64( gregOfRM(modrm), 1, mkU64(0) ); + /* write bits 63:0 */ putXMMRegLane64( gregOfRM(modrm), 0, loadLE(Ity_I64, mkexpr(addr)) ); DIP("movsd %s,%s\n", dis_buf,