]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Handle "movsd G,E" for G and E both regs. This is the non-binutils
authorJulian Seward <jseward@acm.org>
Mon, 17 Nov 2008 20:25:37 +0000 (20:25 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 17 Nov 2008 20:25:37 +0000 (20:25 +0000)
encoding.  Fixes #175150.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1873

VEX/priv/guest-x86/toIR.c

index 7f327199ae3040854df893a1bc44f8e9746ad745..7551d2957dce8324aa7a4cc494567634eb0f9304 100644 (file)
@@ -10016,7 +10016,11 @@ DisResult disInstr_X86_WRK (
       vassert(sz == 4);
       modrm = getIByte(delta+3);
       if (epartIsReg(modrm)) {
-         /* fall through, we don't yet have a test case */
+         putXMMRegLane64( eregOfRM(modrm), 0,
+                          getXMMRegLane64( gregOfRM(modrm), 0 ));
+         DIP("movsd %s,%s\n", nameXMMReg(gregOfRM(modrm)),
+                              nameXMMReg(eregOfRM(modrm)));
+         delta += 3+1;
       } else {
          addr = disAMode ( &alen, sorb, delta+3, dis_buf );
          storeLE( mkexpr(addr),
@@ -10024,8 +10028,8 @@ DisResult disInstr_X86_WRK (
          DIP("movsd %s,%s\n", nameXMMReg(gregOfRM(modrm)),
                               dis_buf);
          delta += 3+alen;
-         goto decode_success;
       }
+      goto decode_success;
    }
 
    /* 66 0F 59 = MULPD -- mul 64Fx2 from R/M to R */