Bug 406132

Summary: vex amd64->IR: CMPS without rep prefix is not handled
Product: [Developer tools] valgrind Reporter: Ignacio Losiggio <iglosiggio>
Component: vexAssignee: Julian Seward <jseward>
Status: REPORTED ---    
Severity: normal CC: iglosiggio
Priority: NOR    
Version First Reported In: 3.14.0   
Target Milestone: ---   
Platform: unspecified   
OS: All   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Patch fixing the issue like it was fixed in movs
Example strcmp implementation using cmpsb without a rep prefix

Description Ignacio Losiggio 2019-04-02 04:20:02 UTC
Created attachment 119205 [details]
Patch fixing the issue like it was fixed in movs

SUMMARY
The instruction CMPS{B,W,D,Q} can be used with or without prefix, the x86->IR valgrind backend supports the instruction without prefix but the amd64 one does not.

Attached to the issue is a patch fixing it.

STEPS TO REPRODUCE
1. Write any small program that uses cmps{b,w,d,q} on amd64.

OBSERVED RESULT
VEX will say that the instructions is not handled.

EXPECTED RESULT
Correct handling of the instruction like in the x86->IR backend
Comment 1 Ignacio Losiggio 2019-04-02 04:21:45 UTC
Created attachment 119206 [details]
Example strcmp implementation using cmpsb without a rep prefix

Added example code.