]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
x86 guest: implement SSE1 movaps G -> E (stores)
authorJulian Seward <jseward@acm.org>
Wed, 15 Dec 2004 12:35:00 +0000 (12:35 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 15 Dec 2004 12:35:00 +0000 (12:35 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@660

VEX/priv/guest-x86/toIR.c

index 57788bedb75519af7e5ed61a6b49c233d323c043..b3dd3fb6ebc0f1a3f286b0ca901675249ea29313 100644 (file)
@@ -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) {