|
From: <sv...@va...> - 2008-11-04 11:57:41
|
Author: sewardj
Date: 2008-11-04 11:31:44 +0000 (Tue, 04 Nov 2008)
New Revision: 1869
Log:
Handle MOVSD reg,reg for the encoding which is not emitted by binutils.
Fixes #171645.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
===================================================================
--- trunk/priv/guest-amd64/toIR.c 2008-11-01 23:54:45 UTC (rev 1868)
+++ trunk/priv/guest-amd64/toIR.c 2008-11-04 11:31:44 UTC (rev 1869)
@@ -11138,7 +11138,11 @@
&& 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 @@
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 */
|