|
From: Julian S. <js...@ac...> - 2005-05-06 11:10:01
|
> while trying and playing with valgrind3 from cvs I ran with emulation > warnings enabled and encountered this message : > > ==18820== Emulation warning: unsupported action: > ==18820== Selection of non-80-bit x87 FP precision > > What exactly does this mean ? Does valgrind/vex not yet support 32Bit > floating point ? Will it ever ? Vex/valgrind-3 simulates the x87 FPU in much more detail than the 2.4 line. In order to reduce the complexity of this simulation, vex does all floating point at 64-bits (IEEE double) regardless of the FPU's control-word settings, but it "pretends" to the program to be running the FPU in its default 80-bit mode. I've tested this extensively on a large amount of FP code, and it appears that the differences between 64-bit and 80-bit precision are pretty minimal for real applications. For one thing, any program which actually relies on 80-bit precision to get the right answer is inherently unportable and will not work on (eg) PowerPC; nor will it work if recompiled on x86 to use SSE-based floating point. If, later in the day, the lack of genuine 80-bit FP support turns out to be a critical problem, then perhaps it can be added. Note that 80-bit loads/stores (fldt/fstpt) behave as you would expect, correctly reading/writing an 80-bit image. So, to answer your question, if your code is attempting to set the FPU's precision level to 64 or 32-bits, V ignores this and shows the above message. I don't believe this should cause you any problems in practice. > PS: What further information do you need to resolve this error > "m_debuglog.c:129:3: #error Unknown platform" ? (Im running on x86 > linux...) Uh, I don't see how you got that. Are your valgrind and vex trees up to date? One thing is, since both are works-in-progress, you really need to 'svn up' both of them at once and rebuild both. J |