From: Julian Seward Date: Tue, 4 Nov 2008 11:31:44 +0000 (+0000) Subject: Handle MOVSD reg,reg for the encoding which is not emitted by binutils. X-Git-Tag: svn/VALGRIND_3_4_1^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27744e1803f59e0f36fa81d7d8ef12db67b24446;p=thirdparty%2Fvalgrind.git Handle MOVSD reg,reg for the encoding which is not emitted by binutils. Fixes #171645. git-svn-id: svn://svn.valgrind.org/vex/trunk@1869 --- diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index 1a578f6f03..68066c8c3e 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -11138,7 +11138,11 @@ DisResult disInstr_AMD64_WRK ( && insn[0] == 0x0F && insn[1] == 0x11) { modrm = getUChar(delta+2); if (epartIsReg(modrm)) { - /* fall through, we don't yet have a test case */ + putXMMRegLane64( eregOfRexRM(pfx,modrm), 0, + getXMMRegLane64( gregOfRexRM(pfx,modrm), 0 )); + DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), + nameXMMReg(eregOfRexRM(pfx,modrm))); + delta += 2+1; } else { addr = disAMode ( &alen, pfx, delta+2, dis_buf, 0 ); storeLE( mkexpr(addr), @@ -11146,8 +11150,8 @@ DisResult disInstr_AMD64_WRK ( DIP("movsd %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)), dis_buf); delta += 2+alen; - goto decode_success; } + goto decode_success; } /* 66 0F 59 = MULPD -- mul 64Fx2 from R/M to R */