From: Julian Seward Date: Thu, 25 Aug 2005 21:34:24 +0000 (+0000) Subject: Implement MOVUPS -- move from G (xmm) to E (mem or xmm) [UNVERIFIED] X-Git-Tag: svn/VALGRIND_3_1_1^2~125 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=89f6f92bc4d7eac719b12effe7201ae9b59ab01d;p=thirdparty%2Fvalgrind.git Implement MOVUPS -- move from G (xmm) to E (mem or xmm) [UNVERIFIED] git-svn-id: svn://svn.valgrind.org/vex/trunk@1362 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 201282a060..ebc81c4d93 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -7501,15 +7501,17 @@ DisResult disInstr_X86_WRK ( } /* 0F 29 = MOVAPS -- move from G (xmm) to E (mem or xmm). */ - if (sz == 4 && insn[0] == 0x0F && insn[1] == 0x29) { + /* 0F 11 = MOVUPS -- move from G (xmm) to E (mem or xmm). */ + if (sz == 4 && insn[0] == 0x0F + && (insn[1] == 0x29 || insn[1] == 0x11)) { modrm = getIByte(delta+2); if (epartIsReg(modrm)) { /* fall through; awaiting test case */ } else { addr = 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 += 2+alen; goto decode_success; }