Summary: | Lack of support for several SSE instructions | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | david |
Component: | memcheck | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED DUPLICATE | ||
Severity: | crash | CC: | tom |
Priority: | NOR | ||
Version: | 3.7.0 | ||
Target Milestone: | --- | ||
Platform: | Unlisted Binaries | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | Valgrind's log output and disassembly of offending instructions |
These are AVX instructions. *** This bug has been marked as a duplicate of bug 273475 *** |
Created attachment 65657 [details] Valgrind's log output and disassembly of offending instructions Version: 3.7.0 (using KDE 4.5.5) OS: Linux valgrind (MemCheck) aborts program execution when it finds SSE instructions like vcvtsi2ss, vcvtsi2sd, or even vxorps complaining about "unhandled instruction bytes" and "Unrecognised instruction". Instructions are generated by GCC using SSE instead of 387 floating point instructions for simple FP math. Example (in C): (float)sx=((float)((uint16_t)Cfg.sx))/(uint32_t)i; generates 3 operand instruction "vcvtsi2ss %eax,%xmm0,%xmm0", that is unknown to valgrind (integer casts are informative only). See attached file with valgrind's log, and partial disassembly of a few offending code compiled with GCC 4.5.2 Reproducible: Always Steps to Reproduce: Probably compiling any program with a floating point operation using a recent GCC with options like -ggdb -g3 -O0 -Wall -march=native -m64 (here the point is -march=native on a second generation i3, in my case, but probably will do the same on any SSE3+ capable) Actual Results: Simply aborts execution due to lack of support for such instructions. Expected Results: Execute the instruction and continue...