From: Julian Seward Date: Wed, 15 Dec 2004 12:35:00 +0000 (+0000) Subject: x86 guest: implement SSE1 movaps G -> E (stores) X-Git-Tag: svn/VALGRIND_3_0_1^2~674 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=667e964a6e6bc3a45333d0959fe5333f94698100;p=thirdparty%2Fvalgrind.git x86 guest: implement SSE1 movaps G -> E (stores) git-svn-id: svn://svn.valgrind.org/vex/trunk@660 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 57788bedb7..b3dd3fb6eb 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -7410,6 +7410,22 @@ static DisResult disInstr ( /*IN*/ Bool resteerOK, goto decode_success; } + /* 0F 29 = MOVAPS -- move from G (xmm) to E (mem or xmm). */ + if (sz == 4 && insn[0] == 0x0F && insn[1] == 0x29) { + 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 ); + delta += 2+alen; + goto decode_success; + } + } + /* 0F 16 = MOVHPS -- move from mem to high half of XMM. */ /* 0F 16 = MOVLHPS -- move from lo half to hi half of XMM. */ if (sz == 4 && insn[0] == 0x0F && insn[1] == 0x16) {