From: Julian Seward Date: Mon, 17 Nov 2008 20:25:37 +0000 (+0000) Subject: Handle "movsd G,E" for G and E both regs. This is the non-binutils X-Git-Tag: svn/VALGRIND_3_4_1^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0b9033a25dc4586dcb3059fd1b043910fca9685;p=thirdparty%2Fvalgrind.git Handle "movsd G,E" for G and E both regs. This is the non-binutils encoding. Fixes #175150. git-svn-id: svn://svn.valgrind.org/vex/trunk@1873 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 7f327199ae..7551d2957d 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -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 */