Bug 233638

Summary: Unhandled instructions bytes: 0x48 0xF 0xFE 0x7E 0x70 0x48
Product: [Developer tools] valgrind Reporter: Sebastien Cote <sebas642>
Component: vexAssignee: Julian Seward <jseward>
Status: REPORTED ---    
Severity: crash CC: cpigat242
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Bug Depends on:    
Bug Blocks: 253451    
Attachments: workaround for rex.W prefix

Description Sebastien Cote 2010-04-07 20:14:32 UTC
Version:           SVN r1969 (using Devel)
OS:                Linux
Installed from:    Compiled sources

Running valgrind on an application using Intel Performance Primitive libraries, valgrind exits with the following message:

vex amd64->IR: unhandled instruction bytes: 0x48 0xF 0xFE 0x7E 0x70 0x48
==23588== valgrind: Unrecognised instruction at address 0x17783a16.

This can be reproduced with valgrind r11100 and VEX r1969.

Running objdump -d on the library and grepping for these bytes, I get the following instruction:

8e1a4:       48 0f fe 7e 70          rex.W paddd  0x70(%rsi),%mm7
Comment 1 Sebastien Cote 2010-04-07 20:17:39 UTC
I also get another unhandled instruction with IPP (in a different part of the code):

vex amd64->IR: unhandled instruction bytes: 0x48 0xF 0xFC 0xD 0x77 0x8A
==21616== valgrind: Unrecognised instruction at address 0x182e0171.


I get the following from objdump:
65171:   48 0f fc 0d 77 8a 24   rex.W paddb  0x248a77(%rip),%mm1    # 2adbf0 <const_array_of_127b>


I can open another bug for the second instruction if it matters.
Comment 2 Sebastien Cote 2010-04-17 16:45:35 UTC
Created attachment 42847 [details]
workaround for rex.W prefix

Attached workaround for the REX.W prefix. The PMOVMSKB instruction is just ignored for now but with these changes my application can run inside valgrind with memcheck.