The fist / fistt family of instructions should all store the most negative integer in the destination format when the rounded / truncated integer result is out of range or the input is an invalid encoding, infinity or NaN. The fisttpl and fisttpll implementations (32-bit and 64-bit results, truncate towards zero) failed to do this, producing the most positive integer in some cases instead. Fix this by copying the code used to handle this issue for fistpl and fistpll, adjusted to use the _round_to_zero functions for the actual conversion (but without any other changes to that code). Signed-off-by: Joseph Myers <joseph@codesourcery.com> Message-Id: <alpine.DEB.2.21.2005152119160.3469@digraph.polyomino.org.uk> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
||
---|---|---|
.. | ||
system | ||
hello-i386.c | ||
Makefile.softmmu-target | ||
Makefile.target | ||
README | ||
test-i386-code16.S | ||
test-i386-fbstp.c | ||
test-i386-fisttp.c | ||
test-i386-fldcst.c | ||
test-i386-fprem.c | ||
test-i386-fscale.c | ||
test-i386-fxam.c | ||
test-i386-fxtract.c | ||
test-i386-muldiv.h | ||
test-i386-pseudo-denormal.c | ||
test-i386-shift.h | ||
test-i386-snan-convert.c | ||
test-i386-ssse3.c | ||
test-i386-vm86.S | ||
test-i386.c | ||
test-i386.h |
These are i386 specific guest programs test-i386 --------- This program executes most of the 16 bit and 32 bit x86 instructions and generates a text output, for comparison with the output obtained with a real CPU or another emulator. The Linux system call modify_ldt() is used to create x86 selectors to test some 16 bit addressing and 32 bit with segmentation cases. The Linux system call vm86() is used to test vm86 emulation. Various exceptions are raised to test most of the x86 user space exception reporting. linux-test ---------- This program tests various Linux system calls. It is used to verify that the system call parameters are correctly converted between target and host CPUs. test-i386-fprem --------------- test-mmap --------- sha1 ---- hello-i386 ----------