qemu/tests/tcg/i386
Paolo Bonzini 2872b0f390 target/i386: implement FMA instructions
The only issue with FMA instructions is that there are _a lot_ of them (30
opcodes, each of which comes in up to 4 versions depending on VEX.W and
VEX.L; a total of 96 possibilities).  However, they can be implement with
only 6 helpers, two for scalar operations and four for packed operations.
(Scalar versions do not do any merging; they only affect the bottom 32
or 64 bits of the output operand.  Therefore, there is no separate XMM
and YMM of the scalar helpers).

First, we can reduce the number of helpers to one third by passing four
operands (one output and three inputs); the reordering of which operands
go to the multiply and which go to the add is done in emit.c.

Second, the different instructions also dispatch to the same softfloat
function, so the flags for float32_muladd and float64_muladd are passed
in the helper as int arguments, with a little extra complication to
handle FMADDSUB and FMSUBADD.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-10-22 09:05:54 +02:00
..
system tests/tcg/i386: expand .data sections for system tests 2021-04-06 15:04:42 +01:00
float_convd.conf tests/tcg: add float_convd test 2022-04-20 16:04:20 +01:00
float_convs.ref tests/tcg: add missing reference files for float_convs 2022-04-20 16:04:20 +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: clean up calls to run-test 2022-10-06 11:53:40 +01:00
Makefile.target tests/tcg: extend SSE tests to AVX 2022-10-18 13:58:05 +02:00
README tests/tcg: i386: add SSE tests 2022-09-01 20:16:33 +02:00
test-3dnow.c tests/tcg: i386: add MMX and 3DNow! tests 2022-09-19 15:14:40 +02:00
test-avx.c target/i386: implement F16C instructions 2022-10-20 15:16:18 +02:00
test-avx.py target/i386: implement FMA instructions 2022-10-22 09:05:54 +02:00
test-i386-bmi2.c tests/tcg: i386: extend BMI test 2022-09-01 08:37:04 +02:00
test-i386-code16.S
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 tests/tcg/i386: Use explicit suffix on fist insns 2022-06-14 00:15:04 +01:00
test-i386-fpatan.c target/i386: reimplement fpatan using floatx80 operations 2020-06-26 09:39:39 -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-fyl2x.c target/i386: reimplement fyl2x using floatx80 operations 2020-06-26 09:39:39 -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
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
test-i386-snan-convert.c softfloat: silence sNaN for conversions to/from floatx80 2020-05-15 11:04:50 -07:00
test-i386-sse-exceptions.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
test-i386-ssse3.c
test-i386-vm86.S
test-i386.c tests/tcg: remove old SSE tests 2022-09-19 15:15:59 +02:00
test-i386.h
test-mmx.c tests/tcg: i386: add MMX and 3DNow! tests 2022-09-19 15:14:40 +02:00
test-mmx.py tests/tcg: i386: add MMX and 3DNow! tests 2022-09-19 15:14:40 +02:00
x86.csv tests/tcg: i386: fix typos in 3DNow! instructions 2022-09-18 09:17:41 +02: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.

test-avx
--------

This program executes most SSE/AVX instructions and generates a text output,
for comparison with the output obtained with a real CPU or another emulator.

test-avx.h is generate from x86.csv by test-avx.py
x86.csv comes from https://github.com/quasilyte/avx512test

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