|
From: <sv...@va...> - 2005-08-29 13:06:35
|
Author: sewardj
Date: 2005-08-29 14:06:32 +0100 (Mon, 29 Aug 2005)
New Revision: 1367
Log:
Merge r1362 (Implement MOVUPS -- move from G (xmm) to E (mem or xmm))
Modified:
branches/VEX_3_0_BRANCH/priv/guest-x86/toIR.c
Modified: branches/VEX_3_0_BRANCH/priv/guest-x86/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_0_BRANCH/priv/guest-x86/toIR.c 2005-08-29 13:03:15 UTC=
(rev 1366)
+++ branches/VEX_3_0_BRANCH/priv/guest-x86/toIR.c 2005-08-29 13:06:32 UTC=
(rev 1367)
@@ -7490,15 +7490,17 @@
}
=20
/* 0F 29 =3D MOVAPS -- move from G (xmm) to E (mem or xmm). */
- if (sz =3D=3D 4 && insn[0] =3D=3D 0x0F && insn[1] =3D=3D 0x29) {
+ /* 0F 11 =3D MOVUPS -- move from G (xmm) to E (mem or xmm). */
+ if (sz =3D=3D 4 && insn[0] =3D=3D 0x0F=20
+ && (insn[1] =3D=3D 0x29 || insn[1] =3D=3D 0x11)) {
modrm =3D getIByte(delta+2);
if (epartIsReg(modrm)) {
/* fall through; awaiting test case */
} else {
addr =3D disAMode ( &alen, sorb, delta+2, dis_buf );
storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
- DIP("movaps %s,%s\n", nameXMMReg(gregOfRM(modrm)),
- dis_buf );
+ DIP("mov[ua]ps %s,%s\n", nameXMMReg(gregOfRM(modrm)),
+ dis_buf );
delta +=3D 2+alen;
goto decode_success;
}
|