]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
As per r1121, avoid WaW stalls writing the guest state for movss mem->reg.
authorJulian Seward <jseward@acm.org>
Wed, 6 Apr 2005 01:45:44 +0000 (01:45 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 6 Apr 2005 01:45:44 +0000 (01:45 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1123

VEX/priv/guest-x86/toIR.c

index 5dd7638fe697204865d744e296fca4d2cff07e11..1b4681fd1bd9398cd2ec77ee0dbc6a0f41ed7efa 100644 (file)
@@ -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,