126256 (fnop) vex x86->IR: unhandled instruction bytes: 0xD9 0xD0 0x31 0xC0
228343 none/tests/darwin/bug228343 fails on OS X
+253436 vex amd64->IR: unhandled instruction bytes: 0xF2 0xA6 (repne cmps)
258140 Valgrind on OS X always reports some memory "still reachable"
413369 unhandled amd64-darwin syscall: unix:151 (getpgid)
487055 memcheck/tests/x86-linux/scalar fails running in Docker
dis_REP_op ( dres, AMD64CondAlways, dis_MOVS, sz,
guest_RIP_curr_instr,
guest_RIP_bbstart+delta, "rep movs", pfx );
- dres->whatNext = Dis_StopHere;
- return delta;
+ vassert(dres->whatNext == Dis_StopHere);
+ return delta;
}
/* A4: movsb */
if (!haveF3(pfx) && !haveF2(pfx)) {
case 0xA6:
case 0xA7:
- /* F3 A6/A7: repe cmps/rep cmps{w,l,q} */
- if (haveF3(pfx) && !haveF2(pfx)) {
+ /* F2 A6/A7: repne cmpsb/repne cmps{w,l,q} */
+ if (haveF2(pfx) && !haveF3(pfx)) {
+ if (opc == 0xA6)
+ sz = 1;
+ dis_REP_op ( dres, AMD64CondNZ, dis_CMPS, sz,
+ guest_RIP_curr_instr,
+ guest_RIP_bbstart+delta, "repne cmps", pfx );
+ vassert(dres->whatNext == Dis_StopHere);
+ return delta;
+ }
+ /* F3 A6/A7: repe cmpsb/repe cmps{w,l,q} */
+ if (!haveF2(pfx) && haveF3(pfx)) {
if (opc == 0xA6)
sz = 1;
dis_REP_op ( dres, AMD64CondZ, dis_CMPS, sz,
guest_RIP_curr_instr,
guest_RIP_bbstart+delta, "repe cmps", pfx );
- dres->whatNext = Dis_StopHere;
+ vassert(dres->whatNext == Dis_StopHere);
+ return delta;
+ }
+ /* A6/A7: cmpsb/cmps{w,l,q} */
+ if (!haveF2(pfx) && !haveF3(pfx)) {
+ if (opc == 0xA6)
+ sz = 1;
+ dis_string_op ( dis_CMPS, sz, "cmps", pfx );
return delta;
}
goto decode_failure;
TEST_STRING(scas, "");
// REINSTATE: TEST_STRING(scas, "repz ");
TEST_STRING(scas, "repnz ");
- // REINSTATE: TEST_STRING(cmps, "");
+ TEST_STRING(cmps, "");
TEST_STRING(cmps, "repz ");
- // REINSTATE: TEST_STRING(cmps, "repnz ");
+ TEST_STRING(cmps, "repnz ");
}
/* VM86 test */