qemu-patch-raspberry4/tests/tcg/i386
Joseph Myers 5eebc49d2d target/i386: reimplement fyl2xp1 using floatx80 operations
The x87 fyl2xp1 emulation is currently based around conversion to
double.  This is inherently unsuitable for a good emulation of any
floatx80 operation, even before considering that it is a particularly
naive implementation using double (adding 1 then using log rather than
attempting a better emulation using log1p).

Reimplement using the soft-float operations, as was done for f2xm1; as
in that case, m68k has related operations but not exactly this one and
it seemed safest to implement directly rather than reusing the m68k
code to avoid accumulation of errors.

A test is included with many randomly generated inputs.  The
assumption of the test is that the result in round-to-nearest mode
should always be one of the two closest floating-point numbers to the
mathematical value of y * log2(x + 1); the implementation aims to do
somewhat better than that (about 70 correct bits before rounding).  I
haven't investigated how accurate hardware is.

Intel manuals describe a narrower range of valid arguments to this
instruction than AMD manuals.  The implementation accepts the wider
range (it's needed anyway for the core code to be reusable in a
subsequent patch reimplementing fyl2x), but the test only has inputs
in the narrower range so that it's valid on hardware that may reject
or produce poor results for inputs outside that range.

Code in the previous implementation that sets C2 for some out-of-range
arguments is not carried forward to the new implementation; C2 is
undefined for this instruction and I suspect that code was just
cut-and-pasted from the trigonometric instructions (fcos, fptan, fsin,
fsincos) where C2 *is* defined to be set for out-of-range arguments.

Signed-off-by: Joseph Myers <joseph@codesourcery.com>

Message-Id: <alpine.DEB.2.21.2006172320190.20587@digraph.polyomino.org.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-06-26 09:39:38 -04:00
..
system tests/tcg/multiarch: move the system memory test 2019-05-28 10:28:51 +01:00
hello-i386.c avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
Makefile.softmmu-target tests/tcg: cleanup Makefile inclusions 2019-09-10 09:38:33 +01:00
Makefile.target tests/tcg: ensure -cpu max also used for plugin run 2020-06-16 14:49:05 +01:00
README tests/tcg: remove runcom test 2018-07-24 11:45:25 +01:00
test-i386-code16.S tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00
test-i386-f2xm1.c target/i386: reimplement f2xm1 using floatx80 operations 2020-06-26 09:39:37 -04:00
test-i386-fbstp.c target/i386: fix fbstp handling of out-of-range values 2020-06-10 12:10:25 -04:00
test-i386-fisttp.c target/i386: fix fisttpl, fisttpll handling of out-of-range values 2020-06-10 12:10:26 -04:00
test-i386-fldcst.c target/i386: fix floating-point load-constant rounding 2020-06-10 12:10:24 -04:00
test-i386-fp-exceptions.c target/i386: fix IEEE x87 floating-point exception raising 2020-06-10 12:10:51 -04:00
test-i386-fprem.c tests/tcg/i386: add runner for test-i386-fprem 2018-06-20 20:22:34 +01:00
test-i386-fscale.c target/i386: fix fscale handling of rounding precision 2020-06-10 12:10:21 -04:00
test-i386-fxam.c target/i386: fix fxam handling of invalid encodings 2020-06-10 12:10:24 -04:00
test-i386-fxtract.c target/i386: implement special cases for fxtract 2020-06-10 12:10:16 -04:00
test-i386-fyl2xp1.c target/i386: reimplement fyl2xp1 using floatx80 operations 2020-06-26 09:39:38 -04:00
test-i386-muldiv.h tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00
test-i386-pcmpistri.c target/i386: correct fix for pcmpxstrx substring search 2020-06-12 11:10:39 -04:00
test-i386-pseudo-denormal.c softfloat: fix floatx80 pseudo-denormal round to integer 2020-05-15 11:04:50 -07:00
test-i386-shift.h tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00
test-i386-snan-convert.c softfloat: silence sNaN for conversions to/from floatx80 2020-05-15 11:04:50 -07:00
test-i386-ssse3.c tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00
test-i386-vm86.S tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00
test-i386.c Fixes i386 xchgq test 2018-12-11 18:41:25 +01:00
test-i386.h tests/tcg: move i386 specific tests into subdir 2018-06-20 20:22:34 +01:00

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
----------