]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fill in missing memory case for pinsrw.
authorJulian Seward <jseward@acm.org>
Sun, 13 Mar 2005 20:19:19 +0000 (20:19 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 13 Mar 2005 20:19:19 +0000 (20:19 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1029

VEX/priv/guest-x86/toIR.c

index ad84d305951391a058ec622bcb814f647f785f2b..daf449f15c818166465a570f995f854bfe8d88f5 100644 (file)
@@ -7803,14 +7803,19 @@ DisResult disInstr ( /*IN*/  Bool       resteerOK,
 
       if (epartIsReg(modrm)) {
          assign(t4, getIReg(2, eregOfRM(modrm)));
-         lane = insn[3];
          delta += 2+2;
+         lane = insn[2+2-1];
          DIP("pinsrw $%d,%s,%s\n", (Int)lane, 
                                    nameIReg(2,eregOfRM(modrm)),
                                    nameMMXReg(gregOfRM(modrm)));
       } else {
-         /* awaiting test case */
-         goto decode_failure;
+         addr = disAMode ( &alen, sorb, delta+2, dis_buf );
+         delta += 3+alen;
+         lane = insn[3+alen-1];
+         assign(t4, loadLE(Ity_I16, mkexpr(addr)));
+         DIP("pinsrw $%d,%s,%s\n", (Int)lane, 
+                                   dis_buf,
+                                   nameMMXReg(gregOfRM(modrm)));
       }
 
       switch (lane & 3) {