|
From: Ólafur W. <ol...@gm...> - 2012-03-13 20:49:10
|
On Tue, Mar 13, 2012 at 7:39 PM, John Reiser <jr...@bi...> wrote: > > vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0x16 > > ==18426== at 0x804BE18: manhattan(unsigned char const*, unsigned char > const*) (emmintrin.h:208) > > That's "PEXTRD r/m32, xmm2, Ib" which extracts a 32-bit wide, 32-bit > aligned, > known-in-advance slice from xmm2, then places the slice into a general > register > or memory location. The opcode is from the SSE4.1 extensions, and occupies > four bytes; the valgrind report omits the operands. > > The easiest way to deal with this is to ask the compiler not to use SSE4.1. > (In this case the compiler probably would store the 128-bit xmm2 into > memory, > then fetch the selected 32-bit slice.) > Otherwise, it's somewhat tedious work inside valgrind's VEX x86->IR > translator. Removing SSE4.1 and SSE4.2 flags did the trick. Thanks. |