* [PATCH v3 00/91] tests/tcg: run tests with meson
@ 2026-07-06 22:32 Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 01/91] tests/tcg/multiarch/system/memory.c: remove unused variable Pierrick Bouvier
` (96 more replies)
0 siblings, 97 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
This series replaces TCG tests makefiles with meson, with the
goal of having something more readable and maintainable in the long term.
Also it closes the gap that tcg tests had with the rest of tests, by integrating
them with meson directly.
It covers all existing tests for all architectures, including
user/system/multiarch-user/multiarch-system. It implements all requirements
listed on original thread [1].
[1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
We also have for free:
- correct and complete dependencies for any test, including:
scripts, c.inc, headers, reference files and binaries/plugins.
- catch test declaration issues at configure time vs test time.
- proper data types for variables instead of string expansion with make.
Series first introduce the meson machinery needed in tests/tcg/meson.build, step
by step. Then it adds support for all existing archs. Finally, we remove
Makefiles and configure bits.
Usage:
```
make check-tcg
make check-tcg-aarch64-linux-user
make check-tcg-aarch64-softmmu
make tcg-tests
ninja clean
./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
```
A few items were left for further work (out of scope for this series):
- xtensaeb: didn't find how to cross compile for this architecture with what we
have now in container debian-xtensa-cross. Tips are welcome.
- tricore: implemented but reverted as all tests seem to hang. To be
investigated.
- riscv64/interruptedmemory.S is hanging. To be investigated.
- i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
match bare metal result) and is the slowest test we have. To be refactored and
fixed.
v3
--
- add all architectures
- reduce number of plugins tests (only add one test for each plugin from
multiarch pool)
- add depends for executable - allow to depend on a custom target for generated
headers (x86_64 mmx, avx)
- add new tests added since last version for aarch64 (mte + gpc)
- refactor series to keep all arch files at end
- add docker host architecture selection
v2
--
- s/mispell/misspell
- moved comment about why we remove 'lib' prefix for plugins
- if user declare a wrong entry in a dictionary, list possible keys
- build tests by default (with 'all' target), as long as cross compiler is
natively installed, to avoid triggering a container build.
- reword some comments based on reviewers feedback
- always declare all tests and avoid "per config" errors (no 'if' in arch files)
- move compiler feature and gdb version checks directly in tests/tcg/meson.build
- add support for cross containers
- add top target 'tcg-tests' to rebuild all tests
Pierrick Bouvier (91):
tests/tcg/multiarch/system/memory.c: remove unused variable
tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
input
tests/tcg/multiarch/plugin: rename check-plugin-output to
regex-compare
tests/tcg: introduce meson.build
tests/tcg/meson.build: introduce exe_name
tests/tcg/meson.build: introduce test_name
tests/tcg/meson.build: introduce cflags
tests/tcg/meson.build: introduce qemu_args
tests/tcg/meson.build: introduce env_var
tests/tcg/plugins: build list of test_plugins
tests/tcg/meson.build: introduce plugin_test
tests/tcg/meson.build: test gdb support and introduce gdb_arch
tests/tcg/meson.build: introduce gdb_test
tests/tcg/meson.build: add default flag for testing compiler support
tests/tcg/meson.build: introduce wrapper
tests/tcg/meson.build: introduce expected_output
tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
tests/tcg/meson.build: add wrapper run_with_input
tests/tcg/meson.build: add wrapper record_replay
tests/tcg/meson.build: add wrapper check_plugin_output
tests/tcg/meson.build: add logic to skip tests
tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
tests/tcg/meson.build: move gdb_arch support check
tests/tcg/meson.build: let test infrastructure detect compiler
tests/docker/docker.py: return error code if probe fails
tests/docker/docker.py: remove "Image is up to date" info
tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
tests/tcg/meson.build: introduce depends
tests/tcg/meson.build: add top-level 'tcg-tests' target
tests/tcg/multiarch: declare user tests
tests/tcg/multiarch: declare system tests
tests/tcg/meson.build: add generic plugin tests
tests/tcg/aarch64: user tests
tests/tcg/aarch64/system/gpc-test.c: remove unused variables
tests/tcg/aarch64: system tests
tests/tcg/aarch64_be: user tests
tests/tcg/alpha: add float reference files
tests/tcg/alpha: user tests
tests/tcg/alpha: system tests
tests/tcg/arm: user tests
tests/tcg/arm: system tests
tests/tcg/hexagon/overflow.c: add missing include
tests/tcg/hexagon: user tests
tests/tcg/multiarch/sha1.c: fix big endian implementation
tests/tcg/hppa: add float reference files
tests/tcg/hppa: user tests
tests/tcg/i386: add missing float reference files
tests/tcg/i386: user tests
tests/tcg/i386: system tests
tests/tcg/loongarch64: user tests
tests/tcg/loongarch64: system tests
tests/tcg/m68k: add float reference files
tests/tcg/m68k: user tests
scripts/probe-gdb-support.py: add mapping for mips architecture
tests/tcg/mips: add float reference files
test/tcg/mips: user tests
tests/tcg/mips64: add float reference files
tests/tcg/mips64: user tests
tests/tcg/mips64el: add float reference files
tests/tcg/mips64el: user tests
tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
toolchain
tests/tcg/or1k/test_addic.c: remove unused variables
tests/tcg/or1k/test_muli.c: remove set but unused variable
tests/tcg/or1k: add float reference files
plugins/api.c: identify or1k pc register and mark it as read only
tests/tcg/or1k: user tests
tests/tcg/ppc64: add float reference files
tests/tcg/ppc64: remove dependency on qemu/compiler.h
tests/tcg/ppc64: user tests
tests/tcg/ppc64le: add missing float reference file
tests/tcg/ppc64le: user tests
tests/tcg/riscv64: add float reference files
tests/tcg/riscv64: user tests
tests/tcg/riscv64: system tests
tests/tcg/s390x/head64.S: declare _exit symbol after main
tests/tcg/s390x: add float reference files
tests/tcg/s390x: user tests
tests/tcg/s390x: system tests
tests/tcg/sh4: add float reference files
tests/tcg/sh4: user tests
tests/tcg/tricore: system tests
Revert "tests/tcg/tricore: system tests"
tests/tcg/x86_64: add missing float reference file
tests/tcg/x86_64: user tests
tests/tcg/x86_64: system tests
tests/tcg/xtensa/crt.S: align .text section
tests/tcg/xtensa: system tests
tests: remove tcg tests machinery
tests/tcg: remove Makefiles
configure: remove --cross-cc* options
configure | 473 ---------
docs/devel/testing/main.rst | 22 +-
plugins/api.c | 2 +
scripts/probe-gdb-support.py | 1 +
tests/Makefile.include | 68 +-
tests/docker/docker.py | 4 +-
.../dockerfiles/debian-all-test-cross.docker | 16 +-
tests/lcitool/refresh | 107 +-
tests/meson.build | 2 +-
tests/tcg/Makefile.target | 281 -----
tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
tests/tcg/aarch64/Makefile.target | 198 ----
tests/tcg/aarch64/meson.build | 195 ++++
tests/tcg/aarch64/system/gpc-test.c | 5 -
tests/tcg/aarch64/system/meson.build | 108 ++
tests/tcg/aarch64_be/Makefile.target | 17 -
tests/tcg/aarch64_be/meson.build | 22 +
tests/tcg/alpha/Makefile.softmmu-target | 34 -
tests/tcg/alpha/Makefile.target | 18 -
tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
tests/tcg/alpha/meson.build | 55 +
tests/tcg/alpha/system/meson.build | 46 +
tests/tcg/arm/Makefile.softmmu-target | 80 --
tests/tcg/arm/Makefile.target | 87 --
tests/tcg/arm/meson.build | 80 ++
tests/tcg/arm/system/meson.build | 66 ++
tests/tcg/hexagon/Makefile.target | 146 ---
tests/tcg/hexagon/meson.build | 111 ++
tests/tcg/hexagon/overflow.c | 1 +
tests/tcg/hppa/Makefile.target | 14 -
tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
tests/tcg/hppa/meson.build | 22 +
tests/tcg/i386/Makefile.softmmu-target | 37 -
tests/tcg/i386/Makefile.target | 102 --
tests/tcg/i386/float_convd.conf | 988 ------------------
tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
tests/tcg/i386/meson.build | 58 +
tests/tcg/i386/system/meson.build | 48 +
tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
tests/tcg/loongarch64/Makefile.target | 20 -
tests/tcg/loongarch64/meson.build | 32 +
tests/tcg/loongarch64/system/meson.build | 47 +
tests/tcg/m68k/Makefile.target | 7 -
tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
tests/tcg/m68k/meson.build | 23 +
tests/tcg/meson.build | 447 ++++++++
tests/tcg/minilib/Makefile.target | 21 -
tests/tcg/mips/Makefile.target | 19 -
tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips/float_convs.ref | 748 +++++++++++++
tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips/meson.build | 25 +
tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
tests/tcg/mips/user/isa/r5900/Makefile | 32 -
tests/tcg/mips64/Makefile.target | 20 -
tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips64/meson.build | 27 +
tests/tcg/mips64el/Makefile.target | 8 -
tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
tests/tcg/mips64el/meson.build | 14 +
tests/tcg/multiarch/Makefile.target | 233 -----
tests/tcg/multiarch/meson.build | 149 +++
.../multiarch/plugin/check-plugin-output.sh | 36 -
tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
tests/tcg/multiarch/sha1.c | 4 +-
tests/tcg/multiarch/sha1.ref | 1 +
.../multiarch/system/Makefile.softmmu-target | 81 --
tests/tcg/multiarch/system/memory.c | 3 +-
tests/tcg/multiarch/system/meson.build | 53 +
tests/tcg/or1k/Makefile | 71 --
tests/tcg/or1k/float_convd.ref | 247 +++++
tests/tcg/or1k/float_convs.ref | 187 ++++
tests/tcg/or1k/float_madds.ref | 192 ++++
tests/tcg/or1k/meson.build | 72 ++
tests/tcg/or1k/test_addic.c | 2 +-
tests/tcg/or1k/test_muli.c | 5 +-
tests/tcg/plugins/meson.build | 11 +-
tests/tcg/ppc64/Makefile.target | 63 --
tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
tests/tcg/ppc64/meson.build | 56 +
tests/tcg/ppc64/vector.c | 11 +-
tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
tests/tcg/ppc64le/Makefile.target | 7 -
tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/ppc64le/meson.build | 14 +
tests/tcg/riscv64/Makefile.softmmu-target | 45 -
tests/tcg/riscv64/Makefile.target | 20 -
tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
tests/tcg/riscv64/meson.build | 38 +
tests/tcg/riscv64/system/meson.build | 38 +
tests/tcg/s390x/Makefile.softmmu-target | 57 -
tests/tcg/s390x/Makefile.target | 127 ---
tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
tests/tcg/s390x/head64.S | 2 +
tests/tcg/s390x/meson.build | 140 +++
tests/tcg/s390x/system/meson.build | 92 ++
tests/tcg/scripts/check_plugin_output.sh | 25 +
tests/tcg/scripts/record_replay.sh | 16 +
.../scripts/run_and_check_forbidden_output.sh | 19 +
tests/tcg/scripts/run_and_diff.sh | 15 +
tests/tcg/scripts/run_with_input.sh | 12 +
tests/tcg/sh4/Makefile.target | 18 -
tests/tcg/sh4/float_convd.ref | 494 +++++++++
tests/tcg/sh4/float_convs.ref | 374 +++++++
tests/tcg/sh4/float_madds.ref | 384 +++++++
tests/tcg/sh4/meson.build | 25 +
tests/tcg/tricore/Makefile.softmmu-target | 53 -
tests/tcg/x86_64/Makefile.softmmu-target | 44 -
tests/tcg/x86_64/Makefile.target | 40 -
tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
tests/tcg/x86_64/meson.build | 83 ++
tests/tcg/x86_64/system/meson.build | 62 ++
tests/tcg/xtensa/Makefile.softmmu-target | 46 -
tests/tcg/xtensa/crt.S | 1 +
tests/tcg/xtensa/meson.build | 89 ++
tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
134 files changed, 30491 insertions(+), 4114 deletions(-)
delete mode 100644 tests/tcg/Makefile.target
delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/aarch64/Makefile.target
create mode 100644 tests/tcg/aarch64/meson.build
create mode 100644 tests/tcg/aarch64/system/meson.build
delete mode 100644 tests/tcg/aarch64_be/Makefile.target
create mode 100644 tests/tcg/aarch64_be/meson.build
delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
delete mode 100644 tests/tcg/alpha/Makefile.target
create mode 100644 tests/tcg/alpha/float_convd.ref
create mode 100644 tests/tcg/alpha/float_convs.ref
create mode 100644 tests/tcg/alpha/float_madds.ref
create mode 100644 tests/tcg/alpha/meson.build
create mode 100644 tests/tcg/alpha/system/meson.build
delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
delete mode 100644 tests/tcg/arm/Makefile.target
create mode 100644 tests/tcg/arm/meson.build
create mode 100644 tests/tcg/arm/system/meson.build
delete mode 100644 tests/tcg/hexagon/Makefile.target
create mode 100644 tests/tcg/hexagon/meson.build
delete mode 100644 tests/tcg/hppa/Makefile.target
create mode 100644 tests/tcg/hppa/float_convd.ref
create mode 100644 tests/tcg/hppa/float_convs.ref
create mode 100644 tests/tcg/hppa/float_madds.ref
create mode 100644 tests/tcg/hppa/meson.build
delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
delete mode 100644 tests/tcg/i386/Makefile.target
delete mode 100644 tests/tcg/i386/float_convd.conf
create mode 100644 tests/tcg/i386/float_convd.ref
create mode 100644 tests/tcg/i386/float_madds.ref
create mode 100644 tests/tcg/i386/meson.build
create mode 100644 tests/tcg/i386/system/meson.build
delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/loongarch64/Makefile.target
create mode 100644 tests/tcg/loongarch64/meson.build
create mode 100644 tests/tcg/loongarch64/system/meson.build
delete mode 100644 tests/tcg/m68k/Makefile.target
create mode 100644 tests/tcg/m68k/float_convd.ref
create mode 100644 tests/tcg/m68k/float_convs.ref
create mode 100644 tests/tcg/m68k/float_madds.ref
create mode 100644 tests/tcg/m68k/meson.build
create mode 100644 tests/tcg/meson.build
delete mode 100644 tests/tcg/minilib/Makefile.target
delete mode 100644 tests/tcg/mips/Makefile.target
create mode 100644 tests/tcg/mips/float_convd.ref
create mode 100644 tests/tcg/mips/float_convs.ref
create mode 100644 tests/tcg/mips/float_madds.ref
create mode 100644 tests/tcg/mips/meson.build
delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
delete mode 100644 tests/tcg/mips64/Makefile.target
create mode 100644 tests/tcg/mips64/float_convd.ref
create mode 100644 tests/tcg/mips64/float_convs.ref
create mode 100644 tests/tcg/mips64/float_madds.ref
create mode 100644 tests/tcg/mips64/meson.build
delete mode 100644 tests/tcg/mips64el/Makefile.target
create mode 100644 tests/tcg/mips64el/float_convd.ref
create mode 100644 tests/tcg/mips64el/float_convs.ref
create mode 100644 tests/tcg/mips64el/float_madds.ref
create mode 100644 tests/tcg/mips64el/meson.build
delete mode 100644 tests/tcg/multiarch/Makefile.target
create mode 100644 tests/tcg/multiarch/meson.build
delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
create mode 100644 tests/tcg/multiarch/sha1.ref
delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
create mode 100644 tests/tcg/multiarch/system/meson.build
delete mode 100644 tests/tcg/or1k/Makefile
create mode 100644 tests/tcg/or1k/float_convd.ref
create mode 100644 tests/tcg/or1k/float_convs.ref
create mode 100644 tests/tcg/or1k/float_madds.ref
create mode 100644 tests/tcg/or1k/meson.build
delete mode 100644 tests/tcg/ppc64/Makefile.target
create mode 100644 tests/tcg/ppc64/float_convd.ref
create mode 100644 tests/tcg/ppc64/float_convs.ref
create mode 100644 tests/tcg/ppc64/float_madds.ref
create mode 100644 tests/tcg/ppc64/meson.build
delete mode 100644 tests/tcg/ppc64le/Makefile.target
create mode 100644 tests/tcg/ppc64le/float_convd.ref
create mode 100644 tests/tcg/ppc64le/meson.build
delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
delete mode 100644 tests/tcg/riscv64/Makefile.target
create mode 100644 tests/tcg/riscv64/float_convd.ref
create mode 100644 tests/tcg/riscv64/float_convs.ref
create mode 100644 tests/tcg/riscv64/float_madds.ref
create mode 100644 tests/tcg/riscv64/meson.build
create mode 100644 tests/tcg/riscv64/system/meson.build
delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
delete mode 100644 tests/tcg/s390x/Makefile.target
create mode 100644 tests/tcg/s390x/float_convd.ref
create mode 100644 tests/tcg/s390x/float_convs.ref
create mode 100644 tests/tcg/s390x/float_madds.ref
create mode 100644 tests/tcg/s390x/meson.build
create mode 100644 tests/tcg/s390x/system/meson.build
create mode 100755 tests/tcg/scripts/check_plugin_output.sh
create mode 100755 tests/tcg/scripts/record_replay.sh
create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
create mode 100755 tests/tcg/scripts/run_and_diff.sh
create mode 100755 tests/tcg/scripts/run_with_input.sh
delete mode 100644 tests/tcg/sh4/Makefile.target
create mode 100644 tests/tcg/sh4/float_convd.ref
create mode 100644 tests/tcg/sh4/float_convs.ref
create mode 100644 tests/tcg/sh4/float_madds.ref
create mode 100644 tests/tcg/sh4/meson.build
delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.target
create mode 100644 tests/tcg/x86_64/float_madds.ref
create mode 100644 tests/tcg/x86_64/meson.build
create mode 100644 tests/tcg/x86_64/system/meson.build
delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
create mode 100644 tests/tcg/xtensa/meson.build
delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
--
2.47.3
^ permalink raw reply [flat|nested] 144+ messages in thread
* [PATCH v3 01/91] tests/tcg/multiarch/system/memory.c: remove unused variable
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 02/91] tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as input Pierrick Bouvier
` (95 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Caught this since by compiling this file with -Wall, -Werror.
../tests/tcg/aarch64/system/../../multiarch/system/memory.c: In function ‘init_test_data_s8’:
../tests/tcg/aarch64/system/../../multiarch/system/memory.c:97:18: error: unused variable ‘bottom’ [-Werror=unused-variable]
97 | uint8_t top, bottom, *ptr = &test_data[0];
| ^~~~~~
../tests/tcg/aarch64/system/../../multiarch/system/memory.c:97:13: error: unused variable ‘top’ [-Werror=unused-variable]
97 | uint8_t top, bottom, *ptr = &test_data[0];
| ^~~
../tests/tcg/aarch64/system/../../multiarch/system/memory.c: In function ‘read_test_data_s8’:
../tests/tcg/aarch64/system/../../multiarch/system/memory.c:384:14: error: unused variable ‘ok’ [-Werror=unused-variable]
384 | bool ok;
|
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/multiarch/system/memory.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tests/tcg/multiarch/system/memory.c b/tests/tcg/multiarch/system/memory.c
index 7508f6b916d..adc7ac60c1f 100644
--- a/tests/tcg/multiarch/system/memory.c
+++ b/tests/tcg/multiarch/system/memory.c
@@ -94,7 +94,7 @@ static inline uint8_t get_byte(int index, bool neg)
static void init_test_data_s8(bool neg_first)
{
- uint8_t top, bottom, *ptr = &test_data[0];
+ uint8_t *ptr = &test_data[0];
int i;
ml_printf("Filling test area with s8 pairs (%s):",
@@ -381,7 +381,6 @@ static bool read_test_data_s8(int offset, bool neg_first)
for (i = 0; i < max; i++) {
int16_t first, second;
- bool ok;
first = *ptr++;
second = *ptr++;
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 02/91] tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as input
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 01/91] tests/tcg/multiarch/system/memory.c: remove unused variable Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 03/91] tests/tcg/multiarch/plugin: rename check-plugin-output to regex-compare Pierrick Bouvier
` (94 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Instead of executing test, just read it's output from a file. This
allows to standardize how to call check plugins scripts.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/multiarch/Makefile.target | 3 +--
.../multiarch/plugin/check-plugin-output.sh | 22 ++++++-------------
2 files changed, 8 insertions(+), 17 deletions(-)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 508149d57bd..f46983cc76e 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -211,8 +211,7 @@ run-plugin-test-plugin-mem-access-with-libmem.so: \
PLUGIN_ARGS=$(COMMA)print-accesses=true
run-plugin-test-plugin-mem-access-with-libmem.so: \
CHECK_PLUGIN_OUTPUT_COMMAND= \
- $(SRC_PATH)/tests/tcg/multiarch/plugin/check-plugin-output.sh \
- $(QEMU) $<
+ $(SRC_PATH)/tests/tcg/multiarch/plugin/check-plugin-output.sh $@.out
run-plugin-test-plugin-syscall-filter-with-libsyscall.so:
run-plugin-test-plugin-set-pc-with-libsetpc.so:
diff --git a/tests/tcg/multiarch/plugin/check-plugin-output.sh b/tests/tcg/multiarch/plugin/check-plugin-output.sh
index 80607f04b5d..338c9ced23e 100755
--- a/tests/tcg/multiarch/plugin/check-plugin-output.sh
+++ b/tests/tcg/multiarch/plugin/check-plugin-output.sh
@@ -1,8 +1,7 @@
#!/usr/bin/env bash
-# This script runs a given executable using qemu, and compare its standard
-# output with an expected plugin output.
-# Each line of output is searched (as a regexp) in the expected plugin output.
+# This script checks that plugin_output contains line from test_output.
+# Each line of output is searched (as a regexp) in plugin_output.
set -euo pipefail
@@ -19,18 +18,11 @@ check()
grep "$pattern" "$file" > /dev/null || die "\"$pattern\" not found in $file"
}
-[ $# -eq 3 ] || die "usage: qemu_bin exe plugin_out_file"
+[ $# -eq 2 ] || die "usage: test_output plugin_out"
-qemu_bin=$1; shift
-exe=$1;shift
-plugin_out=$1; shift
+test_output=$1;shift
+plugin_output=$1;shift
-expected()
-{
- $qemu_bin $exe ||
- die "running $exe failed"
-}
-
-expected | while read line; do
- check "$plugin_out" "$line"
+cat $test_output | while read line; do
+ check "$plugin_output" "$line"
done
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 03/91] tests/tcg/multiarch/plugin: rename check-plugin-output to regex-compare
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 01/91] tests/tcg/multiarch/system/memory.c: remove unused variable Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 02/91] tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as input Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 04/91] tests/tcg: introduce meson.build Pierrick Bouvier
` (93 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We'll reuse this name later in the series, so change existing script.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/multiarch/Makefile.target | 2 +-
.../plugin/{check-plugin-output.sh => regex-compare.sh} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename tests/tcg/multiarch/plugin/{check-plugin-output.sh => regex-compare.sh} (100%)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index f46983cc76e..6907c2830aa 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -211,7 +211,7 @@ run-plugin-test-plugin-mem-access-with-libmem.so: \
PLUGIN_ARGS=$(COMMA)print-accesses=true
run-plugin-test-plugin-mem-access-with-libmem.so: \
CHECK_PLUGIN_OUTPUT_COMMAND= \
- $(SRC_PATH)/tests/tcg/multiarch/plugin/check-plugin-output.sh $@.out
+ $(SRC_PATH)/tests/tcg/multiarch/plugin/regex-compare.sh $@.out
run-plugin-test-plugin-syscall-filter-with-libsyscall.so:
run-plugin-test-plugin-set-pc-with-libsetpc.so:
diff --git a/tests/tcg/multiarch/plugin/check-plugin-output.sh b/tests/tcg/multiarch/plugin/regex-compare.sh
similarity index 100%
rename from tests/tcg/multiarch/plugin/check-plugin-output.sh
rename to tests/tcg/multiarch/plugin/regex-compare.sh
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 04/91] tests/tcg: introduce meson.build
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (2 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 03/91] tests/tcg/multiarch/plugin: rename check-plugin-output to regex-compare Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 18:10 ` Richard Henderson
2026-07-06 22:32 ` [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name Pierrick Bouvier
` (92 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Every target declare its tests, and add them in global tcg_tests
dictionary, indexed by target name. See comment for full description.
We make sure that if a user repeats a test several time it won't result
in duplicated executables or tests. In next commits, we'll introduce
what's needed to deal with that.
A test is compiled from a single source file (and later, a single set of
compile flags). We make sure dependencies are correctly handled by
generating a depfile.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/meson.build | 2 +-
tests/tcg/meson.build | 95 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 96 insertions(+), 1 deletion(-)
create mode 100644 tests/tcg/meson.build
diff --git a/tests/meson.build b/tests/meson.build
index 9ba04bbedd3..5877d2f60b1 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -74,7 +74,7 @@ subdir('decode')
if 'CONFIG_TCG' in config_all_accel
subdir('fp')
- subdir('tcg/plugins')
+ subdir('tcg')
endif
subdir('audio')
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
new file mode 100644
index 00000000000..0cfb39b0902
--- /dev/null
+++ b/tests/tcg/meson.build
@@ -0,0 +1,95 @@
+env = find_program('env')
+
+tcg_tests = {}
+# tcg_tests is a dictionary with following structure:
+#
+# {
+# 'name_of_target': {
+# 'cc': cross_compiler,
+# 'folder': 'folder_for_test_src_files',
+# 'qemu': emulators['qemu-...'],
+# 'tests': [
+# {
+# 'src_file': {
+# }
+# },
+# ...
+# ]
+# }
+# }
+#
+# Every test executable, is built only once.
+# Tests for a given src use the same executable by default, and their definition
+# is guaranteed to be unique also.
+# Default name is derived from src.
+
+# plugins come first, as we need to build the list
+subdir('plugins')
+
+# Finally, we can create all test executables and test targets
+foreach target, plan: tcg_tests
+ # Detect duplicated executables/tests, and report an error to force user to
+ # choose how to deal with it.
+ built_tests = {}
+ added_tests = {}
+
+ # return a clear error if user misspell a target entry
+ foreach key, _ : plan
+ allowed = ['cc', 'folder', 'qemu', 'tests']
+ if key not in allowed
+ error('unknown tcg test plan entry \'' + key + '\' for target ' + target +
+ ' (possible: [' + ', '.join(allowed) + '])')
+ endif
+ endforeach
+
+ cc = plan['cc']
+ folder = plan['folder']
+ qemu = plan['qemu']
+ tests = plan['tests']
+
+ foreach t : tests
+ foreach src, setup: t
+ # meson '/' operator drops left operand if right is an absolute path
+ src = folder / src
+ file = files(src)
+ exe_name = fs.stem(src)
+
+ exe_name = target + '-' + exe_name
+ test_name = exe_name
+
+ if test_name in added_tests
+ error('test ' + test_name + ' was already added: ' +
+ 'specify a different \'test_name\'')
+ endif
+
+ # build executable if needed
+ if exe_name not in built_tests
+ exe = custom_target(exe_name,
+ input: file,
+ command: [cc, '@INPUT@',
+ '-o', '@OUTPUT@', '-static',
+ '-MMD', '-MF', '@DEPFILE@',
+ '-Wall', '-Werror',
+ '-O0', '-g', '-fno-strict-aliasing',
+ ],
+ depfile: exe_name + '.d',
+ output: exe_name + '.test',
+ build_by_default: false)
+ built_tests += {exe_name: exe}
+ endif
+
+ depends = []
+
+ exe = built_tests[exe_name]
+ cmd = [qemu, exe]
+
+ # some tests expect QEMU env var to be set
+ cmd = ['QEMU=' + qemu.full_path(), cmd]
+
+ test(test_name, env, args: cmd,
+ depends: depends,
+ suite: ['tcg', 'tcg-' + target])
+ added_tests += {test_name: true}
+ endforeach
+ endforeach
+endforeach
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (3 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 04/91] tests/tcg: introduce meson.build Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 18:11 ` Richard Henderson
2026-07-06 22:32 ` [PATCH v3 06/91] tests/tcg/meson.build: introduce test_name Pierrick Bouvier
` (91 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to duplicate a test executable for a given source
file. This is needed when different cflags need to be used (like
vectorized vs non-vectorized for instance, like sve tests in aarch64).
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 0cfb39b0902..1719eac0d51 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -11,6 +11,7 @@ tcg_tests = {}
# 'tests': [
# {
# 'src_file': {
+# 'exe_name': ['provide an alternative binary name'],
# }
# },
# ...
@@ -18,10 +19,10 @@ tcg_tests = {}
# }
# }
#
-# Every test executable, is built only once.
+# Every test executable, identified by 'exe_name' is built only once.
# Tests for a given src use the same executable by default, and their definition
# is guaranteed to be unique also.
-# Default name is derived from src.
+# Default name is derived from src if 'exe_name' is omitted.
# plugins come first, as we need to build the list
subdir('plugins')
@@ -49,10 +50,22 @@ foreach target, plan: tcg_tests
foreach t : tests
foreach src, setup: t
+ # return a clear error if user misspell a setup entry
+ foreach key, _ : setup
+ allowed = ['exe_name']
+ if key not in allowed
+ error('unknown tcg setup entry \'' + key + '\' for test ' + src +
+ ' (possible: [' + ', '.join(allowed) + '])')
+ endif
+ endforeach
+
# meson '/' operator drops left operand if right is an absolute path
src = folder / src
file = files(src)
exe_name = fs.stem(src)
+ if 'exe_name' in setup
+ exe_name = setup['exe_name']
+ endif
exe_name = target + '-' + exe_name
test_name = exe_name
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 06/91] tests/tcg/meson.build: introduce test_name
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (4 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 07/91] tests/tcg/meson.build: introduce cflags Pierrick Bouvier
` (90 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to duplicate a test for a given src. This allows to
declare several tests that still share the same executable, thus saving
space and compile time.
A side note to mention that meson perfectly supports declaring several
tests with the same name. However, we prevent that to force dev to
clarify what is the intent of each individual test.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 1719eac0d51..3eee3847b58 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -12,6 +12,7 @@ tcg_tests = {}
# {
# 'src_file': {
# 'exe_name': ['provide an alternative binary name'],
+# 'test_name': ['provide an alternative test name'],
# }
# },
# ...
@@ -21,8 +22,9 @@ tcg_tests = {}
#
# Every test executable, identified by 'exe_name' is built only once.
# Tests for a given src use the same executable by default, and their definition
-# is guaranteed to be unique also.
-# Default name is derived from src if 'exe_name' is omitted.
+# is guaranteed to be unique also. Several tests for the same executable can
+# declared using 'test_name'.
+# Default name is derived from src if 'exe_name' and 'test_name' are omitted.
# plugins come first, as we need to build the list
subdir('plugins')
@@ -52,7 +54,7 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name']
+ allowed = ['exe_name', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -67,8 +69,13 @@ foreach target, plan: tcg_tests
exe_name = setup['exe_name']
endif
- exe_name = target + '-' + exe_name
test_name = exe_name
+ if 'test_name' in setup
+ test_name = setup['test_name']
+ endif
+
+ exe_name = target + '-' + exe_name
+ test_name = target + '-' + test_name
if test_name in added_tests
error('test ' + test_name + ' was already added: ' +
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 07/91] tests/tcg/meson.build: introduce cflags
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (5 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 06/91] tests/tcg/meson.build: introduce test_name Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 08/91] tests/tcg/meson.build: introduce qemu_args Pierrick Bouvier
` (89 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to declare cflags for a given test. Since we want to
preserve the uniqueness of test binaries, we prevent repeating those
cflags later, for an existing binary.
This ensures one executable == one set of cflags, and if dev needs
duplication, they can use a custom 'exe_name' to override this.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 3eee3847b58..495c1d672f0 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -13,6 +13,7 @@ tcg_tests = {}
# 'src_file': {
# 'exe_name': ['provide an alternative binary name'],
# 'test_name': ['provide an alternative test name'],
+# 'cflags': ['additional cflags to compile test', ...],
# }
# },
# ...
@@ -20,7 +21,8 @@ tcg_tests = {}
# }
# }
#
-# Every test executable, identified by 'exe_name' is built only once.
+# Every test executable, identified by 'exe_name' is built only once, and we
+# ensure cflags are specified only once, on first declaration.
# Tests for a given src use the same executable by default, and their definition
# is guaranteed to be unique also. Several tests for the same executable can
# declared using 'test_name'.
@@ -54,7 +56,7 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'test_name']
+ allowed = ['exe_name', 'cflags', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -82,6 +84,15 @@ foreach target, plan: tcg_tests
'specify a different \'test_name\'')
endif
+ cflags = []
+ if 'cflags' in setup
+ if exe_name in built_tests
+ error('test ' + exe_name + ' was already built with cflags: ' +
+ 'remove cflags or set \'exe_name\' (if cflags are different)')
+ endif
+ cflags = setup['cflags']
+ endif
+
# build executable if needed
if exe_name not in built_tests
exe = custom_target(exe_name,
@@ -91,7 +102,7 @@ foreach target, plan: tcg_tests
'-MMD', '-MF', '@DEPFILE@',
'-Wall', '-Werror',
'-O0', '-g', '-fno-strict-aliasing',
- ],
+ cflags],
depfile: exe_name + '.d',
output: exe_name + '.test',
build_by_default: false)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 08/91] tests/tcg/meson.build: introduce qemu_args
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (6 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 07/91] tests/tcg/meson.build: introduce cflags Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 09/91] tests/tcg/meson.build: introduce env_var Pierrick Bouvier
` (88 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to use custom arguments when calling qemu for a test.
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 495c1d672f0..8c82a49b3ec 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -14,6 +14,7 @@ tcg_tests = {}
# 'exe_name': ['provide an alternative binary name'],
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
+# 'qemu_args': ['qemu command line flags', ...],
# }
# },
# ...
@@ -56,7 +57,7 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'cflags', 'test_name']
+ allowed = ['exe_name', 'cflags', 'qemu_args', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -110,9 +111,13 @@ foreach target, plan: tcg_tests
endif
depends = []
+ qemu_args = []
+ if 'qemu_args' in setup
+ qemu_args = setup['qemu_args']
+ endif
exe = built_tests[exe_name]
- cmd = [qemu, exe]
+ cmd = [qemu, qemu_args, exe]
# some tests expect QEMU env var to be set
cmd = ['QEMU=' + qemu.full_path(), cmd]
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 09/91] tests/tcg/meson.build: introduce env_var
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (7 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 08/91] tests/tcg/meson.build: introduce qemu_args Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 10/91] tests/tcg/plugins: build list of test_plugins Pierrick Bouvier
` (87 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to set an environment variable when running a test.
An example of a test requiring this is
tests/tcg/multiarch/linux/linux-sigrtminmax.c.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 8c82a49b3ec..0acda478198 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -15,6 +15,7 @@ tcg_tests = {}
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
# 'qemu_args': ['qemu command line flags', ...],
+# 'env_var': ['VAR=value', ...],
# }
# },
# ...
@@ -57,7 +58,7 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'cflags', 'qemu_args', 'test_name']
+ allowed = ['exe_name', 'env_var', 'cflags', 'qemu_args', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -122,6 +123,10 @@ foreach target, plan: tcg_tests
# some tests expect QEMU env var to be set
cmd = ['QEMU=' + qemu.full_path(), cmd]
+ if 'env_var' in setup
+ cmd = [setup['env_var'], cmd]
+ endif
+
test(test_name, env, args: cmd,
depends: depends,
suite: ['tcg', 'tcg-' + target])
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 10/91] tests/tcg/plugins: build list of test_plugins
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (8 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 09/91] tests/tcg/meson.build: introduce env_var Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 11/91] tests/tcg/meson.build: introduce plugin_test Pierrick Bouvier
` (86 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We previously had list of test_plugins sources, but not the target
themselves. Create this list, so tests can then reference a plugin by
its name from there.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/plugins/meson.build | 11 +++++++----
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 0acda478198..3edb525dd12 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -31,6 +31,7 @@ tcg_tests = {}
# Default name is derived from src if 'exe_name' and 'test_name' are omitted.
# plugins come first, as we need to build the list
+test_plugins = {}
subdir('plugins')
# Finally, we can create all test executables and test targets
diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
index d7f8f0ae0ad..2abc317d1e7 100644
--- a/tests/tcg/plugins/meson.build
+++ b/tests/tcg/plugins/meson.build
@@ -1,4 +1,4 @@
-test_plugins = [
+test_plugins_src = [
'bb.c',
'discons.c',
'empty.c',
@@ -14,9 +14,12 @@ test_plugins = [
t = []
if get_option('plugins')
- foreach i : test_plugins
- t += shared_module(fs.stem(i), files(i),
- dependencies: plugins_deps)
+ foreach i : test_plugins_src
+ name = fs.stem(i)
+ plugin = shared_module(name, files(i),
+ dependencies: plugins_deps)
+ t += plugin
+ test_plugins += {name: plugin}
endforeach
endif
if t.length() > 0
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 11/91] tests/tcg/meson.build: introduce plugin_test
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (9 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 10/91] tests/tcg/plugins: build list of test_plugins Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 12/91] tests/tcg/meson.build: test gdb support and introduce gdb_arch Pierrick Bouvier
` (85 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to declare a test that is based on a plugin.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 3edb525dd12..9b29669977f 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -16,6 +16,10 @@ tcg_tests = {}
# 'cflags': ['additional cflags to compile test', ...],
# 'qemu_args': ['qemu command line flags', ...],
# 'env_var': ['VAR=value', ...],
+# 'plugin_test': {
+# 'plugin': 'plugin_name',
+# 'args': ['plugin_args', ...],
+# },
# }
# },
# ...
@@ -59,13 +63,29 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'env_var', 'cflags', 'qemu_args', 'test_name']
+ allowed = ['exe_name', 'env_var', 'cflags', 'plugin_test',
+ 'qemu_args', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
endif
endforeach
+ # return a clear error if user misspell a plugin entry
+ if 'plugin_test' in setup
+ foreach key, _ : setup['plugin_test']
+ allowed = ['args', 'plugin']
+ if key not in allowed
+ error('unknown tcg plugin entry \'' + key + '\' for test ' + src +
+ ' (possible: [' + ', '.join(allowed) + '])')
+ endif
+ endforeach
+ endif
+
+ if 'plugin_test' in setup and not get_option('plugins')
+ continue
+ endif
+
# meson '/' operator drops left operand if right is an absolute path
src = folder / src
file = files(src)
@@ -78,6 +98,12 @@ foreach target, plan: tcg_tests
if 'test_name' in setup
test_name = setup['test_name']
endif
+ if 'plugin_test' in setup
+ plugin = test_plugins[setup['plugin_test']['plugin']]
+ # remove 'lib' prefix
+ plugin_name = fs.stem(plugin).substring(3)
+ test_name = 'plugin-' + plugin_name + '-with-' + test_name
+ endif
exe_name = target + '-' + exe_name
test_name = target + '-' + test_name
@@ -118,6 +144,21 @@ foreach target, plan: tcg_tests
qemu_args = setup['qemu_args']
endif
+ if 'plugin_test' in setup
+ plugin_setup = setup['plugin_test']
+ plugin = test_plugins[plugin_setup['plugin']]
+ plugin_args = []
+ if 'args' in plugin_setup
+ # add empty arg to generate an additional comma
+ plugin_args = ['', plugin_setup['args']]
+ endif
+ plugin_args = ','.join(plugin_args)
+
+ # since we turn plugin into a string, add dependency explicitly
+ depends += plugin
+ qemu_args = ['-plugin', plugin.full_path() + plugin_args, qemu_args]
+ endif
+
exe = built_tests[exe_name]
cmd = [qemu, qemu_args, exe]
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 12/91] tests/tcg/meson.build: test gdb support and introduce gdb_arch
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (10 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 11/91] tests/tcg/meson.build: introduce plugin_test Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 13/91] tests/tcg/meson.build: introduce gdb_test Pierrick Bouvier
` (84 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
A given target can now declare which gdb architecture it requires.
Also, we add the code to check gdb capabilities, and version.
Tests can use gdb_version.version_compare('>=X.Y') to test this.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 9b29669977f..b1655f5200b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -1,5 +1,11 @@
env = find_program('env')
+gdb_progs = ['gdb-multiarch', 'gdb']
+if config_host.has_key('GDB')
+ gdb_progs = [config_host['GDB'], gdb_progs]
+endif
+gdb = find_program(gdb_progs, required: false)
+
tcg_tests = {}
# tcg_tests is a dictionary with following structure:
#
@@ -7,6 +13,7 @@ tcg_tests = {}
# 'name_of_target': {
# 'cc': cross_compiler,
# 'folder': 'folder_for_test_src_files',
+# 'gdb_arch': 'gdb architecture requirement',
# 'qemu': emulators['qemu-...'],
# 'tests': [
# {
@@ -34,6 +41,18 @@ tcg_tests = {}
# declared using 'test_name'.
# Default name is derived from src if 'exe_name' and 'test_name' are omitted.
+gdb_arch_supported = {}
+gdb_version = '0'
+if gdb.found()
+ gdb_version = gdb.version()
+ gdb_arch = run_command(python, files('../../scripts/probe-gdb-support.py'),
+ gdb,
+ check: true)
+ foreach arch: gdb_arch.stdout().split()
+ gdb_arch_supported += {arch: true}
+ endforeach
+endif
+
# plugins come first, as we need to build the list
test_plugins = {}
subdir('plugins')
@@ -47,7 +66,7 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a target entry
foreach key, _ : plan
- allowed = ['cc', 'folder', 'qemu', 'tests']
+ allowed = ['cc', 'folder', 'gdb_arch', 'qemu', 'tests']
if key not in allowed
error('unknown tcg test plan entry \'' + key + '\' for target ' + target +
' (possible: [' + ', '.join(allowed) + '])')
@@ -56,6 +75,7 @@ foreach target, plan: tcg_tests
cc = plan['cc']
folder = plan['folder']
+ gdb_arch = plan['gdb_arch']
qemu = plan['qemu']
tests = plan['tests']
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 13/91] tests/tcg/meson.build: introduce gdb_test
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (11 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 12/91] tests/tcg/meson.build: test gdb support and introduce gdb_arch Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 14/91] tests/tcg/meson.build: add default flag for testing compiler support Pierrick Bouvier
` (83 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We can now declare a test requiring gdb interaction, based on
tests/guest-debug/run-test.py.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index b1655f5200b..7b439ee027b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -5,6 +5,7 @@ if config_host.has_key('GDB')
gdb_progs = [config_host['GDB'], gdb_progs]
endif
gdb = find_program(gdb_progs, required: false)
+prog_gdb_test = find_program('../guest-debug/run-test.py')
tcg_tests = {}
# tcg_tests is a dictionary with following structure:
@@ -22,6 +23,7 @@ tcg_tests = {}
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
# 'qemu_args': ['qemu command line flags', ...],
+# 'gdb_test': ['gdb test args'],
# 'env_var': ['VAR=value', ...],
# 'plugin_test': {
# 'plugin': 'plugin_name',
@@ -83,7 +85,7 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'env_var', 'cflags', 'plugin_test',
+ allowed = ['exe_name', 'env_var', 'cflags', 'gdb_test', 'plugin_test',
'qemu_args', 'test_name']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
@@ -102,6 +104,10 @@ foreach target, plan: tcg_tests
endforeach
endif
+ if 'gdb_test' in setup and gdb_arch not in gdb_arch_supported
+ continue
+ endif
+
if 'plugin_test' in setup and not get_option('plugins')
continue
endif
@@ -118,7 +124,9 @@ foreach target, plan: tcg_tests
if 'test_name' in setup
test_name = setup['test_name']
endif
- if 'plugin_test' in setup
+ if 'gdb_test' in setup
+ test_name = 'gdb-' + test_name
+ elif 'plugin_test' in setup
plugin = test_plugins[setup['plugin_test']['plugin']]
# remove 'lib' prefix
plugin_name = fs.stem(plugin).substring(3)
@@ -182,6 +190,16 @@ foreach target, plan: tcg_tests
exe = built_tests[exe_name]
cmd = [qemu, qemu_args, exe]
+ if 'gdb_test' in setup
+ cmd = [prog_gdb_test,
+ '--gdb', gdb,
+ '--qemu', qemu,
+ '--qargs', ' '.join(qemu_args),
+ '--bin', exe,
+ setup['gdb_test'],
+ ]
+ endif
+
# some tests expect QEMU env var to be set
cmd = ['QEMU=' + qemu.full_path(), cmd]
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 14/91] tests/tcg/meson.build: add default flag for testing compiler support
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (12 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 13/91] tests/tcg/meson.build: introduce gdb_test Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 15/91] tests/tcg/meson.build: introduce wrapper Pierrick Bouvier
` (82 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
This global variable can be used as cflags when checking if a compiler
supports specific flags.
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 7b439ee027b..7c20f97241f 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -1,3 +1,4 @@
+cc_check_args = ['-xc', '/dev/null', '-o', '/dev/null', '-c']
env = find_program('env')
gdb_progs = ['gdb-multiarch', 'gdb']
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 15/91] tests/tcg/meson.build: introduce wrapper
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (13 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 14/91] tests/tcg/meson.build: add default flag for testing compiler support Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output Pierrick Bouvier
` (81 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add possibility to wrap a test command through a given script. This
can be used to provide any kind of ad-hoc check for specific tests.
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 7c20f97241f..2106f5d979e 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -26,6 +26,7 @@ tcg_tests = {}
# 'qemu_args': ['qemu command line flags', ...],
# 'gdb_test': ['gdb test args'],
# 'env_var': ['VAR=value', ...],
+# 'wrapper': [program_to_launch_test, 'args'...],
# 'plugin_test': {
# 'plugin': 'plugin_name',
# 'args': ['plugin_args', ...],
@@ -87,7 +88,7 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a setup entry
foreach key, _ : setup
allowed = ['exe_name', 'env_var', 'cflags', 'gdb_test', 'plugin_test',
- 'qemu_args', 'test_name']
+ 'qemu_args', 'test_name', 'wrapper']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -201,6 +202,10 @@ foreach target, plan: tcg_tests
]
endif
+ if 'wrapper' in setup
+ cmd = [setup['wrapper'], cmd]
+ endif
+
# some tests expect QEMU env var to be set
cmd = ['QEMU=' + qemu.full_path(), cmd]
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (14 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 15/91] tests/tcg/meson.build: introduce wrapper Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 5:15 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output Pierrick Bouvier
` (80 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
A test can declare it expects a specific output on stdout. In this case,
we compare it to a reference file. We implement this instead of relying
on a wrapper because we need the flexibility to resolve name of
reference file per target.
For instance, multiarch float tests expect different ref files for each
target, which is something we can't express with a test wrapper.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 12 ++++++++++--
tests/tcg/scripts/run_and_diff.sh | 15 +++++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
create mode 100755 tests/tcg/scripts/run_and_diff.sh
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 2106f5d979e..1dd0e492810 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -7,6 +7,7 @@ if config_host.has_key('GDB')
endif
gdb = find_program(gdb_progs, required: false)
prog_gdb_test = find_program('../guest-debug/run-test.py')
+prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
tcg_tests = {}
# tcg_tests is a dictionary with following structure:
@@ -24,6 +25,7 @@ tcg_tests = {}
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
# 'qemu_args': ['qemu command line flags', ...],
+# 'expected_output': 'file_to_compare_output',
# 'gdb_test': ['gdb test args'],
# 'env_var': ['VAR=value', ...],
# 'wrapper': [program_to_launch_test, 'args'...],
@@ -87,8 +89,9 @@ foreach target, plan: tcg_tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'env_var', 'cflags', 'gdb_test', 'plugin_test',
- 'qemu_args', 'test_name', 'wrapper']
+ allowed = ['exe_name', 'env_var', 'expected_output', 'cflags',
+ 'gdb_test', 'plugin_test', 'qemu_args', 'test_name',
+ 'wrapper']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -202,6 +205,11 @@ foreach target, plan: tcg_tests
]
endif
+ if 'expected_output' in setup
+ expected = files(folder / setup['expected_output'])
+ cmd = [prog_run_and_diff, expected, cmd]
+ endif
+
if 'wrapper' in setup
cmd = [setup['wrapper'], cmd]
endif
diff --git a/tests/tcg/scripts/run_and_diff.sh b/tests/tcg/scripts/run_and_diff.sh
new file mode 100755
index 00000000000..3e51cdc9663
--- /dev/null
+++ b/tests/tcg/scripts/run_and_diff.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -euo pipefail
+
+if [ $# -lt 2 ]; then
+ echo "run_and_diff: expected_output_file cmd [args]..." 1>&2
+ exit 1
+fi
+expected="$1";shift
+output=$(mktemp)
+trap "rm -rf $output" EXIT
+set -x
+"$@" |& tee $output
+diff $output $expected
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (15 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 5:16 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input Pierrick Bouvier
` (79 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
One of our test requires to make sure output does not contain a specific
string. An example is system multiarch test run-gdbstub-untimely-packet.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 3 +++
.../scripts/run_and_check_forbidden_output.sh | 19 +++++++++++++++++++
2 files changed, 22 insertions(+)
create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 1dd0e492810..adb11af7acb 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -8,6 +8,9 @@ endif
gdb = find_program(gdb_progs, required: false)
prog_gdb_test = find_program('../guest-debug/run-test.py')
prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
+prog_run_and_check_forbidden_output = find_program(
+ './scripts/run_and_check_forbidden_output.sh'
+)
tcg_tests = {}
# tcg_tests is a dictionary with following structure:
diff --git a/tests/tcg/scripts/run_and_check_forbidden_output.sh b/tests/tcg/scripts/run_and_check_forbidden_output.sh
new file mode 100755
index 00000000000..4486ca8ef83
--- /dev/null
+++ b/tests/tcg/scripts/run_and_check_forbidden_output.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -euo pipefail
+
+if [ $# -lt 2 ]; then
+ echo "run_and_check_forbidden_output: 'forbidden string' cmd [args]..." 1>&2
+ exit 1
+fi
+forbidden="$1";shift
+output=$("$@" 2>&1)
+set -x
+if ! echo "$output" | grep -Fi "$forbidden"
+then
+ echo "output does not contain forbidden string: $forbidden"
+ exit 0
+fi
+echo "found forbidden string: $forbidden" 1>&2
+exit 1
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (16 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 5:21 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay Pierrick Bouvier
` (78 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Semihosting console tests require console interaction, and were flagged
as manual because of this. This wrapper automates interaction, by
sending a specific string on stdin.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/scripts/run_with_input.sh | 12 ++++++++++++
2 files changed, 13 insertions(+)
create mode 100755 tests/tcg/scripts/run_with_input.sh
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index adb11af7acb..30178df0f7a 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -8,6 +8,7 @@ endif
gdb = find_program(gdb_progs, required: false)
prog_gdb_test = find_program('../guest-debug/run-test.py')
prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
+prog_run_with_input = find_program('./scripts/run_with_input.sh')
prog_run_and_check_forbidden_output = find_program(
'./scripts/run_and_check_forbidden_output.sh'
)
diff --git a/tests/tcg/scripts/run_with_input.sh b/tests/tcg/scripts/run_with_input.sh
new file mode 100755
index 00000000000..3d280547c3a
--- /dev/null
+++ b/tests/tcg/scripts/run_with_input.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -euo pipefail
+
+if [ $# -lt 2 ]; then
+ echo "run_with_input: input_string cmd [args]..." 1>&2
+ exit 1
+fi
+input="$1";shift
+set -x
+echo "$input" | "$@"
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (17 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-09 14:49 ` Alex Bennée
2026-07-09 14:52 ` Alex Bennée
2026-07-06 22:32 ` [PATCH v3 20/91] tests/tcg/meson.build: add wrapper check_plugin_output Pierrick Bouvier
` (77 subsequent siblings)
96 siblings, 2 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Runs a record and replay test, and make sure the output produced by
both runs is the same.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
create mode 100755 tests/tcg/scripts/record_replay.sh
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 30178df0f7a..e610ce30f40 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -7,6 +7,7 @@ if config_host.has_key('GDB')
endif
gdb = find_program(gdb_progs, required: false)
prog_gdb_test = find_program('../guest-debug/run-test.py')
+prog_record_replay = find_program('./scripts/record_replay.sh')
prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
prog_run_with_input = find_program('./scripts/run_with_input.sh')
prog_run_and_check_forbidden_output = find_program(
diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
new file mode 100755
index 00000000000..57775a2d4c1
--- /dev/null
+++ b/tests/tcg/scripts/record_replay.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -euo pipefail
+
+if [ $# -lt 2 ]; then
+ echo "record_replay: qemu_bin [args]..." 1>&2
+ exit 1
+fi
+qemu="$1";shift
+tmp=$(mktemp -d)
+trap "rm -rf $tmp" EXIT
+set -x
+$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
+$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
+diff $tmp/record $tmp/replay
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 20/91] tests/tcg/meson.build: add wrapper check_plugin_output
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (18 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
` (76 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
This wrapper runs a qemu command, record command output and plugin
output, and forward both to a check script.
We use this pattern in several plugin tests (for instance, with
validate-memory-counts.py).
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/scripts/check_plugin_output.sh | 25 ++++++++++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100755 tests/tcg/scripts/check_plugin_output.sh
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index e610ce30f40..679a69054e4 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -6,6 +6,7 @@ if config_host.has_key('GDB')
gdb_progs = [config_host['GDB'], gdb_progs]
endif
gdb = find_program(gdb_progs, required: false)
+prog_check_plugin_output = find_program('./scripts/check_plugin_output.sh')
prog_gdb_test = find_program('../guest-debug/run-test.py')
prog_record_replay = find_program('./scripts/record_replay.sh')
prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
diff --git a/tests/tcg/scripts/check_plugin_output.sh b/tests/tcg/scripts/check_plugin_output.sh
new file mode 100755
index 00000000000..d942082ad86
--- /dev/null
+++ b/tests/tcg/scripts/check_plugin_output.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set -euo pipefail
+
+if [ $# -lt 3 ]; then
+ echo "check_plugin_output: check_cmd qemu_bin [args]..." 1>&2
+ exit 1
+fi
+check_cmd="$1"; shift
+check_cmd_args=""
+while [[ "$1" == "-"* ]]; do
+ check_cmd_args="$check_cmd_args $1"
+ shift
+done
+
+qemu="$1"; shift
+tmp=$(mktemp -d)
+trap "rm -rf $tmp" EXIT
+
+set -x
+
+$qemu -d plugin -D $tmp/plugin "$@" |& tee $tmp/output
+cat $tmp/plugin
+$check_cmd $check_cmd_args $tmp/output $tmp/plugin
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (19 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 20/91] tests/tcg/meson.build: add wrapper check_plugin_output Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 5:24 ` Manos Pitsidianakis
` (2 more replies)
2026-07-06 22:32 ` [PATCH v3 22/91] tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags Pierrick Bouvier
` (75 subsequent siblings)
96 siblings, 3 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Instead of skipping tests and not declare them, always declare them and
simply return an exit code 77 (SKIPPED for meson) and print reason why
test is skipped.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 679a69054e4..2bc1fc77775 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -115,11 +115,15 @@ foreach target, plan: tcg_tests
endforeach
endif
+ # if set, we'll skip test and print the reason
+ skip_test = ''
+
if 'gdb_test' in setup and gdb_arch not in gdb_arch_supported
continue
endif
if 'plugin_test' in setup and not get_option('plugins')
+ # do not use the skip_test logic, and simply ignore the test
continue
endif
@@ -227,6 +231,11 @@ foreach target, plan: tcg_tests
cmd = [setup['env_var'], cmd]
endif
+ if skip_test != ''
+ # still declare test, but skip it and print reason
+ cmd = ['sh', '-c', 'echo "' + skip_test + '" && exit 77']
+ endif
+
test(test_name, env, args: cmd,
depends: depends,
suite: ['tcg', 'tcg-' + target])
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 22/91] tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (20 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 23/91] tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version Pierrick Bouvier
` (74 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We directly move compiler requirements in test definition. This allows
to always declare all tests, and let the main loop filter the ones
that will be available.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 43 +++++++++++++++++++++++++++++++++++++------
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 2bc1fc77775..91e71ac40f2 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -21,6 +21,10 @@ tcg_tests = {}
# {
# 'name_of_target': {
# 'cc': cross_compiler,
+# 'cc_feat_cflags': {
+# 'name': ['feature cflags'],
+# ...
+# },
# 'folder': 'folder_for_test_src_files',
# 'gdb_arch': 'gdb architecture requirement',
# 'qemu': emulators['qemu-...'],
@@ -30,6 +34,7 @@ tcg_tests = {}
# 'exe_name': ['provide an alternative binary name'],
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
+# 'cc_feat': 'feature name, must be present in cc_feat_cflags',
# 'qemu_args': ['qemu command line flags', ...],
# 'expected_output': 'file_to_compare_output',
# 'gdb_test': ['gdb test args'],
@@ -75,10 +80,11 @@ foreach target, plan: tcg_tests
# choose how to deal with it.
built_tests = {}
added_tests = {}
+ cc_has_feat = {}
# return a clear error if user misspell a target entry
foreach key, _ : plan
- allowed = ['cc', 'folder', 'gdb_arch', 'qemu', 'tests']
+ allowed = ['cc', 'cc_feat_cflags', 'folder', 'gdb_arch', 'qemu', 'tests']
if key not in allowed
error('unknown tcg test plan entry \'' + key + '\' for target ' + target +
' (possible: [' + ', '.join(allowed) + '])')
@@ -89,13 +95,17 @@ foreach target, plan: tcg_tests
folder = plan['folder']
gdb_arch = plan['gdb_arch']
qemu = plan['qemu']
+ cc_feat_cflags = {}
+ if 'cc_feat_cflags' in plan
+ cc_feat_cflags = plan['cc_feat_cflags']
+ endif
tests = plan['tests']
foreach t : tests
foreach src, setup: t
# return a clear error if user misspell a setup entry
foreach key, _ : setup
- allowed = ['exe_name', 'env_var', 'expected_output', 'cflags',
+ allowed = ['exe_name', 'env_var', 'expected_output', 'cc_feat', 'cflags',
'gdb_test', 'plugin_test', 'qemu_args', 'test_name',
'wrapper']
if key not in allowed
@@ -156,15 +166,36 @@ foreach target, plan: tcg_tests
'specify a different \'test_name\'')
endif
+ if 'cflags' in setup or 'cc_feat' in setup
+ if exe_name in built_tests
+ error('test ' + exe_name +
+ ' was already built with cflags or cc_feat:' +
+ ' remove cflags, cc_feat, or set \'exe_name\'' +
+ ' (if cflags are different)')
+ endif
+ endif
+
cflags = []
if 'cflags' in setup
- if exe_name in built_tests
- error('test ' + exe_name + ' was already built with cflags: ' +
- 'remove cflags or set \'exe_name\' (if cflags are different)')
- endif
cflags = setup['cflags']
endif
+ if 'cc_feat' in setup
+ cc_feat = setup['cc_feat']
+ if cc_feat not in cc_has_feat
+ cmd = run_command([cc, cc_check_args, cc_feat_cflags[cc_feat]],
+ check: false)
+ avail = cmd.returncode() == 0
+ cc_has_feat += {cc_feat: avail}
+ endif
+
+ if not cc_has_feat[cc_feat]
+ skip_test = 'compiler feature ' + cc_feat + ' not supported'
+ built_tests += {exe_name: exe_name}
+ endif
+ cflags += cc_feat_cflags[cc_feat]
+ endif
+
# build executable if needed
if exe_name not in built_tests
exe = custom_target(exe_name,
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 23/91] tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (21 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 22/91] tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 24/91] tests/tcg/meson.build: move gdb_arch support check Pierrick Bouvier
` (73 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Similar to cc features, we declare the same for gdb. With both
available, we can now declare all tests inconditionally.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 91e71ac40f2..3b1c72a0f8d 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -27,6 +27,10 @@ tcg_tests = {}
# },
# 'folder': 'folder_for_test_src_files',
# 'gdb_arch': 'gdb architecture requirement',
+# 'gdb_feat_version': {
+# 'name': ['minimal gdb version supporting feature'],
+# ...
+# },
# 'qemu': emulators['qemu-...'],
# 'tests': [
# {
@@ -38,6 +42,7 @@ tcg_tests = {}
# 'qemu_args': ['qemu command line flags', ...],
# 'expected_output': 'file_to_compare_output',
# 'gdb_test': ['gdb test args'],
+# 'gdb_feat': ['feature name, must be present in gdb_feat_version'],
# 'env_var': ['VAR=value', ...],
# 'wrapper': [program_to_launch_test, 'args'...],
# 'plugin_test': {
@@ -84,7 +89,8 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a target entry
foreach key, _ : plan
- allowed = ['cc', 'cc_feat_cflags', 'folder', 'gdb_arch', 'qemu', 'tests']
+ allowed = ['cc', 'cc_feat_cflags', 'folder', 'gdb_arch', 'gdb_feat_version',
+ 'qemu', 'tests']
if key not in allowed
error('unknown tcg test plan entry \'' + key + '\' for target ' + target +
' (possible: [' + ', '.join(allowed) + '])')
@@ -99,6 +105,11 @@ foreach target, plan: tcg_tests
if 'cc_feat_cflags' in plan
cc_feat_cflags = plan['cc_feat_cflags']
endif
+ gdb_feat_version = {}
+ if 'gdb_feat_version' in plan
+ gdb_feat_version = plan['gdb_feat_version']
+ endif
+
tests = plan['tests']
foreach t : tests
@@ -106,8 +117,8 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a setup entry
foreach key, _ : setup
allowed = ['exe_name', 'env_var', 'expected_output', 'cc_feat', 'cflags',
- 'gdb_test', 'plugin_test', 'qemu_args', 'test_name',
- 'wrapper']
+ 'gdb_feat', 'gdb_test', 'plugin_test', 'qemu_args',
+ 'test_name', 'wrapper']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
' (possible: [' + ', '.join(allowed) + '])')
@@ -262,6 +273,18 @@ foreach target, plan: tcg_tests
cmd = [setup['env_var'], cmd]
endif
+ if 'gdb_feat' in setup
+ if 'gdb_test' not in setup
+ error('test ' + test_name + ' is not a gdb test, but it requires ' +
+ 'a gdb feature')
+ endif
+ gdb_feat = setup['gdb_feat']
+
+ if not gdb_version.version_compare('>=' + gdb_feat_version[gdb_feat])
+ skip_test = 'gdb feature ' + gdb_feat + ' not supported'
+ endif
+ endif
+
if skip_test != ''
# still declare test, but skip it and print reason
cmd = ['sh', '-c', 'echo "' + skip_test + '" && exit 77']
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 24/91] tests/tcg/meson.build: move gdb_arch support check
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (22 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 23/91] tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 25/91] tests/tcg/meson.build: let test infrastructure detect compiler Pierrick Bouvier
` (72 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
This allows to report the correct skip reason instead of saying gdb does
not support a specific feature for some tests.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 3b1c72a0f8d..b6b7302ffb6 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -139,10 +139,6 @@ foreach target, plan: tcg_tests
# if set, we'll skip test and print the reason
skip_test = ''
- if 'gdb_test' in setup and gdb_arch not in gdb_arch_supported
- continue
- endif
-
if 'plugin_test' in setup and not get_option('plugins')
# do not use the skip_test logic, and simply ignore the test
continue
@@ -285,6 +281,10 @@ foreach target, plan: tcg_tests
endif
endif
+ if 'gdb_test' in setup and gdb_arch not in gdb_arch_supported
+ skip_test = 'gdb not available for ' + gdb_arch
+ endif
+
if skip_test != ''
# still declare test, but skip it and print reason
cmd = ['sh', '-c', 'echo "' + skip_test + '" && exit 77']
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 25/91] tests/tcg/meson.build: let test infrastructure detect compiler
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (23 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 24/91] tests/tcg/meson.build: move gdb_arch support check Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails Pierrick Bouvier
` (71 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Now we moved back flags to tests/tcg/meson.build, we don't need to
expose cc anymore in target files.
This will allow us to easily introduce cross containers.
Also, we can reuse the skip_test logic to gracefully report why tests
don't run.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index b6b7302ffb6..0d2fefe8f51 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -20,7 +20,7 @@ tcg_tests = {}
#
# {
# 'name_of_target': {
-# 'cc': cross_compiler,
+# 'cc': 'cross_compiler',
# 'cc_feat_cflags': {
# 'name': ['feature cflags'],
# ...
@@ -97,7 +97,7 @@ foreach target, plan: tcg_tests
endif
endforeach
- cc = plan['cc']
+ cc = find_program(plan['cc'], required : false)
folder = plan['folder']
gdb_arch = plan['gdb_arch']
qemu = plan['qemu']
@@ -190,9 +190,12 @@ foreach target, plan: tcg_tests
if 'cc_feat' in setup
cc_feat = setup['cc_feat']
if cc_feat not in cc_has_feat
- cmd = run_command([cc, cc_check_args, cc_feat_cflags[cc_feat]],
- check: false)
- avail = cmd.returncode() == 0
+ avail = false
+ if cc.found()
+ cmd = run_command([cc, cc_check_args, cc_feat_cflags[cc_feat]],
+ check: false)
+ avail = cmd.returncode() == 0
+ endif
cc_has_feat += {cc_feat: avail}
endif
@@ -203,6 +206,11 @@ foreach target, plan: tcg_tests
cflags += cc_feat_cflags[cc_feat]
endif
+ if not cc.found()
+ skip_test = 'compiler ' + plan['cc'] + ' not available'
+ built_tests += {exe_name: exe_name}
+ endif
+
# build executable if needed
if exe_name not in built_tests
exe = custom_target(exe_name,
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (24 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 25/91] tests/tcg/meson.build: let test infrastructure detect compiler Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 6:24 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info Pierrick Bouvier
` (70 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We are not necessarily interested to know which engine is available.
However, parsing "no" as an answer is not intuitive, compared to
read an exit code.
Thus, exit with 1 if no engine is available.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/docker/docker.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 9e18b984f45..6640cebfbec 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -623,6 +623,7 @@ def run(self, args, argv):
print(" ".join(docker._command))
except Exception:
print("no")
+ return 1
return
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (25 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 6:01 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch Pierrick Bouvier
` (69 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
It's useful to print build output by default, but not useful to mention
it succeeded. Reduce verbosity of tcg tests build.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/docker/docker.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 6640cebfbec..128c0e6caad 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -448,8 +448,7 @@ def run(self, args, argv):
dkr = Docker()
if "--no-cache" not in argv and \
dkr.image_matches_dockerfile(tag, dockerfile):
- if not args.quiet:
- print("Image is up to date.")
+ pass
else:
# Create a docker context directory for the build
docker_dir = tempfile.mkdtemp(prefix="docker_build")
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (26 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 6:15 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 29/91] tests/tcg/meson.build: introduce depends Pierrick Bouvier
` (68 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We allow target to declare a dockerfile containing required cc. We reuse
tests/docker/docker.py, and correctly set dependencies for tests on
original dockerfile.
We specify list of hosts for which image can be built and contains
required cc, using cc_docker_arch.
In case we rely on docker, we do not build tests by default anymore.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 61 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 57 insertions(+), 4 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 0d2fefe8f51..57e7c3f8801 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -1,6 +1,7 @@
cc_check_args = ['-xc', '/dev/null', '-o', '/dev/null', '-c']
env = find_program('env')
+docker_wrapper = find_program('../docker/docker.py')
gdb_progs = ['gdb-multiarch', 'gdb']
if config_host.has_key('GDB')
gdb_progs = [config_host['GDB'], gdb_progs]
@@ -21,6 +22,8 @@ tcg_tests = {}
# {
# 'name_of_target': {
# 'cc': 'cross_compiler',
+# 'cc_dockerfile': 'name_of_dockerfile',
+# 'cc_docker_arch': ['host_arch_supported (meson cpu)', ...],
# 'cc_feat_cflags': {
# 'name': ['feature cflags'],
# ...
@@ -75,10 +78,14 @@ if gdb.found()
endforeach
endif
+docker_supported = run_command(docker_wrapper, 'probe',
+ check: false).returncode() == 0
+
# plugins come first, as we need to build the list
test_plugins = {}
subdir('plugins')
+image_targets = {}
# Finally, we can create all test executables and test targets
foreach target, plan: tcg_tests
# Detect duplicated executables/tests, and report an error to force user to
@@ -89,8 +96,8 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a target entry
foreach key, _ : plan
- allowed = ['cc', 'cc_feat_cflags', 'folder', 'gdb_arch', 'gdb_feat_version',
- 'qemu', 'tests']
+ allowed = ['cc', 'cc_dockerfile', 'cc_docker_arch', 'cc_feat_cflags',
+ 'folder', 'gdb_arch', 'gdb_feat_version', 'qemu', 'tests']
if key not in allowed
error('unknown tcg test plan entry \'' + key + '\' for target ' + target +
' (possible: [' + ', '.join(allowed) + '])')
@@ -98,6 +105,46 @@ foreach target, plan: tcg_tests
endforeach
cc = find_program(plan['cc'], required : false)
+ cc_from_system = cc.found()
+ has_cc = cc.found()
+ build_test_depends = []
+ build_test_depend_files = []
+
+ if 'cc_dockerfile' in plan
+ cc_dockerfile = plan['cc_dockerfile']
+ cc_docker_arch = plan['cc_docker_arch']
+ allowed = ['aarch64', 'x86_64']
+ foreach arch: cc_docker_arch
+ if arch not in allowed
+ error('incorrect docker arch ' + arch + ' for target ' +
+ target + ' (possible: [' + ', '.join(allowed) + '])')
+ endif
+ endforeach
+ docker_arch_supported = host_machine.cpu_family() in cc_docker_arch
+ dockerfile = files('..'/'docker'/'dockerfiles'/cc_dockerfile + '.docker')
+ image_name = 'image-' + cc_dockerfile
+ has_docker = docker_arch_supported and docker_supported
+ if cc_dockerfile not in image_targets and has_docker
+ cmd = [docker_wrapper, 'build', '-f', dockerfile, '-t', cc_dockerfile]
+ t = custom_target(image_name, command: cmd,
+ build_by_default: false,
+ output: 'no_output_' + image_name)
+ image_targets += {cc_dockerfile: t}
+ endif
+
+ if not has_cc and has_docker
+ build_test_depends = image_targets[cc_dockerfile]
+ build_test_depend_files = dockerfile
+ mount = meson.project_source_root()
+ mount = mount + ':' + mount
+ here = meson.project_build_root()
+ cc = [docker_wrapper, 'run', '--run-as-current-user',
+ '-w', here, '-v', mount,
+ cc_dockerfile, plan['cc']]
+ has_cc = true
+ endif
+ endif
+
folder = plan['folder']
gdb_arch = plan['gdb_arch']
qemu = plan['qemu']
@@ -191,10 +238,14 @@ foreach target, plan: tcg_tests
cc_feat = setup['cc_feat']
if cc_feat not in cc_has_feat
avail = false
- if cc.found()
+ if cc_from_system
+ # check flag for host cc
cmd = run_command([cc, cc_check_args, cc_feat_cflags[cc_feat]],
check: false)
avail = cmd.returncode() == 0
+ elif has_cc
+ # docker cc always have feature
+ avail = true
endif
cc_has_feat += {cc_feat: avail}
endif
@@ -206,7 +257,7 @@ foreach target, plan: tcg_tests
cflags += cc_feat_cflags[cc_feat]
endif
- if not cc.found()
+ if not has_cc
skip_test = 'compiler ' + plan['cc'] + ' not available'
built_tests += {exe_name: exe_name}
endif
@@ -223,6 +274,8 @@ foreach target, plan: tcg_tests
cflags],
depfile: exe_name + '.d',
output: exe_name + '.test',
+ depends: build_test_depends,
+ depend_files: build_test_depend_files,
build_by_default: false)
built_tests += {exe_name: exe}
endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 29/91] tests/tcg/meson.build: introduce depends
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (27 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-08 6:07 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 30/91] tests/tcg/meson.build: add top-level 'tcg-tests' target Pierrick Bouvier
` (67 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
This can be used to declare dependencies for a given test executable.
Useful when generating headers (like x86_64 does).
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 57e7c3f8801..1f553a0aa8d 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -41,6 +41,7 @@ tcg_tests = {}
# 'exe_name': ['provide an alternative binary name'],
# 'test_name': ['provide an alternative test name'],
# 'cflags': ['additional cflags to compile test', ...],
+# 'depends': [meson_dependency, ...],
# 'cc_feat': 'feature name, must be present in cc_feat_cflags',
# 'qemu_args': ['qemu command line flags', ...],
# 'expected_output': 'file_to_compare_output',
@@ -164,7 +165,7 @@ foreach target, plan: tcg_tests
# return a clear error if user misspell a setup entry
foreach key, _ : setup
allowed = ['exe_name', 'env_var', 'expected_output', 'cc_feat', 'cflags',
- 'gdb_feat', 'gdb_test', 'plugin_test', 'qemu_args',
+ 'depends', 'gdb_feat', 'gdb_test', 'plugin_test', 'qemu_args',
'test_name', 'wrapper']
if key not in allowed
error('unknown tcg setup entry \'' + key + '\' for test ' + src +
@@ -262,6 +263,11 @@ foreach target, plan: tcg_tests
built_tests += {exe_name: exe_name}
endif
+ exe_depends = build_test_depends
+ if 'depends' in setup
+ exe_depends += setup['depends']
+ endif
+
# build executable if needed
if exe_name not in built_tests
exe = custom_target(exe_name,
@@ -274,13 +280,13 @@ foreach target, plan: tcg_tests
cflags],
depfile: exe_name + '.d',
output: exe_name + '.test',
- depends: build_test_depends,
+ depends: exe_depends,
depend_files: build_test_depend_files,
build_by_default: false)
built_tests += {exe_name: exe}
endif
- depends = []
+ test_depends = []
qemu_args = []
if 'qemu_args' in setup
qemu_args = setup['qemu_args']
@@ -297,7 +303,7 @@ foreach target, plan: tcg_tests
plugin_args = ','.join(plugin_args)
# since we turn plugin into a string, add dependency explicitly
- depends += plugin
+ test_depends += plugin
qemu_args = ['-plugin', plugin.full_path() + plugin_args, qemu_args]
endif
@@ -352,7 +358,7 @@ foreach target, plan: tcg_tests
endif
test(test_name, env, args: cmd,
- depends: depends,
+ depends: test_depends,
suite: ['tcg', 'tcg-' + target])
added_tests += {test_name: true}
endforeach
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 30/91] tests/tcg/meson.build: add top-level 'tcg-tests' target
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (28 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 29/91] tests/tcg/meson.build: introduce depends Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 31/91] tests/tcg/multiarch: declare user tests Pierrick Bouvier
` (66 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Add a target to rebuild all tcg-tests at once.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 1f553a0aa8d..9fa97627eec 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -87,6 +87,7 @@ test_plugins = {}
subdir('plugins')
image_targets = {}
+exe_targets = []
# Finally, we can create all test executables and test targets
foreach target, plan: tcg_tests
# Detect duplicated executables/tests, and report an error to force user to
@@ -283,6 +284,7 @@ foreach target, plan: tcg_tests
depends: exe_depends,
depend_files: build_test_depend_files,
build_by_default: false)
+ exe_targets += exe
built_tests += {exe_name: exe}
endif
@@ -364,3 +366,8 @@ foreach target, plan: tcg_tests
endforeach
endforeach
endforeach
+
+if exe_targets.length() > 0
+ # finally create a top level target to rebuild all tests
+ alias_target('tcg-tests', exe_targets)
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 31/91] tests/tcg/multiarch: declare user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (29 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 30/91] tests/tcg/meson.build: add top-level 'tcg-tests' target Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 32/91] tests/tcg/multiarch: declare system tests Pierrick Bouvier
` (65 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
At this point, those tests are just declared and not used yet.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 7 ++
tests/tcg/multiarch/meson.build | 147 ++++++++++++++++++++++++++++++++
tests/tcg/multiarch/sha1.ref | 1 +
3 files changed, 155 insertions(+)
create mode 100644 tests/tcg/multiarch/meson.build
create mode 100644 tests/tcg/multiarch/sha1.ref
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 9fa97627eec..0dd0efb92dc 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -85,11 +85,18 @@ docker_supported = run_command(docker_wrapper, 'probe',
# plugins come first, as we need to build the list
test_plugins = {}
subdir('plugins')
+# multiarch comes second, so it can be referenced by other arch after
+subdir('multiarch')
image_targets = {}
exe_targets = []
# Finally, we can create all test executables and test targets
foreach target, plan: tcg_tests
+ if target.startswith('multiarch-')
+ # those tests are included by architecture files if needed
+ continue
+ endif
+
# Detect duplicated executables/tests, and report an error to force user to
# choose how to deal with it.
built_tests = {}
diff --git a/tests/tcg/multiarch/meson.build b/tests/tcg/multiarch/meson.build
new file mode 100644
index 00000000000..99af41b3fcc
--- /dev/null
+++ b/tests/tcg/multiarch/meson.build
@@ -0,0 +1,147 @@
+tests = []
+
+float_helpers = files('libs/float_helpers.c')[0]
+float_cflags = [float_helpers, '-lm']
+
+# GCC versions 12/13/14/15 at least incorrectly complain about
+# "'SHA1Transform' reading 64 bytes from a region of size 0"; see the gcc bug
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106709
+# Since this is just a standard piece of library code we've borrowed for a
+# TCG test case, suppress the warning rather than trying to modify the
+# code to work around the compiler.
+sha1_cflags = ['-Wno-stringop-overread', '-Wno-unknown-warning-option']
+
+# multiarch src path are written to be included from any other arch folder,
+# so all arch can directly add those tests without any modification.
+multiarch = meson.current_source_dir()
+
+tests += {
+ multiarch/'catch-syscalls.c': {},
+ multiarch/'float_convd.c': {
+ 'cflags': float_cflags,
+ 'expected_output': 'float_convd.ref',
+ },
+ multiarch/'float_convs.c': {
+ 'cflags': float_cflags,
+ 'expected_output': 'float_convs.ref',
+ },
+ multiarch/'float_madds.c': {
+ 'cflags': float_cflags,
+ 'expected_output': 'float_madds.ref',
+ },
+ multiarch/'fnmsub.c': {'cflags': ['-lm']},
+ multiarch/'follow-fork-mode.c': {},
+ multiarch/'late-attach.c': {},
+ multiarch/'munmap-pthread.c': {'cflags': ['-lpthread']},
+ multiarch/'overflow.c': {},
+ multiarch/'prot-none.c': {},
+ multiarch/'segfault.c': {},
+ multiarch/'sha1.c': {
+ 'cflags': sha1_cflags,
+ 'expected_output': multiarch/'sha1.ref'
+ },
+ multiarch/'sha512.c': {},
+ multiarch/'sigbus.c': {},
+ multiarch/'signals.c': {'cflags': ['-lrt', '-lpthread']},
+ multiarch/'sigreturn-sigmask.c': {'cflags': ['-lpthread']},
+ multiarch/'tb-link.c': {'cflags': ['-lpthread']},
+ multiarch/'test-mmap.c': {},
+ multiarch/'testthread.c': {'cflags': ['-lpthread']},
+ multiarch/'threadcount.c': {'cflags': ['-lpthread']},
+}
+
+# Linux tests
+tests += {
+ multiarch/'linux/linux-madvise.c': {},
+ multiarch/'linux/linux-shmat-maps.c': {},
+ multiarch/'linux/linux-shmat-null.c': {},
+ multiarch/'linux/linux-sigrtminmax.c': {},
+ multiarch/'linux/linux-test.c': {},
+ multiarch/'linux/test-vma.c': {},
+}
+
+# GDB tests
+tests += {
+ multiarch/'sha1.c': {
+ 'gdb_test': ['--test', files('gdbstub/sha1.py')],
+ },
+}
+tests += {
+ multiarch/'sha1.c': {
+ 'test_name': 'qxfer-auxv-read',
+ 'gdb_test': ['--test', files('gdbstub/test-qxfer-auxv-read.py')],
+ },
+}
+tests += {
+ multiarch/'sha1.c': {
+ 'test_name': 'proc-mappings',
+ 'gdb_test': ['--test', files('gdbstub/test-proc-mappings.py')],
+ },
+}
+tests += {
+ multiarch/'segfault.c': {
+ 'test_name': 'qxfer-siginfo-read',
+ 'gdb_test': ['--test', files('gdbstub/test-qxfer-siginfo-read.py')],
+ },
+ multiarch/'testthread.c': {
+ 'test_name': 'thread-breakpoint',
+ 'gdb_test': ['--test', files('gdbstub/test-thread-breakpoint.py')],
+ },
+ multiarch/'sha512.c': {
+ 'test_name': 'registers',
+ 'gdb_test': ['--test', files('gdbstub/registers.py')],
+ },
+ multiarch/'prot-none.c': {
+ 'gdb_test': ['--test', files('gdbstub/prot-none.py')],
+ 'env_var': 'PROT_NONE_PY=1',
+ },
+ multiarch/'catch-syscalls.c': {
+ 'gdb_test': ['--test', files('gdbstub/catch-syscalls.py')],
+ },
+ multiarch/'late-attach.c': {
+ 'gdb_test': ['--no-suspend', '--test', files('gdbstub/late-attach.py')],
+ 'env_var': 'LATE_ATTACH_PY=1',
+ },
+}
+
+tests += {
+ multiarch/'follow-fork-mode.c': {
+ 'test_name': 'follow-fork-mode-child',
+ 'gdb_test': ['--test', files('gdbstub/follow-fork-mode-child.py')],
+ },
+}
+tests += {
+ multiarch/'follow-fork-mode.c': {
+ 'test_name': 'follow-fork-mode-parent',
+ 'gdb_test': ['--test', files('gdbstub/follow-fork-mode-parent.py')],
+ },
+}
+
+# Specific plugin tests
+# Test plugin memory access instrumentation
+tests += {
+ multiarch/'plugin/test-plugin-mem-access.c': {
+ 'plugin_test': {
+ 'plugin': 'mem',
+ 'args': ['print-accesses=true']
+ },
+ 'wrapper': [prog_check_plugin_output,
+ find_program('plugin/regex-compare.sh')],
+ },
+ multiarch/'plugin/test-plugin-set-pc.c': {
+ 'plugin_test': {
+ 'plugin': 'setpc',
+ }
+ },
+ multiarch/'test-plugin-syscall-filter.c': {
+ 'plugin_test': {
+ 'plugin': 'syscall',
+ }
+ },
+}
+
+tcg_tests += {
+ 'multiarch-linux-user': {
+ 'tests': tests
+ }
+}
diff --git a/tests/tcg/multiarch/sha1.ref b/tests/tcg/multiarch/sha1.ref
new file mode 100644
index 00000000000..4a8a114634f
--- /dev/null
+++ b/tests/tcg/multiarch/sha1.ref
@@ -0,0 +1 @@
+SHA1=15dd99a1991e0b3826fede3deffc1feba42278e6
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 32/91] tests/tcg/multiarch: declare system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (30 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 31/91] tests/tcg/multiarch: declare user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 33/91] tests/tcg/meson.build: add generic plugin tests Pierrick Bouvier
` (64 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We now declare all multiarch system tests.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/multiarch/meson.build | 2 +
tests/tcg/multiarch/system/meson.build | 53 ++++++++++++++++++++++++++
2 files changed, 55 insertions(+)
create mode 100644 tests/tcg/multiarch/system/meson.build
diff --git a/tests/tcg/multiarch/meson.build b/tests/tcg/multiarch/meson.build
index 99af41b3fcc..508fdb585b7 100644
--- a/tests/tcg/multiarch/meson.build
+++ b/tests/tcg/multiarch/meson.build
@@ -1,3 +1,5 @@
+subdir('system')
+
tests = []
float_helpers = files('libs/float_helpers.c')[0]
diff --git a/tests/tcg/multiarch/system/meson.build b/tests/tcg/multiarch/system/meson.build
new file mode 100644
index 00000000000..f71c12db38e
--- /dev/null
+++ b/tests/tcg/multiarch/system/meson.build
@@ -0,0 +1,53 @@
+tests = []
+
+# multiarch src path are written to be included from any other arch folder,
+# so all arch can directly add those tests.
+multiarch = meson.current_source_dir()
+
+tests += {
+ multiarch/'hello.c': {},
+ multiarch/'interrupt.c': {},
+ multiarch/'memory.c': {},
+}
+
+tests += {
+ multiarch/'memory.c': {
+ 'gdb_test': ['--test', files('../gdbstub/memory.py')]
+ },
+ multiarch/'interrupt.c': {
+ 'gdb_test': ['--test', files('../gdbstub/interrupt.py')]
+ },
+ multiarch/'hello.c': {
+ 'test_name': 'untimely-packet',
+ 'gdb_test': ['--gdb-args', '-ex \'set debug remote 1\'',
+ '--output', '/dev/stdout',
+ '--stderr', '/dev/stdout'],
+ 'wrapper': [prog_run_and_check_forbidden_output,
+ 'Packet instead of Ack, ignoring it']
+ }
+}
+
+tests += {
+ multiarch/'memory.c': {
+ 'test_name': 'registers',
+ 'gdb_test': ['--test', files('../gdbstub/registers.py')]
+ }
+}
+
+tests += {
+ multiarch/'memory.c': {
+ 'test_name': 'memory-access',
+ 'plugin_test': {
+ 'plugin': 'mem',
+ 'args': ['region-summary=true'],
+ },
+ 'wrapper': [prog_check_plugin_output,
+ find_program('./validate-memory-counts.py')]
+ }
+}
+
+tcg_tests += {
+ 'multiarch-softmmu': {
+ 'tests': tests
+ }
+}
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 33/91] tests/tcg/meson.build: add generic plugin tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (31 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 32/91] tests/tcg/multiarch: declare system tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 34/91] tests/tcg/aarch64: user tests Pierrick Bouvier
` (63 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We add one test for each plugin by picking a different user and system
multiarch test.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 45 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 0dd0efb92dc..ea81426f905 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -88,6 +88,51 @@ subdir('plugins')
# multiarch comes second, so it can be referenced by other arch after
subdir('multiarch')
+# Generic Plugin tests
+# add a single test for each plugin in user/system multiarch set
+plugin_tests_exclude = ['patch']
+foreach target: ['multiarch-linux-user', 'multiarch-softmmu']
+ plugin_tests = []
+ tests = tcg_tests[target]['tests']
+ normal_tests = []
+
+ # filter tests that are not plugin or gdb tests
+ foreach t: tests
+ foreach src, setup: t
+ if 'plugin_test' in setup or 'gdb_test' in setup
+ continue
+ endif
+ normal_tests += {src: setup}
+ endforeach
+ endforeach
+
+ idx = 0
+ foreach plugin_name, _: test_plugins
+ if plugin_name in plugin_tests_exclude
+ continue
+ endif
+
+ # pick one different test for each plugin
+ foreach src, setup: normal_tests[idx % normal_tests.length()]
+ # copy existing setup and remove existing cflags
+ new_setup = {}
+ foreach key, val: setup
+ if key == 'cflags'
+ continue
+ endif
+ new_setup += {key: val}
+ endforeach
+ new_setup += {'plugin_test': {'plugin': plugin_name}}
+ plugin_tests += {src: new_setup}
+ endforeach
+
+ idx += 1
+ endforeach
+
+ # replace list of tests with old and new ones
+ tcg_tests += {target: {'tests': tests + plugin_tests}}
+endforeach
+
image_targets = {}
exe_targets = []
# Finally, we can create all test executables and test targets
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 34/91] tests/tcg/aarch64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (32 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 33/91] tests/tcg/meson.build: add generic plugin tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 35/91] tests/tcg/aarch64/system/gpc-test.c: remove unused variables Pierrick Bouvier
` (62 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/aarch64/meson.build | 193 ++++++++++++++++++++++++++++++++++
tests/tcg/meson.build | 3 +
2 files changed, 196 insertions(+)
create mode 100644 tests/tcg/aarch64/meson.build
diff --git a/tests/tcg/aarch64/meson.build b/tests/tcg/aarch64/meson.build
new file mode 100644
index 00000000000..0fa49959473
--- /dev/null
+++ b/tests/tcg/aarch64/meson.build
@@ -0,0 +1,193 @@
+cc = 'aarch64-linux-gnu-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_arch = ['aarch64', 'x86_64']
+
+cc_feat_cflags = {
+ 'aes': '-march=armv8-a+aes',
+ 'sve': '-march=armv8.1-a+sve',
+ 'sve2': '-march=armv8.1-a+sve2',
+ 'v8.2': '-march=armv8.2-a',
+ 'v8.3': '-march=armv8.3-a',
+ 'v8.5': '-march=armv8.5-a',
+ 'bti': '-mbranch-protection=standard',
+ 'mte': '-march=armv8.5-a+memtag',
+ 'sme': '-Wa,-march=armv9-a+sme',
+}
+
+gdb_feat_version = {
+ 'sme-tiles': '14.1',
+ 'mte': '15.1',
+ 'mte-baremetal': '16.0',
+}
+
+tests = []
+
+# Multi arch tests
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+# Base architecture tests
+tests += {
+ '../arm/fcvt.c': {'cflags': '-lm', 'expected_output': 'fcvt.ref'},
+ 'pcalign-a64.c': {},
+ 'lse2-fault.c': {},
+ 'test-2248.c': {},
+ 'test-2150.c': {},
+}
+
+tests += {'dcpop.c': {'cc_feat': 'v8.2'}}
+tests += {'dcpodp.c': {'cc_feat': 'v8.5'}}
+
+# Pauth Tests
+cpu_max = ['-cpu', 'max']
+cpu_neoverse = ['-cpu', 'neoverse-v1']
+tests += {
+ 'test-2375.c': {'cc_feat': 'v8.3'},
+ 'pauth-1.c': {'cc_feat': 'v8.3', 'qemu_args': cpu_max},
+ 'pauth-2.c': {'cc_feat': 'v8.3', 'qemu_args': cpu_max},
+ # Choose a cpu with FEAT_Pauth but without FEAT_FPAC for pauth-[45].
+ 'pauth-4.c': {'cc_feat': 'v8.3', 'qemu_args': cpu_neoverse},
+ 'pauth-5.c': {'cc_feat': 'v8.3', 'qemu_args': cpu_neoverse},
+}
+
+# BTI Tests
+# bti-1 tests the elf notes, so we require special compiler support.
+f = ['-fno-stack-protector', '-nostdlib']
+tests += {
+ 'bti-1.c': {'cc_feat': 'bti', 'cflags': f},
+ 'bti-3.c': {'cc_feat': 'bti', 'cflags': f},
+}
+# bti-2 tests PROT_BTI, so no special compiler support required.
+tests += {'bti-2.c': {}}
+
+# MTE Tests
+tests += {
+ 'mte-1.c': {'cc_feat': 'mte'},
+ 'mte-2.c': {'cc_feat': 'mte'},
+ 'mte-3.c': {'cc_feat': 'mte'},
+ 'mte-4.c': {'cc_feat': 'mte'},
+ 'mte-5.c': {'cc_feat': 'mte'},
+ 'mte-6.c': {'cc_feat': 'mte'},
+ 'mte-7.c': {'cc_feat': 'mte'},
+ 'mte-8.c': {'cc_feat': 'mte'},
+ 'mte-9.c': {'cc_feat': 'mte'},
+ 'mte-10.c': {'cc_feat': 'mte'},
+}
+tests += {
+ 'mte-8.c': {
+ 'gdb_test': ['--test', files('gdbstub/test-mte.py'), '--', '--mode=user'],
+ 'gdb_feat': 'mte',
+ }
+}
+
+# SME Tests
+tests += {
+ 'sme-outprod1.c': {'cc_feat': 'sme'},
+ 'sme-smopa-1.c': {'cc_feat': 'sme'},
+ 'sme-smopa-2.c': {'cc_feat': 'sme'},
+ 'sme-fmopa-1.c': {'cc_feat': 'sme'},
+ 'sme-fmopa-2.c': {'cc_feat': 'sme'},
+ 'sme-fmopa-3.c': {'cc_feat': 'sme'},
+}
+sysregs_sme = 'sysregs-sme'
+tests += {
+ 'sysregs.c': {
+ 'exe_name': sysregs_sme,
+ 'cc_feat': 'sme',
+ 'gdb_test': ['--test', files('gdbstub/test-sme.py'), '--',
+ 'test_sme', '--gdb_basic_za_test'],
+ }
+}
+tests += {
+ 'sysregs.c': {
+ 'test_name': 'sysregs-sme-tile-slice',
+ 'exe_name': sysregs_sme,
+ 'gdb_test': ['--test', files('gdbstub/test-sme.py'), '--',
+ 'test_sme', '--gdb_tile_slice_test'],
+ 'gdb_feat': 'sme-tiles',
+ }
+}
+tests += {
+ 'sysregs.c': {
+ 'test_name': 'sysregs-sme2',
+ 'exe_name': sysregs_sme,
+ 'gdb_test': ['--test', files('gdbstub/test-sme2.py')],
+ }
+}
+
+# GCS Tests
+tests += {
+ 'gcsstr.c': {},
+ 'gcspushm.c': {},
+ 'gcsss.c': {},
+}
+
+# System Registers Tests
+tests += {'sysregs.c': {}}
+
+# Crypto Tests
+tests += {'test-aes.c': {'cc_feat': 'aes'}}
+
+# Vector SHA1
+# Work around compiler false-positive warning, as we do for the 'sha1' test
+tests += {'../multiarch/sha1.c': {
+ 'exe_name': 'sha1-vector',
+ 'cflags': ['-O3', '-Wno-stringop-overread'],
+ 'expected_output': '../multiarch/sha1.ref',
+ }}
+
+# Vector versions of sha512 (-O3 triggers vectorisation)
+tests += {'../multiarch/sha512.c': {
+ 'exe_name': 'sha512-vector',
+ 'cflags': ['-O3'],
+ }}
+
+# SVE Tests
+tests += {
+ 'sve-ioctls.c': {'cc_feat': 'sve'},
+ '../multiarch/sha512.c': {
+ 'exe_name': 'sha512-sve',
+ 'cc_feat': 'sve',
+ },
+ 'sve-str.c': {'cc_feat': 'sve', 'cflags': ['-O1']},
+}
+tests += {
+ 'sysregs.c': {
+ 'exe_name': 'sysregs-sve',
+ 'cc_feat': 'sve',
+ 'gdb_test': ['--test', files('gdbstub/test-sve.py')],
+ },
+ 'sve-ioctls.c': {
+ 'gdb_test': ['--test', files('gdbstub/test-sve-ioctl.py')],
+ },
+}
+
+# SVE2 Tests
+tests += {'test-826.c': {'cc_feat': 'sve2'}}
+
+# Semihosting tests
+# Add -I path for semicall.h
+semihosting_cflags = ['-I', meson.current_source_dir()]
+
+tests += {
+ '../multiarch/arm-compat-semi/semiconsole.c': {
+ 'cflags': semihosting_cflags,
+ 'wrapper': [prog_run_with_input, 'X'],
+ },
+ '../multiarch/arm-compat-semi/semihosting.c': {'cflags': semihosting_cflags},
+}
+
+if 'qemu-aarch64' in emulators
+ tcg_tests += {
+ 'aarch64-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'aarch64',
+ 'gdb_arch': 'aarch64',
+ 'gdb_feat_version': gdb_feat_version,
+ 'qemu': emulators['qemu-aarch64'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index ea81426f905..50ec5af4906 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -133,6 +133,9 @@ foreach target: ['multiarch-linux-user', 'multiarch-softmmu']
tcg_tests += {target: {'tests': tests + plugin_tests}}
endforeach
+# Now let's go through all architectures
+subdir('aarch64')
+
image_targets = {}
exe_targets = []
# Finally, we can create all test executables and test targets
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 35/91] tests/tcg/aarch64/system/gpc-test.c: remove unused variables
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (33 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 34/91] tests/tcg/aarch64: user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 36/91] tests/tcg/aarch64: system tests Pierrick Bouvier
` (61 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/aarch64/system/gpc-test.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/tests/tcg/aarch64/system/gpc-test.c b/tests/tcg/aarch64/system/gpc-test.c
index f26b23efafe..0ce0ffea277 100644
--- a/tests/tcg/aarch64/system/gpc-test.c
+++ b/tests/tcg/aarch64/system/gpc-test.c
@@ -28,7 +28,6 @@ const uint32_t gpis_per_64_bits = 16;
int main(uint64_t sp)
{
- uint64_t out;
uint64_t pfr0;
uint64_t gpt_base;
uint64_t rme_status;
@@ -38,10 +37,6 @@ int main(uint64_t sp)
uint64_t gpt_table0_addr = (uint64_t) realms_gpt0;
uint64_t gpt_table1_addr = (uint64_t) realms_gpt1;
- /* Mask is FNG1, FNG0, and A2 */
- const uint64_t feature_mask = (1ULL << 18 | 1ULL << 17 | 1ULL << 16);
- const uint64_t in = feature_mask;
-
get_sys_reg("CurrentEL", currentel_raw);
currentel = (currentel_raw >> 2) & 0x3;
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 36/91] tests/tcg/aarch64: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (34 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 35/91] tests/tcg/aarch64/system/gpc-test.c: remove unused variables Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 37/91] tests/tcg/aarch64_be: user tests Pierrick Bouvier
` (60 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/aarch64/meson.build | 2 +
tests/tcg/aarch64/system/meson.build | 108 +++++++++++++++++++++++++++
2 files changed, 110 insertions(+)
create mode 100644 tests/tcg/aarch64/system/meson.build
diff --git a/tests/tcg/aarch64/meson.build b/tests/tcg/aarch64/meson.build
index 0fa49959473..4cdc7a99ab4 100644
--- a/tests/tcg/aarch64/meson.build
+++ b/tests/tcg/aarch64/meson.build
@@ -20,6 +20,8 @@ gdb_feat_version = {
'mte-baremetal': '16.0',
}
+subdir('system')
+
tests = []
# Multi arch tests
diff --git a/tests/tcg/aarch64/system/meson.build b/tests/tcg/aarch64/system/meson.build
new file mode 100644
index 00000000000..8092715eef5
--- /dev/null
+++ b/tests/tcg/aarch64/system/meson.build
@@ -0,0 +1,108 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script]
+qemu_base_args = ['-display', 'none',
+ '-semihosting-config', 'enable=on',
+ '-kernel']
+qemu_def_args = ['-M', 'virt', '-cpu', 'max', qemu_base_args]
+
+# Multi arch tests - add cflags only once per src
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=1'
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+tests += {
+ '../../multiarch/system/memory.c': {
+ 'exe_name': 'memory-sve',
+ 'cc_feat': 'sve',
+ 'cflags': [cflags, '-DCHECK_UNALIGNED=1', '-O3'],
+ 'qemu_args': qemu_def_args,
+ },
+}
+
+tests += {
+ 'asid2.c': {'cflags': cflags, 'qemu_args': qemu_def_args},
+ 'feat-xs.c': {'cflags': cflags, 'qemu_args': qemu_def_args},
+ 'gpc-test.c': {
+ 'cflags': [cflags, '-DLOGGING_VECTOR_TABLE',
+ '-Wno-main', '-Wno-unused-but-set-variable'],
+ 'qemu_args': ['-M', 'virt,secure=on,virtualization=on,gic-version=3',
+ '-cpu', 'max,x-rme=on',
+ '-semihosting-config', 'enable=on,arg=3',
+ qemu_base_args],
+ },
+ 'rme_gdi.c': {'cflags': cflags, 'qemu_args': qemu_def_args},
+ 'semiheap.c': {'cflags': cflags, 'qemu_args': qemu_def_args},
+ 'semiconsole.c': {
+ 'cflags': cflags,
+ 'qemu_args': ['-serial', 'none', '-chardev', 'stdio,mux=on,id=stdio0',
+ '-semihosting-config', 'enable=on,chardev=stdio0',
+ '-mon', 'chardev=stdio0,mode=readline',
+ qemu_def_args],
+ 'wrapper': [prog_run_with_input, 'X']
+ },
+ '../../multiarch/system/memory.c': {
+ 'test_name': 'memory-record-replay',
+ 'qemu_args': qemu_def_args,
+ 'wrapper': [prog_record_replay],
+ },
+ 'vtimer.c': {
+ 'cflags': cflags,
+ 'qemu_args': ['-M', 'virt,virtualization=on,gic-version=2',
+ '-cpu', 'cortex-a57', '-smp', '4',
+ '-semihosting-config', 'enable=on,arg=2',
+ qemu_base_args]
+ },
+}
+
+tests += {
+ 'pauth-3.c': {
+ 'cc_feat': 'v8.3',
+ 'cflags': cflags,
+ 'qemu_args': ['-M', 'virt', '-cpu', 'max,pauth-qarma5=on', qemu_base_args],
+ }
+}
+
+tests += {
+ 'mte.S': {
+ 'cc_feat': 'mte',
+ 'cflags': cflags,
+ 'qemu_args': ['-M', 'virt,mte=on', '-cpu', 'max', qemu_base_args],
+ 'gdb_test': ['--test', files('../gdbstub/test-mte.py'), '--', '--mode=system'],
+ 'gdb_feat': 'mte-baremetal',
+ }
+}
+
+if 'qemu-system-aarch64' in emulators
+ tcg_tests += {
+ 'aarch64-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'aarch64/system',
+ 'gdb_arch': 'aarch64',
+ 'gdb_feat_version': gdb_feat_version,
+ 'qemu': emulators['qemu-system-aarch64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 37/91] tests/tcg/aarch64_be: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (35 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 36/91] tests/tcg/aarch64: system tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 38/91] tests/tcg/alpha: add float reference files Pierrick Bouvier
` (59 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/aarch64_be/meson.build | 22 ++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 23 insertions(+)
create mode 100644 tests/tcg/aarch64_be/meson.build
diff --git a/tests/tcg/aarch64_be/meson.build b/tests/tcg/aarch64_be/meson.build
new file mode 100644
index 00000000000..3473d9124db
--- /dev/null
+++ b/tests/tcg/aarch64_be/meson.build
@@ -0,0 +1,22 @@
+tests = []
+
+# As we don't have any big-endian libc available,
+# the best we can do is a basic Hello World.
+tests += {
+ 'hello.c': {'cflags': ['-mbig-endian', '-ffreestanding', '-nostdlib']},
+}
+
+if 'qemu-aarch64_be' in emulators
+ tcg_tests += {
+ 'aarch64_be-linux-user': {
+ 'cc': 'aarch64-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['aarch64', 'x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'aarch64_be',
+ 'gdb_arch': 'aarch64_be',
+ 'qemu': emulators['qemu-aarch64_be'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 50ec5af4906..bfd426c4459 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -135,6 +135,7 @@ endforeach
# Now let's go through all architectures
subdir('aarch64')
+subdir('aarch64_be')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 38/91] tests/tcg/alpha: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (36 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 37/91] tests/tcg/aarch64_be: user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 39/91] tests/tcg/alpha: user tests Pierrick Bouvier
` (58 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++++++++++++++++
tests/tcg/alpha/float_convs.ref | 748 ++++++++++++++++++++++++
tests/tcg/alpha/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/alpha/float_convd.ref
create mode 100644 tests/tcg/alpha/float_convs.ref
create mode 100644 tests/tcg/alpha/float_madds.ref
diff --git a/tests/tcg/alpha/float_convd.ref b/tests/tcg/alpha/float_convd.ref
new file mode 100644
index 00000000000..75c2139d608
--- /dev/null
+++ b/tests/tcg/alpha/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (OK)
+ to int32: 0 ()
+ to int64: 5575456338684674048 ()
+ to uint32: 0 ()
+ to uint64: 5575456338684674048 ()
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (OK)
+ to int32: 0 ()
+ to int64: 7936327705845301248 ()
+ to uint32: 0 ()
+ to uint64: 7936327705845301248 ()
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (OK)
+ to int32: 0 ()
+ to int64: 5575456338684674048 ()
+ to uint32: 0 ()
+ to uint64: 5575456338684674048 ()
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (OK)
+ to int32: 0 ()
+ to int64: 7936327705845301248 ()
+ to uint32: 0 ()
+ to uint64: 7936327705845301248 ()
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (OK)
+ to int32: 0 ()
+ to int64: 5575456338684674048 ()
+ to uint32: 0 ()
+ to uint64: 5575456338684674048 ()
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (OK)
+ to int32: 0 ()
+ to int64: 7936327705845301248 ()
+ to uint32: 0 ()
+ to uint64: 7936327705845301248 ()
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (OK)
+ to int32: 0 ()
+ to int64: 5575456338684674048 ()
+ to uint32: 0 ()
+ to uint64: 5575456338684674048 ()
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (OK)
+ to int32: 0 ()
+ to int64: 7936327705845301248 ()
+ to uint32: 0 ()
+ to uint64: 7936327705845301248 ()
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW )
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW )
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
diff --git a/tests/tcg/alpha/float_convs.ref b/tests/tcg/alpha/float_convs.ref
new file mode 100644
index 00000000000..3c9f29faf92
--- /dev/null
+++ b/tests/tcg/alpha/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding upwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding downwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding to zero
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 0 ()
+ to int64: 0 ()
+ to uint32: 0 ()
+ to uint64: 0 ()
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: 0 (INVALID)
+ to int64: 0 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
diff --git a/tests/tcg/alpha/float_madds.ref b/tests/tcg/alpha/float_madds.ref
new file mode 100644
index 00000000000..76996f432db
--- /dev/null
+++ b/tests/tcg/alpha/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 39/91] tests/tcg/alpha: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (37 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 38/91] tests/tcg/alpha: add float reference files Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 40/91] tests/tcg/alpha: system tests Pierrick Bouvier
` (57 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/alpha/meson.build | 53 +++++++++++++++++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 54 insertions(+)
create mode 100644 tests/tcg/alpha/meson.build
diff --git a/tests/tcg/alpha/meson.build b/tests/tcg/alpha/meson.build
new file mode 100644
index 00000000000..d473f62bcbc
--- /dev/null
+++ b/tests/tcg/alpha/meson.build
@@ -0,0 +1,53 @@
+cc = 'alpha-linux-gnu-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_arch = ['aarch64', 'x86_64']
+
+tests = []
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-linux-user']['tests']
+ foreach src, setup: t
+ new_cflags = []
+ if 'cflags' in setup
+ new_cflags = setup['cflags']
+ endif
+ # Force generation of byte read/write
+ if fs.stem(src) == 'test-plugin-mem-access'
+ new_cflags += ['-mbwx']
+ endif
+ if src not in multi_src
+ setup += {'cflags': new_cflags}
+ multi_src += src
+ endif
+ tests += {src: setup}
+ endforeach
+endforeach
+
+tests += {
+ 'hello-alpha.c': {},
+ 'test-cond.c': {},
+ 'test-cvttq.c': {},
+ 'test-ovf.c': {},
+}
+
+tests += {
+ 'test-cond.c': {
+ 'cflags': ['-DTEST_CMOV'],
+ 'exe_name': 'test-cmov'
+ },
+}
+
+if 'qemu-alpha' in emulators
+ tcg_tests += {
+ 'alpha-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'alpha',
+ 'gdb_arch': 'alpha',
+ 'qemu': emulators['qemu-alpha'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index bfd426c4459..d43e34225f5 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -136,6 +136,7 @@ endforeach
# Now let's go through all architectures
subdir('aarch64')
subdir('aarch64_be')
+subdir('alpha')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 40/91] tests/tcg/alpha: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (38 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 39/91] tests/tcg/alpha: user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 41/91] tests/tcg/arm: user tests Pierrick Bouvier
` (56 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/alpha/meson.build | 2 ++
tests/tcg/alpha/system/meson.build | 46 ++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+)
create mode 100644 tests/tcg/alpha/system/meson.build
diff --git a/tests/tcg/alpha/meson.build b/tests/tcg/alpha/meson.build
index d473f62bcbc..b0f441a0c98 100644
--- a/tests/tcg/alpha/meson.build
+++ b/tests/tcg/alpha/meson.build
@@ -2,6 +2,8 @@ cc = 'alpha-linux-gnu-gcc'
cc_dockerfile = 'debian-all-test-cross'
cc_docker_arch = ['aarch64', 'x86_64']
+subdir('system')
+
tests = []
# Multi arch tests
diff --git a/tests/tcg/alpha/system/meson.build b/tests/tcg/alpha/system/meson.build
new file mode 100644
index 00000000000..bc6813b9dae
--- /dev/null
+++ b/tests/tcg/alpha/system/meson.build
@@ -0,0 +1,46 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script,
+ '-mcpu=ev6',
+ '-Wl,--no-warn-rwx-segments',
+ '-lgcc']
+qemu_def_args = ['-display', 'none',
+ '-serial', 'stdio',
+ '-kernel']
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += ['-DCHECK_UNALIGNED=0', '-mbwx']
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+if 'qemu-system-alpha' in emulators
+ tcg_tests += {
+ 'alpha-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'alpha/system',
+ 'gdb_arch': 'alpha',
+ 'qemu': emulators['qemu-system-alpha'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 41/91] tests/tcg/arm: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (39 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 40/91] tests/tcg/alpha: system tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 42/91] tests/tcg/arm: system tests Pierrick Bouvier
` (55 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/arm/meson.build | 78 +++++++++++++++++++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 79 insertions(+)
create mode 100644 tests/tcg/arm/meson.build
diff --git a/tests/tcg/arm/meson.build b/tests/tcg/arm/meson.build
new file mode 100644
index 00000000000..3b06a2f4fdc
--- /dev/null
+++ b/tests/tcg/arm/meson.build
@@ -0,0 +1,78 @@
+cc = 'arm-linux-gnueabihf-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_arch = ['aarch64', 'x86_64']
+
+tests = []
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-linux-user']['tests']
+ foreach src, setup: t
+ new_cflags = []
+ if 'cflags' in setup
+ new_cflags = setup['cflags']
+ endif
+ if fs.stem(src) == 'float_madds'
+ new_cflags += ['-mfpu=neon-vfpv4']
+ elif fs.stem(src) == 'test-plugin-set-pc'
+ # Require emitting arm32 insns, otherwise the vCPU might accidentally
+ # try to execute Thumb insns in arm32 mode after qemu_plugin_set_pc()
+ new_cflags += ['-marm']
+ endif
+ if src not in multi_src
+ setup += {'cflags': new_cflags}
+ multi_src += src
+ endif
+ tests += {src: setup}
+ endforeach
+endforeach
+
+tests += {
+ 'commpage.c': {},
+ 'hello-arm.c': {
+ 'cflags': ['-marm', '-nostdlib', '-ffreestanding', '-fno-stack-protector'],
+ },
+ 'fcvt.c': {
+ 'cflags': ['-lm', '-march=armv8.2-a+fp16', '-mfpu=neon-fp-armv8'],
+ 'expected_output': 'fcvt.ref',
+ },
+ 'pcalign-a32.c': {'cflags': ['-marm']},
+}
+
+# Vector SHA1
+# Work around compiler false-positive warning, as we do for the 'sha1' test
+tests += {'../multiarch/sha1.c': {
+ 'exe_name': 'sha1-vector',
+ 'cflags': ['-O3', '-Wno-stringop-overread'],
+ 'expected_output': '../multiarch/sha1.ref',
+ }}
+
+# Vector versions of sha512 (-O3 triggers vectorisation)
+tests += {'../multiarch/sha512.c': {
+ 'exe_name': 'sha512-vector',
+ 'cflags': ['-O3'],
+ }}
+
+# Semihosting tests
+semihosting_cflags = ['-marm', '-mthumb', '-I', meson.current_source_dir()]
+tests += {
+ '../multiarch/arm-compat-semi/semiconsole.c': {
+ 'cflags': semihosting_cflags,
+ 'wrapper': [prog_run_with_input, 'X'],
+ },
+ '../multiarch/arm-compat-semi/semihosting.c': {'cflags': semihosting_cflags},
+}
+
+if 'qemu-arm' in emulators
+ tcg_tests += {
+ 'arm-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'arm',
+ 'gdb_arch': 'arm',
+ 'qemu': emulators['qemu-arm'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index d43e34225f5..1c29c421ff0 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -137,6 +137,7 @@ endforeach
subdir('aarch64')
subdir('aarch64_be')
subdir('alpha')
+subdir('arm')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 42/91] tests/tcg/arm: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (40 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 41/91] tests/tcg/arm: user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include Pierrick Bouvier
` (54 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/arm/meson.build | 2 +
tests/tcg/arm/system/meson.build | 66 ++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+)
create mode 100644 tests/tcg/arm/system/meson.build
diff --git a/tests/tcg/arm/meson.build b/tests/tcg/arm/meson.build
index 3b06a2f4fdc..ff9adf47740 100644
--- a/tests/tcg/arm/meson.build
+++ b/tests/tcg/arm/meson.build
@@ -2,6 +2,8 @@ cc = 'arm-linux-gnueabihf-gcc'
cc_dockerfile = 'debian-all-test-cross'
cc_docker_arch = ['aarch64', 'x86_64']
+subdir('system')
+
tests = []
# Multi arch tests
diff --git a/tests/tcg/arm/system/meson.build b/tests/tcg/arm/system/meson.build
new file mode 100644
index 00000000000..ab0ca8dd234
--- /dev/null
+++ b/tests/tcg/arm/system/meson.build
@@ -0,0 +1,66 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script,
+ '-lgcc']
+qemu_base_args = ['-display', 'none',
+ '-semihosting-config', 'enable=on',
+ '-kernel']
+qemu_def_args = ['-M', 'virt', '-cpu', 'max', qemu_base_args]
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=0'
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+tests += {
+ 'test-armv6m-undef.S': {
+ 'cflags': ['-mcpu=cortex-m0', '-mfloat-abi=soft', '-nostdlib',
+ '-T', files('test-armv6m-undef.ld')],
+ 'qemu_args': ['-M', 'microbit', qemu_base_args],
+ },
+ 'semiconsole.c': {
+ 'cflags': cflags,
+ 'qemu_args': ['-serial', 'none', '-chardev', 'stdio,mux=on,id=stdio0',
+ '-semihosting-config', 'enable=on,chardev=stdio0',
+ '-mon', 'chardev=stdio0,mode=readline',
+ qemu_def_args],
+ 'wrapper': [prog_run_with_input, 'X']
+ },
+ '../../multiarch/system/memory.c': {
+ 'test_name': 'memory-record-replay',
+ 'qemu_args': qemu_def_args,
+ 'wrapper': [prog_record_replay],
+ },
+}
+
+if 'qemu-system-arm' in emulators
+ tcg_tests += {
+ 'arm-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'arm/system',
+ 'gdb_arch': 'arm',
+ 'qemu': emulators['qemu-system-arm'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (41 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 42/91] tests/tcg/arm: system tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-07 6:24 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 44/91] tests/tcg/hexagon: user tests Pierrick Bouvier
` (53 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
../tests/tcg/hexagon/overflow.c:59:1: error: unknown type name 'bool'
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/hexagon/overflow.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/tcg/hexagon/overflow.c b/tests/tcg/hexagon/overflow.c
index 7b5b9ebdde6..9ac2d6eab62 100644
--- a/tests/tcg/hexagon/overflow.c
+++ b/tests/tcg/hexagon/overflow.c
@@ -15,6 +15,7 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 44/91] tests/tcg/hexagon: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (42 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 45/91] tests/tcg/multiarch/sha1.c: fix big endian implementation Pierrick Bouvier
` (52 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/hexagon/meson.build | 111 ++++++++++++++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 112 insertions(+)
create mode 100644 tests/tcg/hexagon/meson.build
diff --git a/tests/tcg/hexagon/meson.build b/tests/tcg/hexagon/meson.build
new file mode 100644
index 00000000000..c2266aeb55a
--- /dev/null
+++ b/tests/tcg/hexagon/meson.build
@@ -0,0 +1,111 @@
+tests = []
+
+cflags = ['-Wno-incompatible-pointer-types', '-Wno-undefined-internal',
+ '-fno-unroll-loops', '-fno-stack-protector']
+asmflags = [cflags, '-nostdlib', '-mv67', files('crt.S')]
+
+multi_src = []
+foreach t: tcg_tests['multiarch-linux-user']['tests']
+ foreach src, setup: t
+ if 'gdb_test' in setup
+ # gdb does not support hexagon, ignore test
+ continue
+ endif
+ new_cflags = []
+ if 'cflags' in setup
+ new_cflags += setup['cflags']
+ endif
+ new_cflags += cflags
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup}
+ endforeach
+endforeach
+
+tests += {
+ 'atomics.c': {'cflags': cflags},
+ 'brev.c': {'cflags': cflags},
+ # Compile for v66 so that the ELF selects a v66 CPU; the test then
+ # exercises revision gating by executing a v68 .word instruction.
+ 'check_rev_gating.c': {
+ 'cflags': [cflags, '-mv66', '-O2'],
+ 'qemu_args': ['-cpu', 'v66'],
+ },
+ 'circ.c': {'cflags': cflags},
+ 'first.S': {'cflags': asmflags},
+ 'fpstuff.c': {'cflags': cflags},
+ 'hex_sigsegv.c': {'cflags': cflags},
+ 'hvx_misc.c': {'cflags': [cflags, '-mhvx', '-mv69']},
+ 'hvx_histogram.c': {
+ 'cflags': [cflags, '-mhvx', '-Wno-gnu-folding-constant',
+ files('hvx_histogram_row.S')]
+ },
+ 'invalid-encoding.c': {'cflags': cflags},
+ 'invalid-slots.c': {'cflags': cflags},
+ 'load_align.c': {'cflags': cflags},
+ 'load_unpack.c': {'cflags': cflags},
+ # Build this test with -mv71 to exercise the CABAC instruction
+ 'misc.c': {'cflags': [cflags, '-mv71', '-O2']},
+ 'multiple-writes.c': {'cflags': cflags},
+ 'overflow.c': {'cflags': cflags, 'exe_name': 'hex-overflow'},
+ 'preg_alias.c': {'cflags': cflags},
+ 'dual_stores.c': {'cflags': cflags},
+ 'multi_result.c': {'cflags': cflags},
+ 'mem_noshuf.c': {'cflags': cflags},
+ 'mem_noshuf_exception.c': {'cflags': cflags},
+ 'read_write_overlap.c': {'cflags': cflags},
+ 'reg_mut.c': {'cflags': cflags},
+ 'scatter_gather.c': {'cflags': [cflags, '-mhvx']},
+ 'signal_context.c': {'cflags': cflags},
+ 'test_abs.S': {'cflags': asmflags},
+ 'test_bitcnt.S': {'cflags': asmflags},
+ 'test_bitsplit.S': {'cflags': asmflags},
+ 'test_call.S': {'cflags': asmflags},
+ 'test_clobber.S': {'cflags': asmflags},
+ 'test_cmp.S': {'cflags': asmflags},
+ 'test_dotnew.S': {'cflags': asmflags},
+ 'test_ext.S': {'cflags': asmflags},
+ 'test_fibonacci.S': {'cflags': asmflags},
+ 'test_hl.S': {'cflags': asmflags},
+ 'test_hwloops.S': {'cflags': asmflags},
+ 'test_jmp.S': {'cflags': asmflags},
+ 'test_lsr.S': {'cflags': asmflags},
+ 'test_mpyi.S': {'cflags': asmflags},
+ 'test_packet.S': {'cflags': asmflags},
+ 'test_reorder.S': {'cflags': asmflags},
+ 'test_round.S': {'cflags': asmflags},
+ 'test_vavgw.S': {'cflags': asmflags},
+ 'test_vcmpb.S': {'cflags': asmflags},
+ 'test_vcmpw.S': {'cflags': asmflags},
+ 'test_vlsrw.S': {'cflags': asmflags},
+ 'test_vmaxh.S': {'cflags': asmflags},
+ 'test_vminh.S': {'cflags': asmflags},
+ 'test_vpmpyh.S': {'cflags': asmflags},
+ 'test_vspliceb.S': {'cflags': asmflags},
+ 'unaligned_pc.c': {'cflags': cflags},
+ 'usr.c': {
+ 'cflags': [cflags, '-mv67t', '-O2',
+ '-Wno-inline-asm', '-Wno-expansion-to-defined']
+ },
+ 'v68_scalar.c': {'cflags': [cflags, '-mv68']},
+ 'v68_hvx.c': {'cflags': [cflags, '-mhvx', '-Wno-unused-function', '-mv68']},
+ 'v69_hvx.c': {'cflags': [cflags, '-mhvx', '-Wno-unused-function', '-mv69']},
+ 'v73_scalar.c': {'cflags': [cflags, '-Wno-unused-function', '-mv73']},
+ 'vector_add_int.c': {'cflags': [cflags, '-mhvx', '-fvectorize']},
+}
+
+if 'qemu-hexagon' in emulators
+ tcg_tests += {
+ 'hexagon-linux-user': {
+ 'cc': 'hexagon-unknown-linux-musl-clang',
+ 'cc_dockerfile': 'debian-hexagon-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'folder': 'hexagon',
+ 'gdb_arch': 'hexagon_is_not_supported_by_gdb',
+ 'qemu': emulators['qemu-hexagon'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 1c29c421ff0..c4b35161686 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -138,6 +138,7 @@ subdir('aarch64')
subdir('aarch64_be')
subdir('alpha')
subdir('arm')
+subdir('hexagon')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 45/91] tests/tcg/multiarch/sha1.c: fix big endian implementation
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (43 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 44/91] tests/tcg/hexagon: user tests Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 46/91] tests/tcg/hppa: add float reference files Pierrick Bouvier
` (51 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
All big endian targets were returning a wrong value due to this.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/multiarch/sha1.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/tcg/multiarch/sha1.c b/tests/tcg/multiarch/sha1.c
index 0081bd76577..6cebad2951d 100644
--- a/tests/tcg/multiarch/sha1.c
+++ b/tests/tcg/multiarch/sha1.c
@@ -48,10 +48,10 @@ void SHA1Final(unsigned char digest[20], SHA1_CTX* context);
/* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */
-#if BYTE_ORDER == LITTLE_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
|(rol(block->l[i],8)&0x00FF00FF))
-#elif BYTE_ORDER == BIG_ENDIAN
+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define blk0(i) block->l[i]
#else
#error "Endianness not defined!"
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 46/91] tests/tcg/hppa: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (44 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 45/91] tests/tcg/multiarch/sha1.c: fix big endian implementation Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 47/91] tests/tcg/hppa: user tests Pierrick Bouvier
` (50 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/hppa/float_convd.ref | 988 +++++++++++++++++++++++++++++++++
tests/tcg/hppa/float_convs.ref | 748 +++++++++++++++++++++++++
tests/tcg/hppa/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/hppa/float_convd.ref
create mode 100644 tests/tcg/hppa/float_convs.ref
create mode 100644 tests/tcg/hppa/float_madds.ref
diff --git a/tests/tcg/hppa/float_convd.ref b/tests/tcg/hppa/float_convd.ref
new file mode 100644
index 00000000000..194a662f536
--- /dev/null
+++ b/tests/tcg/hppa/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(-nan:0xffbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(-nan:0xffbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(-nan:0xffbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(-nan:0xffbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/hppa/float_convs.ref b/tests/tcg/hppa/float_convs.ref
new file mode 100644
index 00000000000..079a355ee9f
--- /dev/null
+++ b/tests/tcg/hppa/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-nan:0xffbfffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-nan:0xffbfffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-nan:0xffbfffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-nan:0xffbfffff)
+ to double: f64(-nan:0x00fff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffe0000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/hppa/float_madds.ref b/tests/tcg/hppa/float_madds.ref
new file mode 100644
index 00000000000..b4b65f83aed
--- /dev/null
+++ b/tests/tcg/hppa/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/0)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/2)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(-nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/0)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/2)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(-nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/0)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/2)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(-nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/0)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (0/2)
+op : f32(-nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffbfffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(-nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 47/91] tests/tcg/hppa: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (45 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 46/91] tests/tcg/hppa: add float reference files Pierrick Bouvier
@ 2026-07-06 22:32 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 48/91] tests/tcg/i386: add missing float reference files Pierrick Bouvier
` (49 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/hppa/meson.build | 22 ++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 23 insertions(+)
create mode 100644 tests/tcg/hppa/meson.build
diff --git a/tests/tcg/hppa/meson.build b/tests/tcg/hppa/meson.build
new file mode 100644
index 00000000000..368457ce936
--- /dev/null
+++ b/tests/tcg/hppa/meson.build
@@ -0,0 +1,22 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'stby.c': {'cflags': ['-pthread']},
+}
+
+if 'qemu-hppa' in emulators
+ tcg_tests += {
+ 'hppa-linux-user': {
+ 'cc': 'hppa-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'hppa',
+ 'gdb_arch': 'hppa',
+ 'qemu': emulators['qemu-hppa'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index c4b35161686..1eb887a8e3b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -139,6 +139,7 @@ subdir('aarch64_be')
subdir('alpha')
subdir('arm')
subdir('hexagon')
+subdir('hppa')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 48/91] tests/tcg/i386: add missing float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (46 preceding siblings ...)
2026-07-06 22:32 ` [PATCH v3 47/91] tests/tcg/hppa: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 49/91] tests/tcg/i386: user tests Pierrick Bouvier
` (48 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Delete float_convd.conf which was unused. It has the same content than
float_convd.ref but with some lines in different order.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/i386/float_convd.conf | 988 --------------------------------
tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++++++++++++++++
tests/tcg/i386/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 1756 insertions(+), 988 deletions(-)
delete mode 100644 tests/tcg/i386/float_convd.conf
create mode 100644 tests/tcg/i386/float_convd.ref
create mode 100644 tests/tcg/i386/float_madds.ref
diff --git a/tests/tcg/i386/float_convd.conf b/tests/tcg/i386/float_convd.conf
deleted file mode 100644
index 7f4040cef88..00000000000
--- a/tests/tcg/i386/float_convd.conf
+++ /dev/null
@@ -1,988 +0,0 @@
-### Rounding to nearest
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-nan:0xffc00000)
- to single: f64(-nan:0x00fff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
- to single: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
- to single: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.00000000000000000000p+1:0xc0000000)
- to single: f64(-0x1.00000000000000000000p+1:0x00c000000000000000) (OK)
- to int32: -2 (OK)
- to int64: -2 (OK)
- to uint32: -2 (OK)
- to uint64: -2 (OK)
-from single: f32(-0x1.00000000000000000000p+0:0xbf800000)
- to single: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000) (OK)
- to int32: -1 (OK)
- to int64: -1 (OK)
- to uint32: -1 (OK)
- to uint64: -1 (OK)
-from single: f32(-0x0.00000000000000000000p+0:0x80000000)
- to single: f64(-0x0.00000000000000000000p+0:0x008000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(-0x1.00000000000000000000p-126:0x80800000)
- to single: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
- to int32: 0 (OK)
- to int64: 0 (OK)
- to uint32: 0 (OK)
- to uint64: 0 (OK)
-from single: f32(0x1.00000000000000000000p-126:0x00800000)
- to single: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p-25:0x33000000)
- to single: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
- to single: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
- to single: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000c00000000000000p-14:0x38800006)
- to single: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00400000000000000000p+0:0x3f802000)
- to single: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
- to int32: 1 (INEXACT )
- to int64: 1 (INEXACT )
- to uint32: 1 (INEXACT )
- to uint64: 1 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00000000000000000000p+1:0x40000000)
- to single: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
- to int32: 2 (OK)
- to int64: 2 (OK)
- to uint32: 2 (OK)
- to uint64: 2 (OK)
-from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
- to single: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (INEXACT )
- to int32: 2 (INEXACT )
- to int64: 2 (INEXACT )
- to uint32: 2 (INEXACT )
- to uint64: 2 (INEXACT )
-from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
- to single: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (INEXACT )
- to int32: 3 (INEXACT )
- to int64: 3 (INEXACT )
- to uint32: 3 (INEXACT )
- to uint64: 3 (INEXACT )
-from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
- to single: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
- to int32: 65503 (OK)
- to int64: 65503 (OK)
- to uint32: 65503 (OK)
- to uint64: 65503 (OK)
-from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
- to single: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
- to int32: 65504 (OK)
- to int64: 65504 (OK)
- to uint32: 65504 (OK)
- to uint64: 65504 (OK)
-from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
- to single: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
- to int32: 65505 (OK)
- to int64: 65505 (OK)
- to uint32: 65505 (OK)
- to uint64: 65505 (OK)
-from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
- to single: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
- to int32: 131007 (OK)
- to int64: 131007 (OK)
- to uint32: 131007 (OK)
- to uint64: 131007 (OK)
-from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
- to single: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
- to int32: 131008 (OK)
- to int64: 131008 (OK)
- to uint32: 131008 (OK)
- to uint64: 131008 (OK)
-from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
- to single: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
- to int32: 131009 (OK)
- to int64: 131009 (OK)
- to uint32: 131009 (OK)
- to uint64: 131009 (OK)
-from single: f32(0x1.00000000000000000000p+31:0x4f000000)
- to single: f64(0x1.00000000000000000000p+31:0x0041e0000000000000) (INEXACT )
- to int32: 2147483647 (OK)
- to int64: 2147483647 (OK)
- to uint32: 2147483647 (OK)
- to uint64: 2147483647 (OK)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-### Rounding upwards
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-nan:0xffc00000)
- to single: f64(-nan:0x00fff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58)
- to single: f64(-0x1.1874b000000000000000p+103:0x00c661874b00000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a)
- to single: f64(-0x1.c0bab400000000000000p+99:0x00c62c0bab40000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.00000000000000000000p+1:0xc0000000)
- to single: f64(-0x1.00000000000000000000p+1:0x00c000000000000000) (OK)
- to int32: -2 (OK)
- to int64: -2 (OK)
- to uint32: -2 (OK)
- to uint64: -2 (OK)
-from single: f32(-0x1.00000000000000000000p+0:0xbf800000)
- to single: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000) (OK)
- to int32: -1 (OK)
- to int64: -1 (OK)
- to uint32: -1 (OK)
- to uint64: -1 (OK)
-from single: f32(-0x0.00000000000000000000p+0:0x80000000)
- to single: f64(-0x0.00000000000000000000p+0:0x008000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(-0x1.00000000000000000000p-126:0x80800000)
- to single: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
- to int32: 0 (OK)
- to int64: 0 (OK)
- to uint32: 0 (OK)
- to uint64: 0 (OK)
-from single: f32(0x1.00000000000000000000p-126:0x00800000)
- to single: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000200000000000000p-25:0x33000001)
- to single: f64(0x1.00000200000000000000p-25:0x003e60000020000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ffffe800000000000000p-25:0x337ffff4)
- to single: f64(0x1.ffffe800000000000000p-25:0x003e6ffffe80000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ff801c00000000000000p-15:0x387fc00e)
- to single: f64(0x1.ff801c00000000000000p-15:0x003f0ff801c0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000e00000000000000p-14:0x38800007)
- to single: f64(0x1.00000e00000000000000p-14:0x003f100000e0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00400000000000000000p+0:0x3f802000)
- to single: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
- to int32: 1 (INEXACT )
- to int64: 1 (INEXACT )
- to uint32: 1 (INEXACT )
- to uint64: 1 (INEXACT )
-from single: f32(0x1.00000000000000000000p-149:0x00000001)
- to single: f64(0x1.00000000000000000000p-149:0x0036a0000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p-149:0x00000001)
- to single: f64(0x1.00000000000000000000p-149:0x0036a0000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p-149:0x00000001)
- to single: f64(0x1.00000000000000000000p-149:0x0036a0000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00000000000000000000p+1:0x40000000)
- to single: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
- to int32: 2 (OK)
- to int64: 2 (OK)
- to uint32: 2 (OK)
- to uint64: 2 (OK)
-from single: f32(0x1.5bf0aa00000000000000p+1:0x402df855)
- to single: f64(0x1.5bf0aa00000000000000p+1:0x004005bf0aa0000000) (INEXACT )
- to int32: 2 (INEXACT )
- to int64: 2 (INEXACT )
- to uint32: 2 (INEXACT )
- to uint64: 2 (INEXACT )
-from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
- to single: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (INEXACT )
- to int32: 3 (INEXACT )
- to int64: 3 (INEXACT )
- to uint32: 3 (INEXACT )
- to uint64: 3 (INEXACT )
-from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
- to single: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
- to int32: 65503 (OK)
- to int64: 65503 (OK)
- to uint32: 65503 (OK)
- to uint64: 65503 (OK)
-from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
- to single: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
- to int32: 65504 (OK)
- to int64: 65504 (OK)
- to uint32: 65504 (OK)
- to uint64: 65504 (OK)
-from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
- to single: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
- to int32: 65505 (OK)
- to int64: 65505 (OK)
- to uint32: 65505 (OK)
- to uint64: 65505 (OK)
-from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
- to single: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
- to int32: 131007 (OK)
- to int64: 131007 (OK)
- to uint32: 131007 (OK)
- to uint64: 131007 (OK)
-from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
- to single: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
- to int32: 131008 (OK)
- to int64: 131008 (OK)
- to uint32: 131008 (OK)
- to uint64: 131008 (OK)
-from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
- to single: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
- to int32: 131009 (OK)
- to int64: 131009 (OK)
- to uint32: 131009 (OK)
- to uint64: 131009 (OK)
-from single: f32(0x1.00000000000000000000p+31:0x4f000000)
- to single: f64(0x1.00000000000000000000p+31:0x0041e0000000000000) (INEXACT )
- to int32: 2147483647 (OK)
- to int64: 2147483647 (OK)
- to uint32: 2147483647 (OK)
- to uint64: 2147483647 (OK)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-### Rounding downwards
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-nan:0xffc00000)
- to single: f64(-nan:0x00fff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
- to single: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
- to single: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.00000000000000000000p+1:0xc0000000)
- to single: f64(-0x1.00000000000000000000p+1:0x00c000000000000000) (OK)
- to int32: -2 (OK)
- to int64: -2 (OK)
- to uint32: -2 (OK)
- to uint64: -2 (OK)
-from single: f32(-0x1.00000000000000000000p+0:0xbf800000)
- to single: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000) (OK)
- to int32: -1 (OK)
- to int64: -1 (OK)
- to uint32: -1 (OK)
- to uint64: -1 (OK)
-from single: f32(-0x1.00000000000000000000p-149:0x80000001)
- to single: f64(-0x1.00000000000000000000p-149:0x00b6a0000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(-0x1.00000000000000000000p-126:0x80800000)
- to single: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
- to int32: 0 (OK)
- to int64: 0 (OK)
- to uint32: 0 (OK)
- to uint64: 0 (OK)
-from single: f32(0x1.00000000000000000000p-126:0x00800000)
- to single: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p-25:0x33000000)
- to single: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
- to single: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
- to single: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000c00000000000000p-14:0x38800006)
- to single: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00400000000000000000p+0:0x3f802000)
- to single: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
- to int32: 1 (INEXACT )
- to int64: 1 (INEXACT )
- to uint32: 1 (INEXACT )
- to uint64: 1 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00000000000000000000p+1:0x40000000)
- to single: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
- to int32: 2 (OK)
- to int64: 2 (OK)
- to uint32: 2 (OK)
- to uint64: 2 (OK)
-from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
- to single: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (INEXACT )
- to int32: 2 (INEXACT )
- to int64: 2 (INEXACT )
- to uint32: 2 (INEXACT )
- to uint64: 2 (INEXACT )
-from single: f32(0x1.921fb400000000000000p+1:0x40490fda)
- to single: f64(0x1.921fb400000000000000p+1:0x00400921fb40000000) (INEXACT )
- to int32: 3 (INEXACT )
- to int64: 3 (INEXACT )
- to uint32: 3 (INEXACT )
- to uint64: 3 (INEXACT )
-from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
- to single: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
- to int32: 65503 (OK)
- to int64: 65503 (OK)
- to uint32: 65503 (OK)
- to uint64: 65503 (OK)
-from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
- to single: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
- to int32: 65504 (OK)
- to int64: 65504 (OK)
- to uint32: 65504 (OK)
- to uint64: 65504 (OK)
-from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
- to single: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
- to int32: 65505 (OK)
- to int64: 65505 (OK)
- to uint32: 65505 (OK)
- to uint64: 65505 (OK)
-from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
- to single: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
- to int32: 131007 (OK)
- to int64: 131007 (OK)
- to uint32: 131007 (OK)
- to uint64: 131007 (OK)
-from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
- to single: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
- to int32: 131008 (OK)
- to int64: 131008 (OK)
- to uint32: 131008 (OK)
- to uint64: 131008 (OK)
-from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
- to single: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
- to int32: 131009 (OK)
- to int64: 131009 (OK)
- to uint32: 131009 (OK)
- to uint64: 131009 (OK)
-from single: f32(0x1.fffffe00000000000000p+30:0x4effffff)
- to single: f64(0x1.fffffe00000000000000p+30:0x0041dfffffe0000000) (INEXACT )
- to int32: 2147483647 (OK)
- to int64: 2147483647 (OK)
- to uint32: 2147483647 (OK)
- to uint64: 2147483647 (OK)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-### Rounding to zero
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-nan:0xffc00000)
- to single: f64(-nan:0x00fff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-inf:0xff800000)
- to single: f64(-inf:0x00fff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
- to single: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58)
- to single: f64(-0x1.1874b000000000000000p+103:0x00c661874b00000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a)
- to single: f64(-0x1.c0bab400000000000000p+99:0x00c62c0bab40000000) (INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(-0x1.00000000000000000000p+1:0xc0000000)
- to single: f64(-0x1.00000000000000000000p+1:0x00c000000000000000) (OK)
- to int32: -2 (OK)
- to int64: -2 (OK)
- to uint32: -2 (OK)
- to uint64: -2 (OK)
-from single: f32(-0x1.00000000000000000000p+0:0xbf800000)
- to single: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000) (OK)
- to int32: -1 (OK)
- to int64: -1 (OK)
- to uint32: -1 (OK)
- to uint64: -1 (OK)
-from single: f32(-0x0.00000000000000000000p+0:0x80000000)
- to single: f64(-0x0.00000000000000000000p+0:0x008000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(-0x1.00000000000000000000p-126:0x80800000)
- to single: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
- to int32: 0 (OK)
- to int64: 0 (OK)
- to uint32: 0 (OK)
- to uint64: 0 (OK)
-from single: f32(0x1.00000000000000000000p-126:0x00800000)
- to single: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p-25:0x33000000)
- to single: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
- to single: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
- to single: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000c00000000000000p-14:0x38800006)
- to single: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00400000000000000000p+0:0x3f802000)
- to single: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
- to int32: 1 (INEXACT )
- to int64: 1 (INEXACT )
- to uint32: 1 (INEXACT )
- to uint64: 1 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x0.00000000000000000000p+0:0000000000)
- to single: f64(0x0.00000000000000000000p+0:00000000000000000000) (UNDERFLOW INEXACT )
- to int32: 0 (INEXACT )
- to int64: 0 (INEXACT )
- to uint32: 0 (INEXACT )
- to uint64: 0 (INEXACT )
-from single: f32(0x1.00000000000000000000p+0:0x3f800000)
- to single: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
- to int32: 1 (OK)
- to int64: 1 (OK)
- to uint32: 1 (OK)
- to uint64: 1 (OK)
-from single: f32(0x1.00000000000000000000p+1:0x40000000)
- to single: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
- to int32: 2 (OK)
- to int64: 2 (OK)
- to uint32: 2 (OK)
- to uint64: 2 (OK)
-from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
- to single: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (INEXACT )
- to int32: 2 (INEXACT )
- to int64: 2 (INEXACT )
- to uint32: 2 (INEXACT )
- to uint64: 2 (INEXACT )
-from single: f32(0x1.921fb400000000000000p+1:0x40490fda)
- to single: f64(0x1.921fb400000000000000p+1:0x00400921fb40000000) (INEXACT )
- to int32: 3 (INEXACT )
- to int64: 3 (INEXACT )
- to uint32: 3 (INEXACT )
- to uint64: 3 (INEXACT )
-from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
- to single: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
- to int32: 65503 (OK)
- to int64: 65503 (OK)
- to uint32: 65503 (OK)
- to uint64: 65503 (OK)
-from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
- to single: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
- to int32: 65504 (OK)
- to int64: 65504 (OK)
- to uint32: 65504 (OK)
- to uint64: 65504 (OK)
-from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
- to single: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
- to int32: 65505 (OK)
- to int64: 65505 (OK)
- to uint32: 65505 (OK)
- to uint64: 65505 (OK)
-from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
- to single: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
- to int32: 131007 (OK)
- to int64: 131007 (OK)
- to uint32: 131007 (OK)
- to uint64: 131007 (OK)
-from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
- to single: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
- to int32: 131008 (OK)
- to int64: 131008 (OK)
- to uint32: 131008 (OK)
- to uint64: 131008 (OK)
-from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
- to single: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
- to int32: 131009 (OK)
- to int64: 131009 (OK)
- to uint32: 131009 (OK)
- to uint64: 131009 (OK)
-from single: f32(0x1.fffffe00000000000000p+30:0x4effffff)
- to single: f64(0x1.fffffe00000000000000p+30:0x0041dfffffe0000000) (INEXACT )
- to int32: 2147483647 (OK)
- to int64: 2147483647 (OK)
- to uint32: 2147483647 (OK)
- to uint64: 2147483647 (OK)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
- to single: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OVERFLOW INEXACT )
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INEXACT INVALID)
-from single: f32(inf:0x7f800000)
- to single: f64(inf:0x007ff0000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: 0 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fc00000)
- to single: f64(nan:0x007ff8000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
-from single: f32(nan:0x7fe00000)
- to single: f64(nan:0x007ffc000000000000) (OK)
- to int32: -2147483648 (INVALID)
- to int64: -9223372036854775808 (INVALID)
- to uint32: 0 (INVALID)
- to uint64: -9223372036854775808 (INVALID)
diff --git a/tests/tcg/i386/float_convd.ref b/tests/tcg/i386/float_convd.ref
new file mode 100644
index 00000000000..adb33e1adf4
--- /dev/null
+++ b/tests/tcg/i386/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ffc000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
diff --git a/tests/tcg/i386/float_madds.ref b/tests/tcg/i386/float_madds.ref
new file mode 100644
index 00000000000..bb834699311
--- /dev/null
+++ b/tests/tcg/i386/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffe00000)
+res: f32(-nan:0xffc00000) flags=OK (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=OK (28/1)
+op : f32(nan:0x7fe00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=OK (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (29/0)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=OK (29/1)
+op : f32(-nan:0xffe00000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (29/2)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (30/0)
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(nan:0x7fe00000)
+res: f32(-nan:0xffc00000) flags=OK (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffe00000)
+res: f32(-nan:0xffc00000) flags=OK (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=OK (28/1)
+op : f32(nan:0x7fe00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=OK (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (29/0)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=OK (29/1)
+op : f32(-nan:0xffe00000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (29/2)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (30/0)
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(nan:0x7fe00000)
+res: f32(-nan:0xffc00000) flags=OK (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffe00000)
+res: f32(-nan:0xffc00000) flags=OK (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=OK (28/1)
+op : f32(nan:0x7fe00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=OK (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (29/0)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=OK (29/1)
+op : f32(-nan:0xffe00000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (29/2)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (30/0)
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(nan:0x7fe00000)
+res: f32(-nan:0xffc00000) flags=OK (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffe00000)
+res: f32(-nan:0xffc00000) flags=OK (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=OK (28/1)
+op : f32(nan:0x7fe00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=OK (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (29/0)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=OK (29/1)
+op : f32(-nan:0xffe00000) * f32(nan:0x7fc00000) + f32(nan:0x7fe00000)
+res: f32(nan:0x7fc00000) flags=OK (29/2)
+op : f32(nan:0x7fe00000) * f32(-nan:0xffe00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=OK (30/0)
+op : f32(-nan:0xffe00000) * f32(-nan:0xffc00000) + f32(nan:0x7fe00000)
+res: f32(-nan:0xffc00000) flags=OK (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fe00000) + f32(-nan:0xffe00000)
+res: f32(nan:0x7fe00000) flags=OK (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 49/91] tests/tcg/i386: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (47 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 48/91] tests/tcg/i386: add missing float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 50/91] tests/tcg/i386: system tests Pierrick Bouvier
` (47 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
We did not include test-i386-fprem.c test as it has four problems:
- it's the only tcg test declared as "slow", which would require to
create a test suite just for it.
- it compares output to host which limits how to test it
- it produces a gigantic reference file (64MB)
- finally, because it is in its own category, it never runs, and thus
it's currently broken, there are flags difference with existing
qemu-i386.
If we want to resurrect it, we could generate a simple hash as output by
default, and store the reference, which would solve the first three
problems. Also, we could add an option to do a full dump for debugging
purpose, fix it, and solve 4.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/i386/meson.build | 56 ++++++++++++++++++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 57 insertions(+)
create mode 100644 tests/tcg/i386/meson.build
diff --git a/tests/tcg/i386/meson.build b/tests/tcg/i386/meson.build
new file mode 100644
index 00000000000..858485ab62c
--- /dev/null
+++ b/tests/tcg/i386/meson.build
@@ -0,0 +1,56 @@
+cc = 'i686-linux-gnu-gcc'
+cc_dockerfile = 'debian-i686-cross'
+cc_docker_arch = ['x86_64']
+
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'hello-i386.c': {
+ 'cflags': ['-ffreestanding', '-fno-stack-protector', '-nostdlib'],
+ },
+ 'test-aes.c': {'cflags': ['-O1', '-msse2', '-maes']},
+ 'test-i386-adcox.c': {'cflags': ['-O2']},
+ 'test-i386-bmi2.c': {'cflags': ['-O2', '-fwrapv']},
+ 'test-i386-f2xm1.c': {},
+ 'test-i386-fbstp.c': {},
+ 'test-i386-fisttp.c': {},
+ 'test-i386-fldcst.c': {},
+ 'test-i386-fp-exceptions.c': {},
+ # TODO: this test is too long, and its output needs to be compared to native
+ # execution. Make it faster, and compare only a hash as output.
+ #'test-i386-fprem.c': {},
+ 'test-i386-fpatan.c': {},
+ 'test-i386-fscale.c': {},
+ 'test-i386-fxam.c': {},
+ 'test-i386-fxtract.c': {},
+ 'test-i386-fyl2x.c': {},
+ 'test-i386-fyl2xp1.c': {},
+ 'test-i386-pcmpistri.c': {'cflags': ['-msse4.2']},
+ 'test-i386-pseudo-denormal.c': {},
+ 'test-i386-snan-convert.c': {},
+ 'test-i386-sse-exceptions.c': {'cflags': ['-msse4.1', '-mfpmath=sse']},
+ 'test-i386.c': {
+ 'cflags': [files('test-i386-code16.S'), files('test-i386-vm86.S'),
+ '-lm', '-fno-pie', '-Wl,--no-warn-rwx-segments'],
+ },
+ '../multiarch/sha512.c': {
+ 'exe_name': 'sha512-sse',
+ 'cflags': ['-msse4.1', '-O3'],
+ },
+}
+
+if 'qemu-i386' in emulators
+ tcg_tests += {
+ 'i386-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'i386',
+ 'gdb_arch': 'i386',
+ 'qemu': emulators['qemu-i386'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 1eb887a8e3b..f1f27c2da1b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -140,6 +140,7 @@ subdir('alpha')
subdir('arm')
subdir('hexagon')
subdir('hppa')
+subdir('i386')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 50/91] tests/tcg/i386: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (48 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 49/91] tests/tcg/i386: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 51/91] tests/tcg/loongarch64: user tests Pierrick Bouvier
` (46 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/i386/meson.build | 2 ++
tests/tcg/i386/system/meson.build | 48 +++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
create mode 100644 tests/tcg/i386/system/meson.build
diff --git a/tests/tcg/i386/meson.build b/tests/tcg/i386/meson.build
index 858485ab62c..c66fa79879c 100644
--- a/tests/tcg/i386/meson.build
+++ b/tests/tcg/i386/meson.build
@@ -2,6 +2,8 @@ cc = 'i686-linux-gnu-gcc'
cc_dockerfile = 'debian-i686-cross'
cc_docker_arch = ['x86_64']
+subdir('system')
+
tests = []
tests += tcg_tests['multiarch-linux-user']['tests']
diff --git a/tests/tcg/i386/system/meson.build b/tests/tcg/i386/system/meson.build
new file mode 100644
index 00000000000..7473f7e1c1a
--- /dev/null
+++ b/tests/tcg/i386/system/meson.build
@@ -0,0 +1,48 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script,
+ '-Wl,-melf_i386',
+ '-Wl,--no-warn-rwx-segments',
+ '-lgcc']
+qemu_def_args = ['-display', 'none',
+ '-device', 'isa-debugcon,chardev=stdio',
+ '-chardev', 'stdio,id=stdio',
+ '-device', 'isa-debug-exit,iobase=0xf4,iosize=0x4',
+ '-kernel']
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=1'
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+if 'qemu-system-i386' in emulators
+ tcg_tests += {
+ 'i386-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'i386/system',
+ 'gdb_arch': 'i386',
+ 'qemu': emulators['qemu-system-i386'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 51/91] tests/tcg/loongarch64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (49 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 50/91] tests/tcg/i386: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 52/91] tests/tcg/loongarch64: system tests Pierrick Bouvier
` (45 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/loongarch64/meson.build | 30 ++++++++++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 31 insertions(+)
create mode 100644 tests/tcg/loongarch64/meson.build
diff --git a/tests/tcg/loongarch64/meson.build b/tests/tcg/loongarch64/meson.build
new file mode 100644
index 00000000000..399c1617a99
--- /dev/null
+++ b/tests/tcg/loongarch64/meson.build
@@ -0,0 +1,30 @@
+cc = 'loongarch64-unknown-linux-gnu-gcc'
+cc_dockerfile = 'debian-loongarch-cross'
+cc_docker_arch = ['x86_64']
+
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'test_bit.c': {},
+ 'test_fclass.c': {},
+ 'test_fcsr.c': {},
+ 'test_fpcom.c': {},
+ 'test_div.c': {},
+ 'test_pcadd.c': {},
+}
+
+if 'qemu-loongarch64' in emulators
+ tcg_tests += {
+ 'loongarch64-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'loongarch64',
+ 'gdb_arch': 'loongarch64',
+ 'qemu': emulators['qemu-loongarch64'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index f1f27c2da1b..28a5b50eea4 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -141,6 +141,7 @@ subdir('arm')
subdir('hexagon')
subdir('hppa')
subdir('i386')
+subdir('loongarch64')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 52/91] tests/tcg/loongarch64: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (50 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 51/91] tests/tcg/loongarch64: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 53/91] tests/tcg/m68k: add float reference files Pierrick Bouvier
` (44 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/loongarch64/meson.build | 2 +
tests/tcg/loongarch64/system/meson.build | 47 ++++++++++++++++++++++++
2 files changed, 49 insertions(+)
create mode 100644 tests/tcg/loongarch64/system/meson.build
diff --git a/tests/tcg/loongarch64/meson.build b/tests/tcg/loongarch64/meson.build
index 399c1617a99..b3cc68543a3 100644
--- a/tests/tcg/loongarch64/meson.build
+++ b/tests/tcg/loongarch64/meson.build
@@ -2,6 +2,8 @@ cc = 'loongarch64-unknown-linux-gnu-gcc'
cc_dockerfile = 'debian-loongarch-cross'
cc_docker_arch = ['x86_64']
+subdir('system')
+
tests = []
tests += tcg_tests['multiarch-linux-user']['tests']
diff --git a/tests/tcg/loongarch64/system/meson.build b/tests/tcg/loongarch64/system/meson.build
new file mode 100644
index 00000000000..d72921dde2d
--- /dev/null
+++ b/tests/tcg/loongarch64/system/meson.build
@@ -0,0 +1,47 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script,
+ '-march=loongarch64',
+ '-mabi=lp64d',
+ '-Wl,--no-warn-rwx-segments',
+ '-lgcc']
+qemu_def_args = ['-display', 'none',
+ '-serial', 'stdio',
+ '-kernel']
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=0'
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+if 'qemu-system-loongarch64' in emulators
+ tcg_tests += {
+ 'loongarch64-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'loongarch64/system',
+ 'gdb_arch': 'loongarch64',
+ 'qemu': emulators['qemu-system-loongarch64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 53/91] tests/tcg/m68k: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (51 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 52/91] tests/tcg/loongarch64: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 54/91] tests/tcg/m68k: user tests Pierrick Bouvier
` (43 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/m68k/float_convd.ref | 988 +++++++++++++++++++++++++++++++++
tests/tcg/m68k/float_convs.ref | 748 +++++++++++++++++++++++++
tests/tcg/m68k/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/m68k/float_convd.ref
create mode 100644 tests/tcg/m68k/float_convs.ref
create mode 100644 tests/tcg/m68k/float_madds.ref
diff --git a/tests/tcg/m68k/float_convd.ref b/tests/tcg/m68k/float_convd.ref
new file mode 100644
index 00000000000..995891170cf
--- /dev/null
+++ b/tests/tcg/m68k/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00ffffffffffffffff)
+ to single: f32(-nan:0xffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00ffffffffffffffff)
+ to single: f32(-nan:0xffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00ffffffffffffffff)
+ to single: f32(-nan:0xffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00ffffffffffffffff)
+ to single: f32(-nan:0xffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff8000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/m68k/float_convs.ref b/tests/tcg/m68k/float_convs.ref
new file mode 100644
index 00000000000..e40239c9e72
--- /dev/null
+++ b/tests/tcg/m68k/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding upwards
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding downwards
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-nan:0xffffffff)
+ to double: f64(-nan:0x00ffffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007fffffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/m68k/float_madds.ref b/tests/tcg/m68k/float_madds.ref
new file mode 100644
index 00000000000..23a1357a590
--- /dev/null
+++ b/tests/tcg/m68k/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (0/0)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/2)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/1)
+op : f32(nan:0x7fffffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/0)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/2)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (0/0)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/2)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/1)
+op : f32(nan:0x7fffffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/0)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/2)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (0/0)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/2)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/1)
+op : f32(nan:0x7fffffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/0)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/2)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (0/0)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (0/2)
+op : f32(-nan:0xffffffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffffffff) + f32(-inf:0xff800000)
+res: f32(-nan:0xffffffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fffffff) flags=INVALID (27/1)
+op : f32(nan:0x7fffffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/0)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fffffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (28/2)
+op : f32(nan:0x7fffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (29/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(-nan:0xffffffff) + f32(-nan:0xffffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/0)
+op : f32(-nan:0xffffffff) * f32(-nan:0xffffffff) + f32(nan:0x7fffffff)
+res: f32(-nan:0xffffffff) flags=INVALID (30/1)
+op : f32(-nan:0xffffffff) * f32(nan:0x7fffffff) + f32(-nan:0xffffffff)
+res: f32(nan:0x7fffffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 54/91] tests/tcg/m68k: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (52 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 53/91] tests/tcg/m68k: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 55/91] scripts/probe-gdb-support.py: add mapping for mips architecture Pierrick Bouvier
` (42 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/m68k/meson.build | 23 +++++++++++++++++++++++
tests/tcg/meson.build | 1 +
2 files changed, 24 insertions(+)
create mode 100644 tests/tcg/m68k/meson.build
diff --git a/tests/tcg/m68k/meson.build b/tests/tcg/m68k/meson.build
new file mode 100644
index 00000000000..8c6cfde7f10
--- /dev/null
+++ b/tests/tcg/m68k/meson.build
@@ -0,0 +1,23 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'denormal.c': {},
+ 'trap.c': {},
+}
+
+if 'qemu-m68k' in emulators
+ tcg_tests += {
+ 'm68k-linux-user': {
+ 'cc': 'm68k-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'm68k',
+ 'gdb_arch': 'm68k',
+ 'qemu': emulators['qemu-m68k'],
+ 'tests': tests,
+ }
+ }
+endif
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 28a5b50eea4..a6bc12922cc 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -142,6 +142,7 @@ subdir('hexagon')
subdir('hppa')
subdir('i386')
subdir('loongarch64')
+subdir('m68k')
image_targets = {}
exe_targets = []
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 55/91] scripts/probe-gdb-support.py: add mapping for mips architecture
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (53 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 54/91] tests/tcg/m68k: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 56/91] tests/tcg/mips: add float reference files Pierrick Bouvier
` (41 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
scripts/probe-gdb-support.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/probe-gdb-support.py b/scripts/probe-gdb-support.py
index 43c70302873..6e3b2579770 100644
--- a/scripts/probe-gdb-support.py
+++ b/scripts/probe-gdb-support.py
@@ -35,6 +35,7 @@
"Loongarch64" : ["loongarch64"],
"m68k" : ["m68k"],
"MicroBlaze" : ["microblaze"],
+ "mips" : ["mips"],
"mips:isa64" : ["mips64", "mips64el"],
"or1k" : ["or1k"],
"powerpc:common" : ["ppc"],
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 56/91] tests/tcg/mips: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (54 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 55/91] scripts/probe-gdb-support.py: add mapping for mips architecture Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 57/91] test/tcg/mips: user tests Pierrick Bouvier
` (40 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/mips/float_convd.ref | 988 +++++++++++++++++++++++++++++++++
tests/tcg/mips/float_convs.ref | 748 +++++++++++++++++++++++++
tests/tcg/mips/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/mips/float_convd.ref
create mode 100644 tests/tcg/mips/float_convs.ref
create mode 100644 tests/tcg/mips/float_madds.ref
diff --git a/tests/tcg/mips/float_convd.ref b/tests/tcg/mips/float_convd.ref
new file mode 100644
index 00000000000..61b6aec3313
--- /dev/null
+++ b/tests/tcg/mips/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (OVERFLOW INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/mips/float_convs.ref b/tests/tcg/mips/float_convs.ref
new file mode 100644
index 00000000000..9df23727aad
--- /dev/null
+++ b/tests/tcg/mips/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding upwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding downwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/mips/float_madds.ref b/tests/tcg/mips/float_madds.ref
new file mode 100644
index 00000000000..2020c65d18e
--- /dev/null
+++ b/tests/tcg/mips/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 57/91] test/tcg/mips: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (55 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 56/91] tests/tcg/mips: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 58/91] tests/tcg/mips64: add float reference files Pierrick Bouvier
` (39 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/mips/meson.build | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 tests/tcg/mips/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index a6bc12922cc..72ad2690f93 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -143,6 +143,7 @@ subdir('hppa')
subdir('i386')
subdir('loongarch64')
subdir('m68k')
+subdir('mips')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/mips/meson.build b/tests/tcg/mips/meson.build
new file mode 100644
index 00000000000..1b3f19a6153
--- /dev/null
+++ b/tests/tcg/mips/meson.build
@@ -0,0 +1,25 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'hello-mips.c': {
+ 'cflags': ['-mno-abicalls', '-fno-PIC', '-fno-stack-protector', '-mabi=32',
+ '-nostdlib']
+ }
+}
+
+if 'qemu-mips' in emulators
+ tcg_tests += {
+ 'mips-linux-user': {
+ 'cc': 'mips-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['aarch64', 'x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'mips',
+ 'gdb_arch': 'mips',
+ 'qemu': emulators['qemu-mips'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 58/91] tests/tcg/mips64: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (56 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 57/91] test/tcg/mips: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 59/91] tests/tcg/mips64: user tests Pierrick Bouvier
` (38 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/mips64/float_convd.ref | 988 +++++++++++++++++++++++++++++++
tests/tcg/mips64/float_convs.ref | 748 +++++++++++++++++++++++
tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/mips64/float_convd.ref
create mode 100644 tests/tcg/mips64/float_convs.ref
create mode 100644 tests/tcg/mips64/float_madds.ref
diff --git a/tests/tcg/mips64/float_convd.ref b/tests/tcg/mips64/float_convd.ref
new file mode 100644
index 00000000000..62a44443063
--- /dev/null
+++ b/tests/tcg/mips64/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/mips64/float_convs.ref b/tests/tcg/mips64/float_convs.ref
new file mode 100644
index 00000000000..2e970dc7978
--- /dev/null
+++ b/tests/tcg/mips64/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/mips64/float_madds.ref b/tests/tcg/mips64/float_madds.ref
new file mode 100644
index 00000000000..2020c65d18e
--- /dev/null
+++ b/tests/tcg/mips64/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 59/91] tests/tcg/mips64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (57 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 58/91] tests/tcg/mips64: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 60/91] tests/tcg/mips64el: add float reference files Pierrick Bouvier
` (37 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/mips64/meson.build | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 tests/tcg/mips64/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 72ad2690f93..2f4bb4b579b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -144,6 +144,7 @@ subdir('i386')
subdir('loongarch64')
subdir('m68k')
subdir('mips')
+subdir('mips64')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/mips64/meson.build b/tests/tcg/mips64/meson.build
new file mode 100644
index 00000000000..8b48c2ecd21
--- /dev/null
+++ b/tests/tcg/mips64/meson.build
@@ -0,0 +1,27 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ '../mips/user/isa/octeon/octeon-insns.c': {
+ 'qemu_args': ['-cpu', 'Octeon68XX'],
+ },
+}
+
+# export tests for mips64el
+tcg_tests_mips64 = tests
+
+if 'qemu-mips64' in emulators
+ tcg_tests += {
+ 'mips64-linux-user': {
+ 'cc': 'mips64-linux-gnuabi64-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['aarch64', 'x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'mips64',
+ 'gdb_arch': 'mips64',
+ 'qemu': emulators['qemu-mips64'],
+ 'tests': tcg_tests_mips64,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 60/91] tests/tcg/mips64el: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (58 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 59/91] tests/tcg/mips64: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 61/91] tests/tcg/mips64el: user tests Pierrick Bouvier
` (36 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/mips64el/float_convd.ref | 988 +++++++++++++++++++++++++++++
tests/tcg/mips64el/float_convs.ref | 748 ++++++++++++++++++++++
tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/mips64el/float_convd.ref
create mode 100644 tests/tcg/mips64el/float_convs.ref
create mode 100644 tests/tcg/mips64el/float_madds.ref
diff --git a/tests/tcg/mips64el/float_convd.ref b/tests/tcg/mips64el/float_convd.ref
new file mode 100644
index 00000000000..62a44443063
--- /dev/null
+++ b/tests/tcg/mips64el/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-nan:0x00fff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff7ffffffffffff)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from double: f64(nan:0x007fffffffffffffff)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/mips64el/float_convs.ref b/tests/tcg/mips64el/float_convs.ref
new file mode 100644
index 00000000000..2e970dc7978
--- /dev/null
+++ b/tests/tcg/mips64el/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding upwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding downwards
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+### Rounding to zero
+from single: f32(nan:0xffffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0xffbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fbfffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
+from single: f32(nan:0x7fffffff)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372036854775807 (INVALID)
diff --git a/tests/tcg/mips64el/float_madds.ref b/tests/tcg/mips64el/float_madds.ref
new file mode 100644
index 00000000000..2020c65d18e
--- /dev/null
+++ b/tests/tcg/mips64el/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffbfffff) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffbfffff) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=OK (27/1)
+op : f32(nan:0x7fbfffff) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fffffff) * f32(inf:0x7f800000) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0x7fbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffffffff) * f32(nan:0x7fbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fffffff) * f32(nan:0xffffffff) + f32(nan:0xffbfffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffffffff) * f32(nan:0xffbfffff) + f32(nan:0x7fffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffbfffff) * f32(nan:0x7fffffff) + f32(nan:0xffffffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 61/91] tests/tcg/mips64el: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (59 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 60/91] tests/tcg/mips64el: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain Pierrick Bouvier
` (35 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/mips64el/meson.build | 14 ++++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 tests/tcg/mips64el/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 2f4bb4b579b..816a6054d93 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -145,6 +145,7 @@ subdir('loongarch64')
subdir('m68k')
subdir('mips')
subdir('mips64')
+subdir('mips64el')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/mips64el/meson.build b/tests/tcg/mips64el/meson.build
new file mode 100644
index 00000000000..16bc2f32509
--- /dev/null
+++ b/tests/tcg/mips64el/meson.build
@@ -0,0 +1,14 @@
+if 'qemu-mips64el' in emulators
+ tcg_tests += {
+ 'mips64el-linux-user': {
+ 'cc': 'mips64el-linux-gnuabi64-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['aarch64', 'x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'mips64el',
+ 'gdb_arch': 'mips64el',
+ 'qemu': emulators['qemu-mips64el'],
+ 'tests': tcg_tests_mips64,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (60 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 61/91] tests/tcg/mips64el: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:23 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables Pierrick Bouvier
` (34 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
To avoid escape hell in tests/lcitool/refresh, just use a raw
multiline string instead of a list of strings.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
.../dockerfiles/debian-all-test-cross.docker | 16 ++-
tests/lcitool/refresh | 107 ++++++++++--------
2 files changed, 75 insertions(+), 48 deletions(-)
diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker
index a10ffc73500..98ea1e0d679 100644
--- a/tests/docker/dockerfiles/debian-all-test-cross.docker
+++ b/tests/docker/dockerfiles/debian-all-test-cross.docker
@@ -54,13 +54,26 @@ ENV LANG="en_US.UTF-8"
ENV MAKE="/usr/bin/make"
ENV NINJA="/usr/bin/ninja"
ENV PYTHON="/usr/bin/python3"
+
# extras for cross and alternate toolchains
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
clang\
dpkg-dev\
gdb-multiarch\
- libclang-rt-dev
+ libclang-rt-dev\
+ wget\
+ rsync
+
+# https://openrisc.io/2025/04/20/toolchainrootfsbins
+RUN if dpkg-architecture -e amd64; then \
+cd /tmp && \
+ wget -q https://github.com/stffrdhrn/or1k-toolchain-build/releases/download/or1k-16.1.0-20260614/or1k-none-linux-musl-16.1.0-20260614.tar.xz && \
+ tar --no-same-owner -xf *.tar.xz && \
+ rsync -a or1k-none-linux-musl/ /usr/ && \
+ rm -rf /tmp/*; \
+fi
+
ENV AVAILABLE_COMPILERS="\
gcc-aarch64-linux-gnu \
libc6-dev-arm64-cross \
@@ -96,6 +109,7 @@ DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
${AVAILABLE_COMPILERS} && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt
+
ENV QEMU_CONFIGURE_OPTS=--disable-docs
ENV DEF_TARGET_LIST=aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
# As a final step configure the user (if env is defined)
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index e0da0d2de1d..ec3ae672c11 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -161,52 +161,65 @@ ubuntu2404_rust_extras = [
'RUN cargo install --locked bindgen-cli\n',
]
-debian_all_test_cross_compilers = [
- "# extras for cross and alternate toolchains\n",
- "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
- " apt install -y --no-install-recommends \\\n",
- " clang\\\n",
- " dpkg-dev\\\n",
- " gdb-multiarch\\\n",
- " libclang-rt-dev\n",
- "ENV AVAILABLE_COMPILERS=\"\\\n",
- " gcc-aarch64-linux-gnu \\\n",
- " libc6-dev-arm64-cross \\\n",
- " gcc-arm-linux-gnueabihf \\\n",
- " libc6-dev-armhf-cross \\\n",
- " gcc-alpha-linux-gnu \\\n"
- " libc6.1-dev-alpha-cross \\\n"
- " gcc-mips-linux-gnu \\\n",
- " libc6-dev-mips-cross \\\n",
- " gcc-mips64-linux-gnuabi64 \\\n",
- " libc6-dev-mips64-cross \\\n",
- " gcc-mips64el-linux-gnuabi64 \\\n",
- " libc6-dev-mips64el-cross \\\n",
- " gcc-mipsel-linux-gnu \\\n",
- " libc6-dev-mipsel-cross \\\n",
- " gcc-powerpc64le-linux-gnu \\\n",
- " libc6-dev-ppc64el-cross \\\n",
- " gcc-riscv64-linux-gnu \\\n",
- " libc6-dev-riscv64-cross \\\n",
- " gcc-s390x-linux-gnu \\\n",
- " libc6-dev-s390x-cross\\\n",
- " gcc-sh4-linux-gnu \\\n",
- " libc6-dev-sh4-cross \\\n",
- " \"\n",
- "RUN if dpkg-architecture -e amd64; then \\\n",
- " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross\"; \\\n",
- " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross\"; \\\n",
- " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross\"; \\\n",
- " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross\"; \\\n",
- " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross\"; \\\n",
- "fi && \\\n",
- "DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
- "apt install -y --no-install-recommends \\\n",
- "${AVAILABLE_COMPILERS} && \\\n",
- "dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt\n",
- "ENV QEMU_CONFIGURE_OPTS=--disable-docs\n",
- "ENV DEF_TARGET_LIST=aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user\n",
-]
+debian_all_test_cross_compilers = r"""
+# extras for cross and alternate toolchains
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+ apt install -y --no-install-recommends \
+ clang\
+ dpkg-dev\
+ gdb-multiarch\
+ libclang-rt-dev\
+ wget\
+ rsync
+
+# https://openrisc.io/2025/04/20/toolchainrootfsbins
+RUN if dpkg-architecture -e amd64; then \
+cd /tmp && \
+ wget -q https://github.com/stffrdhrn/or1k-toolchain-build/releases/download/or1k-16.1.0-20260614/or1k-none-linux-musl-16.1.0-20260614.tar.xz && \
+ tar --no-same-owner -xf *.tar.xz && \
+ rsync -a or1k-none-linux-musl/ /usr/ && \
+ rm -rf /tmp/*; \
+fi
+
+ENV AVAILABLE_COMPILERS="\
+ gcc-aarch64-linux-gnu \
+ libc6-dev-arm64-cross \
+ gcc-arm-linux-gnueabihf \
+ libc6-dev-armhf-cross \
+ gcc-alpha-linux-gnu \
+ libc6.1-dev-alpha-cross \
+ gcc-mips-linux-gnu \
+ libc6-dev-mips-cross \
+ gcc-mips64-linux-gnuabi64 \
+ libc6-dev-mips64-cross \
+ gcc-mips64el-linux-gnuabi64 \
+ libc6-dev-mips64el-cross \
+ gcc-mipsel-linux-gnu \
+ libc6-dev-mipsel-cross \
+ gcc-powerpc64le-linux-gnu \
+ libc6-dev-ppc64el-cross \
+ gcc-riscv64-linux-gnu \
+ libc6-dev-riscv64-cross \
+ gcc-s390x-linux-gnu \
+ libc6-dev-s390x-cross\
+ gcc-sh4-linux-gnu \
+ libc6-dev-sh4-cross \
+ "
+RUN if dpkg-architecture -e amd64; then \
+ export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross"; \
+ export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross"; \
+ export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross"; \
+ export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross"; \
+ export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross"; \
+fi && \
+DEBIAN_FRONTEND=noninteractive eatmydata \
+apt install -y --no-install-recommends \
+${AVAILABLE_COMPILERS} && \
+dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt
+
+ENV QEMU_CONFIGURE_OPTS=--disable-docs
+ENV DEF_TARGET_LIST=aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user
+"""
def cross_build(prefix, targets):
conf = "ENV QEMU_CONFIGURE_OPTS=--cross-prefix=%s\n" % (prefix)
@@ -293,7 +306,7 @@ try:
generate_dockerfile("debian-all-test-cross", "debian-13",
project="qemu-minimal",
enable_rust=False,
- trailer="".join(debian_all_test_cross_compilers))
+ trailer=debian_all_test_cross_compilers)
#
# GitLab packages lists
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (61 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:20 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 64/91] tests/tcg/or1k/test_muli.c: remove set but unused variable Pierrick Bouvier
` (33 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/or1k/test_addic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/tcg/or1k/test_addic.c b/tests/tcg/or1k/test_addic.c
index 857aaa13302..27939c64ff1 100644
--- a/tests/tcg/or1k/test_addic.c
+++ b/tests/tcg/or1k/test_addic.c
@@ -2,7 +2,7 @@
int main(void)
{
- int a, b, c;
+ int a;
int result;
a = 1;
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 64/91] tests/tcg/or1k/test_muli.c: remove set but unused variable
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (62 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 65/91] tests/tcg/or1k: add float reference files Pierrick Bouvier
` (32 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/or1k/test_muli.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/tests/tcg/or1k/test_muli.c b/tests/tcg/or1k/test_muli.c
index f1042e98dec..cfb6b3df251 100644
--- a/tests/tcg/or1k/test_muli.c
+++ b/tests/tcg/or1k/test_muli.c
@@ -2,11 +2,10 @@
int main(void)
{
- int a, b, c;
+ int a, b;
int result;
b = 0x4;
- c = 0x1;
result = 0x4;
__asm
("l.muli %0, %1, 0x1\n\t"
@@ -19,7 +18,6 @@ int main(void)
}
b = 0x1;
- c = 0x0;
result = 0x0;
__asm
("l.muli %0, %1, 0x0\n\t"
@@ -32,7 +30,6 @@ int main(void)
}
b = 0x1;
- c = 0xff;
result = 0xff;
__asm
("l.muli %0, %1, 0xff\n\t"
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 65/91] tests/tcg/or1k: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (63 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 64/91] tests/tcg/or1k/test_muli.c: remove set but unused variable Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only Pierrick Bouvier
` (31 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/or1k/float_convd.ref | 247 +++++++++++++++++++++++++++++++++
tests/tcg/or1k/float_convs.ref | 187 +++++++++++++++++++++++++
tests/tcg/or1k/float_madds.ref | 192 +++++++++++++++++++++++++
3 files changed, 626 insertions(+)
create mode 100644 tests/tcg/or1k/float_convd.ref
create mode 100644 tests/tcg/or1k/float_convs.ref
create mode 100644 tests/tcg/or1k/float_madds.ref
diff --git a/tests/tcg/or1k/float_convd.ref b/tests/tcg/or1k/float_convd.ref
new file mode 100644
index 00000000000..dbd5379c4d3
--- /dev/null
+++ b/tests/tcg/or1k/float_convd.ref
@@ -0,0 +1,247 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.3d5054450ed000000000p-1023:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.5731f750864200000000p-1023:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
diff --git a/tests/tcg/or1k/float_convs.ref b/tests/tcg/or1k/float_convs.ref
new file mode 100644
index 00000000000..ec7fdf975b1
--- /dev/null
+++ b/tests/tcg/or1k/float_convs.ref
@@ -0,0 +1,187 @@
+### Rounding to nearest
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (OK)
+ to int64: -9223372036854775808 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (OK)
+ to int64: 3 (OK)
+ to uint32: 3 (OK)
+ to uint64: 3 (OK)
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (OK)
+ to int32: 2147483647 (OK)
+ to int64: 9223372036854775807 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
diff --git a/tests/tcg/or1k/float_madds.ref b/tests/tcg/or1k/float_madds.ref
new file mode 100644
index 00000000000..2c7c35c8b47
--- /dev/null
+++ b/tests/tcg/or1k/float_madds.ref
@@ -0,0 +1,192 @@
+### Rounding to nearest
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=OK (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=OK (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OK (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OK (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=OK (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=OK (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=OK (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=OK (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=OK (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=OK (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=OK (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=OK (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=OK (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=OK (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=OK (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=OK (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=OK (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=OK (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=OK (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=OK (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=OK (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=OK (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=OK (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=OK (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=OK (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=OK (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=OK (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=OK (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=OK (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=OK (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=OK (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=OK (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=OK (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=OK (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=OK (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=OK (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=OK (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=OK (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=OK (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=OK (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=OK (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=OK (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=OK (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=OK (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=OK (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=OK (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=OK (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=OK (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=OK (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=OK (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=OK (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OK (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=OK (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=OK (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=OK (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=OK (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=OK (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=OK (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (64 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 65/91] tests/tcg/or1k: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:12 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 67/91] tests/tcg/or1k: user tests Pierrick Bouvier
` (30 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
plugin registers.c check if at least one register is read-only, which
was missing for target or1k.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
plugins/api.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/plugins/api.c b/plugins/api.c
index eb982f9aad7..3520c96f411 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -425,6 +425,7 @@ static const char rip_str[] = "rip"; /* x86_64-specific name for PC */
static const char pswa_str[] = "pswa"; /* s390x-specific name for PC */
static const char iaoq_str[] = "iaoq"; /* HP/PA-specific name for PC */
static const char rpc_str[] = "rpc"; /* microblaze-specific name for PC */
+static const char ppc_str[] = "ppc"; /* or1k-specific name for PC */
static GArray *create_register_handles(GArray *gdbstub_regs)
{
GArray *find_data = g_array_new(true, true,
@@ -449,6 +450,7 @@ static GArray *create_register_handles(GArray *gdbstub_regs)
|| g_strcmp0(desc.name, pswa_str) == 0
|| g_strcmp0(desc.name, iaoq_str) == 0
|| g_strcmp0(desc.name, rpc_str) == 0
+ || g_strcmp0(desc.name, ppc_str) == 0
) {
desc.is_readonly = true;
plugin_ro_bit = 1;
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 67/91] tests/tcg/or1k: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (65 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 68/91] tests/tcg/ppc64: add float reference files Pierrick Bouvier
` (29 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Some tests are currently failing, so they are commented.
To be investigated.
qemu:or1k-linux-user-test_addc FAIL 0.05s (exit status 255 or 0xff)
qemu:or1k-linux-user-test_div FAIL 0.06s (exit status 136 or signal 8 SIGFPE)
qemu:or1k-linux-user-test_extx FAIL 0.06s (exit status 132 or signal 4 SIGILL)
qemu:or1k-linux-user-test_lx FAIL 0.05s (exit status 139 or signal 11 SIGSEGV)
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/or1k/meson.build | 72 ++++++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
create mode 100644 tests/tcg/or1k/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 816a6054d93..389e9f9b3f6 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -146,6 +146,7 @@ subdir('m68k')
subdir('mips')
subdir('mips64')
subdir('mips64el')
+subdir('or1k')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/or1k/meson.build b/tests/tcg/or1k/meson.build
new file mode 100644
index 00000000000..3f0154717f0
--- /dev/null
+++ b/tests/tcg/or1k/meson.build
@@ -0,0 +1,72 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'test_add.c': {},
+ #'test_addc.c': {},
+ 'test_addi.c': {},
+ 'test_addic.c': {},
+ 'test_and_or.c': {},
+ 'test_bf.c': {},
+ 'test_bnf.c': {},
+ #'test_div.c': {},
+ 'test_divu.c': {},
+ #'test_extx.c': {},
+ 'test_fx.c': {},
+ 'test_j.c': {},
+ 'test_jal.c': {},
+ 'test_lf_add.c': {},
+ 'test_lf_div.c': {},
+ 'test_lf_eqs.c': {},
+ 'test_lf_ges.c': {},
+ 'test_lf_gts.c': {},
+ 'test_lf_les.c': {},
+ 'test_lf_lts.c': {},
+ 'test_lf_mul.c': {},
+ 'test_lf_nes.c': {},
+ 'test_lf_rem.c': {},
+ 'test_lf_sub.c': {},
+ 'test_logic.c': {},
+ #'test_lx.c': {},
+ 'test_movhi.c': {},
+ 'test_mul.c': {},
+ 'test_muli.c': {},
+ 'test_mulu.c': {},
+ 'test_sfeq.c': {},
+ 'test_sfeqi.c': {},
+ 'test_sfges.c': {},
+ 'test_sfgesi.c': {},
+ 'test_sfgeu.c': {},
+ 'test_sfgeui.c': {},
+ 'test_sfgts.c': {},
+ 'test_sfgtsi.c': {},
+ 'test_sfgtu.c': {},
+ 'test_sfgtui.c': {},
+ 'test_sfles.c': {},
+ 'test_sflesi.c': {},
+ 'test_sfleu.c': {},
+ 'test_sfleui.c': {},
+ 'test_sflts.c': {},
+ 'test_sfltsi.c': {},
+ 'test_sfltu.c': {},
+ 'test_sfltui.c': {},
+ 'test_sfne.c': {},
+ 'test_sfnei.c': {},
+ 'test_sub.c': {},
+}
+
+if 'qemu-or1k' in emulators
+ tcg_tests += {
+ 'or1k-linux-user': {
+ 'cc': 'or1k-none-linux-musl-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'or1k',
+ 'gdb_arch': 'or1k',
+ 'qemu': emulators['qemu-or1k'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 68/91] tests/tcg/ppc64: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (66 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 67/91] tests/tcg/or1k: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h Pierrick Bouvier
` (28 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++++++++++++++++
tests/tcg/ppc64/float_convs.ref | 748 ++++++++++++++++++++++++
tests/tcg/ppc64/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/ppc64/float_convd.ref
create mode 100644 tests/tcg/ppc64/float_convs.ref
create mode 100644 tests/tcg/ppc64/float_madds.ref
diff --git a/tests/tcg/ppc64/float_convd.ref b/tests/tcg/ppc64/float_convd.ref
new file mode 100644
index 00000000000..43aa3117f14
--- /dev/null
+++ b/tests/tcg/ppc64/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: -2 (OK)
+ to uint64: -2 (OK)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: -1 (OK)
+ to uint64: -1 (OK)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
diff --git a/tests/tcg/ppc64/float_convs.ref b/tests/tcg/ppc64/float_convs.ref
new file mode 100644
index 00000000000..bd7b14d37e3
--- /dev/null
+++ b/tests/tcg/ppc64/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding upwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding downwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+### Rounding to zero
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff4000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: -9223372036854775808 (INVALID)
diff --git a/tests/tcg/ppc64/float_madds.ref b/tests/tcg/ppc64/float_madds.ref
new file mode 100644
index 00000000000..e66917cb801
--- /dev/null
+++ b/tests/tcg/ppc64/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (67 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 68/91] tests/tcg/ppc64: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:16 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 70/91] tests/tcg/ppc64: user tests Pierrick Bouvier
` (27 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Replace definition of vector attribute, remove unlikely, and detect
endianness from __BYTE_ORDER__.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/ppc64/vector.c | 11 ++++++-----
tests/tcg/ppc64/vsx_f2i_nan.c | 7 ++++---
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/tests/tcg/ppc64/vector.c b/tests/tcg/ppc64/vector.c
index cbf4ae93323..70491d59251 100644
--- a/tests/tcg/ppc64/vector.c
+++ b/tests/tcg/ppc64/vector.c
@@ -1,6 +1,7 @@
#include <assert.h>
#include <stdint.h>
-#include "qemu/compiler.h"
+
+#define vector __attribute__((altivec(vector__)))
int main(void)
{
@@ -15,28 +16,28 @@ int main(void)
vector __uint128_t vbc_qi_src;
asm("vextractbm %0, %1" : "=r" (result_wi) : "v" (vbc_bi_src));
-#if HOST_BIG_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
assert(result_wi == 0b1101111111000011);
#else
assert(result_wi == 0b1100001111111011);
#endif
asm("vextracthm %0, %1" : "=r" (result_wi) : "v" (vbc_hi_src));
-#if HOST_BIG_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
assert(result_wi == 0b10010011);
#else
assert(result_wi == 0b11001001);
#endif
asm("vextractwm %0, %1" : "=r" (result_wi) : "v" (vbc_wi_src));
-#if HOST_BIG_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
assert(result_wi == 0b0011);
#else
assert(result_wi == 0b1100);
#endif
asm("vextractdm %0, %1" : "=r" (result_wi) : "v" (vbc_di_src));
-#if HOST_BIG_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
assert(result_wi == 0b10);
#else
assert(result_wi == 0b01);
diff --git a/tests/tcg/ppc64/vsx_f2i_nan.c b/tests/tcg/ppc64/vsx_f2i_nan.c
index 94b1a4eb02d..6a9d54faf52 100644
--- a/tests/tcg/ppc64/vsx_f2i_nan.c
+++ b/tests/tcg/ppc64/vsx_f2i_nan.c
@@ -1,5 +1,6 @@
#include <stdio.h>
-#include "qemu/compiler.h"
+
+#define vector __attribute__((altivec(vector__)))
typedef vector float vsx_float32_vec_t;
typedef vector double vsx_float64_vec_t;
@@ -104,7 +105,7 @@ static inline vsx_uint64_vec_t vsx_mask_out_float32_vec_to_uint64_vec(
static inline vsx_int32_vec_t vsx_mask_out_float64_vec_to_int32_vec(
vsx_int32_vec_t v)
{
-#if HOST_BIG_ENDIAN
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
const vsx_int32_vec_t valid_lanes_mask = {-1, 0, -1, 0};
#else
const vsx_int32_vec_t valid_lanes_mask = {0, -1, 0, -1};
@@ -209,7 +210,7 @@ static inline int test_vsx_conv_##SRC_T##_vec_to_##DEST_T##_vec( \
const int test_result = \
vsx_##DEST_T##_all_eq(expected_result, actual_result); \
\
- if (unlikely(test_result == 0)) { \
+ if (test_result == 0) { \
fputs("FAIL: Conversion of " #SRC_T " vector to " #DEST_T \
" vector failed\n", stdout); \
fputs("Source values: ", stdout); \
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 70/91] tests/tcg/ppc64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (68 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 71/91] tests/tcg/ppc64le: add missing float reference file Pierrick Bouvier
` (26 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/ppc64/meson.build | 56 +++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+)
create mode 100644 tests/tcg/ppc64/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 389e9f9b3f6..a23e63b8909 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -147,6 +147,7 @@ subdir('mips')
subdir('mips64')
subdir('mips64el')
subdir('or1k')
+subdir('ppc64')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/ppc64/meson.build b/tests/tcg/ppc64/meson.build
new file mode 100644
index 00000000000..1d06d2dc5a4
--- /dev/null
+++ b/tests/tcg/ppc64/meson.build
@@ -0,0 +1,56 @@
+cc_feat_cflags = {
+ 'power8': '-mcpu=power8',
+ 'power10': '-mcpu=power10',
+}
+
+tests = []
+
+# Multi arch tests
+foreach t: tcg_tests['multiarch-linux-user']['tests']
+ foreach src, setup: t
+ # ppc64 ABI uses function descriptors, and thus, QEMU can't find symbol
+ # for a given instruction. Thus, skip this test.
+ if fs.stem(src) == 'test-plugin-mem-access' and 'wrapper' in setup
+ continue
+ endif
+ tests += {src: setup}
+ endforeach
+endforeach
+
+tests += {
+ '../ppc64/bcdsub.c': {'cc_feat': 'power8'},
+ '../ppc64/byte_reverse.c': {'cc_feat': 'power10', 'qemu_args': ['-cpu', 'POWER10']},
+ '../ppc64/mffsce.c': {},
+ '../ppc64/mtfsf.c': {},
+ '../ppc64/non_signalling_xscv.c': {'cc_feat': 'power8'},
+ '../ppc64/signal_save_restore_xer.c': {},
+ '../ppc64/test-aes.c': {},
+ '../ppc64/vector.c': {'cc_feat': 'power10', 'qemu_args': ['-cpu', 'POWER10']},
+ '../ppc64/vsx_f2i_nan.c': {'cc_feat': 'power8'},
+ '../ppc64/xxspltw.c': {},
+ '../multiarch/sha512.c': {
+ 'exe_name': 'sha512-vector',
+ 'cc_feat': 'power10',
+ 'cflags': ['-O3'],
+ 'qemu_args': ['-cpu', 'POWER10'],
+ }
+}
+
+# export tests for ppc64le
+tcg_tests_ppc64 = tests
+
+if 'qemu-ppc64' in emulators
+ tcg_tests += {
+ 'ppc64-linux-user': {
+ 'cc': 'powerpc64-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'ppc64',
+ 'gdb_arch': 'ppc64',
+ 'gdb_feat_version': gdb_feat_version,
+ 'qemu': emulators['qemu-ppc64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 71/91] tests/tcg/ppc64le: add missing float reference file
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (69 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 70/91] tests/tcg/ppc64: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 72/91] tests/tcg/ppc64le: user tests Pierrick Bouvier
` (25 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++++++++++++++
1 file changed, 988 insertions(+)
create mode 100644 tests/tcg/ppc64le/float_convd.ref
diff --git a/tests/tcg/ppc64le/float_convd.ref b/tests/tcg/ppc64le/float_convd.ref
new file mode 100644
index 00000000000..2995a767c04
--- /dev/null
+++ b/tests/tcg/ppc64le/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 72/91] tests/tcg/ppc64le: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (70 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 71/91] tests/tcg/ppc64le: add missing float reference file Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 73/91] tests/tcg/riscv64: add float reference files Pierrick Bouvier
` (24 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/ppc64le/meson.build | 14 ++++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 tests/tcg/ppc64le/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index a23e63b8909..452af88f00b 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -148,6 +148,7 @@ subdir('mips64')
subdir('mips64el')
subdir('or1k')
subdir('ppc64')
+subdir('ppc64le')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/ppc64le/meson.build b/tests/tcg/ppc64le/meson.build
new file mode 100644
index 00000000000..1e464e23c14
--- /dev/null
+++ b/tests/tcg/ppc64le/meson.build
@@ -0,0 +1,14 @@
+if 'qemu-ppc64le' in emulators
+ tcg_tests += {
+ 'ppc64le-linux-user': {
+ 'cc': 'powerpc64le-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'ppc64le',
+ 'gdb_arch': 'ppc64le',
+ 'qemu': emulators['qemu-ppc64le'],
+ 'tests': tcg_tests_ppc64,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 73/91] tests/tcg/riscv64: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (71 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 72/91] tests/tcg/ppc64le: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 74/91] tests/tcg/riscv64: user tests Pierrick Bouvier
` (23 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++++++++++++++
tests/tcg/riscv64/float_convs.ref | 748 ++++++++++++++++++++++
tests/tcg/riscv64/float_madds.ref | 768 +++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/riscv64/float_convd.ref
create mode 100644 tests/tcg/riscv64/float_convs.ref
create mode 100644 tests/tcg/riscv64/float_madds.ref
diff --git a/tests/tcg/riscv64/float_convd.ref b/tests/tcg/riscv64/float_convd.ref
new file mode 100644
index 00000000000..d045f27ce21
--- /dev/null
+++ b/tests/tcg/riscv64/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
diff --git a/tests/tcg/riscv64/float_convs.ref b/tests/tcg/riscv64/float_convs.ref
new file mode 100644
index 00000000000..385bcccfca9
--- /dev/null
+++ b/tests/tcg/riscv64/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding upwards
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding downwards
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+### Rounding to zero
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff8000000000000) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372036854775807 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
diff --git a/tests/tcg/riscv64/float_madds.ref b/tests/tcg/riscv64/float_madds.ref
new file mode 100644
index 00000000000..5fe00031203
--- /dev/null
+++ b/tests/tcg/riscv64/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 74/91] tests/tcg/riscv64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (72 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 73/91] tests/tcg/riscv64: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 75/91] tests/tcg/riscv64: system tests Pierrick Bouvier
` (22 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/riscv64/meson.build | 36 +++++++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+)
create mode 100644 tests/tcg/riscv64/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 452af88f00b..5e82784d318 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -149,6 +149,7 @@ subdir('mips64el')
subdir('or1k')
subdir('ppc64')
subdir('ppc64le')
+subdir('riscv64')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/riscv64/meson.build b/tests/tcg/riscv64/meson.build
new file mode 100644
index 00000000000..393cd51d71a
--- /dev/null
+++ b/tests/tcg/riscv64/meson.build
@@ -0,0 +1,36 @@
+cc = 'riscv64-linux-gnu-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_arch = ['aarch64', 'x86_64']
+
+tests = []
+
+# Multi arch tests
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'noexec.c': {},
+ 'test-aes.c': {'qemu_args': ['-cpu', 'rv64,zk=on']},
+ 'test-div.c': {},
+ 'test-fcvtmod.c': {
+ 'cflags': ['-march=rv64imafdc'],
+ 'qemu_args': ['-cpu', 'rv64,d=true,zfa=true'],
+ },
+ 'test-noc.S': {
+ 'cflags': ['-nostdlib'],
+ 'qemu_args': ['-cpu', 'rv64,c=false'],
+ },
+}
+
+if 'qemu-riscv64' in emulators
+ tcg_tests += {
+ 'riscv64-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'riscv64',
+ 'gdb_arch': 'riscv64',
+ 'qemu': emulators['qemu-riscv64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 75/91] tests/tcg/riscv64: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (73 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 74/91] tests/tcg/riscv64: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main Pierrick Bouvier
` (21 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/riscv64/meson.build | 2 ++
tests/tcg/riscv64/system/meson.build | 38 ++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
create mode 100644 tests/tcg/riscv64/system/meson.build
diff --git a/tests/tcg/riscv64/meson.build b/tests/tcg/riscv64/meson.build
index 393cd51d71a..fabafa92261 100644
--- a/tests/tcg/riscv64/meson.build
+++ b/tests/tcg/riscv64/meson.build
@@ -2,6 +2,8 @@ cc = 'riscv64-linux-gnu-gcc'
cc_dockerfile = 'debian-all-test-cross'
cc_docker_arch = ['aarch64', 'x86_64']
+subdir('system')
+
tests = []
# Multi arch tests
diff --git a/tests/tcg/riscv64/system/meson.build b/tests/tcg/riscv64/system/meson.build
new file mode 100644
index 00000000000..0be20982df3
--- /dev/null
+++ b/tests/tcg/riscv64/system/meson.build
@@ -0,0 +1,38 @@
+tests = []
+
+# Multi arch tests are not supported
+# tests += tcg_tests['multiarch-softmmu']['tests']
+
+link_script = files('../semihost.ld')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-Wl,-T', link_script]
+qemu_args = ['-M', 'virt',
+ '-display', 'none',
+ '-serial', 'stdio',
+ '-semihosting',
+ '-bios']
+
+setup = {'cflags': cflags, 'qemu_args': qemu_args}
+
+tests += {
+ 'doubletrap.S': setup + {'plugin_test': {'plugin': 'discons'}},
+ #'interruptedmemory.S': setup + {'plugin_test': {'plugin': 'discons'}},
+ 'issue1060.S': setup,
+ 'test-mepc-masking.S': setup,
+ 'test-crc32.S': setup + {'qemu_args': ['-cpu', 'rv64,xlrbr=true', qemu_args]},
+}
+
+if 'qemu-system-riscv64' in emulators
+ tcg_tests += {
+ 'riscv64-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'riscv64',
+ 'gdb_arch': 'riscv64',
+ 'qemu': emulators['qemu-system-riscv64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (74 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 75/91] tests/tcg/riscv64: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:17 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 77/91] tests/tcg/s390x: add float reference files Pierrick Bouvier
` (20 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
tests/tcg/multiarch/gdbstub/registers.py expects to find this symbol to
compare state of registers before and after execution. Define it
explicitly.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/s390x/head64.S | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/tcg/s390x/head64.S b/tests/tcg/s390x/head64.S
index 4fe288388ab..0523fcacb33 100644
--- a/tests/tcg/s390x/head64.S
+++ b/tests/tcg/s390x/head64.S
@@ -14,6 +14,8 @@ main_pre:
aghi %r15,-160 /* reserve stack for C code */
brasl %r14,sclp_setup
brasl %r14,main
+.global _exit
+_exit:
larl %r1,success_psw /* check main() return code */
ltgr %r2,%r2
je 0f
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 77/91] tests/tcg/s390x: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (75 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 78/91] tests/tcg/s390x: user tests Pierrick Bouvier
` (19 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++++++++++++++++
tests/tcg/s390x/float_convs.ref | 748 ++++++++++++++++++++++++
tests/tcg/s390x/float_madds.ref | 768 +++++++++++++++++++++++++
3 files changed, 2504 insertions(+)
create mode 100644 tests/tcg/s390x/float_convd.ref
create mode 100644 tests/tcg/s390x/float_convs.ref
create mode 100644 tests/tcg/s390x/float_madds.ref
diff --git a/tests/tcg/s390x/float_convd.ref b/tests/tcg/s390x/float_convd.ref
new file mode 100644
index 00000000000..3b902296a79
--- /dev/null
+++ b/tests/tcg/s390x/float_convd.ref
@@ -0,0 +1,988 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding upwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000200000000000000p-25:0x33000001) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe800000000000000p-25:0x337ffff4) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801c00000000000000p-15:0x387fc00e) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000e00000000000000p-14:0x38800007) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x1.00000000000000000000p-149:0x00000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0aa00000000000000p+1:0x402df855) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding downwards
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x1.00000000000000000000p-149:0x80000001) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(-nan:0xffc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (OK)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (OK)
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (OK)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fc00000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fc00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fe00000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
diff --git a/tests/tcg/s390x/float_convs.ref b/tests/tcg/s390x/float_convs.ref
new file mode 100644
index 00000000000..17b20e06b5c
--- /dev/null
+++ b/tests/tcg/s390x/float_convs.ref
@@ -0,0 +1,748 @@
+### Rounding to nearest
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding upwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding downwards
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+### Rounding to zero
+from single: f32(-nan:0xffa00000)
+ to double: f64(-nan:0x00fffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-nan:0xffc00000)
+ to double: f64(-nan:0x00fff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INEXACT INVALID)
+ to int64: -9223372036854775808 (INEXACT INVALID)
+ to uint32: 0 (INEXACT INVALID)
+ to uint64: 0 (INEXACT INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (OK)
+ to uint32: 1 (OK)
+ to uint64: 1 (OK)
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (OK)
+ to uint32: 2 (OK)
+ to uint64: 2 (OK)
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (OK)
+ to uint32: 65503 (OK)
+ to uint64: 65503 (OK)
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (OK)
+ to uint32: 65504 (OK)
+ to uint64: 65504 (OK)
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (OK)
+ to uint32: 65505 (OK)
+ to uint64: 65505 (OK)
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (OK)
+ to uint32: 131007 (OK)
+ to uint64: 131007 (OK)
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (OK)
+ to uint32: 131008 (OK)
+ to uint64: 131008 (OK)
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (OK)
+ to uint32: 131009 (OK)
+ to uint64: 131009 (OK)
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INEXACT INVALID)
+ to int64: 9223372036854775807 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff8000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ffc000000000000) (INVALID)
+ to int32: -2147483648 (INVALID)
+ to int64: -9223372036854775808 (INVALID)
+ to uint32: 0 (INVALID)
+ to uint64: 0 (INVALID)
diff --git a/tests/tcg/s390x/float_madds.ref b/tests/tcg/s390x/float_madds.ref
new file mode 100644
index 00000000000..451cbec624d
--- /dev/null
+++ b/tests/tcg/s390x/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 78/91] tests/tcg/s390x: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (76 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 77/91] tests/tcg/s390x: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 79/91] tests/tcg/s390x: system tests Pierrick Bouvier
` (18 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/s390x/meson.build | 138 ++++++++++++++++++++++++++++++++++++
2 files changed, 139 insertions(+)
create mode 100644 tests/tcg/s390x/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 5e82784d318..52418b8b72e 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -150,6 +150,7 @@ subdir('or1k')
subdir('ppc64')
subdir('ppc64le')
subdir('riscv64')
+subdir('s390x')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/s390x/meson.build b/tests/tcg/s390x/meson.build
new file mode 100644
index 00000000000..295d24f0e19
--- /dev/null
+++ b/tests/tcg/s390x/meson.build
@@ -0,0 +1,138 @@
+cc = 's390x-linux-gnu-gcc'
+cc_dockerfile = 'debian-all-test-cross'
+cc_docker_arch = ['aarch64', 'x86_64']
+
+cc_feat_cflags = {
+ 'z14': '-march=z14',
+ 'z15': '-march=z15',
+}
+
+tests_s390x_pgm = [
+ 'br-odd.S',
+ 'cgrl-unaligned.S',
+ 'clrl-unaligned.S',
+ 'crl-unaligned.S',
+ 'ex-odd.S',
+ 'lgrl-unaligned.S',
+ 'llgfrl-unaligned.S',
+ 'lpswe-unaligned.S',
+ 'lrl-unaligned.S',
+ 'stgrl-unaligned.S',
+ 'strl-unaligned.S',
+]
+
+tests = []
+
+# Multi arch tests
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ # The following tests contain inline assembly that requires inlining,
+ # and thus cannot be built with -O0.
+ 'rxsbg.c': {'cflags': ['-O2']},
+ 'divide-to-integer.c': {'cflags': ['-O2', '-lm']},
+
+ 'hello-s390x.c': {},
+ 'hello-s390x-asm.S': {'cflags': ['-nostdlib']},
+ 'csst.c': {},
+ 'ipm.c': {},
+ 'exrl-trt.c': {},
+ 'exrl-trtr.c': {},
+ 'pack.c': {},
+ 'mie3-compl.c': {},
+ 'mie3-mvcrl.c': {},
+ 'mie3-sel.c': {},
+ 'mvo.c': {},
+ 'mvc.c': {},
+ 'shift.c': {},
+ 'trap.c': {},
+ 'signals-s390x.c': {},
+ 'branch-relative-long.c': {},
+ 'noexec.c': {},
+ 'div.c': {},
+ 'clst.c': {},
+ 'long-double.c': {},
+ 'cdsg.c': {},
+ 'chrl.c': {},
+ 'ex-relative-long.c': {},
+ 'ex-branch.c': {},
+ 'mxdb.c': {},
+ 'epsw.c': {},
+ 'larl.c': {},
+ 'mdeb.c': {},
+ 'cgebra.c': {'cflags': ['-lm']},
+ 'clgebr.c': {'cflags': ['-lm']},
+ 'clc.c': {},
+ 'laalg.c': {},
+ 'add-logical-with-carry.c': {},
+ 'lae.c': {},
+ 'cvd.c': {},
+ 'cvb.c': {},
+ 'ts.c': {},
+ 'ex-smc.c': {'cflags': ['-Wl,--no-warn-rwx-segments']},
+}
+
+foreach src: tests_s390x_pgm
+ tests += {
+ src: {'cflags': [files('pgm-specification-user.c')]}
+ }
+endforeach
+
+setup_z13 = {'cflags': ['-O2', '-march=z13']}
+tests += {
+ 'vistr.c': setup_z13,
+ 'lcbb.c': setup_z13,
+ 'locfhr.c': setup_z13,
+ 'vcksm.c': setup_z13,
+ 'vstl.c': setup_z13,
+ 'vrep.c': setup_z13,
+ 'precise-smc-user.c': setup_z13,
+ '../multiarch/sha512.c': {
+ 'exe_name': 'sha512-mvx',
+ 'cflags': setup_z13['cflags'] + ['-mvx', '-O3'],
+ }
+}
+
+setup_z14 = {
+ 'cc_feat': 'z14',
+ 'cflags': ['-O2', '-lm', '-Wl,--no-warn-rwx-segments']
+}
+tests += {
+ 'fma.c': setup_z14,
+ 'vfminmax.c': setup_z14,
+}
+
+setup_z15 = {'cc_feat': 'z15', 'cflags': ['-O2']}
+tests += {
+ 'vxeh2_vs.c': setup_z15,
+ 'vxeh2_vcvt.c': setup_z15,
+ 'vxeh2_vlstr.c': setup_z15,
+ 'vxeh2_vstrs.c': setup_z15,
+}
+
+tests += {
+ 'signals-s390x.c': {
+ 'test_name': 'signals',
+ 'gdb_test': ['--test', files('gdbstub/test-signals-s390x.py')],
+ },
+ 'hello-s390x-asm.S': {
+ 'test_name': 'svc',
+ 'gdb_test': ['--test', files('gdbstub/test-svc.py')],
+ },
+}
+
+if 'qemu-s390x' in emulators
+ tcg_tests += {
+ 's390x-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 's390x',
+ 'gdb_arch': 's390x',
+ 'gdb_feat_version': gdb_feat_version,
+ 'qemu': emulators['qemu-s390x'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 79/91] tests/tcg/s390x: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (77 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 78/91] tests/tcg/s390x: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 80/91] tests/tcg/sh4: add float reference files Pierrick Bouvier
` (17 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/s390x/meson.build | 2 +
tests/tcg/s390x/system/meson.build | 92 ++++++++++++++++++++++++++++++
2 files changed, 94 insertions(+)
create mode 100644 tests/tcg/s390x/system/meson.build
diff --git a/tests/tcg/s390x/meson.build b/tests/tcg/s390x/meson.build
index 295d24f0e19..7993fc40783 100644
--- a/tests/tcg/s390x/meson.build
+++ b/tests/tcg/s390x/meson.build
@@ -21,6 +21,8 @@ tests_s390x_pgm = [
'strl-unaligned.S',
]
+subdir('system')
+
tests = []
# Multi arch tests
diff --git a/tests/tcg/s390x/system/meson.build b/tests/tcg/s390x/system/meson.build
new file mode 100644
index 00000000000..0cd79f77644
--- /dev/null
+++ b/tests/tcg/s390x/system/meson.build
@@ -0,0 +1,92 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('../softmmu.ld')[0]
+head64 = files('../head64.S')[0]
+console = files('../console.c')[0]
+ipl_inc = meson.source_root()/'include'/'hw'/'s390x'/'ipl'
+libc_inc = meson.source_root()/'roms'/'SLOF'/'lib'/'libc'/'include'
+cflags = ['-nostdlib',
+ '-I', minilib_dir, minilib_printf,
+ '-I', ipl_inc,
+ '-I', libc_inc,
+ '-march=z13',
+ head64, console]
+asmflags = ['-nostdlib',
+ '-Wl,-T', link_script, '-Wl,--build-id=none',
+ '-march=z13', '-Wa,--noexecstack']
+qemu_args = ['-display', 'none',
+ '-action', 'panic=exit-failure',
+ '-serial', 'stdio',
+ '-kernel']
+
+# Multi arch tests - add cflags only once per src
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=0'
+ endif
+ if 'test_name' in setup and setup['test_name'] == 'memory-access'
+ # s390x clears the BSS section so we need to account for that
+ # ./validate-memory-counts.py --bss-cleared
+ setup += {'wrapper': setup['wrapper'] + '--bss-cleared'}
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_args}}
+ endforeach
+endforeach
+
+tests += {
+ 'mvc-smc.c': {'cflags': [cflags], 'qemu_args': qemu_args},
+}
+
+setup_asm = {'cflags': [asmflags], 'qemu_args': qemu_args}
+tests += {
+ 'bal.S': setup_asm,
+ 'cksm.S': setup_asm,
+ 'clm.S': setup_asm,
+ 'exrl-ssm-early.S': setup_asm,
+ 'icm.S': setup_asm,
+ 'sam.S': setup_asm,
+ 'lpsw.S': setup_asm,
+ 'lpswe-early.S': setup_asm,
+ 'lra.S': setup_asm,
+ 'mc.S': setup_asm,
+ 'per.S': setup_asm,
+ 'precise-smc-softmmu.S': setup_asm,
+ 'sckc.S': setup_asm,
+ 'ssm-early.S': setup_asm,
+ 'stosm-early.S': setup_asm,
+ 'stpq.S': setup_asm,
+ 'unaligned-lowcore.S': setup_asm,
+}
+
+foreach src: tests_s390x_pgm
+ tests += {
+ src: {
+ 'cflags': [asmflags, files('../pgm-specification-softmmu.S')],
+ 'qemu_args': qemu_args,
+ }
+ }
+endforeach
+
+if 'qemu-system-s390x' in emulators
+ tcg_tests += {
+ 's390x-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 's390x',
+ 'gdb_arch': 's390x',
+ 'qemu': emulators['qemu-system-s390x'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 80/91] tests/tcg/sh4: add float reference files
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (78 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 79/91] tests/tcg/s390x: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 81/91] tests/tcg/sh4: user tests Pierrick Bouvier
` (16 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/sh4/float_convd.ref | 494 ++++++++++++++++++++++++++++++++++
tests/tcg/sh4/float_convs.ref | 374 +++++++++++++++++++++++++
tests/tcg/sh4/float_madds.ref | 384 ++++++++++++++++++++++++++
3 files changed, 1252 insertions(+)
create mode 100644 tests/tcg/sh4/float_convd.ref
create mode 100644 tests/tcg/sh4/float_convs.ref
create mode 100644 tests/tcg/sh4/float_madds.ref
diff --git a/tests/tcg/sh4/float_convd.ref b/tests/tcg/sh4/float_convd.ref
new file mode 100644
index 00000000000..23d725bcb86
--- /dev/null
+++ b/tests/tcg/sh4/float_convd.ref
@@ -0,0 +1,494 @@
+### Rounding to nearest
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-inf:0xff800000) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb600000000000000p+1:0x40490fdb) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.00000000000000000000p+31:0x4f000000) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(inf:0x7f800000) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-nan:0x00fff8000000000000)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(-inf:0x00fff0000000000000)
+ to single: f32(-inf:0xff800000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.fffffffffffff0000000p+1023:0x00ffefffffffffffff)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OVERFLOW INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000)
+ to single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from double: f64(-0x1.1874b135ff6540000000p+103:0x00c661874b135ff654)
+ to single: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.c0bab523323b90000000p+99:0x00c62c0bab523323b9)
+ to single: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) (INEXACT )
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from double: f64(-0x1.00000000000000000000p+1:0x00c000000000000000)
+ to single: f32(-0x1.00000000000000000000p+1:0xc0000000) (OK)
+ to int32: -2 (OK)
+ to int64: -2 (INEXACT )
+ to uint32: -2 (OK)
+ to uint64: 4294967294 (INEXACT )
+from double: f64(-0x1.00000000000000000000p+0:0x00bff0000000000000)
+ to single: f32(-0x1.00000000000000000000p+0:0xbf800000) (OK)
+ to int32: -1 (OK)
+ to int64: -1 (INEXACT )
+ to uint32: -1 (OK)
+ to uint64: 4294967295 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-1022:0x008010000000000000)
+ to single: f32(-0x0.00000000000000000000p+0:0x80000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000)
+ to single: f32(-0x1.00000000000000000000p-126:0x80800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.00000000000000000000p+0:00000000000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from double: f64(0x1.00000000000000000000p-126:0x003810000000000000)
+ to single: f32(0x1.00000000000000000000p-126:0x00800000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000001c5f680000000p-25:0x003e600000001c5f68)
+ to single: f32(0x1.00000000000000000000p-25:0x33000000) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ffffe6cb2fa820000000p-25:0x003e6ffffe6cb2fa82)
+ to single: f32(0x1.ffffe600000000000000p-25:0x337ffff3) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.ff801a9af58a10000000p-15:0x003f0ff801a9af58a1)
+ to single: f32(0x1.ff801a00000000000000p-15:0x387fc00d) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000c06a1ef50000000p-14:0x003f100000c06a1ef5)
+ to single: f32(0x1.00000c00000000000000p-14:0x38800006) (INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000)
+ to single: f32(0x1.00400000000000000000p+0:0x3f802000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p-1022:0x000010000000000000)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from double: f64(0x0.9ea82a22876800000000p-1022:0x000009ea82a2287680)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x0.ab98fba8432100000000p-1022:0x00000ab98fba843210)
+ to single: f32(0x0.00000000000000000000p+0:0000000000) (UNDERFLOW INEXACT )
+ to int32: 0 (INEXACT )
+ to int64: 0 (UNDERFLOW INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (UNDERFLOW INEXACT )
+from double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000)
+ to single: f32(0x1.00000000000000000000p+0:0x3f800000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from double: f64(0x1.00000000000000000000p+1:0x004000000000000000)
+ to single: f32(0x1.00000000000000000000p+1:0x40000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.5bf0a8b1457690000000p+1:0x004005bf0a8b145769)
+ to single: f32(0x1.5bf0a800000000000000p+1:0x402df854) (INEXACT )
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from double: f64(0x1.921fb54442d180000000p+1:0x00400921fb54442d18)
+ to single: f32(0x1.921fb400000000000000p+1:0x40490fda) (INEXACT )
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000)
+ to single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+15:0x477fe000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000)
+ to single: f32(0x1.ffc20000000000000000p+15:0x477fe100) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000)
+ to single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000)
+ to single: f32(0x1.ffc00000000000000000p+16:0x47ffe000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000)
+ to single: f32(0x1.ffc10000000000000000p+16:0x47ffe080) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from double: f64(0x1.fffffffc000000000000p+30:0x0041dfffffffc00000)
+ to single: f32(0x1.fffffe00000000000000p+30:0x4effffff) (INEXACT )
+ to int32: 2147483647 (OK)
+ to int64: 2147483647 (INEXACT )
+ to uint32: 2147483647 (OK)
+ to uint64: 2147483647 (INEXACT )
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(0x1.fffffffffffff0000000p+1023:0x007fefffffffffffff)
+ to single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) (OVERFLOW INEXACT )
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from double: f64(inf:0x007ff0000000000000)
+ to single: f32(inf:0x7f800000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from double: f64(nan:0x007ff8000000000000)
+ to single: f32(nan:0x7fbfffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff0000000000001)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from double: f64(nan:0x007ff4000000000000)
+ to single: f32(nan:0x7fbfffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/sh4/float_convs.ref b/tests/tcg/sh4/float_convs.ref
new file mode 100644
index 00000000000..b25ab921d8d
--- /dev/null
+++ b/tests/tcg/sh4/float_convs.ref
@@ -0,0 +1,374 @@
+### Rounding to nearest
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+### Rounding to zero
+from single: f32(nan:0xffa00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0xffc00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(-inf:0xff800000)
+ to double: f64(-inf:0x00fff0000000000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+ to double: f64(-0x1.fffffe00000000000000p+127:0x00c7efffffe0000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INEXACT INVALID)
+from single: f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+ to double: f64(-0x1.1874b200000000000000p+103:0x00c661874b20000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+ to double: f64(-0x1.c0bab600000000000000p+99:0x00c62c0bab60000000) (OK)
+ to int32: -2147483648 (INVALID)
+ to int64: 1 (INEXACT INVALID)
+ to uint32: -2147483648 (INVALID)
+ to uint64: -9223372034707292160 (INVALID)
+from single: f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+ to double: f64(-0x1.31f75000000000000000p-40:0x00bd731f7500000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+ to double: f64(-0x1.50544400000000000000p-66:0x00bbd5054440000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(-0x1.00000000000000000000p-126:0x80800000)
+ to double: f64(-0x1.00000000000000000000p-126:0x00b810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x0.00000000000000000000p+0:0000000000)
+ to double: f64(0x0.00000000000000000000p+0:00000000000000000000) (OK)
+ to int32: 0 (OK)
+ to int64: 0 (OK)
+ to uint32: 0 (OK)
+ to uint64: 0 (OK)
+from single: f32(0x1.00000000000000000000p-126:0x00800000)
+ to double: f64(0x1.00000000000000000000p-126:0x003810000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p-25:0x33000000)
+ to double: f64(0x1.00000000000000000000p-25:0x003e60000000000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+ to double: f64(0x1.ffffe600000000000000p-25:0x003e6ffffe60000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+ to double: f64(0x1.ff801a00000000000000p-15:0x003f0ff801a0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000c00000000000000p-14:0x38800006)
+ to double: f64(0x1.00000c00000000000000p-14:0x003f100000c0000000) (OK)
+ to int32: 0 (INEXACT )
+ to int64: 0 (INEXACT )
+ to uint32: 0 (INEXACT )
+ to uint64: 0 (INEXACT )
+from single: f32(0x1.00000000000000000000p+0:0x3f800000)
+ to double: f64(0x1.00000000000000000000p+0:0x003ff0000000000000) (OK)
+ to int32: 1 (OK)
+ to int64: 1 (INEXACT )
+ to uint32: 1 (OK)
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00400000000000000000p+0:0x3f802000)
+ to double: f64(0x1.00400000000000000000p+0:0x003ff0040000000000) (OK)
+ to int32: 1 (INEXACT )
+ to int64: 1 (INEXACT )
+ to uint32: 1 (INEXACT )
+ to uint64: 1 (INEXACT )
+from single: f32(0x1.00000000000000000000p+1:0x40000000)
+ to double: f64(0x1.00000000000000000000p+1:0x004000000000000000) (OK)
+ to int32: 2 (OK)
+ to int64: 2 (INEXACT )
+ to uint32: 2 (OK)
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.5bf0a800000000000000p+1:0x402df854)
+ to double: f64(0x1.5bf0a800000000000000p+1:0x004005bf0a80000000) (OK)
+ to int32: 2 (INEXACT )
+ to int64: 2 (INEXACT )
+ to uint32: 2 (INEXACT )
+ to uint64: 2 (INEXACT )
+from single: f32(0x1.921fb600000000000000p+1:0x40490fdb)
+ to double: f64(0x1.921fb600000000000000p+1:0x00400921fb60000000) (OK)
+ to int32: 3 (INEXACT )
+ to int64: 3 (INEXACT )
+ to uint32: 3 (INEXACT )
+ to uint64: 3 (INEXACT )
+from single: f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+ to double: f64(0x1.ffbe0000000000000000p+15:0x0040effbe000000000) (OK)
+ to int32: 65503 (OK)
+ to int64: 65503 (INEXACT )
+ to uint32: 65503 (OK)
+ to uint64: 65503 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+15:0x477fe000)
+ to double: f64(0x1.ffc00000000000000000p+15:0x0040effc0000000000) (OK)
+ to int32: 65504 (OK)
+ to int64: 65504 (INEXACT )
+ to uint32: 65504 (OK)
+ to uint64: 65504 (INEXACT )
+from single: f32(0x1.ffc20000000000000000p+15:0x477fe100)
+ to double: f64(0x1.ffc20000000000000000p+15:0x0040effc2000000000) (OK)
+ to int32: 65505 (OK)
+ to int64: 65505 (INEXACT )
+ to uint32: 65505 (OK)
+ to uint64: 65505 (INEXACT )
+from single: f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+ to double: f64(0x1.ffbf0000000000000000p+16:0x0040fffbf000000000) (OK)
+ to int32: 131007 (OK)
+ to int64: 131007 (INEXACT )
+ to uint32: 131007 (OK)
+ to uint64: 131007 (INEXACT )
+from single: f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+ to double: f64(0x1.ffc00000000000000000p+16:0x0040fffc0000000000) (OK)
+ to int32: 131008 (OK)
+ to int64: 131008 (INEXACT )
+ to uint32: 131008 (OK)
+ to uint64: 131008 (INEXACT )
+from single: f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+ to double: f64(0x1.ffc10000000000000000p+16:0x0040fffc1000000000) (OK)
+ to int32: 131009 (OK)
+ to int64: 131009 (INEXACT )
+ to uint32: 131009 (OK)
+ to uint64: 131009 (INEXACT )
+from single: f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+ to double: f64(0x1.c0bab600000000000000p+99:0x00462c0bab60000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+ to double: f64(0x1.fffffe00000000000000p+127:0x0047efffffe0000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INEXACT INVALID)
+ to uint32: -1 (INEXACT INVALID)
+ to uint64: -1 (INEXACT INVALID)
+from single: f32(inf:0x7f800000)
+ to double: f64(inf:0x007ff0000000000000) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: -1 (INVALID)
+ to uint32: -1 (INVALID)
+ to uint64: -1 (INVALID)
+from single: f32(nan:0x7fc00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (INVALID)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
+from single: f32(nan:0x7fa00000)
+ to double: f64(nan:0x007ff7ffffffffffff) (OK)
+ to int32: 2147483647 (INVALID)
+ to int64: 9223372034707292159 (INVALID)
+ to uint32: 2147483647 (INVALID)
+ to uint64: 9223372034707292159 (INVALID)
diff --git a/tests/tcg/sh4/float_madds.ref b/tests/tcg/sh4/float_madds.ref
new file mode 100644
index 00000000000..6d96a2a5929
--- /dev/null
+++ b/tests/tcg/sh4/float_madds.ref
@@ -0,0 +1,384 @@
+### Rounding to nearest
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/0)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (0/2)
+op : f32(nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/1)
+op : f32(nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(nan:0xffa00000) + f32(nan:0xffc00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/0)
+op : f32(nan:0xffa00000) * f32(nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/1)
+op : f32(nan:0xffc00000) * f32(nan:0x7fa00000) + f32(nan:0xffa00000)
+res: f32(nan:0x7fbfffff) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 81/91] tests/tcg/sh4: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (79 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 80/91] tests/tcg/sh4: add float reference files Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 82/91] tests/tcg/tricore: system tests Pierrick Bouvier
` (15 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/sh4/meson.build | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 tests/tcg/sh4/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 52418b8b72e..59e71d82c99 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -151,6 +151,7 @@ subdir('ppc64')
subdir('ppc64le')
subdir('riscv64')
subdir('s390x')
+subdir('sh4')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/sh4/meson.build b/tests/tcg/sh4/meson.build
new file mode 100644
index 00000000000..2d691a1aeca
--- /dev/null
+++ b/tests/tcg/sh4/meson.build
@@ -0,0 +1,25 @@
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+tests += {
+ 'test-addv.c': {},
+ 'test-macl.c': {},
+ 'test-macw.c': {},
+ 'test-subv.c': {},
+}
+
+if 'qemu-sh4' in emulators
+ tcg_tests += {
+ 'sh4-linux-user': {
+ 'cc': 'sh4-linux-gnu-gcc',
+ 'cc_dockerfile': 'debian-all-test-cross',
+ 'cc_docker_arch': ['aarch64', 'x86_64'],
+ 'cc_feat_cflags': cc_feat_cflags,
+ 'folder': 'sh4',
+ 'gdb_arch': 'sh4',
+ 'qemu': emulators['qemu-sh4'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 82/91] tests/tcg/tricore: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (80 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 81/91] tests/tcg/sh4: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 18:09 ` Parthiban
2026-07-06 22:33 ` [PATCH v3 83/91] Revert "tests/tcg/tricore: system tests" Pierrick Bouvier
` (14 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/tricore/meson.build | 56 +++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+)
create mode 100644 tests/tcg/tricore/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 59e71d82c99..b2630176b7f 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -152,6 +152,7 @@ subdir('ppc64le')
subdir('riscv64')
subdir('s390x')
subdir('sh4')
+subdir('tricore')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/tricore/meson.build b/tests/tcg/tricore/meson.build
new file mode 100644
index 00000000000..6303d6a912c
--- /dev/null
+++ b/tests/tcg/tricore/meson.build
@@ -0,0 +1,56 @@
+tests = []
+
+link_script = files('link.ld')[0]
+crt0 = files('c'/'crt0-tc2x.S')
+asmflags = ['-Wl,--mcpu=tc162',
+ '-Wl,-T', link_script,
+ '-mtc162',
+ '-nostartfiles']
+cflags = [asmflags, crt0]
+qemu_args = ['-display', 'none',
+ '-M', 'tricore_testboard',
+ '-cpu', 'tc37x']
+
+# Multi arch tests are not supported
+# tests += tcg_tests['multiarch-softmmu']['tests']
+
+setup_asm = {'cflags': asmflags, 'qemu_args': qemu_args}
+setup_c = {'cflags': cflags, 'qemu_args': qemu_args}
+
+tests += {
+ 'asm/test_abs.S': setup_asm,
+ 'asm/test_bmerge.S': setup_asm,
+ 'asm/test_clz.S': setup_asm,
+ 'asm/test_crcn.S': setup_asm,
+ 'asm/test_dextr.S': setup_asm,
+ 'asm/test_dvstep.S': setup_asm,
+ 'asm/test_fadd.S': setup_asm,
+ 'asm/test_fmul.S': setup_asm,
+ 'asm/test_ftohp.S': setup_asm,
+ 'asm/test_ftoi.S': setup_asm,
+ 'asm/test_ftou.S': setup_asm,
+ 'asm/test_hptof.S': setup_asm,
+ 'asm/test_imask.S': setup_asm,
+ 'asm/test_insert.S': setup_asm,
+ 'asm/test_ld_bu.S': setup_asm,
+ 'asm/test_ld_h.S': setup_asm,
+ 'asm/test_madd.S': setup_asm,
+ 'asm/test_msub.S': setup_asm,
+ 'asm/test_muls.S': setup_asm,
+ 'c/test_boot_to_main.c': setup_c,
+ 'c/test_context_save_areas.c': setup_c,
+}
+
+if 'qemu-system-tricore' in emulators
+ tcg_tests += {
+ 'tricore-softmmu': {
+ 'cc': 'tricore-gcc',
+ 'cc_dockerfile': 'debian-tricore-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'folder': 'tricore',
+ 'gdb_arch': 'tricore',
+ 'qemu': emulators['qemu-system-tricore'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 83/91] Revert "tests/tcg/tricore: system tests"
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (81 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 82/91] tests/tcg/tricore: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 84/91] tests/tcg/x86_64: add missing float reference file Pierrick Bouvier
` (13 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Those tests are hanging for now. To be investigated.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 -
tests/tcg/tricore/meson.build | 56 -----------------------------------
2 files changed, 57 deletions(-)
delete mode 100644 tests/tcg/tricore/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index b2630176b7f..59e71d82c99 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -152,7 +152,6 @@ subdir('ppc64le')
subdir('riscv64')
subdir('s390x')
subdir('sh4')
-subdir('tricore')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/tricore/meson.build b/tests/tcg/tricore/meson.build
deleted file mode 100644
index 6303d6a912c..00000000000
--- a/tests/tcg/tricore/meson.build
+++ /dev/null
@@ -1,56 +0,0 @@
-tests = []
-
-link_script = files('link.ld')[0]
-crt0 = files('c'/'crt0-tc2x.S')
-asmflags = ['-Wl,--mcpu=tc162',
- '-Wl,-T', link_script,
- '-mtc162',
- '-nostartfiles']
-cflags = [asmflags, crt0]
-qemu_args = ['-display', 'none',
- '-M', 'tricore_testboard',
- '-cpu', 'tc37x']
-
-# Multi arch tests are not supported
-# tests += tcg_tests['multiarch-softmmu']['tests']
-
-setup_asm = {'cflags': asmflags, 'qemu_args': qemu_args}
-setup_c = {'cflags': cflags, 'qemu_args': qemu_args}
-
-tests += {
- 'asm/test_abs.S': setup_asm,
- 'asm/test_bmerge.S': setup_asm,
- 'asm/test_clz.S': setup_asm,
- 'asm/test_crcn.S': setup_asm,
- 'asm/test_dextr.S': setup_asm,
- 'asm/test_dvstep.S': setup_asm,
- 'asm/test_fadd.S': setup_asm,
- 'asm/test_fmul.S': setup_asm,
- 'asm/test_ftohp.S': setup_asm,
- 'asm/test_ftoi.S': setup_asm,
- 'asm/test_ftou.S': setup_asm,
- 'asm/test_hptof.S': setup_asm,
- 'asm/test_imask.S': setup_asm,
- 'asm/test_insert.S': setup_asm,
- 'asm/test_ld_bu.S': setup_asm,
- 'asm/test_ld_h.S': setup_asm,
- 'asm/test_madd.S': setup_asm,
- 'asm/test_msub.S': setup_asm,
- 'asm/test_muls.S': setup_asm,
- 'c/test_boot_to_main.c': setup_c,
- 'c/test_context_save_areas.c': setup_c,
-}
-
-if 'qemu-system-tricore' in emulators
- tcg_tests += {
- 'tricore-softmmu': {
- 'cc': 'tricore-gcc',
- 'cc_dockerfile': 'debian-tricore-cross',
- 'cc_docker_arch': ['x86_64'],
- 'folder': 'tricore',
- 'gdb_arch': 'tricore',
- 'qemu': emulators['qemu-system-tricore'],
- 'tests': tests,
- }
- }
-endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 84/91] tests/tcg/x86_64: add missing float reference file
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (82 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 83/91] Revert "tests/tcg/tricore: system tests" Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 85/91] tests/tcg/x86_64: user tests Pierrick Bouvier
` (12 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/x86_64/float_madds.ref | 768 +++++++++++++++++++++++++++++++
1 file changed, 768 insertions(+)
create mode 100644 tests/tcg/x86_64/float_madds.ref
diff --git a/tests/tcg/x86_64/float_madds.ref b/tests/tcg/x86_64/float_madds.ref
new file mode 100644
index 00000000000..79419f003e7
--- /dev/null
+++ b/tests/tcg/x86_64/float_madds.ref
@@ -0,0 +1,768 @@
+### Rounding to nearest
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding upwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27fa00000000000000p+60:0x5d8613fd) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46200000000000000p+34:0x50936231) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f94000000000000000p-106:0x0ac8fca0) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe800000000000000p-25:0x337ffff4) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe800000000000000p-50:0x26fffff4) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000200000000000000p-25:0x33000001) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00080000000000000000p-25:0x33000400) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f400000000000000p-24:0x338000fa) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000e00000000000000p-14:0x38800007) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf600000000000000p-24:0x3387fdfb) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801c00000000000000p-15:0x387fc00e) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000200000000000000p+0:0x3f800001) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01a00000000000000p-14:0x38ffe00d) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440200000000000000p+0:0x3f802201) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040200000000000000p+0:0x3f800201) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d400000000000000p+2:0x409711ea) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804200000000000000p+3:0x41094021) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458200000000000000p+3:0x4128a2c1) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0600000000000000p+3:0x41100603) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1600000000000000p+15:0x477fe78b) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3c00000000000000p+17:0x4848f69e) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56200000000000000p+17:0x482de2b1) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edf000000000000000p+18:0x488476f8) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0a00000000000000p+31:0x4f7fbf05) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7a00000000000000p+18:0x4884773d) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+31:0x4f7fc005) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840800000000000000p+31:0x4f7fc204) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+31:0x4f7fc104) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860800000000000000p+31:0x4f7fc304) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820800000000000000p+32:0x4fffc104) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800a00000000000000p+32:0x4fffc005) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830800000000000000p+32:0x4fffc184) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8a00000000000000p+33:0x507fbfc5) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840800000000000000p+32:0x4fffc204) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800a00000000000000p+33:0x507fc005) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820800000000000000p+33:0x507fc104) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810800000000000000p+33:0x507fc084) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab800000000000000p+99:0x71605d5c) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0838000000000000000p+116:0x79e041c0) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c082a000000000000000p+116:0x79e04150) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-148:0x00000002) flags=UNDERFLOW INEXACT (32/0)
+### Rounding downwards
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b200000000000000p+103:0xf30c3a59) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f75000000000000000p-40:0xab98fba8) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x1.00000000000000000000p-149:0x80000001) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
+### Rounding to zero
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/0)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-nan:0xffa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (0/1)
+op : f32(-inf:0xff800000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (0/2)
+op : f32(-nan:0xffc00000) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(-nan:0xffc00000) flags=OK (1/0)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffc00000) flags=OK (1/1)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-nan:0xffc00000) + f32(-inf:0xff800000)
+res: f32(-nan:0xffc00000) flags=OK (1/2)
+op : f32(-inf:0xff800000) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(inf:0x7f800000) flags=OK (2/0)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-inf:0xff800000)
+res: f32(-inf:0xff800000) flags=OK (2/1)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-inf:0xff800000) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(inf:0x7f800000) flags=OK (2/2)
+op : f32(-0x1.fffffe00000000000000p+127:0xff7fffff) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/0)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.fffffe00000000000000p+127:0xff7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/1)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.fffffe00000000000000p+127:0xff7fffff) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (3/2)
+op : f32(-0x1.1874b200000000000000p+103:0xf30c3a59) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (4/0)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.1874b200000000000000p+103:0xf30c3a59)
+res: f32(-0x1.1874b000000000000000p+103:0xf30c3a58) flags=INEXACT (4/1)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.1874b200000000000000p+103:0xf30c3a59) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (4/2)
+op : f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(0x1.0c27f800000000000000p+60:0x5d8613fc) flags=INEXACT (5/0)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.c0bab600000000000000p+99:0xf1605d5b)
+res: f32(-0x1.c0bab400000000000000p+99:0xf1605d5a) flags=INEXACT (5/1)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.c0bab600000000000000p+99:0xf1605d5b) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(0x1.26c46000000000000000p+34:0x50936230) flags=INEXACT (5/2)
+op : f32(-0x1.31f75000000000000000p-40:0xab98fba8) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(0x1.91f93e00000000000000p-106:0x0ac8fc9f) flags=INEXACT (6/0)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(-0x1.31f75000000000000000p-40:0xab98fba8)
+res: f32(-0x1.31f74e00000000000000p-40:0xab98fba7) flags=INEXACT (6/1)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(-0x1.31f75000000000000000p-40:0xab98fba8) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544200000000000000p-66:0x9ea82a21) flags=INEXACT (6/2)
+op : f32(-0x1.50544400000000000000p-66:0x9ea82a22) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (7/0)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(-0x1.50544400000000000000p-66:0x9ea82a22)
+res: f32(-0x1.50544400000000000000p-66:0x9ea82a22) flags=OK (7/1)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(-0x1.50544400000000000000p-66:0x9ea82a22) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (7/2)
+op : f32(-0x1.00000000000000000000p-126:0x80800000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (8/0)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(-0x1.00000000000000000000p-126:0x80800000)
+res: f32(-0x1.00000000000000000000p-126:0x80800000) flags=OK (8/1)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(-0x1.00000000000000000000p-126:0x80800000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(-0x0.00000000000000000000p+0:0x80000000) flags=UNDERFLOW INEXACT (8/2)
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=OK (9/0)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=UNDERFLOW INEXACT (9/1)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x0.00000000000000000000p+0:0000000000) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.00000000000000000000p-126:0x00800000) flags=OK (9/2)
+op : f32(0x1.00000000000000000000p-126:0x00800000) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.ffffe600000000000000p-25:0x337ffff3) flags=INEXACT (10/0)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.00000000000000000000p-126:0x00800000)
+res: f32(0x1.ffffe600000000000000p-50:0x26fffff3) flags=INEXACT (10/1)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.00000000000000000000p-126:0x00800000) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.00000000000000000000p-25:0x33000000) flags=INEXACT (10/2)
+op : f32(0x1.00000000000000000000p-25:0x33000000) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (11/0)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000000000000000000p-25:0x33000000)
+res: f32(0x1.0007fe00000000000000p-25:0x330003ff) flags=INEXACT (11/1)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000000000000000000p-25:0x33000000) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0001f200000000000000p-24:0x338000f9) flags=INEXACT (11/2)
+op : f32(0x1.ffffe600000000000000p-25:0x337ffff3) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00000c00000000000000p-14:0x38800006) flags=INEXACT (12/0)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.ffffe600000000000000p-25:0x337ffff3)
+res: f32(0x1.0ffbf400000000000000p-24:0x3387fdfa) flags=INEXACT (12/1)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.ffffe600000000000000p-25:0x337ffff3) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ff801a00000000000000p-15:0x387fc00d) flags=INEXACT (12/2)
+op : f32(0x1.ff801a00000000000000p-15:0x387fc00d) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00000000000000000000p+0:0x3f800000) flags=INEXACT (13/0)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.ff801a00000000000000p-15:0x387fc00d)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/1)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.ff801a00000000000000p-15:0x387fc00d) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.ffc01800000000000000p-14:0x38ffe00c) flags=INEXACT (13/2)
+op : f32(0x1.00000c00000000000000p-14:0x38800006) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/0)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000c00000000000000p-14:0x38800006)
+res: f32(0x1.00440000000000000000p+0:0x3f802200) flags=INEXACT (14/1)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000c00000000000000p-14:0x38800006) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.00040000000000000000p+0:0x3f800200) flags=INEXACT (14/2)
+op : f32(0x1.00000000000000000000p+0:0x3f800000) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/0)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.00000000000000000000p+0:0x3f800000)
+res: f32(0x1.80400000000000000000p+1:0x40402000) flags=OK (15/1)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.00000000000000000000p+0:0x3f800000) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.80200000000000000000p+1:0x40401000) flags=OK (15/2)
+op : f32(0x1.00400000000000000000p+0:0x3f802000) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.2e185400000000000000p+2:0x40970c2a) flags=OK (16/0)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.00400000000000000000p+0:0x3f802000)
+res: f32(0x1.9c00a800000000000000p+2:0x40ce0054) flags=OK (16/1)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.00400000000000000000p+0:0x3f802000) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.2e23d200000000000000p+2:0x409711e9) flags=INEXACT (16/2)
+op : f32(0x1.00000000000000000000p+1:0x40000000) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.12804000000000000000p+3:0x41094020) flags=INEXACT (17/0)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.00000000000000000000p+1:0x40000000)
+res: f32(0x1.51458000000000000000p+3:0x4128a2c0) flags=INEXACT (17/1)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.00000000000000000000p+1:0x40000000) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.200c0400000000000000p+3:0x41100602) flags=INEXACT (17/2)
+op : f32(0x1.5bf0a800000000000000p+1:0x402df854) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ffcf1400000000000000p+15:0x477fe78a) flags=INEXACT (18/0)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.5bf0a800000000000000p+1:0x402df854)
+res: f32(0x1.91ed3a00000000000000p+17:0x4848f69d) flags=INEXACT (18/1)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.5bf0a800000000000000p+1:0x402df854) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.5bc56000000000000000p+17:0x482de2b0) flags=INEXACT (18/2)
+op : f32(0x1.921fb600000000000000p+1:0x40490fdb) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.08edee00000000000000p+18:0x488476f7) flags=INEXACT (19/0)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.921fb600000000000000p+1:0x40490fdb)
+res: f32(0x1.ff7e0800000000000000p+31:0x4f7fbf04) flags=INEXACT (19/1)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.921fb600000000000000p+1:0x40490fdb) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.08ee7800000000000000p+18:0x4884773c) flags=INEXACT (19/2)
+op : f32(0x1.ffbe0000000000000000p+15:0x477fdf00) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+31:0x4f7fc004) flags=INEXACT (20/0)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbe0000000000000000p+15:0x477fdf00)
+res: f32(0x1.ff840600000000000000p+31:0x4f7fc203) flags=INEXACT (20/1)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbe0000000000000000p+15:0x477fdf00) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+31:0x4f7fc103) flags=INEXACT (20/2)
+op : f32(0x1.ffc00000000000000000p+15:0x477fe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff860600000000000000p+31:0x4f7fc303) flags=INEXACT (21/0)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+15:0x477fe000)
+res: f32(0x1.ff820600000000000000p+32:0x4fffc103) flags=INEXACT (21/1)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+15:0x477fe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff800800000000000000p+32:0x4fffc004) flags=INEXACT (21/2)
+op : f32(0x1.ffc20000000000000000p+15:0x477fe100) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff830600000000000000p+32:0x4fffc183) flags=INEXACT (22/0)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc20000000000000000p+15:0x477fe100)
+res: f32(0x1.ff7f8800000000000000p+33:0x507fbfc4) flags=INEXACT (22/1)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc20000000000000000p+15:0x477fe100) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff840600000000000000p+32:0x4fffc203) flags=INEXACT (22/2)
+op : f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.ff800800000000000000p+33:0x507fc004) flags=INEXACT (23/0)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.ffbf0000000000000000p+16:0x47ffdf80)
+res: f32(0x1.ff820600000000000000p+33:0x507fc103) flags=INEXACT (23/1)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.ffbf0000000000000000p+16:0x47ffdf80) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.ff810600000000000000p+33:0x507fc083) flags=INEXACT (23/2)
+op : f32(0x1.ffc00000000000000000p+16:0x47ffe000) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.c0bab600000000000000p+99:0x71605d5b) flags=INEXACT (24/0)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.ffc00000000000000000p+16:0x47ffe000)
+res: f32(0x1.c0837e00000000000000p+116:0x79e041bf) flags=INEXACT (24/1)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.ffc00000000000000000p+16:0x47ffe000) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.c0829e00000000000000p+116:0x79e0414f) flags=INEXACT (24/2)
+op : f32(0x1.ffc10000000000000000p+16:0x47ffe080) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/0)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(0x1.ffc10000000000000000p+16:0x47ffe080)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/1)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(0x1.ffc10000000000000000p+16:0x47ffe080) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(0x1.fffffe00000000000000p+127:0x7f7fffff) flags=OVERFLOW INEXACT (25/2)
+op : f32(0x1.c0bab600000000000000p+99:0x71605d5b) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(inf:0x7f800000) flags=OK (26/0)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(0x1.c0bab600000000000000p+99:0x71605d5b)
+res: f32(inf:0x7f800000) flags=OK (26/1)
+op : f32(inf:0x7f800000) * f32(0x1.c0bab600000000000000p+99:0x71605d5b) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(inf:0x7f800000) flags=OK (26/2)
+op : f32(0x1.fffffe00000000000000p+127:0x7f7fffff) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fc00000) flags=OK (27/0)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(0x1.fffffe00000000000000p+127:0x7f7fffff)
+res: f32(nan:0x7fc00000) flags=OK (27/1)
+op : f32(nan:0x7fc00000) * f32(0x1.fffffe00000000000000p+127:0x7f7fffff) + f32(inf:0x7f800000)
+res: f32(nan:0x7fc00000) flags=OK (27/2)
+op : f32(inf:0x7f800000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (28/0)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(inf:0x7f800000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/1)
+op : f32(nan:0x7fa00000) * f32(inf:0x7f800000) + f32(nan:0x7fc00000)
+res: f32(nan:0x7fe00000) flags=INVALID (28/2)
+op : f32(nan:0x7fc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (29/0)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(nan:0x7fc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (29/1)
+op : f32(-nan:0xffa00000) * f32(nan:0x7fc00000) + f32(nan:0x7fa00000)
+res: f32(nan:0x7fc00000) flags=INVALID (29/2)
+op : f32(nan:0x7fa00000) * f32(-nan:0xffa00000) + f32(-nan:0xffc00000)
+res: f32(-nan:0xffe00000) flags=INVALID (30/0)
+op : f32(-nan:0xffa00000) * f32(-nan:0xffc00000) + f32(nan:0x7fa00000)
+res: f32(-nan:0xffc00000) flags=INVALID (30/1)
+op : f32(-nan:0xffc00000) * f32(nan:0x7fa00000) + f32(-nan:0xffa00000)
+res: f32(nan:0x7fe00000) flags=INVALID (30/2)
+# LP184149
+op : f32(0x0.00000000000000000000p+0:0000000000) * f32(0x1.00000000000000000000p-1:0x3f000000) + f32(0x0.00000000000000000000p+0:0000000000)
+res: f32(0x0.00000000000000000000p+0:0000000000) flags=OK (31/0)
+op : f32(0x1.00000000000000000000p-149:0x00000001) * f32(0x1.00000000000000000000p-149:0x00000001) + f32(0x1.00000000000000000000p-149:0x00000001)
+res: f32(0x1.00000000000000000000p-149:0x00000001) flags=UNDERFLOW INEXACT (32/0)
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 85/91] tests/tcg/x86_64: user tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (83 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 84/91] tests/tcg/x86_64: add missing float reference file Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 86/91] tests/tcg/x86_64: system tests Pierrick Bouvier
` (11 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/x86_64/meson.build | 81 ++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 tests/tcg/x86_64/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 59e71d82c99..8b3006ad4ad 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -152,6 +152,7 @@ subdir('ppc64le')
subdir('riscv64')
subdir('s390x')
subdir('sh4')
+subdir('x86_64')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/x86_64/meson.build b/tests/tcg/x86_64/meson.build
new file mode 100644
index 00000000000..be4672b351e
--- /dev/null
+++ b/tests/tcg/x86_64/meson.build
@@ -0,0 +1,81 @@
+cc = 'x86_64-linux-gnu-gcc'
+cc_dockerfile = 'debian-amd64-cross'
+cc_docker_arch = ['x86_64']
+
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+test_3dnow_h = custom_target('test_3dnow_h',
+ command: [files('../i386/test-mmx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@',
+ '3DNOW'],
+ output: 'test-3dnow.h')
+
+test_avx_h = custom_target('test_avx_h',
+ command: [files('../i386/test-avx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@'],
+ output: 'test-avx.h')
+
+test_mmx_h = custom_target('test_mmx_h',
+ command: [files('../i386/test-mmx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@',
+ 'MMX', 'SSE', 'SSE2', 'SSE3', 'SSSE3'],
+ output: 'test-mmx.h')
+
+tests += {
+ '../i386/test-i386-ssse3.c': {},
+ '../i386/test-3dnow.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-masm=intel', '-O'],
+ 'depends': [test_3dnow_h],
+ },
+ '../i386/test-avx.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-mavx', '-masm=intel', '-O'],
+ 'depends': [test_avx_h],
+ },
+ '../i386/test-flags.c': {},
+ '../i386/test-mmx.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-masm=intel', '-O'],
+ 'depends': [test_mmx_h],
+ },
+ '../i386/test-i386.c': {
+ 'cflags': ['-lm', '-lc'],
+ 'exe_name': 'test-x86_64'
+ },
+ '../i386/test-i386-adcox.c': {'cflags': ['-O2']},
+ '../i386/test-i386-bmi2.c': {'cflags': ['-O2', '-fwrapv']},
+}
+
+tests += {
+ 'adox.c': {'cflags': ['-O2']},
+ 'cmpxchg.c': {},
+ 'cross-modifying-code.c': {
+ 'cflags': ['-pthread', '-Wl,--no-warn-rwx-segments']
+ },
+ 'fma.c': {},
+ 'noexec.c': {},
+ 'test-1648.c': {},
+ 'test-2175.c': {},
+ 'test-2413.c': {},
+ 'vsyscall.c': {},
+}
+
+if 'qemu-x86_64' in emulators
+ tcg_tests += {
+ 'x86_64-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'x86_64',
+ 'gdb_arch': 'x86_64',
+ 'qemu': emulators['qemu-x86_64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 86/91] tests/tcg/x86_64: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (84 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 85/91] tests/tcg/x86_64: user tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section Pierrick Bouvier
` (10 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/x86_64/meson.build | 2 +
tests/tcg/x86_64/system/meson.build | 62 +++++++++++++++++++++++++++++
2 files changed, 64 insertions(+)
create mode 100644 tests/tcg/x86_64/system/meson.build
diff --git a/tests/tcg/x86_64/meson.build b/tests/tcg/x86_64/meson.build
index be4672b351e..600b35e7867 100644
--- a/tests/tcg/x86_64/meson.build
+++ b/tests/tcg/x86_64/meson.build
@@ -2,6 +2,8 @@ cc = 'x86_64-linux-gnu-gcc'
cc_dockerfile = 'debian-amd64-cross'
cc_docker_arch = ['x86_64']
+subdir('system')
+
tests = []
tests += tcg_tests['multiarch-linux-user']['tests']
diff --git a/tests/tcg/x86_64/system/meson.build b/tests/tcg/x86_64/system/meson.build
new file mode 100644
index 00000000000..ac832e596ed
--- /dev/null
+++ b/tests/tcg/x86_64/system/meson.build
@@ -0,0 +1,62 @@
+tests = []
+
+minilib_dir = meson.current_source_dir() / '..' / '..' / 'minilib'
+minilib_printf = files(minilib_dir / 'printf.c')[0]
+link_script = files('kernel.ld')[0]
+boot = files('boot.S')[0]
+cflags = ['-nostdlib',
+ '-Wa,--noexecstack',
+ '-I', minilib_dir, minilib_printf, boot,
+ '-Wl,-T', link_script,
+ '-Wl,-melf_x86_64',
+ '-Wl,--no-warn-rwx-segments',
+ '-Wl,--build-id=none',
+ '-lgcc']
+qemu_def_args = ['-display', 'none',
+ '-device', 'isa-debugcon,chardev=stdio',
+ '-chardev', 'stdio,id=stdio',
+ '-device', 'isa-debug-exit,iobase=0xf4,iosize=0x4',
+ '-kernel']
+
+# Multi arch tests
+multi_src = []
+foreach t: tcg_tests['multiarch-softmmu']['tests']
+ foreach src, setup: t
+ new_cflags = cflags
+ if fs.stem(src) == 'memory'
+ new_cflags += '-DCHECK_UNALIGNED=1'
+ endif
+ if src not in multi_src
+ setup += {'cflags': [new_cflags]}
+ multi_src += src
+ endif
+ tests += {src: setup + {'qemu_args': qemu_def_args}}
+ endforeach
+endforeach
+
+tests += {
+ 'patch-target.c': {
+ 'cflags': cflags,
+ 'qemu_args': qemu_def_args,
+ 'plugin_test': {
+ 'plugin': 'patch',
+ 'args': ['target=ffc0', 'patch=9090', 'use_hwaddr=true'],
+ },
+ 'wrapper': [prog_check_plugin_output,
+ find_program('./validate-patch.py')]
+ }
+}
+
+if 'qemu-system-x86_64' in emulators
+ tcg_tests += {
+ 'x86_64-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_arch': cc_docker_arch,
+ 'folder': 'x86_64/system',
+ 'gdb_arch': 'x86_64',
+ 'qemu': emulators['qemu-system-x86_64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (85 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 86/91] tests/tcg/x86_64: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-07 6:18 ` Philippe Mathieu-Daudé
2026-07-07 13:45 ` Max Filippov
2026-07-06 22:33 ` [PATCH v3 88/91] tests/tcg/xtensa: system tests Pierrick Bouvier
` (9 subsequent siblings)
96 siblings, 2 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Needed, else we get this error:
dangerous relocation: l32r: misaligned literal target: .text
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/xtensa/crt.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
index 909872cd385..de8fd8c1cd7 100644
--- a/tests/tcg/xtensa/crt.S
+++ b/tests/tcg/xtensa/crt.S
@@ -6,6 +6,7 @@
jx a2
.text
+.align 4
.global _start
_start:
#if XCHAL_HAVE_WINDOWED
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 88/91] tests/tcg/xtensa: system tests
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (86 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 89/91] tests: remove tcg tests machinery Pierrick Bouvier
` (8 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/meson.build | 1 +
tests/tcg/xtensa/meson.build | 89 ++++++++++++++++++++++++++++++++++++
2 files changed, 90 insertions(+)
create mode 100644 tests/tcg/xtensa/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index 8b3006ad4ad..c16c63e0275 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -153,6 +153,7 @@ subdir('riscv64')
subdir('s390x')
subdir('sh4')
subdir('x86_64')
+subdir('xtensa')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/xtensa/meson.build b/tests/tcg/xtensa/meson.build
new file mode 100644
index 00000000000..a31658e64a3
--- /dev/null
+++ b/tests/tcg/xtensa/meson.build
@@ -0,0 +1,89 @@
+tests = []
+
+cc = 'xtensa-dc232b-elf-gcc'
+core = 'dc232b'
+
+core_dir = meson.source_root() / 'target' / 'xtensa' / 'core-' + core
+link_script_src = files('linker.ld.S')[0]
+link_script = custom_target('xtensa_linker.ld',
+ command: [meson.get_compiler('c').cmd_array(),
+ '-E', '-P', '-I', core_dir,
+ '@INPUT@',
+ '-o', '@OUTPUT@'],
+ input: link_script_src,
+ output: 'xtensa_linker.ld',
+)
+crt = files('crt.S')[0]
+vectors = files('vectors.S')[0]
+cflags = ['-nostdlib',
+ '-nostartfiles',
+ '-mtext-section-literals',
+ crt, vectors,
+ '-I', core_dir,
+ '-Wa,--no-absolute-literals',
+ '-Wl,-T', link_script,
+ '-lgcc']
+qemu_args = ['-M', 'sim', '-cpu', core,
+ '-display', 'none',
+ '-semihosting', '-icount', '6',
+ '-kernel']
+setup = {'cflags': cflags, 'qemu_args': qemu_args}
+
+# Multi arch tests are not supported
+# tests += tcg_tests['multiarch-softmmu']['tests']
+
+tests += {
+ 'test_b.S': setup,
+ 'test_bi.S': setup,
+ 'test_boolean.S': setup,
+ 'test_break.S': setup,
+ 'test_bz.S': setup,
+ 'test_cache.S': setup,
+ 'test_clamps.S': setup,
+ 'test_dfp0_arith.S': setup,
+ 'test_exclusive.S': setup,
+ 'test_extui.S': setup,
+ 'test_flix.S': setup,
+ 'test_fp0_arith.S': setup,
+ 'test_fp0_conv.S': setup,
+ 'test_fp0_div.S': setup,
+ 'test_fp0_sqrt.S': setup,
+ 'test_fp1.S': setup,
+ 'test_fp_cpenable.S': setup,
+ 'test_interrupt.S': setup,
+ 'test_load_store.S': setup,
+ 'test_loop.S': setup,
+ 'test_lsc.S': setup,
+ 'test_mac16.S': setup,
+ 'test_max.S': setup,
+ 'test_min.S': setup,
+ 'test_mmu.S': setup,
+ 'test_mul16.S': setup,
+ 'test_mul32.S': setup,
+ 'test_nsa.S': setup,
+ 'test_phys_mem.S': setup,
+ 'test_quo.S': setup,
+ 'test_rem.S': setup,
+ 'test_rst0.S': setup,
+ 'test_s32c1i.S': setup,
+ 'test_sar.S': setup,
+ 'test_sext.S': setup,
+ 'test_shift.S': setup,
+ 'test_sr.S': setup,
+ 'test_timer.S': setup,
+ 'test_windowed.S': setup,
+}
+
+if 'qemu-system-xtensa' in emulators
+ tcg_tests += {
+ 'xtensa-softmmu': {
+ 'cc': cc,
+ 'cc_dockerfile': 'debian-xtensa-cross',
+ 'cc_docker_arch': ['x86_64'],
+ 'folder': 'xtensa',
+ 'gdb_arch': 'xtensa',
+ 'qemu': emulators['qemu-system-xtensa'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 89/91] tests: remove tcg tests machinery
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (87 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 88/91] tests/tcg/xtensa: system tests Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 90/91] tests/tcg: remove Makefiles Pierrick Bouvier
` (7 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
It's now built-in meson, which offers targets check-tcg and check-tcg-*.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/Makefile.include | 68 ++----------------------------------------
1 file changed, 2 insertions(+), 66 deletions(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 494d0109f26..9f82552ab54 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -19,9 +19,7 @@ check-help:
ifneq ($(filter $(all-check-targets), check-softfloat),)
@echo " $(MAKE) check-softfloat Run FPU emulation tests"
@echo " $(MAKE) check-tcg Run TCG tests"
- @echo " $(MAKE) run-tcg-tests-TARGET Run TCG tests for a given target"
- @echo
- @echo "The variable TCG_TEST_FILTER will select the subset of matching tests."
+ @echo " $(MAKE) check-tcg-TARGET Run TCG tests for a given target"
endif
@echo
@echo " $(MAKE) check-report.junit.xml Generates an aggregated XML test report"
@@ -40,67 +38,6 @@ export SRC_PATH
SPEED = quick
-
-# TCG_TESTS_WITH_COMPILERS represents the test targets we have cross compiler
-# support for, CONFIGURED_TCG_TARGETS it what meson has finally
-# configured having rejected stuff we can't build.
-CONFIGURED_TCG_TARGETS=$(patsubst %-config-target.h, %, $(wildcard *-config-target.h))
-
-# This is the intersection of what tests we can build and is configured
-TCG_TESTS_TARGETS=$(filter $(CONFIGURED_TCG_TARGETS), $(TCG_TESTS_WITH_COMPILERS))
-
-# Per guest TCG tests
-BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TCG_TESTS_TARGETS))
-CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TCG_TESTS_TARGETS))
-DISTCLEAN_TCG_TARGET_RULES=$(patsubst %,distclean-tcg-tests-%, $(TCG_TESTS_TARGETS))
-RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS))
-
-$(foreach TARGET,$(TCG_TESTS_TARGETS), \
- $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))
-
-# $1 = the stem (e.g., arm-softmmu or x86_64-linux-user)
-get-qemu-bin = $(if $(findstring softmmu,$1),qemu-system-$(subst -softmmu,,$1),qemu-$(subst -linux-user,,$1))
-
-$(foreach TARGET,$(TCG_TESTS_TARGETS), \
- $(eval .ninja-goals.run-tcg-tests-$(TARGET) += $(call get-qemu-bin,$(TARGET))))
-
-.PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%)
-$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak
- $(call quiet-command, \
- $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS), \
- "BUILD","$* guest-tests")
-
-.PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%)
-$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-%
- $(call quiet-command, \
- $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) SPEED=$(SPEED) TCG_TEST_FILTER=$(TCG_TEST_FILTER) run, \
- "RUN", "$* guest-tests")
-
-.PHONY: $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%)
-$(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%:
- $(call quiet-command, \
- $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) clean, \
- "CLEAN", "$* guest-tests")
-
-.PHONY: $(TCG_TESTS_TARGETS:%=distclean-tcg-tests-%)
-$(TCG_TESTS_TARGETS:%=distclean-tcg-tests-%): distclean-tcg-tests-%:
- $(call quiet-command, \
- $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS) distclean, \
- "CLEAN", "$* guest-tests")
-
-.PHONY: build-tcg
-build-tcg: $(BUILD_TCG_TARGET_RULES)
-
-.PHONY: check-tcg
-.ninja-goals.check-tcg = all test-plugins
-check-tcg: $(RUN_TCG_TARGET_RULES)
-
-.PHONY: clean-tcg
-clean-tcg: $(CLEAN_TCG_TARGET_RULES)
-
-.PHONY: distclean-tcg
-distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES)
-
# Build up our target list from the filtered list of ninja targets
TARGETS=$(patsubst libqemu-%.a, %, $(filter libqemu-%.a, $(ninja-targets)))
@@ -128,7 +65,6 @@ check-build: run-ninja
check-clean:
rm -rf $(BUILD_DIR)/tests/functional
-clean: check-clean clean-tcg
-distclean: distclean-tcg
+clean: check-clean
endif
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 90/91] tests/tcg: remove Makefiles
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (88 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 89/91] tests: remove tcg tests machinery Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-09 12:46 ` Alex Bennée
2026-07-06 22:33 ` [PATCH v3 91/91] configure: remove --cross-cc* options Pierrick Bouvier
` (6 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/tcg/Makefile.target | 281 ------------------
tests/tcg/aarch64/Makefile.softmmu-target | 147 ---------
tests/tcg/aarch64/Makefile.target | 198 ------------
tests/tcg/aarch64_be/Makefile.target | 17 --
tests/tcg/alpha/Makefile.softmmu-target | 34 ---
tests/tcg/alpha/Makefile.target | 18 --
tests/tcg/arm/Makefile.softmmu-target | 80 -----
tests/tcg/arm/Makefile.target | 87 ------
tests/tcg/hexagon/Makefile.target | 146 ---------
tests/tcg/hppa/Makefile.target | 14 -
tests/tcg/i386/Makefile.softmmu-target | 37 ---
tests/tcg/i386/Makefile.target | 102 -------
tests/tcg/loongarch64/Makefile.softmmu-target | 33 --
tests/tcg/loongarch64/Makefile.target | 20 --
tests/tcg/m68k/Makefile.target | 7 -
tests/tcg/minilib/Makefile.target | 21 --
tests/tcg/mips/Makefile.target | 19 --
tests/tcg/mips/user/ase/dsp/Makefile | 184 ------------
tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 ---
tests/tcg/mips/user/isa/r5900/Makefile | 32 --
tests/tcg/mips64/Makefile.target | 20 --
tests/tcg/mips64el/Makefile.target | 8 -
tests/tcg/multiarch/Makefile.target | 232 ---------------
.../multiarch/system/Makefile.softmmu-target | 81 -----
tests/tcg/or1k/Makefile | 71 -----
tests/tcg/ppc64/Makefile.target | 63 ----
tests/tcg/ppc64le/Makefile.target | 7 -
tests/tcg/riscv64/Makefile.softmmu-target | 45 ---
tests/tcg/riscv64/Makefile.target | 20 --
tests/tcg/s390x/Makefile.softmmu-target | 57 ----
tests/tcg/s390x/Makefile.target | 127 --------
tests/tcg/sh4/Makefile.target | 18 --
tests/tcg/tricore/Makefile.softmmu-target | 53 ----
tests/tcg/x86_64/Makefile.softmmu-target | 44 ---
tests/tcg/x86_64/Makefile.target | 40 ---
tests/tcg/xtensa/Makefile.softmmu-target | 46 ---
tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
37 files changed, 2454 deletions(-)
delete mode 100644 tests/tcg/Makefile.target
delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/aarch64/Makefile.target
delete mode 100644 tests/tcg/aarch64_be/Makefile.target
delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
delete mode 100644 tests/tcg/alpha/Makefile.target
delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
delete mode 100644 tests/tcg/arm/Makefile.target
delete mode 100644 tests/tcg/hexagon/Makefile.target
delete mode 100644 tests/tcg/hppa/Makefile.target
delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
delete mode 100644 tests/tcg/i386/Makefile.target
delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
delete mode 100644 tests/tcg/loongarch64/Makefile.target
delete mode 100644 tests/tcg/m68k/Makefile.target
delete mode 100644 tests/tcg/minilib/Makefile.target
delete mode 100644 tests/tcg/mips/Makefile.target
delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
delete mode 100644 tests/tcg/mips64/Makefile.target
delete mode 100644 tests/tcg/mips64el/Makefile.target
delete mode 100644 tests/tcg/multiarch/Makefile.target
delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
delete mode 100644 tests/tcg/or1k/Makefile
delete mode 100644 tests/tcg/ppc64/Makefile.target
delete mode 100644 tests/tcg/ppc64le/Makefile.target
delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
delete mode 100644 tests/tcg/riscv64/Makefile.target
delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
delete mode 100644 tests/tcg/s390x/Makefile.target
delete mode 100644 tests/tcg/sh4/Makefile.target
delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
delete mode 100644 tests/tcg/x86_64/Makefile.target
delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
deleted file mode 100644
index 1b83824ff4e..00000000000
--- a/tests/tcg/Makefile.target
+++ /dev/null
@@ -1,281 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# TCG tests
-#
-# These are complicated by the fact we want to build them for guest
-# systems. This requires knowing what guests we are building and which
-# ones we have cross-compilers for or docker images with
-# cross-compilers.
-#
-# The tests themselves should be as minimal as possible as
-# cross-compilers don't always have a large amount of libraries
-# available.
-#
-# We only include the host build system for SRC_PATH and we don't
-# bother with the common rules.mk. We expect the following:
-#
-# CC - the C compiler command
-# EXTRA_CFLAGS - any extra CFLAGS
-# BUILD_STATIC - are we building static binaries
-#
-# By default all tests are statically compiled but some host systems
-# may not package static libraries by default. If an external
-# cross-compiler can only build dynamic libraries the user might need
-# to make extra efforts to ensure ld.so can link at runtime when the
-# tests are run.
-#
-# We also accept SPEED=slow to enable slower running tests
-#
-# We also expect to be in the tests build dir for the FOO-(linux-user|softmmu).
-#
-
-all:
--include ../config-host.mak
--include config-target.mak
-
-# Get semihosting definitions for user-mode emulation
-ifeq ($(filter %-softmmu, $(TARGET)),)
--include $(SRC_PATH)/configs/targets/$(TARGET).mak
-endif
-
-# for including , in command strings
-COMMA := ,
-NULL :=
-SPACE := $(NULL) #
-TARGET_PREFIX=tests/tcg/$(TARGET):$(SPACE)
-
-quiet-@ = $(if $(V),,@$(if $1,printf " %-7s %s\n" "$(strip $1)" "$(strip $2)" && ))
-quiet-command = $(call quiet-@,$2,$3)$1
-
-cc-test = $(CC) -Werror $1 -c -o /dev/null -xc /dev/null >/dev/null 2>&1
-cc-option = if $(call cc-test, $1); then \
- echo "$(TARGET_PREFIX)$1 detected" && echo "$(strip $2)=$(strip $1)" >&3; else \
- echo "$(TARGET_PREFIX)$1 not detected"; fi
-
-# $1 = test name, $2 = cmd, $3 = desc
-ifeq ($(filter %-softmmu, $(TARGET)),)
-run-test = $(call quiet-command, timeout -s KILL --foreground $(TIMEOUT) $2 > $1.out, \
- TEST,$(or $3, $*, $<) on $(TARGET_NAME))
-else
-run-test = $(call quiet-command, timeout -s KILL --foreground $(TIMEOUT) $2, \
- TEST,$(or $3, $*, $<) on $(TARGET_NAME))
-endif
-
-# $1 = test name, $2 = reference
-# to work around the pipe squashing the status we only pipe the result if
-# we know it failed and then force failure at the end.
-diff-out = $(call quiet-command, diff -q $1.out $2 || \
- (diff -u $1.out $2 | head -n 10 && false), \
- DIFF,$1.out with $2)
-
-# $1 = test name, $2 = reason
-skip-test = @printf " SKIPPED %s on $(TARGET_NAME) because %s\n" $1 $2
-
-# $1 = test name, $2 = reference
-# As above but only diff if reference file exists, otherwise the test
-# passes if it managed to complete with a status of zero
-conditional-diff-out = \
- $(if $(wildcard $2), \
- $(call diff-out,$1,$2), \
- $(call skip-test,"$1 check","no reference"))
-
-
-# Tests we are building
-TESTS=
-# additional tests which may re-use existing binaries
-EXTRA_TESTS=
-
-# Start with a blank slate, the build targets get to add stuff first
-CFLAGS=
-LDFLAGS=
-
-QEMU_OPTS=
-CHECK_PLUGIN_OUTPUT_COMMAND=
-
-
-# If TCG debugging, or TCI is enabled things are a lot slower
-# so we have to set our timeout for that. The current worst case
-# offender is the system memory test running under TCI.
-TIMEOUT=120
-
-ifeq ($(filter %-softmmu, $(TARGET)),)
-# The order we include is important. We include multiarch first and
-# then the target. If there are common tests shared between
-# sub-targets (e.g. ARM & AArch64) then it is up to
-# $(TARGET_NAME)/Makefile.target to include the common parent
-# architecture in its VPATH. However some targets are so minimal we
-# can't even build the multiarch tests.
-ifneq ($(filter $(TARGET_NAME),aarch64_be),)
--include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.target
-else
--include $(SRC_PATH)/tests/tcg/multiarch/Makefile.target
--include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.target
-endif
-
-# Add the common build options
-CFLAGS+=-Wall -Werror -O0 -g -fno-strict-aliasing
-ifeq ($(BUILD_STATIC),y)
-LDFLAGS+=-static
-endif
-
-%: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-%: %.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -Wa,--noexecstack $< -o $@ $(LDFLAGS)
-else
-# For system targets we include a different Makefile fragment as the
-# build options for bare programs are usually pretty different. They
-# are expected to provide their own build recipes.
-EXTRA_CFLAGS += -ffreestanding -fno-stack-protector
-
-# We skip the multiarch tests if the target hasn't provided a boot.S
-MULTIARCH_SOFTMMU_TARGETS = i386 alpha aarch64 arm loongarch64 s390x x86_64
-
-ifneq ($(filter $(TARGET_NAME),$(MULTIARCH_SOFTMMU_TARGETS)),)
--include $(SRC_PATH)/tests/tcg/minilib/Makefile.target
--include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target
-endif
--include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target
-
-endif
-
-all: $(TESTS) $(EXTRA_TESTS)
-
-#
-# Test Runners
-#
-# By default we just run the test with the appropriate QEMU for the
-# target. More advanced tests may want to override the runner in their
-# specific make rules. Additional runners for the same binary should
-# be added to EXTRA_RUNS.
-#
-
-RUN_TESTS=$(patsubst %,run-%, $(TESTS))
-
-# If plugins exist also include those in the tests
-ifeq ($(CONFIG_PLUGIN),y)
-PLUGIN_SRC=$(SRC_PATH)/tests/tcg/plugins
-PLUGIN_LIB=../plugins
-VPATH+=$(PLUGIN_LIB)
-# Some plugins need to be disabled for all tests to avoid exponential explosion.
-# For example, libpatch.so only needs to run against the arch-specific patch
-# target test, so we explicitly run it in the arch-specific Makefile.
-DISABLE_PLUGINS=libpatch.so
-
-# Likewise don't bother with the syscall plugin for softmmu
-ifneq ($(filter %-softmmu, $(TARGET)),)
-DISABLE_PLUGINS += libsyscall.so
-endif
-
-PLUGINS=$(filter-out $(DISABLE_PLUGINS), \
- $(patsubst %.c, lib%.so, $(notdir $(wildcard $(PLUGIN_SRC)/*.c))))
-
-strip-plugin = $(wordlist 1, 1, $(subst -with-, ,$1))
-extract-plugin = $(wordlist 2, 2, $(subst -with-, ,$1))
-extract-test = $(subst run-plugin-,,$(wordlist 1, 1, $(subst -with-, ,$1)))
-
-# We need to ensure expand the run-plugin-TEST-with-PLUGIN
-# pre-requistes manually here as we can't use stems to handle it. We
-# only expand MULTIARCH_TESTS which are common on most of our targets
-# and rotate the plugins so we don't grow too out of control as new
-# tests are added. Plugins that need to run with a specific test
-# should ensure they add their combination to EXTRA_RUNS.
-
-ifneq ($(MULTIARCH_TESTS),)
-
-# Extract extra tests from the extra test+plugin combination.
-EXTRA_TESTS_WITH_PLUGIN=$(foreach test, \
- $(EXTRA_RUNS_WITH_PLUGIN),$(call extract-test,$(test)))
-# Exclude tests that were specified to run with specific plugins from the tests
-# which can run with any plugin combination, so we don't run it twice.
-MULTIARCH_TESTS:=$(filter-out $(EXTRA_TESTS_WITH_PLUGIN), $(MULTIARCH_TESTS))
-
-NUM_PLUGINS := $(words $(PLUGINS))
-NUM_TESTS := $(words $(MULTIARCH_TESTS))
-
-define mod_plus_one
- $(shell $(PYTHON) -c "print( ($(1) % $(2)) + 1 )")
-endef
-
-# Rules for running tests with any plugin combination, i.e., no specific plugin.
-$(foreach _idx, $(shell seq 1 $(NUM_TESTS)), \
- $(eval _test := $(word $(_idx), $(MULTIARCH_TESTS))) \
- $(eval _plugin := $(word $(call mod_plus_one, $(_idx), $(NUM_PLUGINS)), $(PLUGINS))) \
- $(eval run-plugin-$(_test)-with-$(_plugin): $(_test) $(_plugin)) \
- $(eval RUN_TESTS+=run-plugin-$(_test)-with-$(_plugin)))
-
-# Rules for running extra tests with specific plugins.
-$(foreach f,$(EXTRA_RUNS_WITH_PLUGIN), \
- $(eval $(f): $(call extract-test,$(f)) $(call extract-plugin,$(f))))
-
-endif # MULTIARCH_TESTS
-endif # CONFIG_PLUGIN
-
-RUN_TESTS+=$(EXTRA_RUNS)
-RUN_TESTS+=$(EXTRA_RUNS_WITH_PLUGIN)
-
-# Some plugins need additional arguments above the default to fully
-# exercise things. We can define them on a per-test basis here.
-run-plugin-%-with-libmem.so: PLUGIN_ARGS=$(COMMA)inline=true
-
-ifeq ($(filter %-softmmu, $(TARGET)),)
-run-%: %
- $(call run-test, $<, env QEMU=$(QEMU) $(QEMU) $(QEMU_OPTS) $<)
-
-run-plugin-%:
- $(call run-test, $@, env QEMU=$(QEMU) $(QEMU) $(QEMU_OPTS) \
- -plugin $(PLUGIN_LIB)/$(call extract-plugin,$@)$(PLUGIN_ARGS) \
- -d plugin -D $*.pout \
- $(call strip-plugin,$<))
- $(if $(CHECK_PLUGIN_OUTPUT_COMMAND), \
- $(call quiet-command, $(CHECK_PLUGIN_OUTPUT_COMMAND) $*.pout, \
- TEST, check plugin $(call extract-plugin,$@) output \
- with $(call strip-plugin,$<)))
-else
-run-%: %
- $(call run-test, $<, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
- $(QEMU_OPTS) $<)
-
-run-plugin-%:
- $(call run-test, $@, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$@.out$(COMMA)id=output \
- -plugin $(PLUGIN_LIB)/$(call extract-plugin,$@)$(PLUGIN_ARGS) \
- -d plugin -D $*.pout \
- $(QEMU_OPTS) $(call strip-plugin,$<))
- $(if $(CHECK_PLUGIN_OUTPUT_COMMAND), \
- $(call quiet-command, $(CHECK_PLUGIN_OUTPUT_COMMAND) $*.pout, \
- TEST, check plugin $(call extract-plugin,$@) output \
- with $(call strip-plugin,$<)))
-endif
-
-gdb-%: %
- gdb --args $(QEMU) $(QEMU_OPTS) $<
-
-# Filter tests based on TCG_TEST_FILTER if set
-ifdef TCG_TEST_FILTER
-FILTERED_RUN_TESTS=$(foreach test,$(RUN_TESTS),$(if $(findstring $(TCG_TEST_FILTER),$(test)),$(test)))
-else
-FILTERED_RUN_TESTS=$(RUN_TESTS)
-endif
-
-.PHONY: run
-run: $(FILTERED_RUN_TESTS)
-
-clean:
- rm -f $(TESTS) *.o $(CLEANFILES)
-
-distclean:
- rm -f config-cc.mak config-target.mak ../config-$(TARGET).mak
-
-.PHONY: help
-help:
- @echo "TCG tests help $(TARGET_NAME)"
- @echo "Built with $(CC)"
- @echo "Available tests:"
- @$(foreach t,$(RUN_TESTS),echo " $t";)
- @echo ""
- @echo "Environment variables:"
- @echo " TCG_TEST_FILTER=<pattern> Filter tests matching pattern"
diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target
deleted file mode 100644
index 3f30be6c5d6..00000000000
--- a/tests/tcg/aarch64/Makefile.softmmu-target
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# Aarch64 system tests
-#
-
-AARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64
-AARCH64_SYSTEM_SRC=$(AARCH64_SRC)/system
-
-VPATH+=$(AARCH64_SYSTEM_SRC)
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-AARCH64_TEST_C_SRCS=$(wildcard $(AARCH64_SYSTEM_SRC)/*.c)
-AARCH64_TEST_S_SRCS=$(AARCH64_SYSTEM_SRC)/mte.S
-
-AARCH64_C_TESTS = $(patsubst $(AARCH64_SYSTEM_SRC)/%.c, %, $(AARCH64_TEST_C_SRCS))
-AARCH64_S_TESTS = $(patsubst $(AARCH64_SYSTEM_SRC)/%.S, %, $(AARCH64_TEST_S_SRCS))
-
-AARCH64_TESTS = $(AARCH64_C_TESTS)
-AARCH64_TESTS += $(AARCH64_S_TESTS)
-
-CRT_PATH=$(AARCH64_SYSTEM_SRC)
-LINK_SCRIPT=$(AARCH64_SYSTEM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT)
-TESTS+=$(AARCH64_TESTS) $(MULTIARCH_TESTS)
-EXTRA_RUNS+=$(MULTIARCH_RUNS)
-CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(MINILIB_OBJS) -lgcc
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-march=armv8.3-a, CROSS_CC_HAS_ARMV8_3); \
- $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE)) 3> config-cc.mak
--include config-cc.mak
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-vector_log_boot.o: $(CRT_PATH)/boot.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DLOGGING_VECTOR_TABLE -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
-
-%.o: $(CRT_PATH)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) boot.o
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=1
-
-memory-sve: memory.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) boot.o
-
-memory-sve: CFLAGS+=-DCHECK_UNALIGNED=1 -march=armv8.1-a+sve -O3
-
-gpc-test: gpc-test.c $(LINK_SCRIPT) vector_log_boot.o $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) vector_log_boot.o
-
-TESTS+=memory-sve gpc-test
-
-# Running
-QEMU_BASE_MACHINE=-M virt -cpu max -display none
-QEMU_BASE_ARGS=-semihosting-config enable=on,target=native,chardev=output
-QEMU_OPTS+=$(QEMU_BASE_MACHINE) $(QEMU_BASE_ARGS) -kernel
-
-# console test is manual only
-QEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline
-run-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel
-run-semiconsole: semiconsole
- $(call skip-test, $<, "MANUAL ONLY")
- $(if $(V),@printf " %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<")
-run-plugin-semiconsole-with-%: semiconsole
- $(call skip-test, $<, "MANUAL ONLY")
-
-# vtimer test needs EL2
-QEMU_EL2_MACHINE=-machine virt,virtualization=on,gic-version=2 -cpu cortex-a57 -smp 4
-QEMU_EL2_BASE_ARGS=-semihosting-config enable=on,target=native,chardev=output,arg="2"
-run-vtimer: QEMU_OPTS=$(QEMU_EL2_MACHINE) $(QEMU_EL2_BASE_ARGS) -kernel
-
-# gpc tests need EL3 and RME
-QEMU_EL3_MACHINE=-machine virt,virtualization=on,secure=on,gic-version=3 -cpu max,x-rme=on
-QEMU_EL3_BASE_ARGS=-semihosting-config enable=on,target=native,chardev=output,arg="3"
-run-gpc-test: QEMU_OPTS=$(QEMU_EL3_MACHINE) $(QEMU_EL3_BASE_ARGS) -kernel
-run-gpc3-test: QEMU_OPTS=$(QEMU_EL3_MACHINE) $(QEMU_EL3_BASE_ARGS) -kernel
-
-# Simple Record/Replay Test
-.PHONY: memory-record
-run-memory-record: memory-record memory
- $(call run-test, $<, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
- -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \
- $(QEMU_OPTS) memory)
-
-.PHONY: memory-replay
-run-memory-replay: memory-replay run-memory-record
- $(call run-test, $<, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
- -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \
- $(QEMU_OPTS) memory)
-
-EXTRA_RUNS+=run-memory-replay
-
-ifneq ($(CROSS_CC_HAS_ARMV8_3),)
-pauth-3: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
-# This test explicitly checks the output of the pauth operation so we
-# must force the use of the QARMA5 algorithm for it.
-run-pauth-3: QEMU_BASE_MACHINE=-M virt -cpu max,pauth-qarma5=on -display none
-else
-pauth-3:
- $(call skip-test, "BUILD of $@", "missing compiler support")
-run-pauth-3:
- $(call skip-test, "RUN of pauth-3", "not built")
-endif
-
-ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
-QEMU_MTE_ENABLED_MACHINE=-M virt,mte=on -cpu max -display none
-QEMU_OPTS_WITH_MTE_ON = $(QEMU_MTE_ENABLED_MACHINE) $(QEMU_BASE_ARGS) -kernel
-mte: CFLAGS+=-march=armv8.5-a+memtag
-mte: mte.S $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) boot.o
-
-run-mte: QEMU_OPTS=$(QEMU_OPTS_WITH_MTE_ON)
-run-mte: mte
-
-ifeq ($(GDB_SUPPORTS_MTE_IN_BAREMETAL),y)
-run-gdbstub-mte: QEMU_OPTS=$(QEMU_OPTS_WITH_MTE_ON)
-run-gdbstub-mte: mte
- $(call run-test, $@, $(GDB_SCRIPT) \
- --output run-gdbstub-mte.out \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "-chardev null$(COMMA)id=output $(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-mte.py -- --mode=system, \
- gdbstub MTE support)
-
-EXTRA_RUNS += run-gdbstub-mte
-else # !GDB_SUPPORTS_MTE_IN_BAREMETAL
-run-gdbstub-mte:
- $(call skip-test "RUN of gdbstub-mte", "GDB does not support MTE in baremetal!")
-endif
-else # !CROSS_CC_HAS_ARMV8_MTE
-mte:
- $(call skip-test, "BUILD of $@", "missing compiler support")
-run-mte:
- $(call skip-test, "RUN of mte", "not build")
-endif
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
deleted file mode 100644
index 6203ac9b517..00000000000
--- a/tests/tcg/aarch64/Makefile.target
+++ /dev/null
@@ -1,198 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# AArch64 specific tweaks
-
-ARM_SRC=$(SRC_PATH)/tests/tcg/arm
-VPATH += $(ARM_SRC)
-
-AARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64
-VPATH += $(AARCH64_SRC)
-
-# Base architecture tests
-AARCH64_TESTS=fcvt pcalign-a64 lse2-fault
-AARCH64_TESTS += test-2248 test-2150
-
-fcvt: LDFLAGS+=-lm
-
-run-fcvt: fcvt
- $(call run-test,$<,$(QEMU) $<)
- $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref)
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- fnia=`$(call cc-test,-fno-integrated-as) && echo -fno-integrated-as`; \
- $(call cc-option,-march=armv8.1-a+sve, CROSS_CC_HAS_SVE); \
- $(call cc-option,-march=armv8.1-a+sve2, CROSS_CC_HAS_SVE2); \
- $(call cc-option,-march=armv8.2-a, CROSS_CC_HAS_ARMV8_2); \
- $(call cc-option,-march=armv8.3-a, CROSS_CC_HAS_ARMV8_3); \
- $(call cc-option,-march=armv8.5-a, CROSS_CC_HAS_ARMV8_5); \
- $(call cc-option,-mbranch-protection=standard, CROSS_CC_HAS_ARMV8_BTI); \
- $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE); \
- $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme $$fnia, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
--include config-cc.mak
-
-ifneq ($(CROSS_CC_HAS_ARMV8_2),)
-AARCH64_TESTS += dcpop
-dcpop: CFLAGS += $(CROSS_CC_HAS_ARMV8_2)
-endif
-ifneq ($(CROSS_CC_HAS_ARMV8_5),)
-AARCH64_TESTS += dcpodp
-dcpodp: CFLAGS += $(CROSS_CC_HAS_ARMV8_5)
-endif
-
-# Pauth Tests
-ifneq ($(CROSS_CC_HAS_ARMV8_3),)
-AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5 test-2375
-pauth-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
-test-2375: CFLAGS += -march=armv8.3-a
-run-pauth-1: QEMU_OPTS += -cpu max
-run-pauth-2: QEMU_OPTS += -cpu max
-# Choose a cpu with FEAT_Pauth but without FEAT_FPAC for pauth-[45].
-run-pauth-4: QEMU_OPTS += -cpu neoverse-v1
-run-pauth-5: QEMU_OPTS += -cpu neoverse-v1
-endif
-
-# BTI Tests
-# bti-1 tests the elf notes, so we require special compiler support.
-ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
-AARCH64_TESTS += bti-1 bti-3
-bti-1 bti-3: CFLAGS += -fno-stack-protector $(CROSS_CC_HAS_ARMV8_BTI)
-bti-1 bti-3: LDFLAGS += -nostdlib
-endif
-# bti-2 tests PROT_BTI, so no special compiler support required.
-AARCH64_TESTS += bti-2
-
-# MTE Tests
-ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
-AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 mte-9 mte-10
-mte-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_MTE)
-endif
-
-# SME Tests
-ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
-SME_TESTS = sme-outprod1 sme-smopa-1 sme-smopa-2 sme-fmopa-1 sme-fmopa-2 sme-fmopa-3
-AARCH64_TESTS += $(SME_TESTS)
-$(SME_TESTS): CFLAGS += $(CROSS_AS_HAS_ARMV9_SME)
-endif
-
-# GCS Tests
-GCS_TESTS += gcsstr gcspushm gcsss
-AARCH64_TESTS += $(GCS_TESTS)
-$(GCS_TESTS): gcs.h
-
-# System Registers Tests
-AARCH64_TESTS += sysregs
-
-AARCH64_TESTS += test-aes
-test-aes: CFLAGS += -O -march=armv8-a+aes
-test-aes: test-aes-main.c.inc
-
-# Vector SHA1
-# Work around compiler false-positive warning, as we do for the 'sha1' test
-sha1-vector: CFLAGS=-O3 -Wno-stringop-overread
-sha1-vector: sha1.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-run-sha1-vector: sha1-vector run-sha1
- $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<)
- $(call diff-out, sha1-vector, sha1.out)
-
-TESTS += sha1-vector
-
-# Vector versions of sha512 (-O3 triggers vectorisation)
-sha512-vector: CFLAGS=-O3
-sha512-vector: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-TESTS += sha512-vector
-
-ifneq ($(CROSS_CC_HAS_SVE),)
-# SVE ioctl test
-AARCH64_TESTS += sve-ioctls
-sve-ioctls: CFLAGS += $(CROSS_CC_HAS_SVE)
-
-sha512-sve: CFLAGS=-O3 -march=armv8.1-a+sve
-sha512-sve: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-sve-str: CFLAGS=-O1 -march=armv8.1-a+sve
-sve-str: sve-str.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-TESTS += sha512-sve sve-str
-
-ifneq ($(GDB),)
-GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
-
-run-gdbstub-sysregs: sysregs
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-sve.py, \
- basic gdbstub SVE support)
-
-run-gdbstub-sve-ioctls: sve-ioctls
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-sve-ioctl.py, \
- basic gdbstub SVE ZLEN support)
-
-EXTRA_RUNS += run-gdbstub-sysregs run-gdbstub-sve-ioctls
-
-ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
-# SME gdbstub tests
-
-run-gdbstub-sysregs-sme: sysregs
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme.py \
- -- test_sme --gdb_basic_za_test, \
- basic gdbstub SME support)
-
-ifeq ($(GDB_HAS_SME_TILES),y)
-run-gdbstub-sysregs-sme-tile-slice: sysregs
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme.py \
- -- test_sme --gdb_tile_slice_test, \
- gdbstub SME ZA tile slice support)
-else
-run-gdbstub-sysregs-sme-tile-slice: sysregs
- $(call skip-test,"gdbstub SME ZA tile slice support", \
- "selected gdb ($(GDB)) does not support SME ZA tile slices")
-endif
-
-run-gdbstub-sysregs-sme2: sysregs
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-sme2.py, \
- gdbstub SME ZA tile slice support)
-
-EXTRA_RUNS += run-gdbstub-sysregs-sme run-gdbstub-sysregs-sme-tile-slice run-gdbstub-sysregs-sme2
-
-endif
-
-ifeq ($(GDB_HAS_MTE),y)
-run-gdbstub-mte: mte-8
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(AARCH64_SRC)/gdbstub/test-mte.py \
- -- --mode=user, \
- gdbstub MTE support)
-
-EXTRA_RUNS += run-gdbstub-mte
-endif
-
-endif
-endif
-
-ifneq ($(CROSS_CC_HAS_SVE2),)
-AARCH64_TESTS += test-826
-test-826: CFLAGS += $(CROSS_CC_HAS_SVE2)
-endif
-
-TESTS += $(AARCH64_TESTS)
diff --git a/tests/tcg/aarch64_be/Makefile.target b/tests/tcg/aarch64_be/Makefile.target
deleted file mode 100644
index cbe5fa0b2db..00000000000
--- a/tests/tcg/aarch64_be/Makefile.target
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# A super basic AArch64 BE makefile. As we don't have any big-endian
-# libc available the best we can do is a basic Hello World.
-
-AARCH64BE_SRC=$(SRC_PATH)/tests/tcg/aarch64_be
-VPATH += $(AARCH64BE_SRC)
-
-AARCH64BE_TEST_SRCS=$(notdir $(wildcard $(AARCH64BE_SRC)/*.c))
-AARCH64BE_TESTS=$(AARCH64BE_TEST_SRCS:.c=)
-#MULTIARCH_TESTS = $(MULTIARCH_SRCS:.c=)
-
-# We need to specify big-endian cflags
-CFLAGS +=-mbig-endian -ffreestanding
-LDFLAGS +=-nostdlib
-
-TESTS += $(AARCH64BE_TESTS)
diff --git a/tests/tcg/alpha/Makefile.softmmu-target b/tests/tcg/alpha/Makefile.softmmu-target
deleted file mode 100644
index a944102a3ce..00000000000
--- a/tests/tcg/alpha/Makefile.softmmu-target
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Alpha system tests
-#
-
-ALPHA_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/alpha/system
-VPATH+=$(ALPHA_SYSTEM_SRC)
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-ALPHA_TEST_SRCS=$(wildcard $(ALPHA_SYSTEM_SRC)/*.c)
-ALPHA_TESTS = $(patsubst $(ALPHA_SYSTEM_SRC)/%.c, %, $(ALPHA_TEST_SRCS))
-
-CRT_PATH=$(ALPHA_SYSTEM_SRC)
-LINK_SCRIPT=$(ALPHA_SYSTEM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT)
-TESTS+=$(ALPHA_TESTS) $(MULTIARCH_TESTS)
-CFLAGS+=-nostdlib -g -O1 -mcpu=ev6 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-%.o: $(CRT_PATH)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=0 -mbwx
-
-# Running
-QEMU_OPTS+=-serial chardev:output -kernel
diff --git a/tests/tcg/alpha/Makefile.target b/tests/tcg/alpha/Makefile.target
deleted file mode 100644
index 36d8ed1eaea..00000000000
--- a/tests/tcg/alpha/Makefile.target
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# Alpha specific tweaks
-
-ALPHA_SRC=$(SRC_PATH)/tests/tcg/alpha
-VPATH+=$(ALPHA_SRC)
-
-ALPHA_TESTS=hello-alpha test-cond test-cmov test-ovf test-cvttq
-TESTS+=$(ALPHA_TESTS)
-
-test-cmov: EXTRA_CFLAGS=-DTEST_CMOV
-test-cmov: test-cond.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-# Force generation of byte read/write
-test-plugin-mem-access: CFLAGS+=-mbwx
-
-run-test-cmov: test-cmov
diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target
deleted file mode 100644
index b66074b0b43..00000000000
--- a/tests/tcg/arm/Makefile.softmmu-target
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# ARM SoftMMU tests - included from tests/tcg/Makefile
-#
-
-ARM_SRC=$(SRC_PATH)/tests/tcg/arm/system
-
-# Set search path for all sources
-VPATH += $(ARM_SRC)
-
-# Specific Test Rules
-
-test-armv6m-undef: test-armv6m-undef.S
- $(CC) -mcpu=cortex-m0 -mfloat-abi=soft \
- -Wl,--build-id=none -x assembler-with-cpp \
- $< -o $@ -nostdlib -static \
- -T $(ARM_SRC)/$@.ld
-
-run-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel
-
-ARM_TESTS+=test-armv6m-undef
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-ARM_TEST_SRCS=$(wildcard $(ARM_SRC)/*.c)
-ARM_TESTS+=$(patsubst $(ARM_SRC)/%.c, %, $(ARM_TEST_SRCS))
-
-CRT_PATH=$(ARM_SRC)
-LINK_SCRIPT=$(ARM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT)
-CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-%.o: $(ARM_SRC)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=0
-
-# Running
-QEMU_BASE_MACHINE=-M virt -cpu max -display none
-QEMU_OPTS+=$(QEMU_BASE_MACHINE) -semihosting-config enable=on,target=native,chardev=output -kernel
-
-# console test is manual only
-QEMU_SEMIHOST=-serial none -chardev stdio,mux=on,id=stdio0 -semihosting-config enable=on,chardev=stdio0 -mon chardev=stdio0,mode=readline
-run-semiconsole: QEMU_OPTS=$(QEMU_BASE_MACHINE) $(QEMU_SEMIHOST) -kernel
-run-semiconsole: semiconsole
- $(call skip-test, $<, "MANUAL ONLY")
- $(if $(V),@printf " %-7s %s %s\n" "TO RUN" $(notdir $(QEMU)) "$(QEMU_OPTS) $<")
-run-plugin-semiconsole-with-%: semiconsole
- $(call skip-test, $<, "MANUAL ONLY")
-
-# Simple Record/Replay Test
-.PHONY: memory-record
-run-memory-record: memory-record memory
- $(call run-test, $<, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
- -icount shift=5$(COMMA)rr=record$(COMMA)rrfile=record.bin \
- $(QEMU_OPTS) memory)
-
-.PHONY: memory-replay
-run-memory-replay: memory-replay run-memory-record
- $(call run-test, $<, \
- $(QEMU) -monitor none -display none \
- -chardev file$(COMMA)path=$<.out$(COMMA)id=output \
- -icount shift=5$(COMMA)rr=replay$(COMMA)rrfile=record.bin \
- $(QEMU_OPTS) memory)
-
-EXTRA_RUNS+=run-memory-replay
-
-TESTS += $(ARM_TESTS) $(MULTIARCH_TESTS)
-EXTRA_RUNS+=$(MULTIARCH_RUNS)
diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
deleted file mode 100644
index 613bbf0939a..00000000000
--- a/tests/tcg/arm/Makefile.target
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# ARM - included from tests/tcg/Makefile
-#
-
-ARM_SRC=$(SRC_PATH)/tests/tcg/arm
-
-# Set search path for all sources
-VPATH += $(ARM_SRC)
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-fno-integrated-as, CROSS_CC_HAS_FNIA)) 3> config-cc.mak
--include config-cc.mak
-
-float_madds: CFLAGS+=-mfpu=neon-vfpv4
-
-# Basic Hello World
-ARM_TESTS = hello-arm
-hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector
-hello-arm: LDFLAGS+=-nostdlib
-
-# Float-convert Tests
-ARM_TESTS += fcvt
-fcvt: LDFLAGS += -lm
-fcvt: CFLAGS += -march=armv8.2-a+fp16 -mfpu=neon-fp-armv8
-run-fcvt: fcvt
- $(call run-test,fcvt,$(QEMU) $<)
- $(call diff-out,fcvt,$(ARM_SRC)/fcvt.ref)
-
-# PC alignment test
-ARM_TESTS += pcalign-a32
-pcalign-a32: CFLAGS+=-marm
-
-ifeq ($(CONFIG_ARM_COMPATIBLE_SEMIHOSTING),y)
-
-# Semihosting smoke test for linux-user
-semihosting: CFLAGS += -mthumb
-
-ARM_TESTS += semihosting-arm
-semihosting-arm: CFLAGS += -marm -I$(SRC_PATH)/tests/tcg/$(TARGET_NAME)
-semihosting-arm: semihosting.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-run-semihosting-arm: semihosting-arm
- $(call run-test,$<,$(QEMU) $< 2> $<.err)
-
-ARM_TESTS += semiconsole-arm
-
-semiconsole: CFLAGS += -mthumb
-
-semiconsole-arm: CFLAGS += -marm -I$(SRC_PATH)/tests/tcg/$(TARGET_NAME)
-semiconsole-arm: semihosting.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-run-semiconsole-arm: semiconsole-arm
- $(call skip-test, $<, "MANUAL ONLY")
-
-endif
-
-ARM_TESTS += commpage
-
-# Vector SHA1
-# Work around compiler false-positive warning, as we do for the 'sha1' test
-sha1-vector: CFLAGS=-O3 -Wno-stringop-overread
-sha1-vector: sha1.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-run-sha1-vector: sha1-vector run-sha1
- $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<)
- $(call diff-out, sha1-vector, sha1.out)
-
-ARM_TESTS += sha1-vector
-
-# Vector versions of sha512 (-O3 triggers vectorisation)
-sha512-vector: CFLAGS=-O3
-sha512-vector: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-ARM_TESTS += sha512-vector
-
-ifeq ($(CONFIG_PLUGIN),y)
-# Require emitting arm32 instructions, otherwise the vCPU might accidentally
-# try to execute Thumb instructions in arm32 mode after qemu_plugin_set_pc()
-test-plugin-set-pc: CFLAGS+=-marm
-endif
-
-TESTS += $(ARM_TESTS)
diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile.target
deleted file mode 100644
index 70a8ec2e7fb..00000000000
--- a/tests/tcg/hexagon/Makefile.target
+++ /dev/null
@@ -1,146 +0,0 @@
-##
-## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, see <http://www.gnu.org/licenses/>.
-##
-
-# Hexagon doesn't support gdb, so skip the EXTRA_RUNS
-EXTRA_RUNS =
-
-CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal
-CFLAGS += -fno-unroll-loops -fno-stack-protector
-
-HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon
-VPATH += $(HEX_SRC)
-
-%: $(HEX_SRC)/%.S $(HEX_SRC)/crt.S
- $(CC) -static -mv67 -nostdlib $^ -o $@
-
-HEX_TESTS = first
-HEX_TESTS += hex_sigsegv
-HEX_TESTS += misc
-HEX_TESTS += usr
-HEX_TESTS += preg_alias
-HEX_TESTS += dual_stores
-HEX_TESTS += multi_result
-HEX_TESTS += mem_noshuf
-HEX_TESTS += mem_noshuf_exception
-HEX_TESTS += circ
-HEX_TESTS += brev
-HEX_TESTS += load_unpack
-HEX_TESTS += load_align
-HEX_TESTS += atomics
-HEX_TESTS += fpstuff
-HEX_TESTS += overflow
-HEX_TESTS += signal_context
-HEX_TESTS += reg_mut
-HEX_TESTS += read_write_overlap
-HEX_TESTS += vector_add_int
-HEX_TESTS += scatter_gather
-HEX_TESTS += hvx_misc
-HEX_TESTS += hvx_histogram
-HEX_TESTS += invalid-slots
-HEX_TESTS += invalid-encoding
-HEX_TESTS += multiple-writes
-HEX_TESTS += unaligned_pc
-
-HEX_TESTS += test_abs
-HEX_TESTS += test_bitcnt
-HEX_TESTS += test_bitsplit
-HEX_TESTS += test_call
-HEX_TESTS += test_clobber
-HEX_TESTS += test_cmp
-HEX_TESTS += test_dotnew
-HEX_TESTS += test_ext
-HEX_TESTS += test_fibonacci
-HEX_TESTS += test_hl
-HEX_TESTS += test_hwloops
-HEX_TESTS += test_jmp
-HEX_TESTS += test_lsr
-HEX_TESTS += test_mpyi
-HEX_TESTS += test_packet
-HEX_TESTS += test_reorder
-HEX_TESTS += test_round
-HEX_TESTS += test_vavgw
-HEX_TESTS += test_vcmpb
-HEX_TESTS += test_vcmpw
-HEX_TESTS += test_vlsrw
-HEX_TESTS += test_vmaxh
-HEX_TESTS += test_vminh
-HEX_TESTS += test_vpmpyh
-HEX_TESTS += test_vspliceb
-
-HEX_TESTS += check_rev_gating
-HEX_TESTS += test_pnew_jump_loads
-
-HEX_TESTS += v68_scalar
-HEX_TESTS += v68_hvx
-HEX_TESTS += v69_hvx
-HEX_TESTS += v73_scalar
-
-TESTS += $(HEX_TESTS)
-
-atomics: atomics.c hex_test.h
-brev: brev.c hex_test.h
-circ: circ.c hex_test.h
-dual_stores: dual_stores.c hex_test.h
-fpstuff: fpstuff.c hex_test.h
-hex_sigsegv: hex_sigsegv.c hex_test.h
-load_align: load_align.c hex_test.h
-load_unpack: load_unpack.c hex_test.h
-mem_noshuf_exception: mem_noshuf_exception.c hex_test.h
-mem_noshuf: mem_noshuf.c hex_test.h
-misc: misc.c hex_test.h
-multi_result: multi_result.c hex_test.h
-overflow: overflow.c hex_test.h
-preg_alias: preg_alias.c hex_test.h
-read_write_overlap: read_write_overlap.c hex_test.h
-reg_mut: reg_mut.c hex_test.h
-test_pnew_jump_loads: test_pnew_jump_loads.c hex_test.h
-unaligned_pc: unaligned_pc.c
-
-# Compile for v66 so that the ELF selects a v66 CPU; the test then
-# exercises revision gating by executing a v68 .word instruction.
-run-check_rev_gating: QEMU_OPTS += -cpu v66
-check_rev_gating: check_rev_gating.c
- $(CC) $(CFLAGS) -mv66 -O2 $< -o $@ $(LDFLAGS)
-
-# This test has to be compiled for the -mv67t target
-usr: usr.c hex_test.h
- $(CC) $(CFLAGS) -mv67t -O2 -Wno-inline-asm -Wno-expansion-to-defined $< -o $@ $(LDFLAGS)
-
-# Build this test with -mv71 to exercise the CABAC instruction
-misc: misc.c
- $(CC) $(CFLAGS) -mv71 -O2 $< -o $@ $(LDFLAGS)
-scatter_gather: CFLAGS += -mhvx
-vector_add_int: CFLAGS += -mhvx -fvectorize
-hvx_misc: hvx_misc.c hvx_misc.h
-hvx_misc: CFLAGS += -mhvx
-hvx_histogram: CFLAGS += -mhvx -Wno-gnu-folding-constant
-v68_hvx: v68_hvx.c hvx_misc.h v6mpy_ref.c.inc
-v68_hvx: CFLAGS += -mhvx -Wno-unused-function
-v69_hvx: v69_hvx.c hvx_misc.h
-v69_hvx: CFLAGS += -mhvx -Wno-unused-function
-v73_scalar: CFLAGS += -Wno-unused-function
-
-hvx_histogram: hvx_histogram.c hvx_histogram_row.S
- $(CC) $(CFLAGS) $(CROSS_CC_GUEST_CFLAGS) $^ -o $@ $(LDFLAGS)
-
-ifeq ($(CONFIG_PLUGIN),y)
-# LLVM is way too aggressive with inlining and dead code elimination even at
-# -O0, which interferes with the test. What looks like dead code in this test
-# to the compiler isn't actually dead code, so we need to disable all potential
-# LLVM optimization passes.
-test-plugin-set-pc: CFLAGS += -Xclang -disable-llvm-passes
-endif
diff --git a/tests/tcg/hppa/Makefile.target b/tests/tcg/hppa/Makefile.target
deleted file mode 100644
index ea5ae2186df..00000000000
--- a/tests/tcg/hppa/Makefile.target
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# HPPA specific tweaks - specifically masking out broken tests
-
-# This triggers failures for hppa-linux about 1% of the time
-# HPPA is the odd target that can't use the sigtramp page;
-# it requires the full vdso with dwarf2 unwind info.
-run-signals: signals
- $(call skip-test, $<, "BROKEN awaiting vdso support")
-
-VPATH += $(SRC_PATH)/tests/tcg/hppa
-TESTS += stby
-
-stby: CFLAGS += -pthread
diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target
deleted file mode 100644
index 4096a1cf31f..00000000000
--- a/tests/tcg/i386/Makefile.softmmu-target
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# x86 system tests
-#
-# This currently builds only for i386. The common C code is built
-# with standard compiler flags however so we can support both by
-# adding additional boot files for x86_64.
-#
-
-I386_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/i386/system
-X64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-CRT_PATH=$(I386_SYSTEM_SRC)
-LINK_SCRIPT=$(I386_SYSTEM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_i386
-CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
-
-TESTS+=$(MULTIARCH_TESTS)
-EXTRA_RUNS+=$(MULTIARCH_RUNS)
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-%.o: $(CRT_PATH)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=1
-
-# Running
-QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel
diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
deleted file mode 100644
index f1df40411b0..00000000000
--- a/tests/tcg/i386/Makefile.target
+++ /dev/null
@@ -1,102 +0,0 @@
-# i386 cross compile notes
-
-I386_SRC=$(SRC_PATH)/tests/tcg/i386
-
-# Set search path for all sources
-VPATH += $(I386_SRC)
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-fno-pie, CROSS_CC_HAS_I386_NOPIE)) 3> config-cc.mak
-
--include config-cc.mak
-
-I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
-ALL_X86_TESTS=$(I386_SRCS:.c=)
-SKIP_I386_TESTS=test-i386-ssse3 test-avx test-3dnow test-mmx test-flags
-X86_64_TESTS:=$(filter test-i386-adcox test-i386-bmi2 $(SKIP_I386_TESTS), $(ALL_X86_TESTS))
-
-test-i386-sse-exceptions: CFLAGS += -msse4.1 -mfpmath=sse
-run-test-i386-sse-exceptions: QEMU_OPTS += -cpu max
-
-test-i386-pcmpistri: CFLAGS += -msse4.2
-run-test-i386-pcmpistri: QEMU_OPTS += -cpu max
-
-test-i386-bmi2: CFLAGS=-O2 -fwrapv
-run-test-i386-bmi2: QEMU_OPTS += -cpu max
-
-test-i386-adcox: CFLAGS=-O2
-run-test-i386-adcox: QEMU_OPTS += -cpu max
-
-test-aes: CFLAGS += -O -msse2 -maes
-test-aes: test-aes-main.c.inc
-run-test-aes: QEMU_OPTS += -cpu max
-
-#
-# hello-i386 is a barebones app
-#
-hello-i386: CFLAGS+=-ffreestanding -fno-stack-protector
-hello-i386: LDFLAGS+=-nostdlib
-
-# test-386 includes a couple of additional objects that need to be
-# linked together, we also need a no-pie capable compiler due to the
-# non-pic calls into 16-bit mode
-ifneq ($(CROSS_CC_HAS_I386_NOPIE),)
-test-i386: CFLAGS += -fno-pie
-
-test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S test-i386.h test-i386-shift.h test-i386-muldiv.h
- $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ \
- $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm
-else
-test-i386:
- $(call skip-test, "BUILD of $@", "missing -no-pie compiler support")
-run-test-i386:
- $(call skip-test, "RUN of test-i386", "not built")
-endif
-
-ifeq ($(SPEED), slow)
-
-test-i386-fprem.ref: test-i386-fprem
- $(call quiet-command, ./$< > $@,"GENREF","generating $@")
-
-run-test-i386-fprem: TIMEOUT=60
-run-test-i386-fprem: test-i386-fprem test-i386-fprem.ref
- $(call run-test,test-i386-fprem, $(QEMU) $<)
- $(call diff-out,test-i386-fprem, test-i386-fprem.ref)
-else
-SKIP_I386_TESTS+=test-i386-fprem
-endif
-
-# Update TESTS
-I386_TESTS:=$(filter-out $(SKIP_I386_TESTS), $(ALL_X86_TESTS))
-TESTS=$(MULTIARCH_TESTS) $(I386_TESTS)
-
-sha512-sse: CFLAGS=-msse4.1 -O3
-sha512-sse: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-run-sha512-sse: QEMU_OPTS+=-cpu max
-
-TESTS+=sha512-sse
-
-CLEANFILES += test-avx.h test-mmx.h test-3dnow.h
-test-3dnow.h: test-mmx.py x86.csv
- $(PYTHON) $(I386_SRC)/test-mmx.py $(I386_SRC)/x86.csv $@ 3DNOW
-
-test-mmx.h: test-mmx.py x86.csv
- $(PYTHON) $(I386_SRC)/test-mmx.py $(I386_SRC)/x86.csv $@ MMX SSE SSE2 SSE3 SSSE3
-
-test-avx.h: test-avx.py x86.csv
- $(PYTHON) $(I386_SRC)/test-avx.py $(I386_SRC)/x86.csv $@
-
-test-3dnow: CFLAGS += -masm=intel -O -I.
-run-test-3dnow: QEMU_OPTS += -cpu max
-test-3dnow: test-3dnow.h
-
-test-mmx: CFLAGS += -masm=intel -O -I.
-run-test-mmx: QEMU_OPTS += -cpu max
-test-mmx: test-mmx.h
-
-test-avx: CFLAGS += -mavx -masm=intel -O -I.
-run-test-avx: QEMU_OPTS += -cpu max
-test-avx: test-avx.h
diff --git a/tests/tcg/loongarch64/Makefile.softmmu-target b/tests/tcg/loongarch64/Makefile.softmmu-target
deleted file mode 100644
index 6d4a20fde73..00000000000
--- a/tests/tcg/loongarch64/Makefile.softmmu-target
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Loongarch64 system tests
-#
-
-LOONGARCH64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/loongarch64/system
-VPATH+=$(LOONGARCH64_SYSTEM_SRC)
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-LOONGARCH64_TEST_SRCS=$(wildcard $(LOONGARCH64_SYSTEM_SRC)/*.c)
-LOONGARCH64_TESTS = $(patsubst $(LOONGARCH64_SYSTEM_SRC)/%.c, %, $(LOONGARCH64_TEST_SRCS))
-
-CRT_PATH=$(LOONGARCH64_SYSTEM_SRC)
-LINK_SCRIPT=$(LOONGARCH64_SYSTEM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT)
-TESTS+=$(LOONGARCH64_TESTS) $(MULTIARCH_TESTS)
-CFLAGS+=-nostdlib -g -O1 -march=loongarch64 -mabi=lp64d $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc -Wl,--no-warn-rwx-segments
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-%.o: $(CRT_PATH)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=0
-# Running
-QEMU_OPTS+=-serial chardev:output -kernel
diff --git a/tests/tcg/loongarch64/Makefile.target b/tests/tcg/loongarch64/Makefile.target
deleted file mode 100644
index 00030a10266..00000000000
--- a/tests/tcg/loongarch64/Makefile.target
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# LoongArch64 specific tweaks
-
-# Loongarch64 doesn't support gdb, so skip the EXTRA_RUNS
-EXTRA_RUNS =
-
-LOONGARCH64_SRC=$(SRC_PATH)/tests/tcg/loongarch64
-VPATH += $(LOONGARCH64_SRC)
-
-LDFLAGS+=-lm
-
-LOONGARCH64_TESTS = test_bit
-LOONGARCH64_TESTS += test_div
-LOONGARCH64_TESTS += test_fclass
-LOONGARCH64_TESTS += test_fpcom
-LOONGARCH64_TESTS += test_pcadd
-LOONGARCH64_TESTS += test_fcsr
-
-TESTS += $(LOONGARCH64_TESTS)
diff --git a/tests/tcg/m68k/Makefile.target b/tests/tcg/m68k/Makefile.target
deleted file mode 100644
index 33f7b1b1275..00000000000
--- a/tests/tcg/m68k/Makefile.target
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# m68k specific tweaks - specifically masking out broken tests
-#
-
-VPATH += $(SRC_PATH)/tests/tcg/m68k
-TESTS += trap denormal
diff --git a/tests/tcg/minilib/Makefile.target b/tests/tcg/minilib/Makefile.target
deleted file mode 100644
index af0bf54be98..00000000000
--- a/tests/tcg/minilib/Makefile.target
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# System test minilib objects
-#
-# The system tests are very constrained in terms of the library they
-# support but we are not savages. We provide a few helpful routines
-# that can be shared with the tests for basic I/O.
-#
-# They assume each arch has provided a putc function.
-#
-
-SYSTEM_MINILIB_SRC=$(SRC_PATH)/tests/tcg/minilib
-MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c)
-MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS))
-
-MINILIB_CFLAGS+=-nostdlib -fno-stack-protector -ggdb -O0
-MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC)
-
-.PRECIOUS: $(MINILIB_OBJS)
-
-%.o: $(SYSTEM_MINILIB_SRC)/%.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target
deleted file mode 100644
index 5d17c1706e4..00000000000
--- a/tests/tcg/mips/Makefile.target
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# MIPS - included from tests/tcg/Makefile.target
-#
-
-MIPS_SRC=$(SRC_PATH)/tests/tcg/mips
-
-# Set search path for all sources
-VPATH += $(MIPS_SRC)
-
-# hello-mips is 32 bit only
-ifeq ($(findstring 64,$(TARGET_NAME)),)
-MIPS_TESTS=hello-mips
-
-TESTS += $(MIPS_TESTS)
-
-hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -fno-stack-protector -mabi=32
-hello-mips: LDFLAGS+=-nostdlib
-endif
diff --git a/tests/tcg/mips/user/ase/dsp/Makefile b/tests/tcg/mips/user/ase/dsp/Makefile
deleted file mode 100644
index 5c6da96870e..00000000000
--- a/tests/tcg/mips/user/ase/dsp/Makefile
+++ /dev/null
@@ -1,184 +0,0 @@
--include ../../../../config-host.mak
-
-CROSS=mips64el-unknown-linux-gnu-
-
-SIM=qemu-mipsel
-SIM_FLAGS=-cpu 74Kf
-
-CC = $(CROSS)gcc
-CFLAGS = -EL -mabi=32 -march=mips32r2 -mgp32 -mdsp -mdspr2 -static
-
-TESTCASES = test_dsp_r1_absq_s_ph.tst
-TESTCASES += test_dsp_r1_absq_s_w.tst
-TESTCASES += test_dsp_r1_addq_ph.tst
-TESTCASES += test_dsp_r1_addq_s_ph.tst
-TESTCASES += test_dsp_r1_addq_s_w.tst
-TESTCASES += test_dsp_r1_addsc.tst
-TESTCASES += test_dsp_r1_addu_qb.tst
-TESTCASES += test_dsp_r1_addu_s_qb.tst
-TESTCASES += test_dsp_r1_addwc.tst
-TESTCASES += test_dsp_r1_bitrev.tst
-TESTCASES += test_dsp_r1_bposge32.tst
-TESTCASES += test_dsp_r1_cmp_eq_ph.tst
-TESTCASES += test_dsp_r1_cmpgu_eq_qb.tst
-TESTCASES += test_dsp_r1_cmpgu_le_qb.tst
-TESTCASES += test_dsp_r1_cmpgu_lt_qb.tst
-TESTCASES += test_dsp_r1_cmp_le_ph.tst
-TESTCASES += test_dsp_r1_cmp_lt_ph.tst
-TESTCASES += test_dsp_r1_cmpu_eq_qb.tst
-TESTCASES += test_dsp_r1_cmpu_le_qb.tst
-TESTCASES += test_dsp_r1_cmpu_lt_qb.tst
-TESTCASES += test_dsp_r1_dpaq_sa_l_w.tst
-TESTCASES += test_dsp_r1_dpaq_s_w_ph.tst
-TESTCASES += test_dsp_r1_dpau_h_qbl.tst
-TESTCASES += test_dsp_r1_dpau_h_qbr.tst
-TESTCASES += test_dsp_r1_dpsq_sa_l_w.tst
-TESTCASES += test_dsp_r1_dpsq_s_w_ph.tst
-TESTCASES += test_dsp_r1_dpsu_h_qbl.tst
-TESTCASES += test_dsp_r1_dpsu_h_qbr.tst
-TESTCASES += test_dsp_r1_extp.tst
-TESTCASES += test_dsp_r1_extpdp.tst
-TESTCASES += test_dsp_r1_extpdpv.tst
-TESTCASES += test_dsp_r1_extpv.tst
-TESTCASES += test_dsp_r1_extr_rs_w.tst
-TESTCASES += test_dsp_r1_extr_r_w.tst
-TESTCASES += test_dsp_r1_extr_s_h.tst
-TESTCASES += test_dsp_r1_extrv_rs_w.tst
-TESTCASES += test_dsp_r1_extrv_r_w.tst
-TESTCASES += test_dsp_r1_extrv_s_h.tst
-TESTCASES += test_dsp_r1_extrv_w.tst
-TESTCASES += test_dsp_r1_extr_w.tst
-TESTCASES += test_dsp_r1_insv.tst
-TESTCASES += test_dsp_r1_lbux.tst
-TESTCASES += test_dsp_r1_lhx.tst
-TESTCASES += test_dsp_r1_lwx.tst
-TESTCASES += test_dsp_r1_madd.tst
-TESTCASES += test_dsp_r1_maddu.tst
-TESTCASES += test_dsp_r1_maq_sa_w_phl.tst
-TESTCASES += test_dsp_r1_maq_sa_w_phr.tst
-TESTCASES += test_dsp_r1_maq_s_w_phl.tst
-TESTCASES += test_dsp_r1_maq_s_w_phr.tst
-TESTCASES += test_dsp_r1_mfhi.tst
-TESTCASES += test_dsp_r1_mflo.tst
-TESTCASES += test_dsp_r1_modsub.tst
-TESTCASES += test_dsp_r1_msub.tst
-TESTCASES += test_dsp_r1_msubu.tst
-TESTCASES += test_dsp_r1_mthi.tst
-TESTCASES += test_dsp_r1_mthlip.tst
-TESTCASES += test_dsp_r1_mtlo.tst
-TESTCASES += test_dsp_r1_muleq_s_w_phl.tst
-TESTCASES += test_dsp_r1_muleq_s_w_phr.tst
-TESTCASES += test_dsp_r1_muleu_s_ph_qbl.tst
-TESTCASES += test_dsp_r1_muleu_s_ph_qbr.tst
-TESTCASES += test_dsp_r1_mulq_rs_ph.tst
-TESTCASES += test_dsp_r1_mult.tst
-TESTCASES += test_dsp_r1_multu.tst
-TESTCASES += test_dsp_r1_packrl_ph.tst
-TESTCASES += test_dsp_r1_pick_ph.tst
-TESTCASES += test_dsp_r1_pick_qb.tst
-TESTCASES += test_dsp_r1_precequ_ph_qbla.tst
-TESTCASES += test_dsp_r1_precequ_ph_qbl.tst
-TESTCASES += test_dsp_r1_precequ_ph_qbra.tst
-TESTCASES += test_dsp_r1_precequ_ph_qbr.tst
-TESTCASES += test_dsp_r1_preceq_w_phl.tst
-TESTCASES += test_dsp_r1_preceq_w_phr.tst
-TESTCASES += test_dsp_r1_preceu_ph_qbla.tst
-TESTCASES += test_dsp_r1_preceu_ph_qbl.tst
-TESTCASES += test_dsp_r1_preceu_ph_qbra.tst
-TESTCASES += test_dsp_r1_preceu_ph_qbr.tst
-TESTCASES += test_dsp_r1_precrq_ph_w.tst
-TESTCASES += test_dsp_r1_precrq_qb_ph.tst
-TESTCASES += test_dsp_r1_precrq_rs_ph_w.tst
-TESTCASES += test_dsp_r1_precrqu_s_qb_ph.tst
-TESTCASES += test_dsp_r1_raddu_w_qb.tst
-TESTCASES += test_dsp_r1_rddsp.tst
-TESTCASES += test_dsp_r1_repl_ph.tst
-TESTCASES += test_dsp_r1_repl_qb.tst
-TESTCASES += test_dsp_r1_replv_ph.tst
-TESTCASES += test_dsp_r1_replv_qb.tst
-TESTCASES += test_dsp_r1_shilo.tst
-TESTCASES += test_dsp_r1_shilov.tst
-TESTCASES += test_dsp_r1_shll_ph.tst
-TESTCASES += test_dsp_r1_shll_qb.tst
-TESTCASES += test_dsp_r1_shll_s_ph.tst
-TESTCASES += test_dsp_r1_shll_s_w.tst
-TESTCASES += test_dsp_r1_shllv_ph.tst
-TESTCASES += test_dsp_r1_shllv_qb.tst
-TESTCASES += test_dsp_r1_shllv_s_ph.tst
-TESTCASES += test_dsp_r1_shllv_s_w.tst
-TESTCASES += test_dsp_r1_shra_ph.tst
-TESTCASES += test_dsp_r1_shra_r_ph.tst
-TESTCASES += test_dsp_r1_shra_r_w.tst
-TESTCASES += test_dsp_r1_shrav_ph.tst
-TESTCASES += test_dsp_r1_shrav_r_ph.tst
-TESTCASES += test_dsp_r1_shrav_r_w.tst
-TESTCASES += test_dsp_r1_shrl_qb.tst
-TESTCASES += test_dsp_r1_shrlv_qb.tst
-TESTCASES += test_dsp_r1_subq_ph.tst
-TESTCASES += test_dsp_r1_subq_s_ph.tst
-TESTCASES += test_dsp_r1_subq_s_w.tst
-TESTCASES += test_dsp_r1_subu_qb.tst
-TESTCASES += test_dsp_r1_subu_s_qb.tst
-TESTCASES += test_dsp_r1_wrdsp.tst
-TESTCASES += test_dsp_r2_absq_s_qb.tst
-TESTCASES += test_dsp_r2_addqh_ph.tst
-TESTCASES += test_dsp_r2_addqh_r_ph.tst
-TESTCASES += test_dsp_r2_addqh_r_w.tst
-TESTCASES += test_dsp_r2_addqh_w.tst
-TESTCASES += test_dsp_r2_adduh_qb.tst
-TESTCASES += test_dsp_r2_adduh_r_qb.tst
-TESTCASES += test_dsp_r2_addu_ph.tst
-TESTCASES += test_dsp_r2_addu_s_ph.tst
-TESTCASES += test_dsp_r2_append.tst
-TESTCASES += test_dsp_r2_balign.tst
-TESTCASES += test_dsp_r2_cmpgdu_eq_qb.tst
-TESTCASES += test_dsp_r2_cmpgdu_le_qb.tst
-TESTCASES += test_dsp_r2_cmpgdu_lt_qb.tst
-TESTCASES += test_dsp_r2_dpaqx_sa_w_ph.tst
-TESTCASES += test_dsp_r2_dpa_w_ph.tst
-TESTCASES += test_dsp_r2_dpax_w_ph.tst
-TESTCASES += test_dsp_r2_dpaqx_s_w_ph.tst
-TESTCASES += test_dsp_r2_dpsqx_sa_w_ph.tst
-TESTCASES += test_dsp_r2_dpsqx_s_w_ph.tst
-TESTCASES += test_dsp_r2_dps_w_ph.tst
-TESTCASES += test_dsp_r2_dpsx_w_ph.tst
-TESTCASES += test_dsp_r2_mul_ph.tst
-TESTCASES += test_dsp_r2_mulq_rs_w.tst
-TESTCASES += test_dsp_r2_mulq_s_ph.tst
-TESTCASES += test_dsp_r2_mulq_s_w.tst
-TESTCASES += test_dsp_r2_mulsaq_s_w_ph.tst
-TESTCASES += test_dsp_r2_mulsa_w_ph.tst
-TESTCASES += test_dsp_r2_mul_s_ph.tst
-TESTCASES += test_dsp_r2_precr_qb_ph.tst
-TESTCASES += test_dsp_r2_precr_sra_ph_w.tst
-TESTCASES += test_dsp_r2_precr_sra_r_ph_w.tst
-TESTCASES += test_dsp_r2_prepend.tst
-TESTCASES += test_dsp_r2_shra_qb.tst
-TESTCASES += test_dsp_r2_shra_r_qb.tst
-TESTCASES += test_dsp_r2_shrav_qb.tst
-TESTCASES += test_dsp_r2_shrav_r_qb.tst
-TESTCASES += test_dsp_r2_shrl_ph.tst
-TESTCASES += test_dsp_r2_shrlv_ph.tst
-TESTCASES += test_dsp_r2_subqh_ph.tst
-TESTCASES += test_dsp_r2_subqh_r_ph.tst
-TESTCASES += test_dsp_r2_subqh_r_w.tst
-TESTCASES += test_dsp_r2_subqh_w.tst
-TESTCASES += test_dsp_r2_subuh_qb.tst
-TESTCASES += test_dsp_r2_subuh_r_qb.tst
-TESTCASES += test_dsp_r2_subu_ph.tst
-TESTCASES += test_dsp_r2_subu_s_ph.tst
-
-
-all: $(TESTCASES)
-
-%.tst: %.c
- $(CC) $(CFLAGS) $< -o $@
-
-check: $(TESTCASES)
- @for case in $(TESTCASES); do \
- echo $(SIM) $(SIM_FLAGS) ./$$case;\
- $(SIM) $(SIM_FLAGS) ./$$case; \
- done
-
-clean:
- $(RM) -rf $(TESTCASES)
diff --git a/tests/tcg/mips/user/isa/mips64r6/crc/Makefile b/tests/tcg/mips/user/isa/mips64r6/crc/Makefile
deleted file mode 100644
index b7f5811a5e9..00000000000
--- a/tests/tcg/mips/user/isa/mips64r6/crc/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Test program for MIPS64R6 CRC32 instructions
-#
-# Copyright (C) 2025 Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-#
-
-ifndef PREFIX
- $(error "PREFIX not set, please export GNU Toolchain install directory.")
-endif
-
-ifndef SYSROOT
- $(error "SYSROOT not set, please export GNU Toolchain system root directory.")
-endif
-
-SIM = ../../../../../../../build/qemu-mips64
-SIM_FLAGS = -L $(SYSROOT)
-
-CC = $(PREFIX)/bin/mips64-r6-linux-gnu-gcc
-
-TESTCASES = test_mips64r6_crc32b.tst
-TESTCASES += test_mips64r6_crc32h.tst
-TESTCASES += test_mips64r6_crc32w.tst
-TESTCASES += test_mips64r6_crc32d.tst
-TESTCASES += test_mips64r6_crc32cb.tst
-TESTCASES += test_mips64r6_crc32ch.tst
-TESTCASES += test_mips64r6_crc32cw.tst
-TESTCASES += test_mips64r6_crc32cd.tst
-
-all: $(TESTCASES)
- @for case in $(TESTCASES); do \
- echo $(SIM) $(SIM_FLAGS) ./$$case; \
- $(SIM) $(SIM_FLAGS) ./$$case; \
- echo $(RM) -rf ./$$case; \
- $(RM) -rf ./$$case; \
- done
-
-%.tst: %.c
- $(CC) $< -o $@
diff --git a/tests/tcg/mips/user/isa/r5900/Makefile b/tests/tcg/mips/user/isa/r5900/Makefile
deleted file mode 100644
index bff360df6c9..00000000000
--- a/tests/tcg/mips/user/isa/r5900/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
--include ../../../../config-host.mak
-
-CROSS=mipsr5900el-unknown-linux-gnu-
-
-SIM=qemu-mipsel
-SIM_FLAGS=-cpu R5900
-
-CC = $(CROSS)gcc
-CFLAGS = -Wall -mabi=32 -march=r5900 -static
-
-TESTCASES = test_r5900_div1.tst
-TESTCASES += test_r5900_divu1.tst
-TESTCASES += test_r5900_madd.tst
-TESTCASES += test_r5900_maddu.tst
-TESTCASES += test_r5900_mflohi1.tst
-TESTCASES += test_r5900_mtlohi1.tst
-TESTCASES += test_r5900_mult.tst
-TESTCASES += test_r5900_multu.tst
-
-all: $(TESTCASES)
-
-%.tst: %.c
- $(CC) $(CFLAGS) $< -o $@
-
-check: $(TESTCASES)
- @for case in $(TESTCASES); do \
- echo $(SIM) $(SIM_FLAGS) ./$$case;\
- $(SIM) $(SIM_FLAGS) ./$$case; \
- done
-
-clean:
- $(RM) -rf $(TESTCASES)
diff --git a/tests/tcg/mips64/Makefile.target b/tests/tcg/mips64/Makefile.target
deleted file mode 100644
index 042855844a8..00000000000
--- a/tests/tcg/mips64/Makefile.target
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-#
-# MIPS64 - included from tests/tcg/Makefile.target
-#
-
-MIPS64_SRC=$(SRC_PATH)/tests/tcg/mips64
-MIPS_OCTEON_SRC=$(SRC_PATH)/tests/tcg/mips/user/isa/octeon
-
-# Set search path for all sources
-VPATH += $(MIPS64_SRC) $(MIPS_OCTEON_SRC)
-
-MIPS64_TESTS=octeon-insns
-
-TESTS += $(MIPS64_TESTS)
-
-$(MIPS64_TESTS): CFLAGS+=-mabi=64
-
-run-octeon-insns: QEMU_OPTS+=-cpu Octeon68XX
diff --git a/tests/tcg/mips64el/Makefile.target b/tests/tcg/mips64el/Makefile.target
deleted file mode 100644
index dbc5f8dc5fe..00000000000
--- a/tests/tcg/mips64el/Makefile.target
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-#
-# MIPS64 little-endian - included from tests/tcg/Makefile.target
-#
-
-include $(SRC_PATH)/tests/tcg/mips64/Makefile.target
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
deleted file mode 100644
index 6907c2830aa..00000000000
--- a/tests/tcg/multiarch/Makefile.target
+++ /dev/null
@@ -1,232 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# Multiarch Tests - included from tests/tcg/Makefile.target
-#
-# These tests are plain C and built without any architecture specific code.
-#
-
-MULTIARCH_SRC=$(SRC_PATH)/tests/tcg/multiarch
-
-# Set search path for all sources
-VPATH += $(MULTIARCH_SRC)
-MULTIARCH_SRCS = $(notdir $(wildcard $(MULTIARCH_SRC)/*.c))
-ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET))
-VPATH += $(MULTIARCH_SRC)/linux
-MULTIARCH_SRCS += $(notdir $(wildcard $(MULTIARCH_SRC)/linux/*.c))
-endif
-ifeq ($(CONFIG_PLUGIN),y)
-VPATH += $(MULTIARCH_SRC)/plugin
-MULTIARCH_SRCS += $(notdir $(wildcard $(MULTIARCH_SRC)/plugin/*.c))
-endif
-MULTIARCH_TESTS = $(MULTIARCH_SRCS:.c=)
-
-#
-# The following are any additional rules needed to build things
-#
-
-
-float_%: LDFLAGS+=-lm
-float_%: float_%.c libs/float_helpers.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< $(MULTIARCH_SRC)/libs/float_helpers.c -o $@ $(LDFLAGS)
-
-run-float_%: float_%
- $(call run-test,$<, $(QEMU) $(QEMU_OPTS) $<)
- $(call conditional-diff-out,$<,$(SRC_PATH)/tests/tcg/$(TARGET_NAME)/$<.ref)
-
-fnmsub: LDFLAGS+=-lm
-
-testthread: LDFLAGS+=-lpthread
-
-threadcount: LDFLAGS+=-lpthread
-
-signals: LDFLAGS+=-lrt -lpthread
-
-munmap-pthread: CFLAGS+=-pthread
-munmap-pthread: LDFLAGS+=-pthread
-
-vma-pthread: CFLAGS+=-pthread
-vma-pthread: LDFLAGS+=-pthread
-
-sigreturn-sigmask: CFLAGS+=-pthread
-sigreturn-sigmask: LDFLAGS+=-pthread
-
-tb-link: LDFLAGS+=-lpthread
-
-# GCC versions 12/13/14/15 at least incorrectly complain about
-# "'SHA1Transform' reading 64 bytes from a region of size 0"; see the gcc bug
-# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106709
-# Since this is just a standard piece of library code we've borrowed for a
-# TCG test case, suppress the warning rather than trying to modify the
-# code to work around the compiler.
-sha1: CFLAGS+=-Wno-stringop-overread -Wno-unknown-warning-option
-
-# The vma-pthread seems very sensitive on gitlab and we currently
-# don't know if its exposing a real bug or the test is flaky.
-ifneq ($(GITLAB_CI),)
-run-vma-pthread: vma-pthread
- $(call skip-test, $<, "flaky on CI?")
-run-plugin-vma-pthread-with-%: vma-pthread
- $(call skip-test, $<, "flaky on CI?")
-endif
-
-run-test-mmap: test-mmap
- $(call run-test, test-mmap, $(QEMU) $<, $< (default))
-
-ifneq ($(GDB),)
-GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
-
-run-gdbstub-sha1: sha1
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/sha1.py, \
- basic gdbstub support)
-
-run-gdbstub-qxfer-auxv-read: sha1
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-auxv-read.py, \
- basic gdbstub qXfer:auxv:read support)
-
-run-gdbstub-qxfer-siginfo-read: segfault
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin "$< -s" --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-siginfo-read.py, \
- basic gdbstub qXfer:siginfo:read support)
-
-run-gdbstub-proc-mappings: sha1
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/test-proc-mappings.py, \
- proc mappings support)
-
-run-gdbstub-thread-breakpoint: testthread
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/test-thread-breakpoint.py, \
- hitting a breakpoint on non-main thread)
-
-run-gdbstub-registers: sha512
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/registers.py, \
- checking register enumeration)
-
-# The prot-none test was skipped on gitlab due to missing gdb-multiarch,
-# however it seems to have bitrotten. Disable, it is tracked as
-# https://gitlab.com/qemu-project/qemu/-/issues/3329
-run-gdbstub-prot-none: prot-none
-ifneq ($(GITLAB_CI),)
- $(call skip-test, $<, "Broken on GitLab")
-else
- $(call run-test, $@, env PROT_NONE_PY=1 $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/prot-none.py, \
- accessing PROT_NONE memory)
-endif
-
-run-gdbstub-catch-syscalls: catch-syscalls
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/catch-syscalls.py, \
- hitting a syscall catchpoint)
-
-run-gdbstub-follow-fork-mode-child: follow-fork-mode
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/follow-fork-mode-child.py, \
- following children on fork)
-
-run-gdbstub-follow-fork-mode-parent: follow-fork-mode
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/follow-fork-mode-parent.py, \
- following parents on fork)
-
-run-gdbstub-late-attach: late-attach
- $(call run-test, $@, env LATE_ATTACH_PY=1 $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" --no-suspend \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/late-attach.py, \
- attaching to a running process)
-
-else
-run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
-endif
-EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
- run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
- run-gdbstub-registers run-gdbstub-prot-none \
- run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
- run-gdbstub-follow-fork-mode-parent \
- run-gdbstub-qxfer-siginfo-read run-gdbstub-late-attach
-
-# ARM Compatible Semi Hosting Tests
-#
-# Despite having ARM in the name we actually have several
-# architectures that implement it. We gate the tests on the feature
-# appearing in config.
-#
-ifeq ($(CONFIG_ARM_COMPATIBLE_SEMIHOSTING),y)
-VPATH += $(MULTIARCH_SRC)/arm-compat-semi
-
-# Add -I path back to TARGET_NAME for semicall.h
-semihosting: CFLAGS+=-I$(SRC_PATH)/tests/tcg/$(TARGET_NAME)
-
-run-semihosting: semihosting
- $(call run-test,$<,$(QEMU) $< 2> $<.err)
-
-run-plugin-semihosting-with-%:
- $(call run-test, $@, $(QEMU) $(QEMU_OPTS) \
- -plugin $(PLUGIN_LIB)/$(call extract-plugin,$@) \
- $(call strip-plugin,$<) 2> $<.err, \
- $< with $*)
-
-semiconsole: CFLAGS+=-I$(SRC_PATH)/tests/tcg/$(TARGET_NAME)
-
-run-semiconsole: semiconsole
- $(call skip-test, $<, "MANUAL ONLY")
-
-run-plugin-semiconsole-with-%:
- $(call skip-test, $<, "MANUAL ONLY")
-
-TESTS += semihosting semiconsole
-endif
-
-test-plugin-mem-access: CFLAGS+=-pthread -O0
-test-plugin-mem-access: LDFLAGS+=-pthread -O0
-
-ifeq ($(CONFIG_PLUGIN),y)
-# Test plugin memory access instrumentation
-run-plugin-test-plugin-mem-access-with-libmem.so: \
- PLUGIN_ARGS=$(COMMA)print-accesses=true
-run-plugin-test-plugin-mem-access-with-libmem.so: \
- CHECK_PLUGIN_OUTPUT_COMMAND= \
- $(SRC_PATH)/tests/tcg/multiarch/plugin/regex-compare.sh $@.out
-run-plugin-test-plugin-syscall-filter-with-libsyscall.so:
-run-plugin-test-plugin-set-pc-with-libsetpc.so:
-
-EXTRA_RUNS_WITH_PLUGIN += run-plugin-test-plugin-mem-access-with-libmem.so \
- run-plugin-test-plugin-syscall-filter-with-libsyscall.so \
- run-plugin-test-plugin-set-pc-with-libsetpc.so
-
-else # CONFIG_PLUGIN=n
-# Do not build the syscall skipping test if it's not tested with the setpc
-# plugin because it will simply fail the test.
-MULTIARCH_TESTS := $(filter-out test-plugin-set-pc, $(MULTIARCH_TESTS))
-
-# test-plugin-syscall-filter needs syscall plugin to succeed
-test-plugin-syscall-filter: CFLAGS+=-DSKIP
-endif
-
-# Update TESTS
-TESTS += $(MULTIARCH_TESTS)
diff --git a/tests/tcg/multiarch/system/Makefile.softmmu-target b/tests/tcg/multiarch/system/Makefile.softmmu-target
deleted file mode 100644
index 98c4eda5e00..00000000000
--- a/tests/tcg/multiarch/system/Makefile.softmmu-target
+++ /dev/null
@@ -1,81 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# Multiarch system tests
-#
-# We just collect the tests together here and rely on the actual guest
-# architecture to add to the test dependencies and deal with the
-# complications of building.
-#
-# To support the multiarch guests the target arch needs to provide a
-# boot.S that jumps to main and provides a __sys_outc functions.
-# Remember to update MULTIARCH_SOFTMMU_TARGETS in the tcg test
-# Makefile.target when this is done.
-#
-
-MULTIARCH_SRC=$(SRC_PATH)/tests/tcg/multiarch
-MULTIARCH_SYSTEM_SRC=$(MULTIARCH_SRC)/system
-VPATH+=$(MULTIARCH_SYSTEM_SRC)
-
-MULTIARCH_TEST_SRCS=$(wildcard $(MULTIARCH_SYSTEM_SRC)/*.c)
-MULTIARCH_TESTS = $(patsubst $(MULTIARCH_SYSTEM_SRC)/%.c, %, $(MULTIARCH_TEST_SRCS))
-
-ifneq ($(GDB),)
-GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
-
-run-gdbstub-memory: memory
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) \
- --output $<.gdb.out \
- --qargs \
- "-monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/memory.py, \
- softmmu gdbstub support)
-run-gdbstub-interrupt: interrupt
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) \
- --output $<.gdb.out \
- --qargs \
- "-smp 2 -monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/interrupt.py, \
- softmmu gdbstub support)
-run-gdbstub-untimely-packet: hello
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --gdb-args "-ex 'set debug remote 1'" \
- --output untimely-packet.gdb.out \
- --stderr untimely-packet.gdb.err \
- --qemu $(QEMU) \
- --bin $< --qargs \
- "-monitor none -display none -chardev file$(COMMA)path=untimely-packet.out$(COMMA)id=output $(QEMU_OPTS)", \
- softmmu gdbstub untimely packets)
- $(call quiet-command, \
- (! grep -Fq 'Packet instead of Ack, ignoring it' untimely-packet.gdb.err), \
- "GREP", file untimely-packet.gdb.err)
-
-run-gdbstub-registers: memory
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) \
- --output $<.registers.gdb.out \
- --qargs \
- "-monitor none -display none -chardev file$(COMMA)path=$<.out$(COMMA)id=output $(QEMU_OPTS)" \
- --bin $< --test $(MULTIARCH_SRC)/gdbstub/registers.py, \
- softmmu gdbstub support)
-else
-run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
-endif
-
-MULTIARCH_RUNS += run-gdbstub-memory run-gdbstub-interrupt \
- run-gdbstub-untimely-packet run-gdbstub-registers
-
-ifeq ($(CONFIG_PLUGIN),y)
-# Test plugin memory access instrumentation
-run-plugin-memory-with-libmem.so: memory libmem.so
-run-plugin-memory-with-libmem.so: PLUGIN_ARGS=$(COMMA)region-summary=true
-run-plugin-memory-with-libmem.so: CHECK_PLUGIN_OUTPUT_COMMAND=$(MULTIARCH_SYSTEM_SRC)/validate-memory-counts.py $@.out
-
-EXTRA_RUNS_WITH_PLUGIN += run-plugin-memory-with-libmem.so
-endif
diff --git a/tests/tcg/or1k/Makefile b/tests/tcg/or1k/Makefile
deleted file mode 100644
index fb5ceda512f..00000000000
--- a/tests/tcg/or1k/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
--include ../../config-host.mak
-
-CROSS = or1k-linux-
-
-SIM = qemu-or1k
-
-CC = $(CROSS)gcc
-
-TESTCASES = test_add.tst
-TESTCASES += test_sub.tst
-TESTCASES += test_addc.tst
-TESTCASES += test_addi.tst
-TESTCASES += test_addic.tst
-TESTCASES += test_and_or.tst
-TESTCASES += test_bf.tst
-TESTCASES += test_bnf.tst
-TESTCASES += test_div.tst
-TESTCASES += test_divu.tst
-TESTCASES += test_extx.tst
-TESTCASES += test_fx.tst
-TESTCASES += test_jal.tst
-TESTCASES += test_j.tst
-TESTCASES += test_lf_div.tst
-TESTCASES += test_lf_eqs.tst
-TESTCASES += test_lf_ges.tst
-TESTCASES += test_lf_gts.tst
-TESTCASES += test_lf_les.tst
-TESTCASES += test_lf_lts.tst
-TESTCASES += test_lf_mul.tst
-TESTCASES += test_lf_nes.tst
-TESTCASES += test_lf_rem.tst
-TESTCASES += test_lf_sub.tst
-TESTCASES += test_lf_add.tst
-TESTCASES += test_logic.tst
-TESTCASES += test_lx.tst
-TESTCASES += test_movhi.tst
-TESTCASES += test_mul.tst
-TESTCASES += test_mulu.tst
-TESTCASES += test_muli.tst
-TESTCASES += test_sfeq.tst
-TESTCASES += test_sfeqi.tst
-TESTCASES += test_sfges.tst
-TESTCASES += test_sfgesi.tst
-TESTCASES += test_sfgeu.tst
-TESTCASES += test_sfgeui.tst
-TESTCASES += test_sfgts.tst
-TESTCASES += test_sfgtsi.tst
-TESTCASES += test_sfgtu.tst
-TESTCASES += test_sfgtui.tst
-TESTCASES += test_sfles.tst
-TESTCASES += test_sflesi.tst
-TESTCASES += test_sfleu.tst
-TESTCASES += test_sfleui.tst
-TESTCASES += test_sflts.tst
-TESTCASES += test_sfltsi.tst
-TESTCASES += test_sfltu.tst
-TESTCASES += test_sfltui.tst
-TESTCASES += test_sfne.tst
-TESTCASES += test_sfnei.tst
-
-all: $(TESTCASES)
-
-%.tst: %.c
- $(CC) -static $< -o $@
-
-
-check: $(TESTCASES)
- @for case in $(TESTCASES); do $(SIM) $$case; echo $$case pass!; sleep 0.2; done
-
-clean:
- $(RM) -rf $(TESTCASES)
diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target
deleted file mode 100644
index 0d058b26006..00000000000
--- a/tests/tcg/ppc64/Makefile.target
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# ppc64 specific tweaks
-
-VPATH += $(SRC_PATH)/tests/tcg/ppc64
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-mcpu=power8, CROSS_CC_HAS_CPU_POWER8); \
- $(call cc-option,-mpower10, CROSS_CC_HAS_POWER10)) 3> config-cc.mak
-
--include config-cc.mak
-
-# multi-threaded tests are known to fail (e.g., clang-user CI job)
-# See: https://gitlab.com/qemu-project/qemu/-/issues/2456
-run-signals: signals
- $(call skip-test, $<, "BROKEN (flaky with clang) ")
-run-plugin-signals-with-%:
- $(call skip-test, $<, "BROKEN (flaky with clang) ")
-
-run-threadcount: threadcount
- $(call skip-test, $<, "BROKEN (flaky with clang) ")
-run-plugin-threadcount-with-%:
- $(call skip-test, $<, "BROKEN (flaky with clang) ")
-
-ifneq ($(CROSS_CC_HAS_CPU_POWER8),)
-PPC64_TESTS=bcdsub non_signalling_xscv
-endif
-$(PPC64_TESTS): CFLAGS += -mcpu=power8
-
-ifneq ($(CROSS_CC_HAS_CPU_POWER8),)
-PPC64_TESTS += vsx_f2i_nan
-endif
-vsx_f2i_nan: CFLAGS += -mcpu=power8 -I$(SRC_PATH)/include
-
-PPC64_TESTS += mtfsf
-PPC64_TESTS += mffsce
-
-ifneq ($(CROSS_CC_HAS_POWER10),)
-PPC64_TESTS += byte_reverse sha512-vector vector
-endif
-byte_reverse: CFLAGS += -mcpu=power10
-run-byte_reverse: QEMU_OPTS+=-cpu POWER10
-
-sha512-vector: CFLAGS +=-mcpu=power10 -O3
-sha512-vector: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-run-sha512-vector: QEMU_OPTS+=-cpu POWER10
-
-vector: CFLAGS += -mcpu=power10 -I$(SRC_PATH)/include
-run-vector: QEMU_OPTS += -cpu POWER10
-
-PPC64_TESTS += signal_save_restore_xer
-PPC64_TESTS += xxspltw
-PPC64_TESTS += test-aes
-
-# ppc64 ABI uses function descriptors, and thus, QEMU can't find symbol for a
-# given instruction. Thus, we don't check output of mem-access plugin.
-run-plugin-test-plugin-mem-access-with-libmem.so: \
- CHECK_PLUGIN_OUTPUT_COMMAND=
-
-TESTS += $(PPC64_TESTS)
diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target
deleted file mode 100644
index daad5118a56..00000000000
--- a/tests/tcg/ppc64le/Makefile.target
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# ppc64le specific tweaks
-
-VPATH += $(SRC_PATH)/tests/tcg/ppc64le
-
-include $(SRC_PATH)/tests/tcg/ppc64/Makefile.target
diff --git a/tests/tcg/riscv64/Makefile.softmmu-target b/tests/tcg/riscv64/Makefile.softmmu-target
deleted file mode 100644
index 82be8a2c915..00000000000
--- a/tests/tcg/riscv64/Makefile.softmmu-target
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# RISC-V system tests
-#
-
-TEST_SRC = $(SRC_PATH)/tests/tcg/riscv64
-VPATH += $(TEST_SRC)
-
-LINK_SCRIPT = $(TEST_SRC)/semihost.ld
-LDFLAGS = -T $(LINK_SCRIPT)
-CFLAGS += -g -Og
-
-%.o: %.S
- $(CC) $(CFLAGS) $< -Wa,--noexecstack -c -o $@
-%: %.o $(LINK_SCRIPT)
- $(LD) $(LDFLAGS) $< -o $@
-
-QEMU_OPTS += -M virt -display none -semihosting -device loader,file=
-
-EXTRA_RUNS += run-issue1060
-run-issue1060: issue1060
- $(call run-test, $<, $(QEMU) $(QEMU_OPTS)$<)
-
-EXTRA_RUNS += run-test-mepc-masking
-run-test-mepc-masking: test-mepc-masking
- $(call run-test, $<, $(QEMU) $(QEMU_OPTS)$<)
-
-EXTRA_RUNS += run-plugin-doubletrap
-run-plugin-doubletrap: doubletrap
- $(call run-test, $<, \
- $(QEMU) -plugin ../plugins/libdiscons.so -d plugin -D $<.pout \
- $(QEMU_OPTS)$<)
-
-EXTRA_RUNS += run-plugin-interruptedmemory
-run-plugin-interruptedmemory: interruptedmemory
- $(call run-test, $<, \
- $(QEMU) -plugin ../plugins/libdiscons.so -d plugin -D $<.pout \
- $(QEMU_OPTS)$<)
-
-EXTRA_RUNS += run-test-crc32
-comma:= ,
-run-test-crc32: test-crc32
- $(call run-test, $<, $(QEMU) -cpu rv64$(comma)xlrbr=true $(QEMU_OPTS)$<)
-
-# We don't currently support the multiarch system tests
-undefine MULTIARCH_TESTS
diff --git a/tests/tcg/riscv64/Makefile.target b/tests/tcg/riscv64/Makefile.target
deleted file mode 100644
index 4da5b9a3b32..00000000000
--- a/tests/tcg/riscv64/Makefile.target
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- Mode: makefile -*-
-# RISC-V specific tweaks
-
-VPATH += $(SRC_PATH)/tests/tcg/riscv64
-TESTS += test-div
-TESTS += noexec
-
-# Disable compressed instructions for test-noc
-TESTS += test-noc
-test-noc: LDFLAGS = -nostdlib -static
-run-test-noc: QEMU_OPTS += -cpu rv64,c=false
-
-TESTS += test-aes
-run-test-aes: QEMU_OPTS += -cpu rv64,zk=on
-
-# Test for fcvtmod
-TESTS += test-fcvtmod
-test-fcvtmod: CFLAGS += -march=rv64imafdc
-test-fcvtmod: LDFLAGS += -static
-run-test-fcvtmod: QEMU_OPTS += -cpu rv64,d=true,zfa=true
diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target
deleted file mode 100644
index a4425d3184a..00000000000
--- a/tests/tcg/s390x/Makefile.softmmu-target
+++ /dev/null
@@ -1,57 +0,0 @@
-S390X_SRC=$(SRC_PATH)/tests/tcg/s390x
-VPATH+=$(S390X_SRC)
-# EXTFLAGS can be passed by the user, e.g. to override the --accel
-QEMU_OPTS+=-action panic=exit-failure -nographic -serial chardev:output $(EXTFLAGS) -kernel
-LINK_SCRIPT=$(S390X_SRC)/softmmu.ld
-CFLAGS+=-ggdb -O0 -I$(SRC_PATH)/include/hw/s390x/ipl/
-LDFLAGS=-nostdlib -static
-
-%.o: %.S
- $(CC) -march=z13 -m64 -Wa,--noexecstack -c $< -o $@
-
-%.o: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -march=z13 -m64 -c $< -o $@
-
-%: %.o
- $(CC) $< -o $@ $(LDFLAGS)
-
-ASM_TESTS = \
- bal \
- cksm \
- clm \
- exrl-ssm-early \
- icm \
- sam \
- lpsw \
- lpswe-early \
- lra \
- mc \
- per \
- precise-smc-softmmu \
- sckc \
- ssm-early \
- stosm-early \
- stpq \
- unaligned-lowcore
-
-include $(S390X_SRC)/pgm-specification.mak
-$(PGM_SPECIFICATION_TESTS): pgm-specification-softmmu.o
-$(PGM_SPECIFICATION_TESTS): LDFLAGS+=pgm-specification-softmmu.o
-ASM_TESTS += $(PGM_SPECIFICATION_TESTS)
-
-$(ASM_TESTS): LDFLAGS += -Wl,-T$(LINK_SCRIPT) -Wl,--build-id=none
-$(ASM_TESTS): $(LINK_SCRIPT)
-TESTS += $(ASM_TESTS)
-
-MULTIARCH_TESTS += mvc-smc
-S390X_MULTIARCH_RUNTIME_OBJS = head64.o console.o $(MINILIB_OBJS)
-$(MULTIARCH_TESTS): $(S390X_MULTIARCH_RUNTIME_OBJS)
-$(MULTIARCH_TESTS): LDFLAGS += $(S390X_MULTIARCH_RUNTIME_OBJS)
-$(MULTIARCH_TESTS): CFLAGS += $(MINILIB_INC) \
- -I$(SRC_PATH)/roms/SLOF/lib/libc/include/
-memory: CFLAGS += -DCHECK_UNALIGNED=0
-
-# s390x clears the BSS section so we need to account for that
-run-plugin-memory-with-libmem.so: \
- CHECK_PLUGIN_OUTPUT_COMMAND=$(MULTIARCH_SYSTEM_SRC)/validate-memory-counts.py \
- --bss-cleared $@.out
diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target
deleted file mode 100644
index 0ca030ded01..00000000000
--- a/tests/tcg/s390x/Makefile.target
+++ /dev/null
@@ -1,127 +0,0 @@
-S390X_SRC=$(SRC_PATH)/tests/tcg/s390x
-VPATH+=$(S390X_SRC)
-CFLAGS+=-march=zEC12 -m64
-
-%.o: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
-
-config-cc.mak: Makefile
- $(quiet-@)( \
- $(call cc-option,-march=z14, CROSS_CC_HAS_Z14); \
- $(call cc-option,-march=z15, CROSS_CC_HAS_Z15)) 3> config-cc.mak
--include config-cc.mak
-
-TESTS+=hello-s390x
-TESTS+=csst
-TESTS+=ipm
-TESTS+=exrl-trt
-TESTS+=exrl-trtr
-TESTS+=pack
-TESTS+=mie3-compl
-TESTS+=mie3-mvcrl
-TESTS+=mie3-sel
-TESTS+=mvo
-TESTS+=mvc
-TESTS+=shift
-TESTS+=trap
-TESTS+=signals-s390x
-TESTS+=branch-relative-long
-TESTS+=noexec
-TESTS+=div
-TESTS+=clst
-TESTS+=long-double
-TESTS+=cdsg
-TESTS+=chrl
-TESTS+=rxsbg
-TESTS+=ex-relative-long
-TESTS+=ex-branch
-TESTS+=mxdb
-TESTS+=epsw
-TESTS+=larl
-TESTS+=mdeb
-TESTS+=cgebra
-TESTS+=clgebr
-TESTS+=clc
-TESTS+=laalg
-TESTS+=add-logical-with-carry
-TESTS+=lae
-TESTS+=cvd
-TESTS+=cvb
-TESTS+=ts
-TESTS+=ex-smc
-TESTS+=divide-to-integer
-
-cdsg: CFLAGS+=-pthread
-cdsg: LDFLAGS+=-pthread
-
-# The following tests contain inline assembly that requires inlining,
-# and thus cannot be built with -O0.
-rxsbg: CFLAGS+=-O2
-divide-to-integer: CFLAGS+=-O2
-
-cgebra: LDFLAGS+=-lm
-clgebr: LDFLAGS+=-lm
-divide-to-integer: LDFLAGS+=-lm
-
-include $(S390X_SRC)/pgm-specification.mak
-$(PGM_SPECIFICATION_TESTS): pgm-specification-user.o
-$(PGM_SPECIFICATION_TESTS): LDFLAGS+=pgm-specification-user.o
-TESTS += $(PGM_SPECIFICATION_TESTS)
-
-Z13_TESTS=vistr
-Z13_TESTS+=lcbb
-Z13_TESTS+=locfhr
-Z13_TESTS+=vcksm
-Z13_TESTS+=vstl
-Z13_TESTS+=vrep
-Z13_TESTS+=precise-smc-user
-$(Z13_TESTS): CFLAGS+=-march=z13 -O2
-TESTS+=$(Z13_TESTS)
-
-ifneq ($(CROSS_CC_HAS_Z14),)
-Z14_TESTS=fma vfminmax
-fma: float.h
-fma: LDFLAGS+=-lm
-vfminmax: LDFLAGS+=-lm
-vfminmax: float.h
-$(Z14_TESTS): CFLAGS+=-march=z14 -O2
-TESTS+=$(Z14_TESTS)
-endif
-
-ifneq ($(CROSS_CC_HAS_Z15),)
-Z15_TESTS=vxeh2_vs
-Z15_TESTS+=vxeh2_vcvt
-Z15_TESTS+=vxeh2_vlstr
-Z15_TESTS+=vxeh2_vstrs
-$(Z15_TESTS): CFLAGS+=-march=z15 -O2
-TESTS+=$(Z15_TESTS)
-endif
-
-ifneq ($(GDB),)
-GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
-
-run-gdbstub-signals-s390x: signals-s390x
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(S390X_SRC)/gdbstub/test-signals-s390x.py, \
- mixing signals and debugging)
-
-hello-s390x-asm: CFLAGS+=-nostdlib
-
-run-gdbstub-svc: hello-s390x-asm
- $(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(GDB) \
- --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
- --bin $< --test $(S390X_SRC)/gdbstub/test-svc.py, \
- single-stepping svc)
-
-EXTRA_RUNS += run-gdbstub-signals-s390x run-gdbstub-svc
-endif
-
-# MVX versions of sha512
-sha512-mvx: CFLAGS=-march=z13 -mvx -O3
-sha512-mvx: sha512.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-TESTS+=sha512-mvx
diff --git a/tests/tcg/sh4/Makefile.target b/tests/tcg/sh4/Makefile.target
deleted file mode 100644
index b7a8737be0f..00000000000
--- a/tests/tcg/sh4/Makefile.target
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# SuperH specific tweaks
-#
-
-VPATH += $(SRC_PATH)/tests/tcg/sh4
-
-test-macl: CFLAGS += -O -g
-TESTS += test-macl
-
-test-macw: CFLAGS += -O -g
-TESTS += test-macw
-
-test-addv: CFLAGS += -O -g
-TESTS += test-addv
-
-test-subv: CFLAGS += -O -g
-TESTS += test-subv
diff --git a/tests/tcg/tricore/Makefile.softmmu-target b/tests/tcg/tricore/Makefile.softmmu-target
deleted file mode 100644
index 258aeb40ae8..00000000000
--- a/tests/tcg/tricore/Makefile.softmmu-target
+++ /dev/null
@@ -1,53 +0,0 @@
-TESTS_PATH = $(SRC_PATH)/tests/tcg/tricore
-ASM_TESTS_PATH = $(TESTS_PATH)/asm
-C_TESTS_PATH = $(TESTS_PATH)/c
-
-LDFLAGS = -T$(TESTS_PATH)/link.ld --mcpu=tc162
-ASFLAGS = -mtc162
-CFLAGS = -mtc162 -c -I$(TESTS_PATH)
-
-TESTS += test_abs.asm.tst
-TESTS += test_bmerge.asm.tst
-TESTS += test_clz.asm.tst
-TESTS += test_crcn.asm.tst
-TESTS += test_dextr.asm.tst
-TESTS += test_dvstep.asm.tst
-TESTS += test_fadd.asm.tst
-TESTS += test_fmul.asm.tst
-TESTS += test_ftohp.asm.tst
-TESTS += test_ftoi.asm.tst
-TESTS += test_ftou.asm.tst
-TESTS += test_hptof.asm.tst
-TESTS += test_imask.asm.tst
-TESTS += test_insert.asm.tst
-TESTS += test_ld_bu.asm.tst
-TESTS += test_ld_h.asm.tst
-TESTS += test_madd.asm.tst
-TESTS += test_msub.asm.tst
-TESTS += test_muls.asm.tst
-
-TESTS += test_boot_to_main.c.tst
-TESTS += test_context_save_areas.c.tst
-
-QEMU_OPTS += -M tricore_testboard -cpu tc37x -nographic -kernel
-
-%.pS: $(ASM_TESTS_PATH)/%.S
- $(CC) -E -o $@ $<
-
-%.o: %.pS
- $(AS) $(ASFLAGS) -o $@ $<
-
-%.asm.tst: %.o
- $(LD) $(LDFLAGS) $< -o $@
-
-crt0-tc2x.o: $(C_TESTS_PATH)/crt0-tc2x.S
- $(AS) $(ASFLAGS) -o $@ $<
-
-%.o: $(C_TESTS_PATH)/%.c
- $(CC) $(CFLAGS) -o $@ $<
-
-%.c.tst: %.o crt0-tc2x.o
- $(LD) $(LDFLAGS) -o $@ $^
-
-# We don't currently support the multiarch system tests
-undefine MULTIARCH_TESTS
diff --git a/tests/tcg/x86_64/Makefile.softmmu-target b/tests/tcg/x86_64/Makefile.softmmu-target
deleted file mode 100644
index 4e65f58b570..00000000000
--- a/tests/tcg/x86_64/Makefile.softmmu-target
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# x86_64 system tests
-#
-
-X64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system
-X64_SYSTEM_TESTS=$(patsubst $(X64_SYSTEM_SRC)/%.c, %, $(wildcard $(X64_SYSTEM_SRC)/*.c))
-
-VPATH+=$(X64_SYSTEM_SRC)
-
-# These objects provide the basic boot code and helper functions for all tests
-CRT_OBJS=boot.o
-
-CRT_PATH=$(X64_SYSTEM_SRC)
-LINK_SCRIPT=$(X64_SYSTEM_SRC)/kernel.ld
-LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_x86_64
-CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
-
-TESTS+=$(MULTIARCH_TESTS) $(X64_SYSTEM_TESTS)
-EXTRA_RUNS+=$(MULTIARCH_RUNS)
-
-# building head blobs
-.PRECIOUS: $(CRT_OBJS)
-
-%.o: $(CRT_PATH)/%.S
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -Wa,--noexecstack -c $< -o $@
-
-# Build and link the tests
-%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
-
-memory: CFLAGS+=-DCHECK_UNALIGNED=1
-
-# Running
-QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel
-
-ifeq ($(CONFIG_PLUGIN),y)
-run-plugin-patch-target-with-libpatch.so: \
- PLUGIN_ARGS=$(COMMA)target=ffc0$(COMMA)patch=9090$(COMMA)use_hwaddr=true
-run-plugin-patch-target-with-libpatch.so: \
- CHECK_PLUGIN_OUTPUT_COMMAND=$(X64_SYSTEM_SRC)/validate-patch.py $@.out
-run-plugin-patch-target-with-libpatch.so: patch-target libpatch.so
-EXTRA_RUNS_WITH_PLUGIN+=run-plugin-patch-target-with-libpatch.so
-endif
diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
deleted file mode 100644
index be20fc64e88..00000000000
--- a/tests/tcg/x86_64/Makefile.target
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# x86_64 tests - included from tests/tcg/Makefile.target
-#
-# Currently we only build test-x86_64 and test-i386-ssse3 from
-# $(SRC_PATH)/tests/tcg/i386/
-#
-
-include $(SRC_PATH)/tests/tcg/i386/Makefile.target
-
-X86_64_TESTS += test-2413
-
-ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET))
-X86_64_TESTS += vsyscall
-X86_64_TESTS += noexec
-X86_64_TESTS += cmpxchg
-X86_64_TESTS += adox
-X86_64_TESTS += test-1648
-X86_64_TESTS += test-2175
-X86_64_TESTS += cross-modifying-code
-X86_64_TESTS += fma
-TESTS=$(MULTIARCH_TESTS) $(X86_64_TESTS) test-x86_64
-else
-TESTS=$(MULTIARCH_TESTS)
-endif
-
-adox: CFLAGS=-O2
-
-run-test-i386-ssse3: QEMU_OPTS += -cpu max
-run-plugin-test-i386-ssse3-%: QEMU_OPTS += -cpu max
-
-cross-modifying-code: CFLAGS+=-pthread
-cross-modifying-code: LDFLAGS+=-pthread
-
-test-x86_64: LDFLAGS+=-lm -lc
-test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
- $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
-
-%: $(SRC_PATH)/tests/tcg/x86_64/%.c
- $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
diff --git a/tests/tcg/xtensa/Makefile.softmmu-target b/tests/tcg/xtensa/Makefile.softmmu-target
deleted file mode 100644
index a29571b367c..00000000000
--- a/tests/tcg/xtensa/Makefile.softmmu-target
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Xtensa system tests
-#
-
-CORE=dc232b
-ifneq ($(shell $(QEMU) -cpu help | grep -w $(CORE)),)
-
-XTENSA_SRC = $(SRC_PATH)/tests/tcg/xtensa
-XTENSA_ALL = $(filter-out $(XTENSA_SRC)/linker.ld.S,$(wildcard $(XTENSA_SRC)/*.S))
-XTENSA_TESTS = $(patsubst $(XTENSA_SRC)/%.S, %, $(XTENSA_ALL))
-# Filter out common blobs and broken tests
-XTENSA_BROKEN_TESTS = crt vectors
-XTENSA_USABLE_TESTS = $(filter-out $(XTENSA_BROKEN_TESTS), $(XTENSA_TESTS))
-
-# add to the list of tests
-TESTS += $(XTENSA_USABLE_TESTS)
-VPATH += $(XTENSA_SRC)
-
-QEMU_OPTS+=-M sim -cpu $(CORE) -nographic -semihosting -icount 6 $(EXTFLAGS) -kernel
-
-INCLUDE_DIRS = $(SRC_PATH)/target/xtensa/core-$(CORE)
-XTENSA_INC = $(addprefix -I,$(INCLUDE_DIRS))
-
-vectors_ASFLAGS = -mtext-section-literals
-ASFLAGS = -Wa,--no-absolute-literals
-LDFLAGS = -Tlinker.ld -nostartfiles -nostdlib
-
-CRT = crt.o vectors.o
-CLEANFILES += linker.ld
-
-linker.ld: linker.ld.S
- $(CC) $(XTENSA_INC) -E -P $< -o $@
-
-$(XTENSA_USABLE_TESTS): linker.ld macros.inc $(CRT) Makefile.softmmu-target
-
-# special rule for common blobs
-%.o: %.S
- $(CC) $(XTENSA_INC) $($*_ASFLAGS) $(ASFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
-
-%: %.S
- $(CC) $(XTENSA_INC) $(ASFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT)
-
-endif
-
-# We don't currently support the multiarch system tests
-undefine MULTIARCH_TESTS
diff --git a/tests/tcg/xtensaeb/Makefile.softmmu-target b/tests/tcg/xtensaeb/Makefile.softmmu-target
deleted file mode 100644
index 95d0528c372..00000000000
--- a/tests/tcg/xtensaeb/Makefile.softmmu-target
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Xtensa system tests
-#
-
-include $(SRC_PATH)/tests/tcg/xtensa/Makefile.softmmu-target
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* [PATCH v3 91/91] configure: remove --cross-cc* options
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (89 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 90/91] tests/tcg: remove Makefiles Pierrick Bouvier
@ 2026-07-06 22:33 ` Pierrick Bouvier
2026-07-06 22:48 ` [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (5 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:33 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Those options were useful a few years ago, before containers were
available as an alternative for missing cross compilers. Simplify the
workflow by removing those options and maintaining only the container
based approach.
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
configure | 473 ------------------------------------
docs/devel/testing/main.rst | 22 +-
2 files changed, 3 insertions(+), 492 deletions(-)
diff --git a/configure b/configure
index d8bc10060e1..e442cf84676 100755
--- a/configure
+++ b/configure
@@ -228,14 +228,6 @@ for opt do
;;
--extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS $optarg"
;;
- --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option"
- ;;
- --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-cflags-}; cc_arch=${cc_arch%%=*}
- eval "cross_cc_cflags_${cc_arch}=\$optarg"
- ;;
- --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*}
- eval "cross_cc_${cc_arch}=\$optarg"
- ;;
--cross-prefix-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-prefix-FOO option"
;;
--cross-prefix-*) cc_arch=${opt#--cross-prefix-}; cc_arch=${cc_arch%%=*}
@@ -636,8 +628,6 @@ for opt do
;;
--extra-ldflags=*)
;;
- --cross-cc-*)
- ;;
--cross-prefix-*)
;;
--enable-docs) docs=enabled
@@ -854,8 +844,6 @@ Advanced options (experts only):
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags CXXFLAGS
--extra-objcflags=OBJCFLAGS append extra Objective C compiler flags OBJCFLAGS
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
- --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
- --cross-cc-cflags-ARCH= use compiler flags when building ARCH guest tests
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
--python=PYTHON use specified python [$python]
--ninja=NINJA use specified ninja [$ninja]
@@ -1288,366 +1276,6 @@ EOF
fi
fi
-##########################################
-# functions to probe cross compilers
-
-runc="no"
-if test $use_containers = "yes" && (has "docker" || has "podman"); then
- runc=$($python "$source_path"/tests/docker/docker.py --engine "$container_engine" probe)
- if test "$runc" != "no"; then
- docker_py="$python $source_path/tests/docker/docker.py --engine $container_engine"
- fi
-fi
-
-# cross compilers defaults, can be overridden with --cross-cc-ARCH
-: ${cross_prefix_aarch64="aarch64-linux-gnu-"}
-: ${cross_prefix_aarch64_be="$cross_prefix_aarch64"}
-: ${cross_prefix_alpha="alpha-linux-gnu-"}
-: ${cross_prefix_arm="arm-linux-gnueabihf-"}
-: ${cross_prefix_armeb="$cross_prefix_arm"}
-: ${cross_prefix_hexagon="hexagon-unknown-linux-musl-"}
-: ${cross_prefix_loongarch64="loongarch64-unknown-linux-gnu-"}
-: ${cross_prefix_hppa="hppa-linux-gnu-"}
-: ${cross_prefix_i386="i686-linux-gnu-"}
-: ${cross_prefix_m68k="m68k-linux-gnu-"}
-: ${cross_prefix_microblaze="microblaze-linux-musl-"}
-: ${cross_prefix_mips64el="mips64el-linux-gnuabi64-"}
-: ${cross_prefix_mips64="mips64-linux-gnuabi64-"}
-: ${cross_prefix_mipsel="mipsel-linux-gnu-"}
-: ${cross_prefix_mips="mips-linux-gnu-"}
-: ${cross_prefix_ppc="powerpc-linux-gnu-"}
-: ${cross_prefix_ppc64="powerpc64-linux-gnu-"}
-: ${cross_prefix_ppc64le="$cross_prefix_ppc64"}
-: ${cross_prefix_riscv64="riscv64-linux-gnu-"}
-: ${cross_prefix_s390x="s390x-linux-gnu-"}
-: ${cross_prefix_sh4="sh4-linux-gnu-"}
-: ${cross_prefix_sparc64="sparc64-linux-gnu-"}
-: ${cross_prefix_sparc="$cross_prefix_sparc64"}
-: ${cross_prefix_tricore="tricore-"}
-: ${cross_prefix_x86_64="x86_64-linux-gnu-"}
-
-: ${cross_cc_aarch64_be="$cross_cc_aarch64"}
-: ${cross_cc_cflags_aarch64_be="-mbig-endian"}
-: ${cross_cc_armeb="$cross_cc_arm"}
-: ${cross_cc_cflags_armeb="-mbig-endian"}
-: ${cross_cc_hexagon="hexagon-unknown-linux-musl-clang"}
-: ${cross_cc_cflags_hexagon="-mv73 -O2 -static"}
-: ${cross_cc_cflags_i386="-m32"}
-: ${cross_cc_cflags_ppc="-m32 -mbig-endian"}
-: ${cross_cc_cflags_ppc64="-m64 -mbig-endian"}
-: ${cross_cc_ppc64le="$cross_cc_ppc64"}
-: ${cross_cc_cflags_ppc64le="-m64 -mlittle-endian"}
-: ${cross_cc_cflags_sparc64="-m64 -mcpu=ultrasparc"}
-: ${cross_cc_sparc="$cross_cc_sparc64"}
-: ${cross_cc_cflags_sparc="-m32 -mcpu=supersparc"}
-: ${cross_cc_cflags_x86_64="-m64 -mcx16"}
-
-compute_target_variable() {
- eval "$2="
- if eval test -n "\"\${cross_prefix_$1}\""; then
- if eval has "\"\${cross_prefix_$1}\$3\""; then
- eval "$2=\"\${cross_prefix_$1}\$3\""
- fi
- fi
-}
-
-have_target() {
- for i; do
- case " $target_list " in
- *" $i "*) return 0;;
- *) ;;
- esac
- done
- return 1
-}
-
-# probe_target_compiler TARGET
-#
-# Look for a compiler for the given target, either native or cross.
-# Set variables target_* if a compiler is found, and container_cross_*
-# if a Docker-based cross-compiler image is known for the target.
-# Set got_cross_cc to yes/no depending on whether a non-container-based
-# compiler was found.
-#
-# If TARGET is a user-mode emulation target, also set build_static to
-# "y" if static linking is possible.
-#
-probe_target_compiler() {
- # reset all output variables
- got_cross_cc=no
- container_image=
- container_hosts=
- container_cross_prefix=
- container_cross_cc=
- container_cross_ar=
- container_cross_as=
- container_cross_ld=
- container_cross_nm=
- container_cross_objcopy=
- container_cross_ranlib=
- container_cross_strip=
-
- target_arch=${1%%-*}
- case $target_arch in
- aarch64) container_hosts="x86_64 aarch64" ;;
- aarch64_be) container_hosts="x86_64 aarch64" ;;
- alpha) container_hosts=x86_64 ;;
- arm) container_hosts="x86_64 aarch64" ;;
- hexagon) container_hosts=x86_64 ;;
- hppa) container_hosts=x86_64 ;;
- i386) container_hosts=x86_64 ;;
- loongarch64) container_hosts=x86_64 ;;
- m68k) container_hosts=x86_64 ;;
- microblaze) container_hosts=x86_64 ;;
- mips64el) container_hosts=x86_64 ;;
- mips64) container_hosts=x86_64 ;;
- mipsel) container_hosts=x86_64 ;;
- mips) container_hosts=x86_64 ;;
- ppc) container_hosts=x86_64 ;;
- ppc64|ppc64le) container_hosts=x86_64 ;;
- riscv64) container_hosts=x86_64 ;;
- s390x) container_hosts=x86_64 ;;
- sh4) container_hosts=x86_64 ;;
- sparc64) container_hosts=x86_64 ;;
- tricore) container_hosts=x86_64 ;;
- x86_64) container_hosts="aarch64 ppc64le x86_64" ;;
- xtensa*) container_hosts=x86_64 ;;
- esac
-
- for host in $container_hosts; do
- test "$runc" != no || continue
- test "$host" = "$cpu" || continue
- case $target_arch in
- # debian-all-test-cross architectures
-
- aarch64_be)
- container_image=debian-all-test-cross
- container_cross_prefix=aarch64-linux-gnu-
- ;;
- alpha|hppa|m68k|mips|mipsel|riscv64|sh4|sparc64)
- container_image=debian-all-test-cross
- ;;
- mips64)
- container_image=debian-all-test-cross
- container_cross_prefix=mips64-linux-gnuabi64-
- ;;
- ppc|ppc64|ppc64le)
- container_image=debian-all-test-cross
- container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
- ;;
-
- # architectures with individual containers
-
- aarch64)
- # We don't have any bigendian build tools so we only use this for AArch64
- container_image=debian-arm64-cross
- ;;
- arm)
- # We don't have any bigendian build tools so we only use this for ARM
- container_image=debian-armhf-cross
- container_cross_prefix=arm-linux-gnueabihf-
- ;;
- hexagon)
- container_cross_prefix=hexagon-unknown-linux-musl-
- container_cross_cc=${container_cross_prefix}clang
- ;;
- i386)
- container_image=debian-i686-cross
- container_cross_prefix=i686-linux-gnu-
- ;;
- loongarch64)
- container_image=debian-loongarch-cross
- container_cross_prefix=loongarch64-unknown-linux-gnu-
- ;;
- microblaze)
- container_cross_prefix=microblaze-linux-musl-
- ;;
- mips64el)
- container_image=debian-all-test-cross
- container_cross_prefix=mips64el-linux-gnuabi64-
- ;;
- tricore)
- container_image=debian-tricore-cross
- container_cross_prefix=tricore-
- ;;
- x86_64)
- container_image=debian-amd64-cross
- ;;
- xtensa*)
- container_image=debian-xtensa-cross
-
- # default to the dc232b cpu
- container_cross_prefix=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-
- ;;
- esac
- # Debian and GNU architecture names usually match
- : ${container_image:=debian-$target_arch-cross}
- : ${container_cross_prefix:=$target_arch-linux-gnu-}
- : ${container_cross_cc:=${container_cross_prefix}gcc}
- : ${container_cross_ar:=${container_cross_prefix}ar}
- : ${container_cross_as:=${container_cross_prefix}as}
- : ${container_cross_ld:=${container_cross_prefix}ld}
- : ${container_cross_nm:=${container_cross_prefix}nm}
- : ${container_cross_objcopy:=${container_cross_prefix}objcopy}
- : ${container_cross_ranlib:=${container_cross_prefix}ranlib}
- : ${container_cross_strip:=${container_cross_prefix}strip}
- done
-
- try=cross
- # For softmmu/roms also look for a bi-endian or multilib-enabled host compiler
- if [ "${1%softmmu}" != "$1" ] || test "$target_arch" = "$cpu"; then
- case "$target_arch:$cpu" in
- aarch64_be:aarch64 | \
- armeb:arm | \
- i386:x86_64 | \
- ppc*:ppc64 | \
- sparc:sparc64 | \
- "$cpu:$cpu")
- try='native cross' ;;
- esac
- fi
- eval "target_cflags=\${cross_cc_cflags_$target_arch}"
- for thistry in $try; do
- case $thistry in
- native)
- target_cc=$cc
- target_ccas=$ccas
- target_ar=$ar
- target_as=$as
- target_ld=$ld
- target_nm=$nm
- target_objcopy=$objcopy
- target_ranlib=$ranlib
- target_strip=$strip
- ;;
- cross)
- target_cc=
- if eval test -n "\"\${cross_cc_$target_arch}\""; then
- if eval has "\"\${cross_cc_$target_arch}\""; then
- eval "target_cc=\"\${cross_cc_$target_arch}\""
- fi
- else
- compute_target_variable $target_arch target_cc gcc
- fi
- target_ccas=$target_cc
- compute_target_variable $target_arch target_ar ar
- compute_target_variable $target_arch target_as as
- compute_target_variable $target_arch target_ld ld
- compute_target_variable $target_arch target_nm nm
- compute_target_variable $target_arch target_objcopy objcopy
- compute_target_variable $target_arch target_ranlib ranlib
- compute_target_variable $target_arch target_strip strip
- ;;
- esac
-
- if test -n "$target_cc"; then
- case $target_arch in
- i386|x86_64)
- if $target_cc --version | grep -qi "clang"; then
- continue
- fi
- ;;
- esac
- elif test -n "$target_as" && test -n "$target_ld"; then
- # Special handling for assembler only targets
- case $target in
- tricore-softmmu)
- build_static=
- got_cross_cc=yes
- break
- ;;
- *)
- continue
- ;;
- esac
- else
- continue
- fi
-
- write_c_skeleton
- case $1 in
- *-softmmu)
- if do_compiler "$target_cc" $target_cflags -o $TMPO -c $TMPC &&
- do_compiler "$target_cc" $target_cflags -r -nostdlib -o "${TMPDIR1}/${TMPB}2.o" "$TMPO" -lgcc; then
- got_cross_cc=yes
- break
- fi
- ;;
- *)
- if do_compiler "$target_cc" $target_cflags -o $TMPE $TMPC -static ; then
- build_static=y
- got_cross_cc=yes
- break
- fi
- if do_compiler "$target_cc" $target_cflags -o $TMPE $TMPC ; then
- build_static=
- got_cross_cc=yes
- break
- fi
- ;;
- esac
- done
- if test $got_cross_cc != yes; then
- build_static=
- target_cc=
- target_ccas=
- target_ar=
- target_as=
- target_ld=
- target_nm=
- target_objcopy=
- target_ranlib=
- target_strip=
- fi
- test -n "$target_cc"
-}
-
-write_target_makefile() {
- echo "PYTHON=$python"
- echo "EXTRA_CFLAGS=$target_cflags"
- if test -z "$target_cc" && test -z "$target_as"; then
- test -z "$container_image" && error_exit "Internal error: could not find cross compiler for $1?"
- echo "$1: docker-image-$container_image" >> Makefile.prereqs
- if test -n "$container_cross_cc"; then
- echo "CC=$docker_py cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --"
- echo "CCAS=$docker_py cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --"
- fi
- echo "AR=$docker_py cc --cc $container_cross_ar -i qemu/$container_image -s $source_path --"
- echo "AS=$docker_py cc --cc $container_cross_as -i qemu/$container_image -s $source_path --"
- echo "LD=$docker_py cc --cc $container_cross_ld -i qemu/$container_image -s $source_path --"
- echo "NM=$docker_py cc --cc $container_cross_nm -i qemu/$container_image -s $source_path --"
- echo "OBJCOPY=$docker_py cc --cc $container_cross_objcopy -i qemu/$container_image -s $source_path --"
- echo "RANLIB=$docker_py cc --cc $container_cross_ranlib -i qemu/$container_image -s $source_path --"
- echo "STRIP=$docker_py cc --cc $container_cross_strip -i qemu/$container_image -s $source_path --"
- else
- if test -n "$target_cc"; then
- echo "CC=$target_cc"
- echo "CCAS=$target_ccas"
- fi
- if test -n "$target_ar"; then
- echo "AR=$target_ar"
- fi
- if test -n "$target_as"; then
- echo "AS=$target_as"
- fi
- if test -n "$target_ld"; then
- echo "LD=$target_ld"
- fi
- if test -n "$target_nm"; then
- echo "NM=$target_nm"
- fi
- if test -n "$target_objcopy"; then
- echo "OBJCOPY=$target_objcopy"
- fi
- if test -n "$target_ranlib"; then
- echo "RANLIB=$target_ranlib"
- fi
- if test -n "$target_strip"; then
- echo "STRIP=$target_strip"
- fi
- fi
-}
-
#######################################
# cross-compiled firmware targets
@@ -1681,48 +1309,6 @@ fi
echo "# Automatically generated by configure - do not modify" > Makefile.prereqs
-# Mac OS X ships with a broken assembler
-if have_target i386-softmmu x86_64-softmmu && \
- test "$host_os" != "darwin" && test "$host_os" != "sunos" && \
- test "$host_os" != "haiku" && \
- probe_target_compiler i386-softmmu; then
- subdirs="$subdirs pc-bios/optionrom"
- config_mak=pc-bios/optionrom/config.mak
- echo "# Automatically generated by configure - do not modify" > $config_mak
- echo "TOPSRC_DIR=$source_path" >> $config_mak
- write_target_makefile >> $config_mak
-fi
-
-if have_target ppc-softmmu ppc64-softmmu && \
- probe_target_compiler ppc-softmmu; then
- subdirs="$subdirs pc-bios/vof"
- config_mak=pc-bios/vof/config.mak
- echo "# Automatically generated by configure - do not modify" > $config_mak
- echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
- write_target_makefile >> $config_mak
-fi
-
-# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
-# (which is the lowest architecture level that Clang supports)
-if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
- GIT=git "$source_path/scripts/git-submodule.sh" "$git_submodules_action" roms/SLOF >> config.log 2>&1; then
- write_c_skeleton
- do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
- has_z900=$?
- if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
- if [ $has_z900 != 0 ]; then
- echo "WARNING: Your compiler does not support the z900!"
- echo " The s390-ccw bios will only work with guest CPUs >= z10."
- fi
- subdirs="$subdirs pc-bios/s390-ccw"
- config_mak=pc-bios/s390-ccw/config-host.mak
- echo "# Automatically generated by configure - do not modify" > $config_mak
- echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
- echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_mak
- write_target_makefile >> $config_mak
- fi
-fi
-
#######################################
# generate config-host.mak
@@ -1763,65 +1349,6 @@ if test "$plugins" = "yes" ; then
fi
echo "PYTHON=$python" >> tests/tcg/$config_host_mak
-tcg_tests_with_compilers=
-for target in $target_list; do
- arch=${target%%-*}
-
- case $target in
- xtensa*-linux-user)
- # the toolchain is not complete with headers, only build system tests
- continue
- ;;
- *-softmmu)
- test -f "$source_path/tests/tcg/$arch/Makefile.softmmu-target" || continue
- qemu="qemu-system-$arch"
- ;;
- *-linux-user|*-bsd-user)
- qemu="qemu-$arch"
- ;;
- esac
-
- if probe_target_compiler $target || test -n "$container_image"; then
- test -n "$container_image" && build_static=y
- mkdir -p "tests/tcg/$target"
- config_target_mak=tests/tcg/$target/config-target.mak
- ln -sf "$source_path/tests/tcg/Makefile.target" "tests/tcg/$target/Makefile"
- echo "# Automatically generated by configure - do not modify" > "$config_target_mak"
- echo "TARGET_NAME=$arch" >> "$config_target_mak"
- echo "TARGET=$target" >> "$config_target_mak"
- write_target_makefile "build-tcg-tests-$target" >> "$config_target_mak"
- echo "BUILD_STATIC=$build_static" >> "$config_target_mak"
- echo "QEMU=$PWD/$qemu" >> "$config_target_mak"
-
- # will GDB work with these binaries?
- if test "${gdb_arches#*$arch}" != "$gdb_arches"; then
- echo "GDB=$gdb_bin" >> $config_target_mak
- fi
-
- if test "${gdb_arches#*$arch}" != "$gdb_arches" && version_ge $gdb_version 14.1; then
- echo "GDB_HAS_SME_TILES=y" >> $config_target_mak
- else
- echo "GDB_HAS_SME_TILES=n" >> $config_target_mak
- fi
-
- if test "${gdb_arches#*aarch64}" != "$gdb_arches" && version_ge $gdb_version 15.1; then
- echo "GDB_HAS_MTE=y" >> $config_target_mak
- fi
-
- if test "${gdb_arches#*aarch64}" != "$gdb_arches" && version_ge $gdb_version 16.0; then
- # GDB has to support MTE in baremetal to allow debugging MTE in QEMU system mode
- echo "GDB_SUPPORTS_MTE_IN_BAREMETAL=y" >> $config_target_mak
- fi
-
- echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> Makefile.prereqs
- tcg_tests_with_compilers="$tcg_tests_with_compilers $target"
- fi
-done
-
-if test "$tcg" = "enabled"; then
- echo "TCG_TESTS_WITH_COMPILERS=$tcg_tests_with_compilers" >> $config_host_mak
-fi
-
if test "$skip_meson" = no; then
cross="config-meson.cross.new"
meson_quote() {
diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst
index c6821a36d99..9b5e3b6ccda 100644
--- a/docs/devel/testing/main.rst
+++ b/docs/devel/testing/main.rst
@@ -1010,25 +1010,9 @@ simple as::
apt install gcc-aarch64-linux-gnu
-The configure script will automatically pick up their presence.
-Sometimes compilers have slightly odd names so the availability of
-them can be prompted by passing in the appropriate configure option
-for the architecture in question, for example::
-
- $(configure) --cross-cc-aarch64=aarch64-cc
-
-There is also a ``--cross-cc-cflags-ARCH`` flag in case additional
-compiler flags are needed to build for a given target.
-
-If you have the ability to run containers as the user the build system
-will automatically use them where no system compiler is available. For
-architectures where we also support building QEMU we will generally
-use the same container to build tests. However there are a number of
-additional containers defined that have a minimal cross-build
-environment that is only suitable for building test cases. Sometimes
-we may use a bleeding edge distribution for compiler features needed
-for test cases that aren't yet in the LTS distros we support for QEMU
-itself.
+Meson will automatically pick up their presence. In case a cross compiler is
+missing, if podman or docker are available, we'll automatically build
+images containing cross compilers and execute those.
See :ref:`container-ref` for more details.
--
2.47.3
^ permalink raw reply related [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (90 preceding siblings ...)
2026-07-06 22:33 ` [PATCH v3 91/91] configure: remove --cross-cc* options Pierrick Bouvier
@ 2026-07-06 22:48 ` Pierrick Bouvier
2026-07-07 6:27 ` Philippe Mathieu-Daudé
` (4 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-06 22:48 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/6/2026 3:32 PM, Pierrick Bouvier wrote:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>
Series is now feature complete, as it covers all architectures, so feel
free to review it in the patches order.
Thanks,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output
2026-07-06 22:32 ` [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output Pierrick Bouvier
@ 2026-07-07 5:15 ` Manos Pitsidianakis
0 siblings, 0 replies; 144+ messages in thread
From: Manos Pitsidianakis @ 2026-07-07 5:15 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On Tue, 07 Jul 2026 01:32, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>A test can declare it expects a specific output on stdout. In this case,
>we compare it to a reference file. We implement this instead of relying
>on a wrapper because we need the flexibility to resolve name of
>reference file per target.
>
>For instance, multiarch float tests expect different ref files for each
>target, which is something we can't express with a test wrapper.
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> tests/tcg/meson.build | 12 ++++++++++--
> tests/tcg/scripts/run_and_diff.sh | 15 +++++++++++++++
> 2 files changed, 25 insertions(+), 2 deletions(-)
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>
>diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>index 2106f5d979e..1dd0e492810 100644
>--- a/tests/tcg/meson.build
>+++ b/tests/tcg/meson.build
>@@ -7,6 +7,7 @@ if config_host.has_key('GDB')
> endif
> gdb = find_program(gdb_progs, required: false)
> prog_gdb_test = find_program('../guest-debug/run-test.py')
>+prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>
> tcg_tests = {}
> # tcg_tests is a dictionary with following structure:
>@@ -24,6 +25,7 @@ tcg_tests = {}
> # 'test_name': ['provide an alternative test name'],
> # 'cflags': ['additional cflags to compile test', ...],
> # 'qemu_args': ['qemu command line flags', ...],
>+# 'expected_output': 'file_to_compare_output',
> # 'gdb_test': ['gdb test args'],
> # 'env_var': ['VAR=value', ...],
> # 'wrapper': [program_to_launch_test, 'args'...],
>@@ -87,8 +89,9 @@ foreach target, plan: tcg_tests
> foreach src, setup: t
> # return a clear error if user misspell a setup entry
> foreach key, _ : setup
>- allowed = ['exe_name', 'env_var', 'cflags', 'gdb_test', 'plugin_test',
>- 'qemu_args', 'test_name', 'wrapper']
>+ allowed = ['exe_name', 'env_var', 'expected_output', 'cflags',
>+ 'gdb_test', 'plugin_test', 'qemu_args', 'test_name',
>+ 'wrapper']
> if key not in allowed
> error('unknown tcg setup entry \'' + key + '\' for test ' + src +
> ' (possible: [' + ', '.join(allowed) + '])')
>@@ -202,6 +205,11 @@ foreach target, plan: tcg_tests
> ]
> endif
>
>+ if 'expected_output' in setup
>+ expected = files(folder / setup['expected_output'])
>+ cmd = [prog_run_and_diff, expected, cmd]
>+ endif
>+
> if 'wrapper' in setup
> cmd = [setup['wrapper'], cmd]
> endif
>diff --git a/tests/tcg/scripts/run_and_diff.sh b/tests/tcg/scripts/run_and_diff.sh
>new file mode 100755
>index 00000000000..3e51cdc9663
>--- /dev/null
>+++ b/tests/tcg/scripts/run_and_diff.sh
>@@ -0,0 +1,15 @@
>+#!/usr/bin/env bash
>+# SPDX-License-Identifier: GPL-2.0-or-later
>+
>+set -euo pipefail
>+
>+if [ $# -lt 2 ]; then
>+ echo "run_and_diff: expected_output_file cmd [args]..." 1>&2
>+ exit 1
>+fi
>+expected="$1";shift
>+output=$(mktemp)
>+trap "rm -rf $output" EXIT
>+set -x
>+"$@" |& tee $output
>+diff $output $expected
>--
>2.47.3
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
2026-07-06 22:32 ` [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output Pierrick Bouvier
@ 2026-07-07 5:16 ` Manos Pitsidianakis
0 siblings, 0 replies; 144+ messages in thread
From: Manos Pitsidianakis @ 2026-07-07 5:16 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On Tue, 07 Jul 2026 01:32, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>One of our test requires to make sure output does not contain a specific
>string. An example is system multiarch test run-gdbstub-untimely-packet.
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> tests/tcg/meson.build | 3 +++
> .../scripts/run_and_check_forbidden_output.sh | 19 +++++++++++++++++++
> 2 files changed, 22 insertions(+)
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
>
>diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>index 1dd0e492810..adb11af7acb 100644
>--- a/tests/tcg/meson.build
>+++ b/tests/tcg/meson.build
>@@ -8,6 +8,9 @@ endif
> gdb = find_program(gdb_progs, required: false)
> prog_gdb_test = find_program('../guest-debug/run-test.py')
> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>+prog_run_and_check_forbidden_output = find_program(
>+ './scripts/run_and_check_forbidden_output.sh'
>+)
>
> tcg_tests = {}
> # tcg_tests is a dictionary with following structure:
>diff --git a/tests/tcg/scripts/run_and_check_forbidden_output.sh b/tests/tcg/scripts/run_and_check_forbidden_output.sh
>new file mode 100755
>index 00000000000..4486ca8ef83
>--- /dev/null
>+++ b/tests/tcg/scripts/run_and_check_forbidden_output.sh
>@@ -0,0 +1,19 @@
>+#!/usr/bin/env bash
>+# SPDX-License-Identifier: GPL-2.0-or-later
>+
>+set -euo pipefail
>+
>+if [ $# -lt 2 ]; then
>+ echo "run_and_check_forbidden_output: 'forbidden string' cmd [args]..." 1>&2
>+ exit 1
>+fi
>+forbidden="$1";shift
>+output=$("$@" 2>&1)
>+set -x
>+if ! echo "$output" | grep -Fi "$forbidden"
>+then
>+ echo "output does not contain forbidden string: $forbidden"
>+ exit 0
>+fi
>+echo "found forbidden string: $forbidden" 1>&2
>+exit 1
>--
>2.47.3
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input
2026-07-06 22:32 ` [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input Pierrick Bouvier
@ 2026-07-07 5:21 ` Manos Pitsidianakis
0 siblings, 0 replies; 144+ messages in thread
From: Manos Pitsidianakis @ 2026-07-07 5:21 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On Tue, 07 Jul 2026 01:32, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>Semihosting console tests require console interaction, and were flagged
>as manual because of this. This wrapper automates interaction, by
>sending a specific string on stdin.
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Btw, for more complex usecases there's always expect:
https://en.wikipedia.org/wiki/Expect
In case some future test requires more complex interaction.
> tests/tcg/meson.build | 1 +
> tests/tcg/scripts/run_with_input.sh | 12 ++++++++++++
> 2 files changed, 13 insertions(+)
> create mode 100755 tests/tcg/scripts/run_with_input.sh
>
>diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>index adb11af7acb..30178df0f7a 100644
>--- a/tests/tcg/meson.build
>+++ b/tests/tcg/meson.build
>@@ -8,6 +8,7 @@ endif
> gdb = find_program(gdb_progs, required: false)
> prog_gdb_test = find_program('../guest-debug/run-test.py')
> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>+prog_run_with_input = find_program('./scripts/run_with_input.sh')
> prog_run_and_check_forbidden_output = find_program(
> './scripts/run_and_check_forbidden_output.sh'
> )
>diff --git a/tests/tcg/scripts/run_with_input.sh b/tests/tcg/scripts/run_with_input.sh
>new file mode 100755
>index 00000000000..3d280547c3a
>--- /dev/null
>+++ b/tests/tcg/scripts/run_with_input.sh
>@@ -0,0 +1,12 @@
>+#!/usr/bin/env bash
>+# SPDX-License-Identifier: GPL-2.0-or-later
>+
>+set -euo pipefail
>+
>+if [ $# -lt 2 ]; then
>+ echo "run_with_input: input_string cmd [args]..." 1>&2
>+ exit 1
>+fi
>+input="$1";shift
>+set -x
>+echo "$input" | "$@"
>--
>2.47.3
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
@ 2026-07-07 5:24 ` Manos Pitsidianakis
2026-07-09 10:49 ` Philippe Mathieu-Daudé
2026-07-09 16:20 ` Alex Bennée
2 siblings, 0 replies; 144+ messages in thread
From: Manos Pitsidianakis @ 2026-07-07 5:24 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On Tue, 07 Jul 2026 01:32, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>Instead of skipping tests and not declare them, always declare them and
>simply return an exit code 77 (SKIPPED for meson) and print reason why
>test is skipped.
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> tests/tcg/meson.build | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
>diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>index 679a69054e4..2bc1fc77775 100644
>--- a/tests/tcg/meson.build
>+++ b/tests/tcg/meson.build
>@@ -115,11 +115,15 @@ foreach target, plan: tcg_tests
> endforeach
> endif
>
>+ # if set, we'll skip test and print the reason
>+ skip_test = ''
>+
> if 'gdb_test' in setup and gdb_arch not in gdb_arch_supported
> continue
> endif
>
> if 'plugin_test' in setup and not get_option('plugins')
>+ # do not use the skip_test logic, and simply ignore the test
> continue
> endif
>
>@@ -227,6 +231,11 @@ foreach target, plan: tcg_tests
> cmd = [setup['env_var'], cmd]
> endif
>
>+ if skip_test != ''
>+ # still declare test, but skip it and print reason
>+ cmd = ['sh', '-c', 'echo "' + skip_test + '" && exit 77']
>+ endif
>+
> test(test_name, env, args: cmd,
> depends: depends,
> suite: ['tcg', 'tcg-' + target])
>--
>2.47.3
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info
2026-07-06 22:32 ` [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info Pierrick Bouvier
@ 2026-07-07 6:01 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:01 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> It's useful to print build output by default, but not useful to mention
> it succeeded. Reduce verbosity of tcg tests build.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/docker/docker.py | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only
2026-07-06 22:33 ` [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only Pierrick Bouvier
@ 2026-07-07 6:12 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:12 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:33, Pierrick Bouvier wrote:
> plugin registers.c check if at least one register is read-only, which
"checks"?
> was missing for target or1k.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> plugins/api.c | 2 ++
> 1 file changed, 2 insertions(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
2026-07-06 22:32 ` [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch Pierrick Bouvier
@ 2026-07-07 6:15 ` Philippe Mathieu-Daudé
2026-07-07 18:05 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:15 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
Hi Pierrick,
On 7/7/26 00:32, Pierrick Bouvier wrote:
> We allow target to declare a dockerfile containing required cc. We reuse
> tests/docker/docker.py, and correctly set dependencies for tests on
> original dockerfile.
>
> We specify list of hosts for which image can be built and contains
> required cc, using cc_docker_arch.
>
> In case we rely on docker, we do not build tests by default anymore.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/meson.build | 61 ++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 57 insertions(+), 4 deletions(-)
>
> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
> index 0d2fefe8f51..57e7c3f8801 100644
> --- a/tests/tcg/meson.build
> +++ b/tests/tcg/meson.build
> @@ -1,6 +1,7 @@
> cc_check_args = ['-xc', '/dev/null', '-o', '/dev/null', '-c']
> env = find_program('env')
>
> +docker_wrapper = find_program('../docker/docker.py')
> gdb_progs = ['gdb-multiarch', 'gdb']
> if config_host.has_key('GDB')
> gdb_progs = [config_host['GDB'], gdb_progs]
> @@ -21,6 +22,8 @@ tcg_tests = {}
> # {
> # 'name_of_target': {
> # 'cc': 'cross_compiler',
> +# 'cc_dockerfile': 'name_of_dockerfile',
> +# 'cc_docker_arch': ['host_arch_supported (meson cpu)', ...],
This variable confuses me while reviewing the other patches in this
series. What about naming explicitly as 'cc_docker_host_arch'?
> cc = find_program(plan['cc'], required : false)
> + cc_from_system = cc.found()
> + has_cc = cc.found()
> + build_test_depends = []
> + build_test_depend_files = []
> +
> + if 'cc_dockerfile' in plan
> + cc_dockerfile = plan['cc_dockerfile']
> + cc_docker_arch = plan['cc_docker_arch']
> + allowed = ['aarch64', 'x86_64']
> + foreach arch: cc_docker_arch
> + if arch not in allowed
> + error('incorrect docker arch ' + arch + ' for target ' +
> + target + ' (possible: [' + ', '.join(allowed) + '])')
> + endif
> + endforeach
> + docker_arch_supported = host_machine.cpu_family() in cc_docker_arch
> + dockerfile = files('..'/'docker'/'dockerfiles'/cc_dockerfile + '.docker')
> + image_name = 'image-' + cc_dockerfile
> + has_docker = docker_arch_supported and docker_supported
> + if cc_dockerfile not in image_targets and has_docker
> + cmd = [docker_wrapper, 'build', '-f', dockerfile, '-t', cc_dockerfile]
> + t = custom_target(image_name, command: cmd,
> + build_by_default: false,
> + output: 'no_output_' + image_name)
> + image_targets += {cc_dockerfile: t}
> + endif
> +
> + if not has_cc and has_docker
> + build_test_depends = image_targets[cc_dockerfile]
> + build_test_depend_files = dockerfile
> + mount = meson.project_source_root()
> + mount = mount + ':' + mount
> + here = meson.project_build_root()
> + cc = [docker_wrapper, 'run', '--run-as-current-user',
> + '-w', here, '-v', mount,
> + cc_dockerfile, plan['cc']]
> + has_cc = true
> + endif
> + endif
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h
2026-07-06 22:33 ` [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h Pierrick Bouvier
@ 2026-07-07 6:16 ` Philippe Mathieu-Daudé
2026-07-07 16:25 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:16 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:33, Pierrick Bouvier wrote:
> Replace definition of vector attribute, remove unlikely, and detect
> endianness from __BYTE_ORDER__.
Why remove the dependency on qemu/compiler.h?
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/ppc64/vector.c | 11 ++++++-----
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 ++++---
> 2 files changed, 10 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main
2026-07-06 22:33 ` [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main Pierrick Bouvier
@ 2026-07-07 6:17 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:17 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:33, Pierrick Bouvier wrote:
> tests/tcg/multiarch/gdbstub/registers.py expects to find this symbol to
> compare state of registers before and after execution. Define it
> explicitly.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/s390x/head64.S | 2 ++
> 1 file changed, 2 insertions(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-06 22:33 ` [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section Pierrick Bouvier
@ 2026-07-07 6:18 ` Philippe Mathieu-Daudé
2026-07-07 13:45 ` Max Filippov
1 sibling, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:18 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson, Max Filippov
On 7/7/26 00:33, Pierrick Bouvier wrote:
> Needed, else we get this error:
> dangerous relocation: l32r: misaligned literal target: .text
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/xtensa/crt.S | 1 +
> 1 file changed, 1 insertion(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables
2026-07-06 22:33 ` [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables Pierrick Bouvier
@ 2026-07-07 6:20 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:20 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:33, Pierrick Bouvier wrote:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/or1k/test_addic.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain
2026-07-06 22:33 ` [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain Pierrick Bouvier
@ 2026-07-07 6:23 ` Philippe Mathieu-Daudé
2026-07-07 16:23 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:23 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:33, Pierrick Bouvier wrote:
> To avoid escape hell in tests/lcitool/refresh, just use a raw
> multiline string instead of a list of strings.
Could we have 1 patch for raw multiline conversion and another
adding the or1k toolchain?
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> .../dockerfiles/debian-all-test-cross.docker | 16 ++-
> tests/lcitool/refresh | 107 ++++++++++--------
> 2 files changed, 75 insertions(+), 48 deletions(-)
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include
2026-07-06 22:32 ` [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include Pierrick Bouvier
@ 2026-07-07 6:24 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:24 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> ../tests/tcg/hexagon/overflow.c:59:1: error: unknown type name 'bool'
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/hexagon/overflow.c | 1 +
> 1 file changed, 1 insertion(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails
2026-07-06 22:32 ` [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails Pierrick Bouvier
@ 2026-07-07 6:24 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:24 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> We are not necessarily interested to know which engine is available.
> However, parsing "no" as an answer is not intuitive, compared to
> read an exit code.
>
> Thus, exit with 1 if no engine is available.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/docker/docker.py | 1 +
> 1 file changed, 1 insertion(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (91 preceding siblings ...)
2026-07-06 22:48 ` [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
@ 2026-07-07 6:27 ` Philippe Mathieu-Daudé
2026-07-08 12:09 ` Ilya Leoshkevich
` (3 subsequent siblings)
96 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-07 6:27 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel, Max Filippov, qemu-riscv,
Parthiban Nallathambi
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
Cc'ing Max
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
Cc'ing Parthiban
> - riscv64/interruptedmemory.S is hanging. To be investigated.
Cc'ing qemu-riscv@
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-06 22:33 ` [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section Pierrick Bouvier
2026-07-07 6:18 ` Philippe Mathieu-Daudé
@ 2026-07-07 13:45 ` Max Filippov
2026-07-07 16:30 ` Pierrick Bouvier
1 sibling, 1 reply; 144+ messages in thread
From: Max Filippov @ 2026-07-07 13:45 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
<pierrick.bouvier@oss.qualcomm.com> wrote:
>
> Needed, else we get this error:
> dangerous relocation: l32r: misaligned literal target: .text
This flag wasn't needed before because crt.S hasn't been built
with text-section-literals, why is it needed now?
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/xtensa/crt.S | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
> index 909872cd385..de8fd8c1cd7 100644
> --- a/tests/tcg/xtensa/crt.S
> +++ b/tests/tcg/xtensa/crt.S
> @@ -6,6 +6,7 @@
> jx a2
>
> .text
> +.align 4
> .global _start
> _start:
> #if XCHAL_HAVE_WINDOWED
> --
> 2.47.3
>
>
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain
2026-07-07 6:23 ` Philippe Mathieu-Daudé
@ 2026-07-07 16:23 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 16:23 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/6/2026 11:23 PM, Philippe Mathieu-Daudé wrote:
> On 7/7/26 00:33, Pierrick Bouvier wrote:
>> To avoid escape hell in tests/lcitool/refresh, just use a raw
>> multiline string instead of a list of strings.
>
> Could we have 1 patch for raw multiline conversion and another
> adding the or1k toolchain?
>
>>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> .../dockerfiles/debian-all-test-cross.docker | 16 ++-
>> tests/lcitool/refresh | 107 ++++++++++--------
>> 2 files changed, 75 insertions(+), 48 deletions(-)
>
I'll send also another series for fixing missing 'apt update' in
dockerfiles, which will conflict with this part since it's concerned.
I'll do the change for multi lines string there, and rebase later on top.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h
2026-07-07 6:16 ` Philippe Mathieu-Daudé
@ 2026-07-07 16:25 ` Pierrick Bouvier
2026-07-09 10:52 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 16:25 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/6/2026 11:16 PM, Philippe Mathieu-Daudé wrote:
> On 7/7/26 00:33, Pierrick Bouvier wrote:
>> Replace definition of vector attribute, remove unlikely, and detect
>> endianness from __BYTE_ORDER__.
>
> Why remove the dependency on qemu/compiler.h?
>
>>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> tests/tcg/ppc64/vector.c | 11 ++++++-----
>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 ++++---
>> 2 files changed, 10 insertions(+), 8 deletions(-)
>
It's the only tests that use this, so for consistency, I think it's
better to not make special rules all the time. Also, not having this
include path by defaults prevents anyone from having the "good" idea to
reuse any other header from qemu in the future.
What do you think?
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-07 13:45 ` Max Filippov
@ 2026-07-07 16:30 ` Pierrick Bouvier
2026-07-07 18:10 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 16:30 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/7/2026 6:45 AM, Max Filippov wrote:
> On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>
>> Needed, else we get this error:
>> dangerous relocation: l32r: misaligned literal target: .text
>
> This flag wasn't needed before because crt.S hasn't been built
> with text-section-literals, why is it needed now?
>
Previously, .S and .c were compiled in different steps, with different
options. Now, with meson, we have to provide a single compiler command
for all the files (no intermediate steps), which is a *hard* requirement
to save user from dealing with compilation details in arch files.
One consequence is that .c + .S combination gets
-mtext-section-literals, which triggers this. Easily fixed by adding the
.align section.
I can add this in commit description, if you're ok with this
explanation, and accept the patch.
Regards,
Pierrick
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> tests/tcg/xtensa/crt.S | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
>> index 909872cd385..de8fd8c1cd7 100644
>> --- a/tests/tcg/xtensa/crt.S
>> +++ b/tests/tcg/xtensa/crt.S
>> @@ -6,6 +6,7 @@
>> jx a2
>>
>> .text
>> +.align 4
>> .global _start
>> _start:
>> #if XCHAL_HAVE_WINDOWED
>> --
>> 2.47.3
>>
>>
>
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
2026-07-07 6:15 ` Philippe Mathieu-Daudé
@ 2026-07-07 18:05 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 18:05 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/6/2026 11:15 PM, Philippe Mathieu-Daudé wrote:
> Hi Pierrick,
>
> On 7/7/26 00:32, Pierrick Bouvier wrote:
>> We allow target to declare a dockerfile containing required cc. We reuse
>> tests/docker/docker.py, and correctly set dependencies for tests on
>> original dockerfile.
>>
>> We specify list of hosts for which image can be built and contains
>> required cc, using cc_docker_arch.
>>
>> In case we rely on docker, we do not build tests by default anymore.
>>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> tests/tcg/meson.build | 61 ++++++++++++++++++++++++++++++++++++++++---
>> 1 file changed, 57 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>> index 0d2fefe8f51..57e7c3f8801 100644
>> --- a/tests/tcg/meson.build
>> +++ b/tests/tcg/meson.build
>> @@ -1,6 +1,7 @@
>> cc_check_args = ['-xc', '/dev/null', '-o', '/dev/null', '-c']
>> env = find_program('env')
>> +docker_wrapper = find_program('../docker/docker.py')
>> gdb_progs = ['gdb-multiarch', 'gdb']
>> if config_host.has_key('GDB')
>> gdb_progs = [config_host['GDB'], gdb_progs]
>> @@ -21,6 +22,8 @@ tcg_tests = {}
>> # {
>> # 'name_of_target': {
>> # 'cc': 'cross_compiler',
>> +# 'cc_dockerfile': 'name_of_dockerfile',
>> +# 'cc_docker_arch': ['host_arch_supported (meson cpu)', ...],
>
> This variable confuses me while reviewing the other patches in this
> series. What about naming explicitly as 'cc_docker_host_arch'?
>
Good for me if it helps!
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 82/91] tests/tcg/tricore: system tests
2026-07-06 22:33 ` [PATCH v3 82/91] tests/tcg/tricore: system tests Pierrick Bouvier
@ 2026-07-07 18:09 ` Parthiban
2026-07-07 18:19 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Parthiban @ 2026-07-07 18:09 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: parthiban, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson,
Christoph.Seitz@infineon.com
On 7/7/26 12:33 AM, Pierrick Bouvier wrote:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/meson.build | 1 +
> tests/tcg/tricore/meson.build | 56 +++++++++++++++++++++++++++++++++++
> 2 files changed, 57 insertions(+)
> create mode 100644 tests/tcg/tricore/meson.build
>
> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
> index 59e71d82c99..b2630176b7f 100644
> --- a/tests/tcg/meson.build
> +++ b/tests/tcg/meson.build
> @@ -152,6 +152,7 @@ subdir('ppc64le')
> subdir('riscv64')
> subdir('s390x')
> subdir('sh4')
> +subdir('tricore')
>
> image_targets = {}
> exe_targets = []
> diff --git a/tests/tcg/tricore/meson.build b/tests/tcg/tricore/meson.build
> new file mode 100644
> index 00000000000..6303d6a912c
> --- /dev/null
> +++ b/tests/tcg/tricore/meson.build
> @@ -0,0 +1,56 @@
> +tests = []
> +
> +link_script = files('link.ld')[0]
> +crt0 = files('c'/'crt0-tc2x.S')
> +asmflags = ['-Wl,--mcpu=tc162',
> + '-Wl,-T', link_script,
> + '-mtc162',
> + '-nostartfiles']
> +cflags = [asmflags, crt0]
> +qemu_args = ['-display', 'none',
> + '-M', 'tricore_testboard',
> + '-cpu', 'tc37x']
- '-cpu', 'tc37x']
+ '-cpu', 'tc37x',
+ '-kernel']
This should fix the TriCore timeout issue.
qemu_args is missing a trailing -kernel. bare positional argument and kernel
is never loaded. PC unset.
Thanks,
Parthiban
> +
> +# Multi arch tests are not supported
> +# tests += tcg_tests['multiarch-softmmu']['tests']
> +
> +setup_asm = {'cflags': asmflags, 'qemu_args': qemu_args}
> +setup_c = {'cflags': cflags, 'qemu_args': qemu_args}
> +
> +tests += {
> + 'asm/test_abs.S': setup_asm,
> + 'asm/test_bmerge.S': setup_asm,
> + 'asm/test_clz.S': setup_asm,
> + 'asm/test_crcn.S': setup_asm,
> + 'asm/test_dextr.S': setup_asm,
> + 'asm/test_dvstep.S': setup_asm,
> + 'asm/test_fadd.S': setup_asm,
> + 'asm/test_fmul.S': setup_asm,
> + 'asm/test_ftohp.S': setup_asm,
> + 'asm/test_ftoi.S': setup_asm,
> + 'asm/test_ftou.S': setup_asm,
> + 'asm/test_hptof.S': setup_asm,
> + 'asm/test_imask.S': setup_asm,
> + 'asm/test_insert.S': setup_asm,
> + 'asm/test_ld_bu.S': setup_asm,
> + 'asm/test_ld_h.S': setup_asm,
> + 'asm/test_madd.S': setup_asm,
> + 'asm/test_msub.S': setup_asm,
> + 'asm/test_muls.S': setup_asm,
> + 'c/test_boot_to_main.c': setup_c,
> + 'c/test_context_save_areas.c': setup_c,
> +}
> +
> +if 'qemu-system-tricore' in emulators
> + tcg_tests += {
> + 'tricore-softmmu': {
> + 'cc': 'tricore-gcc',
> + 'cc_dockerfile': 'debian-tricore-cross',
> + 'cc_docker_arch': ['x86_64'],
> + 'folder': 'tricore',
> + 'gdb_arch': 'tricore',
> + 'qemu': emulators['qemu-system-tricore'],
> + 'tests': tests,
> + }
> + }
> +endif
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 04/91] tests/tcg: introduce meson.build
2026-07-06 22:32 ` [PATCH v3 04/91] tests/tcg: introduce meson.build Pierrick Bouvier
@ 2026-07-07 18:10 ` Richard Henderson
0 siblings, 0 replies; 144+ messages in thread
From: Richard Henderson @ 2026-07-07 18:10 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller
On 7/6/26 15:32, Pierrick Bouvier wrote:
> Every target declare its tests, and add them in global tcg_tests
> dictionary, indexed by target name. See comment for full description.
>
> We make sure that if a user repeats a test several time it won't result
> in duplicated executables or tests. In next commits, we'll introduce
> what's needed to deal with that.
>
> A test is compiled from a single source file (and later, a single set of
> compile flags). We make sure dependencies are correctly handled by
> generating a depfile.
>
> Signed-off-by: Pierrick Bouvier<pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/meson.build | 2 +-
> tests/tcg/meson.build | 95 +++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 96 insertions(+), 1 deletion(-)
> create mode 100644 tests/tcg/meson.build
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-07 16:30 ` Pierrick Bouvier
@ 2026-07-07 18:10 ` Pierrick Bouvier
2026-07-08 6:11 ` Max Filippov
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 18:10 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/7/2026 9:30 AM, Pierrick Bouvier wrote:
> On 7/7/2026 6:45 AM, Max Filippov wrote:
>> On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
>> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>>
>>> Needed, else we get this error:
>>> dangerous relocation: l32r: misaligned literal target: .text
>>
>> This flag wasn't needed before because crt.S hasn't been built
>> with text-section-literals, why is it needed now?
>>
>
> Previously, .S and .c were compiled in different steps, with different
> options. Now, with meson, we have to provide a single compiler command
> for all the files (no intermediate steps), which is a *hard* requirement
> to save user from dealing with compilation details in arch files.
>
> One consequence is that .c + .S combination gets
> -mtext-section-literals, which triggers this. Easily fixed by adding the
> .align section.
>
> I can add this in commit description, if you're ok with this
> explanation, and accept the patch.
>
> Regards,
> Pierrick
>
>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>> ---
>>> tests/tcg/xtensa/crt.S | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
>>> index 909872cd385..de8fd8c1cd7 100644
>>> --- a/tests/tcg/xtensa/crt.S
>>> +++ b/tests/tcg/xtensa/crt.S
>>> @@ -6,6 +6,7 @@
>>> jx a2
>>>
>>> .text
>>> +.align 4
>>> .global _start
>>> _start:
>>> #if XCHAL_HAVE_WINDOWED
>>> --
>>> 2.47.3
>>>
>>>
>>
>>
>
While at it, any chance you could give some hints about how to compile
for xtensaeb? I didn't find any compiler flag, and out of modifying
target/xtensa/core-dc232b/core-isa.h to set XCHAL_HAVE_BE to 1, I'm stuck.
I doubt it's the right way to do considering that it was not needed before.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name
2026-07-06 22:32 ` [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name Pierrick Bouvier
@ 2026-07-07 18:11 ` Richard Henderson
0 siblings, 0 replies; 144+ messages in thread
From: Richard Henderson @ 2026-07-07 18:11 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller
On 7/6/26 15:32, Pierrick Bouvier wrote:
> We add possibility to duplicate a test executable for a given source
> file. This is needed when different cflags need to be used (like
> vectorized vs non-vectorized for instance, like sve tests in aarch64).
>
> Signed-off-by: Pierrick Bouvier<pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/meson.build | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 82/91] tests/tcg/tricore: system tests
2026-07-07 18:09 ` Parthiban
@ 2026-07-07 18:19 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-07 18:19 UTC (permalink / raw)
To: Parthiban, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson,
Christoph.Seitz@infineon.com
On 7/7/2026 11:09 AM, Parthiban wrote:
> On 7/7/26 12:33 AM, Pierrick Bouvier wrote:
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> tests/tcg/meson.build | 1 +
>> tests/tcg/tricore/meson.build | 56 +++++++++++++++++++++++++++++++++++
>> 2 files changed, 57 insertions(+)
>> create mode 100644 tests/tcg/tricore/meson.build
>>
>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>> index 59e71d82c99..b2630176b7f 100644
>> --- a/tests/tcg/meson.build
>> +++ b/tests/tcg/meson.build
>> @@ -152,6 +152,7 @@ subdir('ppc64le')
>> subdir('riscv64')
>> subdir('s390x')
>> subdir('sh4')
>> +subdir('tricore')
>>
>> image_targets = {}
>> exe_targets = []
>> diff --git a/tests/tcg/tricore/meson.build b/tests/tcg/tricore/meson.build
>> new file mode 100644
>> index 00000000000..6303d6a912c
>> --- /dev/null
>> +++ b/tests/tcg/tricore/meson.build
>> @@ -0,0 +1,56 @@
>> +tests = []
>> +
>> +link_script = files('link.ld')[0]
>> +crt0 = files('c'/'crt0-tc2x.S')
>> +asmflags = ['-Wl,--mcpu=tc162',
>> + '-Wl,-T', link_script,
>> + '-mtc162',
>> + '-nostartfiles']
>> +cflags = [asmflags, crt0]
>> +qemu_args = ['-display', 'none',
>> + '-M', 'tricore_testboard',
>> + '-cpu', 'tc37x']
>
> - '-cpu', 'tc37x']
> + '-cpu', 'tc37x',
> + '-kernel']
>
> This should fix the TriCore timeout issue.
>
> qemu_args is missing a trailing -kernel. bare positional argument and kernel
> is never loaded. PC unset.
>
Thanks for the second pair of eyes on this, I deserve a facepalm here.
Works fine with it!
> Thanks,
> Parthiban
>> +
>> +# Multi arch tests are not supported
>> +# tests += tcg_tests['multiarch-softmmu']['tests']
>> +
>> +setup_asm = {'cflags': asmflags, 'qemu_args': qemu_args}
>> +setup_c = {'cflags': cflags, 'qemu_args': qemu_args}
>> +
>> +tests += {
>> + 'asm/test_abs.S': setup_asm,
>> + 'asm/test_bmerge.S': setup_asm,
>> + 'asm/test_clz.S': setup_asm,
>> + 'asm/test_crcn.S': setup_asm,
>> + 'asm/test_dextr.S': setup_asm,
>> + 'asm/test_dvstep.S': setup_asm,
>> + 'asm/test_fadd.S': setup_asm,
>> + 'asm/test_fmul.S': setup_asm,
>> + 'asm/test_ftohp.S': setup_asm,
>> + 'asm/test_ftoi.S': setup_asm,
>> + 'asm/test_ftou.S': setup_asm,
>> + 'asm/test_hptof.S': setup_asm,
>> + 'asm/test_imask.S': setup_asm,
>> + 'asm/test_insert.S': setup_asm,
>> + 'asm/test_ld_bu.S': setup_asm,
>> + 'asm/test_ld_h.S': setup_asm,
>> + 'asm/test_madd.S': setup_asm,
>> + 'asm/test_msub.S': setup_asm,
>> + 'asm/test_muls.S': setup_asm,
>> + 'c/test_boot_to_main.c': setup_c,
>> + 'c/test_context_save_areas.c': setup_c,
>> +}
>> +
>> +if 'qemu-system-tricore' in emulators
>> + tcg_tests += {
>> + 'tricore-softmmu': {
>> + 'cc': 'tricore-gcc',
>> + 'cc_dockerfile': 'debian-tricore-cross',
>> + 'cc_docker_arch': ['x86_64'],
>> + 'folder': 'tricore',
>> + 'gdb_arch': 'tricore',
>> + 'qemu': emulators['qemu-system-tricore'],
>> + 'tests': tests,
>> + }
>> + }
>> +endif
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 29/91] tests/tcg/meson.build: introduce depends
2026-07-06 22:32 ` [PATCH v3 29/91] tests/tcg/meson.build: introduce depends Pierrick Bouvier
@ 2026-07-08 6:07 ` Manos Pitsidianakis
0 siblings, 0 replies; 144+ messages in thread
From: Manos Pitsidianakis @ 2026-07-08 6:07 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Pierrick Bouvier, Paolo Bonzini, Peter Maydell,
Ilya Leoshkevich, Brian Cain, Alex Bennée, Gustavo Romero,
Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On Tue, 07 Jul 2026 01:32, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>This can be used to declare dependencies for a given test executable.
>Useful when generating headers (like x86_64 does).
>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> tests/tcg/meson.build | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
>diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>index 57e7c3f8801..1f553a0aa8d 100644
>--- a/tests/tcg/meson.build
>+++ b/tests/tcg/meson.build
>@@ -41,6 +41,7 @@ tcg_tests = {}
> # 'exe_name': ['provide an alternative binary name'],
> # 'test_name': ['provide an alternative test name'],
> # 'cflags': ['additional cflags to compile test', ...],
>+# 'depends': [meson_dependency, ...],
> # 'cc_feat': 'feature name, must be present in cc_feat_cflags',
> # 'qemu_args': ['qemu command line flags', ...],
> # 'expected_output': 'file_to_compare_output',
>@@ -164,7 +165,7 @@ foreach target, plan: tcg_tests
> # return a clear error if user misspell a setup entry
> foreach key, _ : setup
> allowed = ['exe_name', 'env_var', 'expected_output', 'cc_feat', 'cflags',
>- 'gdb_feat', 'gdb_test', 'plugin_test', 'qemu_args',
>+ 'depends', 'gdb_feat', 'gdb_test', 'plugin_test', 'qemu_args',
> 'test_name', 'wrapper']
> if key not in allowed
> error('unknown tcg setup entry \'' + key + '\' for test ' + src +
>@@ -262,6 +263,11 @@ foreach target, plan: tcg_tests
> built_tests += {exe_name: exe_name}
> endif
>
>+ exe_depends = build_test_depends
>+ if 'depends' in setup
>+ exe_depends += setup['depends']
>+ endif
>+
> # build executable if needed
> if exe_name not in built_tests
> exe = custom_target(exe_name,
>@@ -274,13 +280,13 @@ foreach target, plan: tcg_tests
> cflags],
> depfile: exe_name + '.d',
> output: exe_name + '.test',
>- depends: build_test_depends,
>+ depends: exe_depends,
> depend_files: build_test_depend_files,
> build_by_default: false)
> built_tests += {exe_name: exe}
> endif
>
>- depends = []
>+ test_depends = []
> qemu_args = []
> if 'qemu_args' in setup
> qemu_args = setup['qemu_args']
>@@ -297,7 +303,7 @@ foreach target, plan: tcg_tests
> plugin_args = ','.join(plugin_args)
>
> # since we turn plugin into a string, add dependency explicitly
>- depends += plugin
>+ test_depends += plugin
> qemu_args = ['-plugin', plugin.full_path() + plugin_args, qemu_args]
> endif
>
>@@ -352,7 +358,7 @@ foreach target, plan: tcg_tests
> endif
>
> test(test_name, env, args: cmd,
>- depends: depends,
>+ depends: test_depends,
> suite: ['tcg', 'tcg-' + target])
> added_tests += {test_name: true}
> endforeach
>--
>2.47.3
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-07 18:10 ` Pierrick Bouvier
@ 2026-07-08 6:11 ` Max Filippov
2026-07-08 16:36 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Max Filippov @ 2026-07-08 6:11 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On Tue, Jul 7, 2026 at 11:10 AM Pierrick Bouvier
<pierrick.bouvier@oss.qualcomm.com> wrote:
> On 7/7/2026 9:30 AM, Pierrick Bouvier wrote:
> > On 7/7/2026 6:45 AM, Max Filippov wrote:
> >> On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
> >> <pierrick.bouvier@oss.qualcomm.com> wrote:
> >>>
> >>> Needed, else we get this error:
> >>> dangerous relocation: l32r: misaligned literal target: .text
> >>
> >> This flag wasn't needed before because crt.S hasn't been built
> >> with text-section-literals, why is it needed now?
> >>
> > Previously, .S and .c were compiled in different steps, with different
> > options. Now, with meson, we have to provide a single compiler command
> > for all the files (no intermediate steps), which is a *hard* requirement
> > to save user from dealing with compilation details in arch files.
This sounds a bit restrictive for the tests, no?
> > One consequence is that .c + .S combination gets
> > -mtext-section-literals, which triggers this. Easily fixed by adding the
> > .align section.
Ok, not having literals in the text section isn't essential for the existing
xtensa tests. But not being able to do that deliberately feels a bit strange.
> > I can add this in commit description, if you're ok with this
> > explanation, and accept the patch.
Sure. Feel free to add
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
> >>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> >>> ---
> >>> tests/tcg/xtensa/crt.S | 1 +
> >>> 1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
> >>> index 909872cd385..de8fd8c1cd7 100644
> >>> --- a/tests/tcg/xtensa/crt.S
> >>> +++ b/tests/tcg/xtensa/crt.S
> >>> @@ -6,6 +6,7 @@
> >>> jx a2
> >>>
> >>> .text
> >>> +.align 4
> >>> .global _start
> >>> _start:
> >>> #if XCHAL_HAVE_WINDOWED
> >>> --
> >>> 2.47.3
> >>>
> >>>
> >>
> >>
> >
>
> While at it, any chance you could give some hints about how to compile
> for xtensaeb? I didn't find any compiler flag, and out of modifying
> target/xtensa/core-dc232b/core-isa.h to set XCHAL_HAVE_BE to 1, I'm stuck.
>
> I doubt it's the right way to do considering that it was not needed before.
You can download a compiler for the core `test_kc705_be` from
https://github.com/foss-xtensa/toolchain/releases/tag/2020.07
and then either run qemu `configure` with the option
--cross-cc-xtensaeb=xtensa-test_kc705_be-elf-gcc
or run tests with
make test-tcg CORE=test_kc705_be CC=xtensa-test_kc705_be-elf-gcc
The `CORE` variable chooses both the argument for the qemu `-cpu` option
and include directory used when building tests. The `CC` chooses the
compiler and linker.
I usually run configure with some compilers for little- and big-endian xtensa
and then run tests switching the core and compiler.
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (92 preceding siblings ...)
2026-07-07 6:27 ` Philippe Mathieu-Daudé
@ 2026-07-08 12:09 ` Ilya Leoshkevich
2026-07-08 16:25 ` Pierrick Bouvier
2026-07-09 13:50 ` Alex Bennée
` (2 subsequent siblings)
96 siblings, 1 reply; 144+ messages in thread
From: Ilya Leoshkevich @ 2026-07-08 12:09 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Brian Cain,
Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>
Seems like something is wrong with cross-compiler detection now.
On Fedora I get:
FAILED: tests/tcg/s390x-softmmu-memory.test
/usr/lib64/ccache/s390x-linux-gnu-gcc
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/multiarch/system/memory.c
-o tests/tcg/s390x-softmmu-memory.test -static -MMD -MF
tests/tcg/s390x-softmmu-memory.d -Wall -Werror -O0 -g
-fno-strict-aliasing -nostdlib -I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/s390x/system/../../minilib
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/s390x/system/../../minilib/printf.c
-I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl
-I
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include
-march=z13 ../tests/tcg/s390x/system/../head64.S
../tests/tcg/s390x/system/../console.c -DCHECK_UNALIGNED=0
In file included from
/mnt/root/home/iii/qemu-worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/tests/tcg/multiarch/system/memory.c:15:
/usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
stdint.h: No such file or directory
11 | # include_next <stdint.h>
| ^~~~~~~~~~
The cross-compiler situation on Fedora is that they ship the
cross-compiler itself, but no userspace headers, so it's usable
only for kernel builds. In this case QEMU should fall back to Docker,
which works for me on master, but not with this series.
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-08 12:09 ` Ilya Leoshkevich
@ 2026-07-08 16:25 ` Pierrick Bouvier
2026-07-08 18:56 ` Thomas Huth
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-08 16:25 UTC (permalink / raw)
To: Ilya Leoshkevich, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Brian Cain,
Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote:
>
>
> On 7/7/26 00:32, Pierrick Bouvier wrote:
>> This series replaces TCG tests makefiles with meson, with the
>> goal of having something more readable and maintainable in the long term.
>> Also it closes the gap that tcg tests had with the rest of tests, by
>> integrating
>> them with meson directly.
>>
>> It covers all existing tests for all architectures, including
>> user/system/multiarch-user/multiarch-system. It implements all
>> requirements
>> listed on original thread [1].
>>
>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>>
>> We also have for free:
>> - correct and complete dependencies for any test, including:
>> scripts, c.inc, headers, reference files and binaries/plugins.
>> - catch test declaration issues at configure time vs test time.
>> - proper data types for variables instead of string expansion with make.
>>
>> Series first introduce the meson machinery needed in tests/tcg/
>> meson.build, step
>> by step. Then it adds support for all existing archs. Finally, we remove
>> Makefiles and configure bits.
>>
>> Usage:
>>
>> ```
>> make check-tcg
>> make check-tcg-aarch64-linux-user
>> make check-tcg-aarch64-softmmu
>>
>> make tcg-tests
>>
>> ninja clean
>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
>> ```
>>
>> A few items were left for further work (out of scope for this series):
>> - xtensaeb: didn't find how to cross compile for this architecture
>> with what we
>> have now in container debian-xtensa-cross. Tips are welcome.
>> - tricore: implemented but reverted as all tests seem to hang. To be
>> investigated.
>> - riscv64/interruptedmemory.S is hanging. To be investigated.
>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output
>> does not
>> match bare metal result) and is the slowest test we have. To be
>> refactored and
>> fixed.
>>
>> v3
>> --
>>
>> - add all architectures
>> - reduce number of plugins tests (only add one test for each plugin from
>> multiarch pool)
>> - add depends for executable - allow to depend on a custom target for
>> generated
>> headers (x86_64 mmx, avx)
>> - add new tests added since last version for aarch64 (mte + gpc)
>> - refactor series to keep all arch files at end
>> - add docker host architecture selection
>>
>> v2
>> --
>>
>> - s/mispell/misspell
>> - moved comment about why we remove 'lib' prefix for plugins
>> - if user declare a wrong entry in a dictionary, list possible keys
>> - build tests by default (with 'all' target), as long as cross
>> compiler is
>> natively installed, to avoid triggering a container build.
>> - reword some comments based on reviewers feedback
>> - always declare all tests and avoid "per config" errors (no 'if' in
>> arch files)
>> - move compiler feature and gdb version checks directly in tests/tcg/
>> meson.build
>> - add support for cross containers
>> - add top target 'tcg-tests' to rebuild all tests
>>
>> Pierrick Bouvier (91):
>> tests/tcg/multiarch/system/memory.c: remove unused variable
>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
>> input
>> tests/tcg/multiarch/plugin: rename check-plugin-output to
>> regex-compare
>> tests/tcg: introduce meson.build
>> tests/tcg/meson.build: introduce exe_name
>> tests/tcg/meson.build: introduce test_name
>> tests/tcg/meson.build: introduce cflags
>> tests/tcg/meson.build: introduce qemu_args
>> tests/tcg/meson.build: introduce env_var
>> tests/tcg/plugins: build list of test_plugins
>> tests/tcg/meson.build: introduce plugin_test
>> tests/tcg/meson.build: test gdb support and introduce gdb_arch
>> tests/tcg/meson.build: introduce gdb_test
>> tests/tcg/meson.build: add default flag for testing compiler support
>> tests/tcg/meson.build: introduce wrapper
>> tests/tcg/meson.build: introduce expected_output
>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
>> tests/tcg/meson.build: add wrapper run_with_input
>> tests/tcg/meson.build: add wrapper record_replay
>> tests/tcg/meson.build: add wrapper check_plugin_output
>> tests/tcg/meson.build: add logic to skip tests
>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
>> tests/tcg/meson.build: move gdb_arch support check
>> tests/tcg/meson.build: let test infrastructure detect compiler
>> tests/docker/docker.py: return error code if probe fails
>> tests/docker/docker.py: remove "Image is up to date" info
>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
>> tests/tcg/meson.build: introduce depends
>> tests/tcg/meson.build: add top-level 'tcg-tests' target
>> tests/tcg/multiarch: declare user tests
>> tests/tcg/multiarch: declare system tests
>> tests/tcg/meson.build: add generic plugin tests
>> tests/tcg/aarch64: user tests
>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
>> tests/tcg/aarch64: system tests
>> tests/tcg/aarch64_be: user tests
>> tests/tcg/alpha: add float reference files
>> tests/tcg/alpha: user tests
>> tests/tcg/alpha: system tests
>> tests/tcg/arm: user tests
>> tests/tcg/arm: system tests
>> tests/tcg/hexagon/overflow.c: add missing include
>> tests/tcg/hexagon: user tests
>> tests/tcg/multiarch/sha1.c: fix big endian implementation
>> tests/tcg/hppa: add float reference files
>> tests/tcg/hppa: user tests
>> tests/tcg/i386: add missing float reference files
>> tests/tcg/i386: user tests
>> tests/tcg/i386: system tests
>> tests/tcg/loongarch64: user tests
>> tests/tcg/loongarch64: system tests
>> tests/tcg/m68k: add float reference files
>> tests/tcg/m68k: user tests
>> scripts/probe-gdb-support.py: add mapping for mips architecture
>> tests/tcg/mips: add float reference files
>> test/tcg/mips: user tests
>> tests/tcg/mips64: add float reference files
>> tests/tcg/mips64: user tests
>> tests/tcg/mips64el: add float reference files
>> tests/tcg/mips64el: user tests
>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
>> toolchain
>> tests/tcg/or1k/test_addic.c: remove unused variables
>> tests/tcg/or1k/test_muli.c: remove set but unused variable
>> tests/tcg/or1k: add float reference files
>> plugins/api.c: identify or1k pc register and mark it as read only
>> tests/tcg/or1k: user tests
>> tests/tcg/ppc64: add float reference files
>> tests/tcg/ppc64: remove dependency on qemu/compiler.h
>> tests/tcg/ppc64: user tests
>> tests/tcg/ppc64le: add missing float reference file
>> tests/tcg/ppc64le: user tests
>> tests/tcg/riscv64: add float reference files
>> tests/tcg/riscv64: user tests
>> tests/tcg/riscv64: system tests
>> tests/tcg/s390x/head64.S: declare _exit symbol after main
>> tests/tcg/s390x: add float reference files
>> tests/tcg/s390x: user tests
>> tests/tcg/s390x: system tests
>> tests/tcg/sh4: add float reference files
>> tests/tcg/sh4: user tests
>> tests/tcg/tricore: system tests
>> Revert "tests/tcg/tricore: system tests"
>> tests/tcg/x86_64: add missing float reference file
>> tests/tcg/x86_64: user tests
>> tests/tcg/x86_64: system tests
>> tests/tcg/xtensa/crt.S: align .text section
>> tests/tcg/xtensa: system tests
>> tests: remove tcg tests machinery
>> tests/tcg: remove Makefiles
>> configure: remove --cross-cc* options
>>
>> configure | 473 ---------
>> docs/devel/testing/main.rst | 22 +-
>> plugins/api.c | 2 +
>> scripts/probe-gdb-support.py | 1 +
>> tests/Makefile.include | 68 +-
>> tests/docker/docker.py | 4 +-
>> .../dockerfiles/debian-all-test-cross.docker | 16 +-
>> tests/lcitool/refresh | 107 +-
>> tests/meson.build | 2 +-
>> tests/tcg/Makefile.target | 281 -----
>> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
>> tests/tcg/aarch64/Makefile.target | 198 ----
>> tests/tcg/aarch64/meson.build | 195 ++++
>> tests/tcg/aarch64/system/gpc-test.c | 5 -
>> tests/tcg/aarch64/system/meson.build | 108 ++
>> tests/tcg/aarch64_be/Makefile.target | 17 -
>> tests/tcg/aarch64_be/meson.build | 22 +
>> tests/tcg/alpha/Makefile.softmmu-target | 34 -
>> tests/tcg/alpha/Makefile.target | 18 -
>> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/alpha/meson.build | 55 +
>> tests/tcg/alpha/system/meson.build | 46 +
>> tests/tcg/arm/Makefile.softmmu-target | 80 --
>> tests/tcg/arm/Makefile.target | 87 --
>> tests/tcg/arm/meson.build | 80 ++
>> tests/tcg/arm/system/meson.build | 66 ++
>> tests/tcg/hexagon/Makefile.target | 146 ---
>> tests/tcg/hexagon/meson.build | 111 ++
>> tests/tcg/hexagon/overflow.c | 1 +
>> tests/tcg/hppa/Makefile.target | 14 -
>> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/hppa/meson.build | 22 +
>> tests/tcg/i386/Makefile.softmmu-target | 37 -
>> tests/tcg/i386/Makefile.target | 102 --
>> tests/tcg/i386/float_convd.conf | 988 ------------------
>> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/i386/meson.build | 58 +
>> tests/tcg/i386/system/meson.build | 48 +
>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
>> tests/tcg/loongarch64/Makefile.target | 20 -
>> tests/tcg/loongarch64/meson.build | 32 +
>> tests/tcg/loongarch64/system/meson.build | 47 +
>> tests/tcg/m68k/Makefile.target | 7 -
>> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/m68k/meson.build | 23 +
>> tests/tcg/meson.build | 447 ++++++++
>> tests/tcg/minilib/Makefile.target | 21 -
>> tests/tcg/mips/Makefile.target | 19 -
>> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips/meson.build | 25 +
>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
>> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
>> tests/tcg/mips64/Makefile.target | 20 -
>> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips64/meson.build | 27 +
>> tests/tcg/mips64el/Makefile.target | 8 -
>> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips64el/meson.build | 14 +
>> tests/tcg/multiarch/Makefile.target | 233 -----
>> tests/tcg/multiarch/meson.build | 149 +++
>> .../multiarch/plugin/check-plugin-output.sh | 36 -
>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
>> tests/tcg/multiarch/sha1.c | 4 +-
>> tests/tcg/multiarch/sha1.ref | 1 +
>> .../multiarch/system/Makefile.softmmu-target | 81 --
>> tests/tcg/multiarch/system/memory.c | 3 +-
>> tests/tcg/multiarch/system/meson.build | 53 +
>> tests/tcg/or1k/Makefile | 71 --
>> tests/tcg/or1k/float_convd.ref | 247 +++++
>> tests/tcg/or1k/float_convs.ref | 187 ++++
>> tests/tcg/or1k/float_madds.ref | 192 ++++
>> tests/tcg/or1k/meson.build | 72 ++
>> tests/tcg/or1k/test_addic.c | 2 +-
>> tests/tcg/or1k/test_muli.c | 5 +-
>> tests/tcg/plugins/meson.build | 11 +-
>> tests/tcg/ppc64/Makefile.target | 63 --
>> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/ppc64/meson.build | 56 +
>> tests/tcg/ppc64/vector.c | 11 +-
>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
>> tests/tcg/ppc64le/Makefile.target | 7 -
>> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/ppc64le/meson.build | 14 +
>> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
>> tests/tcg/riscv64/Makefile.target | 20 -
>> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/riscv64/meson.build | 38 +
>> tests/tcg/riscv64/system/meson.build | 38 +
>> tests/tcg/s390x/Makefile.softmmu-target | 57 -
>> tests/tcg/s390x/Makefile.target | 127 ---
>> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/s390x/head64.S | 2 +
>> tests/tcg/s390x/meson.build | 140 +++
>> tests/tcg/s390x/system/meson.build | 92 ++
>> tests/tcg/scripts/check_plugin_output.sh | 25 +
>> tests/tcg/scripts/record_replay.sh | 16 +
>> .../scripts/run_and_check_forbidden_output.sh | 19 +
>> tests/tcg/scripts/run_and_diff.sh | 15 +
>> tests/tcg/scripts/run_with_input.sh | 12 +
>> tests/tcg/sh4/Makefile.target | 18 -
>> tests/tcg/sh4/float_convd.ref | 494 +++++++++
>> tests/tcg/sh4/float_convs.ref | 374 +++++++
>> tests/tcg/sh4/float_madds.ref | 384 +++++++
>> tests/tcg/sh4/meson.build | 25 +
>> tests/tcg/tricore/Makefile.softmmu-target | 53 -
>> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
>> tests/tcg/x86_64/Makefile.target | 40 -
>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/x86_64/meson.build | 83 ++
>> tests/tcg/x86_64/system/meson.build | 62 ++
>> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
>> tests/tcg/xtensa/crt.S | 1 +
>> tests/tcg/xtensa/meson.build | 89 ++
>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
>> 134 files changed, 30491 insertions(+), 4114 deletions(-)
>> delete mode 100644 tests/tcg/Makefile.target
>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/aarch64/Makefile.target
>> create mode 100644 tests/tcg/aarch64/meson.build
>> create mode 100644 tests/tcg/aarch64/system/meson.build
>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
>> create mode 100644 tests/tcg/aarch64_be/meson.build
>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/alpha/Makefile.target
>> create mode 100644 tests/tcg/alpha/float_convd.ref
>> create mode 100644 tests/tcg/alpha/float_convs.ref
>> create mode 100644 tests/tcg/alpha/float_madds.ref
>> create mode 100644 tests/tcg/alpha/meson.build
>> create mode 100644 tests/tcg/alpha/system/meson.build
>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/arm/Makefile.target
>> create mode 100644 tests/tcg/arm/meson.build
>> create mode 100644 tests/tcg/arm/system/meson.build
>> delete mode 100644 tests/tcg/hexagon/Makefile.target
>> create mode 100644 tests/tcg/hexagon/meson.build
>> delete mode 100644 tests/tcg/hppa/Makefile.target
>> create mode 100644 tests/tcg/hppa/float_convd.ref
>> create mode 100644 tests/tcg/hppa/float_convs.ref
>> create mode 100644 tests/tcg/hppa/float_madds.ref
>> create mode 100644 tests/tcg/hppa/meson.build
>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/i386/Makefile.target
>> delete mode 100644 tests/tcg/i386/float_convd.conf
>> create mode 100644 tests/tcg/i386/float_convd.ref
>> create mode 100644 tests/tcg/i386/float_madds.ref
>> create mode 100644 tests/tcg/i386/meson.build
>> create mode 100644 tests/tcg/i386/system/meson.build
>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/loongarch64/Makefile.target
>> create mode 100644 tests/tcg/loongarch64/meson.build
>> create mode 100644 tests/tcg/loongarch64/system/meson.build
>> delete mode 100644 tests/tcg/m68k/Makefile.target
>> create mode 100644 tests/tcg/m68k/float_convd.ref
>> create mode 100644 tests/tcg/m68k/float_convs.ref
>> create mode 100644 tests/tcg/m68k/float_madds.ref
>> create mode 100644 tests/tcg/m68k/meson.build
>> create mode 100644 tests/tcg/meson.build
>> delete mode 100644 tests/tcg/minilib/Makefile.target
>> delete mode 100644 tests/tcg/mips/Makefile.target
>> create mode 100644 tests/tcg/mips/float_convd.ref
>> create mode 100644 tests/tcg/mips/float_convs.ref
>> create mode 100644 tests/tcg/mips/float_madds.ref
>> create mode 100644 tests/tcg/mips/meson.build
>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
>> delete mode 100644 tests/tcg/mips64/Makefile.target
>> create mode 100644 tests/tcg/mips64/float_convd.ref
>> create mode 100644 tests/tcg/mips64/float_convs.ref
>> create mode 100644 tests/tcg/mips64/float_madds.ref
>> create mode 100644 tests/tcg/mips64/meson.build
>> delete mode 100644 tests/tcg/mips64el/Makefile.target
>> create mode 100644 tests/tcg/mips64el/float_convd.ref
>> create mode 100644 tests/tcg/mips64el/float_convs.ref
>> create mode 100644 tests/tcg/mips64el/float_madds.ref
>> create mode 100644 tests/tcg/mips64el/meson.build
>> delete mode 100644 tests/tcg/multiarch/Makefile.target
>> create mode 100644 tests/tcg/multiarch/meson.build
>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
>> create mode 100644 tests/tcg/multiarch/sha1.ref
>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
>> create mode 100644 tests/tcg/multiarch/system/meson.build
>> delete mode 100644 tests/tcg/or1k/Makefile
>> create mode 100644 tests/tcg/or1k/float_convd.ref
>> create mode 100644 tests/tcg/or1k/float_convs.ref
>> create mode 100644 tests/tcg/or1k/float_madds.ref
>> create mode 100644 tests/tcg/or1k/meson.build
>> delete mode 100644 tests/tcg/ppc64/Makefile.target
>> create mode 100644 tests/tcg/ppc64/float_convd.ref
>> create mode 100644 tests/tcg/ppc64/float_convs.ref
>> create mode 100644 tests/tcg/ppc64/float_madds.ref
>> create mode 100644 tests/tcg/ppc64/meson.build
>> delete mode 100644 tests/tcg/ppc64le/Makefile.target
>> create mode 100644 tests/tcg/ppc64le/float_convd.ref
>> create mode 100644 tests/tcg/ppc64le/meson.build
>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/riscv64/Makefile.target
>> create mode 100644 tests/tcg/riscv64/float_convd.ref
>> create mode 100644 tests/tcg/riscv64/float_convs.ref
>> create mode 100644 tests/tcg/riscv64/float_madds.ref
>> create mode 100644 tests/tcg/riscv64/meson.build
>> create mode 100644 tests/tcg/riscv64/system/meson.build
>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/s390x/Makefile.target
>> create mode 100644 tests/tcg/s390x/float_convd.ref
>> create mode 100644 tests/tcg/s390x/float_convs.ref
>> create mode 100644 tests/tcg/s390x/float_madds.ref
>> create mode 100644 tests/tcg/s390x/meson.build
>> create mode 100644 tests/tcg/s390x/system/meson.build
>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
>> create mode 100755 tests/tcg/scripts/record_replay.sh
>> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
>> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>> create mode 100755 tests/tcg/scripts/run_with_input.sh
>> delete mode 100644 tests/tcg/sh4/Makefile.target
>> create mode 100644 tests/tcg/sh4/float_convd.ref
>> create mode 100644 tests/tcg/sh4/float_convs.ref
>> create mode 100644 tests/tcg/sh4/float_madds.ref
>> create mode 100644 tests/tcg/sh4/meson.build
>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/x86_64/Makefile.target
>> create mode 100644 tests/tcg/x86_64/float_madds.ref
>> create mode 100644 tests/tcg/x86_64/meson.build
>> create mode 100644 tests/tcg/x86_64/system/meson.build
>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
>> create mode 100644 tests/tcg/xtensa/meson.build
>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>>
>
> Seems like something is wrong with cross-compiler detection now.
> On Fedora I get:
>
> FAILED: tests/tcg/s390x-softmmu-memory.test
> /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu-
> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
> tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu-
> memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall -
> Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu-
> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
> tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu-
> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
> tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/
> qemu-worktrees/20260706223343.988769-1-
> pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/
> home/iii/qemu-worktrees/20260706223343.988769-1-
> pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include -
> march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/
> system/../console.c -DCHECK_UNALIGNED=0
> In file included from /mnt/root/home/iii/qemu-
> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
> tests/tcg/multiarch/system/memory.c:15:
> /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
> stdint.h: No such file or directory
> 11 | # include_next <stdint.h>
> | ^~~~~~~~~~
>
> The cross-compiler situation on Fedora is that they ship the
> cross-compiler itself, but no userspace headers, so it's usable
> only for kernel builds. In this case QEMU should fall back to Docker,
> which works for me on master, but not with this series.
Thanks for the report. I just tried that on debian for now.
Also, for s390x, I noticed that some tests are relying on roms/SLOF/...
headers, which are not available if submodules are not initialized.
Probably another corner case to cover.
I'll take a look at how we detected all this before, and gracefully fall
back to docker in this case.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-08 6:11 ` Max Filippov
@ 2026-07-08 16:36 ` Pierrick Bouvier
2026-07-09 15:24 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-08 16:36 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/7/2026 11:11 PM, Max Filippov wrote:
> On Tue, Jul 7, 2026 at 11:10 AM Pierrick Bouvier
> <pierrick.bouvier@oss.qualcomm.com> wrote:
>> On 7/7/2026 9:30 AM, Pierrick Bouvier wrote:
>>> On 7/7/2026 6:45 AM, Max Filippov wrote:
>>>> On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
>>>> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>>>>
>>>>> Needed, else we get this error:
>>>>> dangerous relocation: l32r: misaligned literal target: .text
>>>>
>>>> This flag wasn't needed before because crt.S hasn't been built
>>>> with text-section-literals, why is it needed now?
>>>>
>>> Previously, .S and .c were compiled in different steps, with different
>>> options. Now, with meson, we have to provide a single compiler command
>>> for all the files (no intermediate steps), which is a *hard* requirement
>>> to save user from dealing with compilation details in arch files.
>
> This sounds a bit restrictive for the tests, no?
>
It may appear restrictive, but it has not been a problem for all the
existing tests we have. In practice, only xtensa has such a structure,
with this distinction between .S and .c that use/don't use text section
literals. In such a case, I prefer to unify things instead of twist the
workflow until it works.
The alternative would be to give arch files full control of how they
build all their binaries, which is much more verbose and error prone
than the current approach. (Note: I tried that first before having the
current design where tests are just declared).
Also, it pushes all compiler details (is flag supported, is it available
or through docker, how to build container?, ...) back to arch files.
Also, because meson can only have one cc and cross cc at a time, we
would still need custom targets for everything, which is really not
something anyone wants to write themselves, trust me.
>>> One consequence is that .c + .S combination gets
>>> -mtext-section-literals, which triggers this. Easily fixed by adding the
>>> .align section.
>
> Ok, not having literals in the text section isn't essential for the existing
> xtensa tests. But not being able to do that deliberately feels a bit strange.
>
I'm sorry xtensa uses a corner case, but fortunately, this simple align
makes things work as expected.
>>> I can add this in commit description, if you're ok with this
>>> explanation, and accept the patch.
>
> Sure. Feel free to add
> Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
>
Thanks!
>>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>> ---
>>>>> tests/tcg/xtensa/crt.S | 1 +
>>>>> 1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
>>>>> index 909872cd385..de8fd8c1cd7 100644
>>>>> --- a/tests/tcg/xtensa/crt.S
>>>>> +++ b/tests/tcg/xtensa/crt.S
>>>>> @@ -6,6 +6,7 @@
>>>>> jx a2
>>>>>
>>>>> .text
>>>>> +.align 4
>>>>> .global _start
>>>>> _start:
>>>>> #if XCHAL_HAVE_WINDOWED
>>>>> --
>>>>> 2.47.3
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>> While at it, any chance you could give some hints about how to compile
>> for xtensaeb? I didn't find any compiler flag, and out of modifying
>> target/xtensa/core-dc232b/core-isa.h to set XCHAL_HAVE_BE to 1, I'm stuck.
>>
>> I doubt it's the right way to do considering that it was not needed before.
>
> You can download a compiler for the core `test_kc705_be` from
> https://github.com/foss-xtensa/toolchain/releases/tag/2020.07
> and then either run qemu `configure` with the option
> --cross-cc-xtensaeb=xtensa-test_kc705_be-elf-gcc
> or run tests with
> make test-tcg CORE=test_kc705_be CC=xtensa-test_kc705_be-elf-gcc
>
> The `CORE` variable chooses both the argument for the qemu `-cpu` option
> and include directory used when building tests. The `CC` chooses the
> compiler and linker.
>
> I usually run configure with some compilers for little- and big-endian xtensa
> and then run tests switching the core and compiler.
Sounds good. I'll add it to our debian-xtensa-cross, and uses it
directly for xtensaeb.
In case you want to run this with other cores, feel free to answer with
a list with their names and toolchains, and I'll be happy to add all
needed suites, so there is no need to set any CC and CORE, but directly
offer check-tcg-xtensa-X-softmmu suites. The good side is that everyone,
including our CI and you, will be able to run the *exact* same setup.
Cheers,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-08 16:25 ` Pierrick Bouvier
@ 2026-07-08 18:56 ` Thomas Huth
2026-07-08 19:58 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Thomas Huth @ 2026-07-08 18:56 UTC (permalink / raw)
To: Pierrick Bouvier, Ilya Leoshkevich, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Paolo Bonzini, Peter Maydell, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson, qemu-s390x
On 08/07/2026 18.25, Pierrick Bouvier wrote:
> On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote:
>>
>>
>> On 7/7/26 00:32, Pierrick Bouvier wrote:
>>> This series replaces TCG tests makefiles with meson, with the
>>> goal of having something more readable and maintainable in the long term.
>>> Also it closes the gap that tcg tests had with the rest of tests, by
>>> integrating
>>> them with meson directly.
>>>
>>> It covers all existing tests for all architectures, including
>>> user/system/multiarch-user/multiarch-system. It implements all
>>> requirements
>>> listed on original thread [1].
>>>
>>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>>>
>>> We also have for free:
>>> - correct and complete dependencies for any test, including:
>>> scripts, c.inc, headers, reference files and binaries/plugins.
>>> - catch test declaration issues at configure time vs test time.
>>> - proper data types for variables instead of string expansion with make.
>>>
>>> Series first introduce the meson machinery needed in tests/tcg/
>>> meson.build, step
>>> by step. Then it adds support for all existing archs. Finally, we remove
>>> Makefiles and configure bits.
>>>
>>> Usage:
>>>
>>> ```
>>> make check-tcg
>>> make check-tcg-aarch64-linux-user
>>> make check-tcg-aarch64-softmmu
>>>
>>> make tcg-tests
>>>
>>> ninja clean
>>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
>>> ```
>>>
>>> A few items were left for further work (out of scope for this series):
>>> - xtensaeb: didn't find how to cross compile for this architecture
>>> with what we
>>> have now in container debian-xtensa-cross. Tips are welcome.
>>> - tricore: implemented but reverted as all tests seem to hang. To be
>>> investigated.
>>> - riscv64/interruptedmemory.S is hanging. To be investigated.
>>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output
>>> does not
>>> match bare metal result) and is the slowest test we have. To be
>>> refactored and
>>> fixed.
>>>
>>> v3
>>> --
>>>
>>> - add all architectures
>>> - reduce number of plugins tests (only add one test for each plugin from
>>> multiarch pool)
>>> - add depends for executable - allow to depend on a custom target for
>>> generated
>>> headers (x86_64 mmx, avx)
>>> - add new tests added since last version for aarch64 (mte + gpc)
>>> - refactor series to keep all arch files at end
>>> - add docker host architecture selection
>>>
>>> v2
>>> --
>>>
>>> - s/mispell/misspell
>>> - moved comment about why we remove 'lib' prefix for plugins
>>> - if user declare a wrong entry in a dictionary, list possible keys
>>> - build tests by default (with 'all' target), as long as cross
>>> compiler is
>>> natively installed, to avoid triggering a container build.
>>> - reword some comments based on reviewers feedback
>>> - always declare all tests and avoid "per config" errors (no 'if' in
>>> arch files)
>>> - move compiler feature and gdb version checks directly in tests/tcg/
>>> meson.build
>>> - add support for cross containers
>>> - add top target 'tcg-tests' to rebuild all tests
>>>
>>> Pierrick Bouvier (91):
>>> tests/tcg/multiarch/system/memory.c: remove unused variable
>>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
>>> input
>>> tests/tcg/multiarch/plugin: rename check-plugin-output to
>>> regex-compare
>>> tests/tcg: introduce meson.build
>>> tests/tcg/meson.build: introduce exe_name
>>> tests/tcg/meson.build: introduce test_name
>>> tests/tcg/meson.build: introduce cflags
>>> tests/tcg/meson.build: introduce qemu_args
>>> tests/tcg/meson.build: introduce env_var
>>> tests/tcg/plugins: build list of test_plugins
>>> tests/tcg/meson.build: introduce plugin_test
>>> tests/tcg/meson.build: test gdb support and introduce gdb_arch
>>> tests/tcg/meson.build: introduce gdb_test
>>> tests/tcg/meson.build: add default flag for testing compiler support
>>> tests/tcg/meson.build: introduce wrapper
>>> tests/tcg/meson.build: introduce expected_output
>>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
>>> tests/tcg/meson.build: add wrapper run_with_input
>>> tests/tcg/meson.build: add wrapper record_replay
>>> tests/tcg/meson.build: add wrapper check_plugin_output
>>> tests/tcg/meson.build: add logic to skip tests
>>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
>>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
>>> tests/tcg/meson.build: move gdb_arch support check
>>> tests/tcg/meson.build: let test infrastructure detect compiler
>>> tests/docker/docker.py: return error code if probe fails
>>> tests/docker/docker.py: remove "Image is up to date" info
>>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
>>> tests/tcg/meson.build: introduce depends
>>> tests/tcg/meson.build: add top-level 'tcg-tests' target
>>> tests/tcg/multiarch: declare user tests
>>> tests/tcg/multiarch: declare system tests
>>> tests/tcg/meson.build: add generic plugin tests
>>> tests/tcg/aarch64: user tests
>>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
>>> tests/tcg/aarch64: system tests
>>> tests/tcg/aarch64_be: user tests
>>> tests/tcg/alpha: add float reference files
>>> tests/tcg/alpha: user tests
>>> tests/tcg/alpha: system tests
>>> tests/tcg/arm: user tests
>>> tests/tcg/arm: system tests
>>> tests/tcg/hexagon/overflow.c: add missing include
>>> tests/tcg/hexagon: user tests
>>> tests/tcg/multiarch/sha1.c: fix big endian implementation
>>> tests/tcg/hppa: add float reference files
>>> tests/tcg/hppa: user tests
>>> tests/tcg/i386: add missing float reference files
>>> tests/tcg/i386: user tests
>>> tests/tcg/i386: system tests
>>> tests/tcg/loongarch64: user tests
>>> tests/tcg/loongarch64: system tests
>>> tests/tcg/m68k: add float reference files
>>> tests/tcg/m68k: user tests
>>> scripts/probe-gdb-support.py: add mapping for mips architecture
>>> tests/tcg/mips: add float reference files
>>> test/tcg/mips: user tests
>>> tests/tcg/mips64: add float reference files
>>> tests/tcg/mips64: user tests
>>> tests/tcg/mips64el: add float reference files
>>> tests/tcg/mips64el: user tests
>>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
>>> toolchain
>>> tests/tcg/or1k/test_addic.c: remove unused variables
>>> tests/tcg/or1k/test_muli.c: remove set but unused variable
>>> tests/tcg/or1k: add float reference files
>>> plugins/api.c: identify or1k pc register and mark it as read only
>>> tests/tcg/or1k: user tests
>>> tests/tcg/ppc64: add float reference files
>>> tests/tcg/ppc64: remove dependency on qemu/compiler.h
>>> tests/tcg/ppc64: user tests
>>> tests/tcg/ppc64le: add missing float reference file
>>> tests/tcg/ppc64le: user tests
>>> tests/tcg/riscv64: add float reference files
>>> tests/tcg/riscv64: user tests
>>> tests/tcg/riscv64: system tests
>>> tests/tcg/s390x/head64.S: declare _exit symbol after main
>>> tests/tcg/s390x: add float reference files
>>> tests/tcg/s390x: user tests
>>> tests/tcg/s390x: system tests
>>> tests/tcg/sh4: add float reference files
>>> tests/tcg/sh4: user tests
>>> tests/tcg/tricore: system tests
>>> Revert "tests/tcg/tricore: system tests"
>>> tests/tcg/x86_64: add missing float reference file
>>> tests/tcg/x86_64: user tests
>>> tests/tcg/x86_64: system tests
>>> tests/tcg/xtensa/crt.S: align .text section
>>> tests/tcg/xtensa: system tests
>>> tests: remove tcg tests machinery
>>> tests/tcg: remove Makefiles
>>> configure: remove --cross-cc* options
>>>
>>> configure | 473 ---------
>>> docs/devel/testing/main.rst | 22 +-
>>> plugins/api.c | 2 +
>>> scripts/probe-gdb-support.py | 1 +
>>> tests/Makefile.include | 68 +-
>>> tests/docker/docker.py | 4 +-
>>> .../dockerfiles/debian-all-test-cross.docker | 16 +-
>>> tests/lcitool/refresh | 107 +-
>>> tests/meson.build | 2 +-
>>> tests/tcg/Makefile.target | 281 -----
>>> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
>>> tests/tcg/aarch64/Makefile.target | 198 ----
>>> tests/tcg/aarch64/meson.build | 195 ++++
>>> tests/tcg/aarch64/system/gpc-test.c | 5 -
>>> tests/tcg/aarch64/system/meson.build | 108 ++
>>> tests/tcg/aarch64_be/Makefile.target | 17 -
>>> tests/tcg/aarch64_be/meson.build | 22 +
>>> tests/tcg/alpha/Makefile.softmmu-target | 34 -
>>> tests/tcg/alpha/Makefile.target | 18 -
>>> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/alpha/meson.build | 55 +
>>> tests/tcg/alpha/system/meson.build | 46 +
>>> tests/tcg/arm/Makefile.softmmu-target | 80 --
>>> tests/tcg/arm/Makefile.target | 87 --
>>> tests/tcg/arm/meson.build | 80 ++
>>> tests/tcg/arm/system/meson.build | 66 ++
>>> tests/tcg/hexagon/Makefile.target | 146 ---
>>> tests/tcg/hexagon/meson.build | 111 ++
>>> tests/tcg/hexagon/overflow.c | 1 +
>>> tests/tcg/hppa/Makefile.target | 14 -
>>> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/hppa/meson.build | 22 +
>>> tests/tcg/i386/Makefile.softmmu-target | 37 -
>>> tests/tcg/i386/Makefile.target | 102 --
>>> tests/tcg/i386/float_convd.conf | 988 ------------------
>>> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/i386/meson.build | 58 +
>>> tests/tcg/i386/system/meson.build | 48 +
>>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
>>> tests/tcg/loongarch64/Makefile.target | 20 -
>>> tests/tcg/loongarch64/meson.build | 32 +
>>> tests/tcg/loongarch64/system/meson.build | 47 +
>>> tests/tcg/m68k/Makefile.target | 7 -
>>> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/m68k/meson.build | 23 +
>>> tests/tcg/meson.build | 447 ++++++++
>>> tests/tcg/minilib/Makefile.target | 21 -
>>> tests/tcg/mips/Makefile.target | 19 -
>>> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips/meson.build | 25 +
>>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
>>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
>>> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
>>> tests/tcg/mips64/Makefile.target | 20 -
>>> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips64/meson.build | 27 +
>>> tests/tcg/mips64el/Makefile.target | 8 -
>>> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/mips64el/meson.build | 14 +
>>> tests/tcg/multiarch/Makefile.target | 233 -----
>>> tests/tcg/multiarch/meson.build | 149 +++
>>> .../multiarch/plugin/check-plugin-output.sh | 36 -
>>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
>>> tests/tcg/multiarch/sha1.c | 4 +-
>>> tests/tcg/multiarch/sha1.ref | 1 +
>>> .../multiarch/system/Makefile.softmmu-target | 81 --
>>> tests/tcg/multiarch/system/memory.c | 3 +-
>>> tests/tcg/multiarch/system/meson.build | 53 +
>>> tests/tcg/or1k/Makefile | 71 --
>>> tests/tcg/or1k/float_convd.ref | 247 +++++
>>> tests/tcg/or1k/float_convs.ref | 187 ++++
>>> tests/tcg/or1k/float_madds.ref | 192 ++++
>>> tests/tcg/or1k/meson.build | 72 ++
>>> tests/tcg/or1k/test_addic.c | 2 +-
>>> tests/tcg/or1k/test_muli.c | 5 +-
>>> tests/tcg/plugins/meson.build | 11 +-
>>> tests/tcg/ppc64/Makefile.target | 63 --
>>> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/ppc64/meson.build | 56 +
>>> tests/tcg/ppc64/vector.c | 11 +-
>>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
>>> tests/tcg/ppc64le/Makefile.target | 7 -
>>> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/ppc64le/meson.build | 14 +
>>> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
>>> tests/tcg/riscv64/Makefile.target | 20 -
>>> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/riscv64/meson.build | 38 +
>>> tests/tcg/riscv64/system/meson.build | 38 +
>>> tests/tcg/s390x/Makefile.softmmu-target | 57 -
>>> tests/tcg/s390x/Makefile.target | 127 ---
>>> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
>>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
>>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/s390x/head64.S | 2 +
>>> tests/tcg/s390x/meson.build | 140 +++
>>> tests/tcg/s390x/system/meson.build | 92 ++
>>> tests/tcg/scripts/check_plugin_output.sh | 25 +
>>> tests/tcg/scripts/record_replay.sh | 16 +
>>> .../scripts/run_and_check_forbidden_output.sh | 19 +
>>> tests/tcg/scripts/run_and_diff.sh | 15 +
>>> tests/tcg/scripts/run_with_input.sh | 12 +
>>> tests/tcg/sh4/Makefile.target | 18 -
>>> tests/tcg/sh4/float_convd.ref | 494 +++++++++
>>> tests/tcg/sh4/float_convs.ref | 374 +++++++
>>> tests/tcg/sh4/float_madds.ref | 384 +++++++
>>> tests/tcg/sh4/meson.build | 25 +
>>> tests/tcg/tricore/Makefile.softmmu-target | 53 -
>>> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
>>> tests/tcg/x86_64/Makefile.target | 40 -
>>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
>>> tests/tcg/x86_64/meson.build | 83 ++
>>> tests/tcg/x86_64/system/meson.build | 62 ++
>>> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
>>> tests/tcg/xtensa/crt.S | 1 +
>>> tests/tcg/xtensa/meson.build | 89 ++
>>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
>>> 134 files changed, 30491 insertions(+), 4114 deletions(-)
>>> delete mode 100644 tests/tcg/Makefile.target
>>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/aarch64/Makefile.target
>>> create mode 100644 tests/tcg/aarch64/meson.build
>>> create mode 100644 tests/tcg/aarch64/system/meson.build
>>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
>>> create mode 100644 tests/tcg/aarch64_be/meson.build
>>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/alpha/Makefile.target
>>> create mode 100644 tests/tcg/alpha/float_convd.ref
>>> create mode 100644 tests/tcg/alpha/float_convs.ref
>>> create mode 100644 tests/tcg/alpha/float_madds.ref
>>> create mode 100644 tests/tcg/alpha/meson.build
>>> create mode 100644 tests/tcg/alpha/system/meson.build
>>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/arm/Makefile.target
>>> create mode 100644 tests/tcg/arm/meson.build
>>> create mode 100644 tests/tcg/arm/system/meson.build
>>> delete mode 100644 tests/tcg/hexagon/Makefile.target
>>> create mode 100644 tests/tcg/hexagon/meson.build
>>> delete mode 100644 tests/tcg/hppa/Makefile.target
>>> create mode 100644 tests/tcg/hppa/float_convd.ref
>>> create mode 100644 tests/tcg/hppa/float_convs.ref
>>> create mode 100644 tests/tcg/hppa/float_madds.ref
>>> create mode 100644 tests/tcg/hppa/meson.build
>>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/i386/Makefile.target
>>> delete mode 100644 tests/tcg/i386/float_convd.conf
>>> create mode 100644 tests/tcg/i386/float_convd.ref
>>> create mode 100644 tests/tcg/i386/float_madds.ref
>>> create mode 100644 tests/tcg/i386/meson.build
>>> create mode 100644 tests/tcg/i386/system/meson.build
>>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/loongarch64/Makefile.target
>>> create mode 100644 tests/tcg/loongarch64/meson.build
>>> create mode 100644 tests/tcg/loongarch64/system/meson.build
>>> delete mode 100644 tests/tcg/m68k/Makefile.target
>>> create mode 100644 tests/tcg/m68k/float_convd.ref
>>> create mode 100644 tests/tcg/m68k/float_convs.ref
>>> create mode 100644 tests/tcg/m68k/float_madds.ref
>>> create mode 100644 tests/tcg/m68k/meson.build
>>> create mode 100644 tests/tcg/meson.build
>>> delete mode 100644 tests/tcg/minilib/Makefile.target
>>> delete mode 100644 tests/tcg/mips/Makefile.target
>>> create mode 100644 tests/tcg/mips/float_convd.ref
>>> create mode 100644 tests/tcg/mips/float_convs.ref
>>> create mode 100644 tests/tcg/mips/float_madds.ref
>>> create mode 100644 tests/tcg/mips/meson.build
>>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
>>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
>>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
>>> delete mode 100644 tests/tcg/mips64/Makefile.target
>>> create mode 100644 tests/tcg/mips64/float_convd.ref
>>> create mode 100644 tests/tcg/mips64/float_convs.ref
>>> create mode 100644 tests/tcg/mips64/float_madds.ref
>>> create mode 100644 tests/tcg/mips64/meson.build
>>> delete mode 100644 tests/tcg/mips64el/Makefile.target
>>> create mode 100644 tests/tcg/mips64el/float_convd.ref
>>> create mode 100644 tests/tcg/mips64el/float_convs.ref
>>> create mode 100644 tests/tcg/mips64el/float_madds.ref
>>> create mode 100644 tests/tcg/mips64el/meson.build
>>> delete mode 100644 tests/tcg/multiarch/Makefile.target
>>> create mode 100644 tests/tcg/multiarch/meson.build
>>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
>>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
>>> create mode 100644 tests/tcg/multiarch/sha1.ref
>>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
>>> create mode 100644 tests/tcg/multiarch/system/meson.build
>>> delete mode 100644 tests/tcg/or1k/Makefile
>>> create mode 100644 tests/tcg/or1k/float_convd.ref
>>> create mode 100644 tests/tcg/or1k/float_convs.ref
>>> create mode 100644 tests/tcg/or1k/float_madds.ref
>>> create mode 100644 tests/tcg/or1k/meson.build
>>> delete mode 100644 tests/tcg/ppc64/Makefile.target
>>> create mode 100644 tests/tcg/ppc64/float_convd.ref
>>> create mode 100644 tests/tcg/ppc64/float_convs.ref
>>> create mode 100644 tests/tcg/ppc64/float_madds.ref
>>> create mode 100644 tests/tcg/ppc64/meson.build
>>> delete mode 100644 tests/tcg/ppc64le/Makefile.target
>>> create mode 100644 tests/tcg/ppc64le/float_convd.ref
>>> create mode 100644 tests/tcg/ppc64le/meson.build
>>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/riscv64/Makefile.target
>>> create mode 100644 tests/tcg/riscv64/float_convd.ref
>>> create mode 100644 tests/tcg/riscv64/float_convs.ref
>>> create mode 100644 tests/tcg/riscv64/float_madds.ref
>>> create mode 100644 tests/tcg/riscv64/meson.build
>>> create mode 100644 tests/tcg/riscv64/system/meson.build
>>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/s390x/Makefile.target
>>> create mode 100644 tests/tcg/s390x/float_convd.ref
>>> create mode 100644 tests/tcg/s390x/float_convs.ref
>>> create mode 100644 tests/tcg/s390x/float_madds.ref
>>> create mode 100644 tests/tcg/s390x/meson.build
>>> create mode 100644 tests/tcg/s390x/system/meson.build
>>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
>>> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>>> create mode 100755 tests/tcg/scripts/run_with_input.sh
>>> delete mode 100644 tests/tcg/sh4/Makefile.target
>>> create mode 100644 tests/tcg/sh4/float_convd.ref
>>> create mode 100644 tests/tcg/sh4/float_convs.ref
>>> create mode 100644 tests/tcg/sh4/float_madds.ref
>>> create mode 100644 tests/tcg/sh4/meson.build
>>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
>>> delete mode 100644 tests/tcg/x86_64/Makefile.target
>>> create mode 100644 tests/tcg/x86_64/float_madds.ref
>>> create mode 100644 tests/tcg/x86_64/meson.build
>>> create mode 100644 tests/tcg/x86_64/system/meson.build
>>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
>>> create mode 100644 tests/tcg/xtensa/meson.build
>>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>>>
>>
>> Seems like something is wrong with cross-compiler detection now.
>> On Fedora I get:
>>
>> FAILED: tests/tcg/s390x-softmmu-memory.test
>> /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu-
>> memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall -
>> Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/
>> qemu-worktrees/20260706223343.988769-1-
>> pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/
>> home/iii/qemu-worktrees/20260706223343.988769-1-
>> pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include -
>> march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/
>> system/../console.c -DCHECK_UNALIGNED=0
>> In file included from /mnt/root/home/iii/qemu-
>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>> tests/tcg/multiarch/system/memory.c:15:
>> /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
>> stdint.h: No such file or directory
>> 11 | # include_next <stdint.h>
>> | ^~~~~~~~~~
>>
>> The cross-compiler situation on Fedora is that they ship the
>> cross-compiler itself, but no userspace headers, so it's usable
>> only for kernel builds. In this case QEMU should fall back to Docker,
>> which works for me on master, but not with this series.
>
> Thanks for the report. I just tried that on debian for now.
>
> Also, for s390x, I noticed that some tests are relying on roms/SLOF/...
> headers, which are not available if submodules are not initialized.
> Probably another corner case to cover.
We've got some logic in the configure script that should always initialize
the roms/SLOF submodule when you build the s390x target:
if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
GIT=git "$source_path/scripts/git-submodule.sh"
"$git_submodules_action" roms/SLOF >> config.log 2>&1; then
Is that failing in your case?
Thomas
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-08 18:56 ` Thomas Huth
@ 2026-07-08 19:58 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-08 19:58 UTC (permalink / raw)
To: Thomas Huth, Ilya Leoshkevich, qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Paolo Bonzini, Peter Maydell, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson, qemu-s390x
On 7/8/2026 11:56 AM, Thomas Huth wrote:
> On 08/07/2026 18.25, Pierrick Bouvier wrote:
>> On 7/8/2026 5:09 AM, Ilya Leoshkevich wrote:
>>>
>>>
>>> On 7/7/26 00:32, Pierrick Bouvier wrote:
>>>> This series replaces TCG tests makefiles with meson, with the
>>>> goal of having something more readable and maintainable in the long
>>>> term.
>>>> Also it closes the gap that tcg tests had with the rest of tests, by
>>>> integrating
>>>> them with meson directly.
>>>>
>>>> It covers all existing tests for all architectures, including
>>>> user/system/multiarch-user/multiarch-system. It implements all
>>>> requirements
>>>> listed on original thread [1].
>>>>
>>>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>>>>
>>>> We also have for free:
>>>> - correct and complete dependencies for any test, including:
>>>> scripts, c.inc, headers, reference files and binaries/plugins.
>>>> - catch test declaration issues at configure time vs test time.
>>>> - proper data types for variables instead of string expansion with
>>>> make.
>>>>
>>>> Series first introduce the meson machinery needed in tests/tcg/
>>>> meson.build, step
>>>> by step. Then it adds support for all existing archs. Finally, we
>>>> remove
>>>> Makefiles and configure bits.
>>>>
>>>> Usage:
>>>>
>>>> ```
>>>> make check-tcg
>>>> make check-tcg-aarch64-linux-user
>>>> make check-tcg-aarch64-softmmu
>>>>
>>>> make tcg-tests
>>>>
>>>> ninja clean
>>>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
>>>> ```
>>>>
>>>> A few items were left for further work (out of scope for this series):
>>>> - xtensaeb: didn't find how to cross compile for this architecture
>>>> with what we
>>>> have now in container debian-xtensa-cross. Tips are welcome.
>>>> - tricore: implemented but reverted as all tests seem to hang. To be
>>>> investigated.
>>>> - riscv64/interruptedmemory.S is hanging. To be investigated.
>>>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output
>>>> does not
>>>> match bare metal result) and is the slowest test we have. To be
>>>> refactored and
>>>> fixed.
>>>>
>>>> v3
>>>> --
>>>>
>>>> - add all architectures
>>>> - reduce number of plugins tests (only add one test for each plugin
>>>> from
>>>> multiarch pool)
>>>> - add depends for executable - allow to depend on a custom target for
>>>> generated
>>>> headers (x86_64 mmx, avx)
>>>> - add new tests added since last version for aarch64 (mte + gpc)
>>>> - refactor series to keep all arch files at end
>>>> - add docker host architecture selection
>>>>
>>>> v2
>>>> --
>>>>
>>>> - s/mispell/misspell
>>>> - moved comment about why we remove 'lib' prefix for plugins
>>>> - if user declare a wrong entry in a dictionary, list possible keys
>>>> - build tests by default (with 'all' target), as long as cross
>>>> compiler is
>>>> natively installed, to avoid triggering a container build.
>>>> - reword some comments based on reviewers feedback
>>>> - always declare all tests and avoid "per config" errors (no 'if' in
>>>> arch files)
>>>> - move compiler feature and gdb version checks directly in tests/tcg/
>>>> meson.build
>>>> - add support for cross containers
>>>> - add top target 'tcg-tests' to rebuild all tests
>>>>
>>>> Pierrick Bouvier (91):
>>>> tests/tcg/multiarch/system/memory.c: remove unused variable
>>>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test
>>>> output as
>>>> input
>>>> tests/tcg/multiarch/plugin: rename check-plugin-output to
>>>> regex-compare
>>>> tests/tcg: introduce meson.build
>>>> tests/tcg/meson.build: introduce exe_name
>>>> tests/tcg/meson.build: introduce test_name
>>>> tests/tcg/meson.build: introduce cflags
>>>> tests/tcg/meson.build: introduce qemu_args
>>>> tests/tcg/meson.build: introduce env_var
>>>> tests/tcg/plugins: build list of test_plugins
>>>> tests/tcg/meson.build: introduce plugin_test
>>>> tests/tcg/meson.build: test gdb support and introduce gdb_arch
>>>> tests/tcg/meson.build: introduce gdb_test
>>>> tests/tcg/meson.build: add default flag for testing compiler
>>>> support
>>>> tests/tcg/meson.build: introduce wrapper
>>>> tests/tcg/meson.build: introduce expected_output
>>>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
>>>> tests/tcg/meson.build: add wrapper run_with_input
>>>> tests/tcg/meson.build: add wrapper record_replay
>>>> tests/tcg/meson.build: add wrapper check_plugin_output
>>>> tests/tcg/meson.build: add logic to skip tests
>>>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
>>>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
>>>> tests/tcg/meson.build: move gdb_arch support check
>>>> tests/tcg/meson.build: let test infrastructure detect compiler
>>>> tests/docker/docker.py: return error code if probe fails
>>>> tests/docker/docker.py: remove "Image is up to date" info
>>>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
>>>> tests/tcg/meson.build: introduce depends
>>>> tests/tcg/meson.build: add top-level 'tcg-tests' target
>>>> tests/tcg/multiarch: declare user tests
>>>> tests/tcg/multiarch: declare system tests
>>>> tests/tcg/meson.build: add generic plugin tests
>>>> tests/tcg/aarch64: user tests
>>>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
>>>> tests/tcg/aarch64: system tests
>>>> tests/tcg/aarch64_be: user tests
>>>> tests/tcg/alpha: add float reference files
>>>> tests/tcg/alpha: user tests
>>>> tests/tcg/alpha: system tests
>>>> tests/tcg/arm: user tests
>>>> tests/tcg/arm: system tests
>>>> tests/tcg/hexagon/overflow.c: add missing include
>>>> tests/tcg/hexagon: user tests
>>>> tests/tcg/multiarch/sha1.c: fix big endian implementation
>>>> tests/tcg/hppa: add float reference files
>>>> tests/tcg/hppa: user tests
>>>> tests/tcg/i386: add missing float reference files
>>>> tests/tcg/i386: user tests
>>>> tests/tcg/i386: system tests
>>>> tests/tcg/loongarch64: user tests
>>>> tests/tcg/loongarch64: system tests
>>>> tests/tcg/m68k: add float reference files
>>>> tests/tcg/m68k: user tests
>>>> scripts/probe-gdb-support.py: add mapping for mips architecture
>>>> tests/tcg/mips: add float reference files
>>>> test/tcg/mips: user tests
>>>> tests/tcg/mips64: add float reference files
>>>> tests/tcg/mips64: user tests
>>>> tests/tcg/mips64el: add float reference files
>>>> tests/tcg/mips64el: user tests
>>>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
>>>> toolchain
>>>> tests/tcg/or1k/test_addic.c: remove unused variables
>>>> tests/tcg/or1k/test_muli.c: remove set but unused variable
>>>> tests/tcg/or1k: add float reference files
>>>> plugins/api.c: identify or1k pc register and mark it as read only
>>>> tests/tcg/or1k: user tests
>>>> tests/tcg/ppc64: add float reference files
>>>> tests/tcg/ppc64: remove dependency on qemu/compiler.h
>>>> tests/tcg/ppc64: user tests
>>>> tests/tcg/ppc64le: add missing float reference file
>>>> tests/tcg/ppc64le: user tests
>>>> tests/tcg/riscv64: add float reference files
>>>> tests/tcg/riscv64: user tests
>>>> tests/tcg/riscv64: system tests
>>>> tests/tcg/s390x/head64.S: declare _exit symbol after main
>>>> tests/tcg/s390x: add float reference files
>>>> tests/tcg/s390x: user tests
>>>> tests/tcg/s390x: system tests
>>>> tests/tcg/sh4: add float reference files
>>>> tests/tcg/sh4: user tests
>>>> tests/tcg/tricore: system tests
>>>> Revert "tests/tcg/tricore: system tests"
>>>> tests/tcg/x86_64: add missing float reference file
>>>> tests/tcg/x86_64: user tests
>>>> tests/tcg/x86_64: system tests
>>>> tests/tcg/xtensa/crt.S: align .text section
>>>> tests/tcg/xtensa: system tests
>>>> tests: remove tcg tests machinery
>>>> tests/tcg: remove Makefiles
>>>> configure: remove --cross-cc* options
>>>>
>>>> configure | 473 ---------
>>>> docs/devel/testing/main.rst | 22 +-
>>>> plugins/api.c | 2 +
>>>> scripts/probe-gdb-support.py | 1 +
>>>> tests/Makefile.include | 68 +-
>>>> tests/docker/docker.py | 4 +-
>>>> .../dockerfiles/debian-all-test-cross.docker | 16 +-
>>>> tests/lcitool/refresh | 107 +-
>>>> tests/meson.build | 2 +-
>>>> tests/tcg/Makefile.target | 281 -----
>>>> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
>>>> tests/tcg/aarch64/Makefile.target | 198 ----
>>>> tests/tcg/aarch64/meson.build | 195 ++++
>>>> tests/tcg/aarch64/system/gpc-test.c | 5 -
>>>> tests/tcg/aarch64/system/meson.build | 108 ++
>>>> tests/tcg/aarch64_be/Makefile.target | 17 -
>>>> tests/tcg/aarch64_be/meson.build | 22 +
>>>> tests/tcg/alpha/Makefile.softmmu-target | 34 -
>>>> tests/tcg/alpha/Makefile.target | 18 -
>>>> tests/tcg/alpha/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/alpha/meson.build | 55 +
>>>> tests/tcg/alpha/system/meson.build | 46 +
>>>> tests/tcg/arm/Makefile.softmmu-target | 80 --
>>>> tests/tcg/arm/Makefile.target | 87 --
>>>> tests/tcg/arm/meson.build | 80 ++
>>>> tests/tcg/arm/system/meson.build | 66 ++
>>>> tests/tcg/hexagon/Makefile.target | 146 ---
>>>> tests/tcg/hexagon/meson.build | 111 ++
>>>> tests/tcg/hexagon/overflow.c | 1 +
>>>> tests/tcg/hppa/Makefile.target | 14 -
>>>> tests/tcg/hppa/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/hppa/meson.build | 22 +
>>>> tests/tcg/i386/Makefile.softmmu-target | 37 -
>>>> tests/tcg/i386/Makefile.target | 102 --
>>>> tests/tcg/i386/float_convd.conf | 988
>>>> ------------------
>>>> tests/tcg/i386/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/i386/meson.build | 58 +
>>>> tests/tcg/i386/system/meson.build | 48 +
>>>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
>>>> tests/tcg/loongarch64/Makefile.target | 20 -
>>>> tests/tcg/loongarch64/meson.build | 32 +
>>>> tests/tcg/loongarch64/system/meson.build | 47 +
>>>> tests/tcg/m68k/Makefile.target | 7 -
>>>> tests/tcg/m68k/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/m68k/meson.build | 23 +
>>>> tests/tcg/meson.build | 447 ++++++++
>>>> tests/tcg/minilib/Makefile.target | 21 -
>>>> tests/tcg/mips/Makefile.target | 19 -
>>>> tests/tcg/mips/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/mips/meson.build | 25 +
>>>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
>>>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
>>>> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
>>>> tests/tcg/mips64/Makefile.target | 20 -
>>>> tests/tcg/mips64/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/mips64/meson.build | 27 +
>>>> tests/tcg/mips64el/Makefile.target | 8 -
>>>> tests/tcg/mips64el/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/mips64el/meson.build | 14 +
>>>> tests/tcg/multiarch/Makefile.target | 233 -----
>>>> tests/tcg/multiarch/meson.build | 149 +++
>>>> .../multiarch/plugin/check-plugin-output.sh | 36 -
>>>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
>>>> tests/tcg/multiarch/sha1.c | 4 +-
>>>> tests/tcg/multiarch/sha1.ref | 1 +
>>>> .../multiarch/system/Makefile.softmmu-target | 81 --
>>>> tests/tcg/multiarch/system/memory.c | 3 +-
>>>> tests/tcg/multiarch/system/meson.build | 53 +
>>>> tests/tcg/or1k/Makefile | 71 --
>>>> tests/tcg/or1k/float_convd.ref | 247 +++++
>>>> tests/tcg/or1k/float_convs.ref | 187 ++++
>>>> tests/tcg/or1k/float_madds.ref | 192 ++++
>>>> tests/tcg/or1k/meson.build | 72 ++
>>>> tests/tcg/or1k/test_addic.c | 2 +-
>>>> tests/tcg/or1k/test_muli.c | 5 +-
>>>> tests/tcg/plugins/meson.build | 11 +-
>>>> tests/tcg/ppc64/Makefile.target | 63 --
>>>> tests/tcg/ppc64/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/ppc64/meson.build | 56 +
>>>> tests/tcg/ppc64/vector.c | 11 +-
>>>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
>>>> tests/tcg/ppc64le/Makefile.target | 7 -
>>>> tests/tcg/ppc64le/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/ppc64le/meson.build | 14 +
>>>> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
>>>> tests/tcg/riscv64/Makefile.target | 20 -
>>>> tests/tcg/riscv64/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/riscv64/meson.build | 38 +
>>>> tests/tcg/riscv64/system/meson.build | 38 +
>>>> tests/tcg/s390x/Makefile.softmmu-target | 57 -
>>>> tests/tcg/s390x/Makefile.target | 127 ---
>>>> tests/tcg/s390x/float_convd.ref | 988 +++++++++++++
>>>> +++++
>>>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
>>>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/s390x/head64.S | 2 +
>>>> tests/tcg/s390x/meson.build | 140 +++
>>>> tests/tcg/s390x/system/meson.build | 92 ++
>>>> tests/tcg/scripts/check_plugin_output.sh | 25 +
>>>> tests/tcg/scripts/record_replay.sh | 16 +
>>>> .../scripts/run_and_check_forbidden_output.sh | 19 +
>>>> tests/tcg/scripts/run_and_diff.sh | 15 +
>>>> tests/tcg/scripts/run_with_input.sh | 12 +
>>>> tests/tcg/sh4/Makefile.target | 18 -
>>>> tests/tcg/sh4/float_convd.ref | 494 +++++++++
>>>> tests/tcg/sh4/float_convs.ref | 374 +++++++
>>>> tests/tcg/sh4/float_madds.ref | 384 +++++++
>>>> tests/tcg/sh4/meson.build | 25 +
>>>> tests/tcg/tricore/Makefile.softmmu-target | 53 -
>>>> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
>>>> tests/tcg/x86_64/Makefile.target | 40 -
>>>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
>>>> tests/tcg/x86_64/meson.build | 83 ++
>>>> tests/tcg/x86_64/system/meson.build | 62 ++
>>>> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
>>>> tests/tcg/xtensa/crt.S | 1 +
>>>> tests/tcg/xtensa/meson.build | 89 ++
>>>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
>>>> 134 files changed, 30491 insertions(+), 4114 deletions(-)
>>>> delete mode 100644 tests/tcg/Makefile.target
>>>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/aarch64/Makefile.target
>>>> create mode 100644 tests/tcg/aarch64/meson.build
>>>> create mode 100644 tests/tcg/aarch64/system/meson.build
>>>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
>>>> create mode 100644 tests/tcg/aarch64_be/meson.build
>>>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/alpha/Makefile.target
>>>> create mode 100644 tests/tcg/alpha/float_convd.ref
>>>> create mode 100644 tests/tcg/alpha/float_convs.ref
>>>> create mode 100644 tests/tcg/alpha/float_madds.ref
>>>> create mode 100644 tests/tcg/alpha/meson.build
>>>> create mode 100644 tests/tcg/alpha/system/meson.build
>>>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/arm/Makefile.target
>>>> create mode 100644 tests/tcg/arm/meson.build
>>>> create mode 100644 tests/tcg/arm/system/meson.build
>>>> delete mode 100644 tests/tcg/hexagon/Makefile.target
>>>> create mode 100644 tests/tcg/hexagon/meson.build
>>>> delete mode 100644 tests/tcg/hppa/Makefile.target
>>>> create mode 100644 tests/tcg/hppa/float_convd.ref
>>>> create mode 100644 tests/tcg/hppa/float_convs.ref
>>>> create mode 100644 tests/tcg/hppa/float_madds.ref
>>>> create mode 100644 tests/tcg/hppa/meson.build
>>>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/i386/Makefile.target
>>>> delete mode 100644 tests/tcg/i386/float_convd.conf
>>>> create mode 100644 tests/tcg/i386/float_convd.ref
>>>> create mode 100644 tests/tcg/i386/float_madds.ref
>>>> create mode 100644 tests/tcg/i386/meson.build
>>>> create mode 100644 tests/tcg/i386/system/meson.build
>>>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/loongarch64/Makefile.target
>>>> create mode 100644 tests/tcg/loongarch64/meson.build
>>>> create mode 100644 tests/tcg/loongarch64/system/meson.build
>>>> delete mode 100644 tests/tcg/m68k/Makefile.target
>>>> create mode 100644 tests/tcg/m68k/float_convd.ref
>>>> create mode 100644 tests/tcg/m68k/float_convs.ref
>>>> create mode 100644 tests/tcg/m68k/float_madds.ref
>>>> create mode 100644 tests/tcg/m68k/meson.build
>>>> create mode 100644 tests/tcg/meson.build
>>>> delete mode 100644 tests/tcg/minilib/Makefile.target
>>>> delete mode 100644 tests/tcg/mips/Makefile.target
>>>> create mode 100644 tests/tcg/mips/float_convd.ref
>>>> create mode 100644 tests/tcg/mips/float_convs.ref
>>>> create mode 100644 tests/tcg/mips/float_madds.ref
>>>> create mode 100644 tests/tcg/mips/meson.build
>>>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
>>>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
>>>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
>>>> delete mode 100644 tests/tcg/mips64/Makefile.target
>>>> create mode 100644 tests/tcg/mips64/float_convd.ref
>>>> create mode 100644 tests/tcg/mips64/float_convs.ref
>>>> create mode 100644 tests/tcg/mips64/float_madds.ref
>>>> create mode 100644 tests/tcg/mips64/meson.build
>>>> delete mode 100644 tests/tcg/mips64el/Makefile.target
>>>> create mode 100644 tests/tcg/mips64el/float_convd.ref
>>>> create mode 100644 tests/tcg/mips64el/float_convs.ref
>>>> create mode 100644 tests/tcg/mips64el/float_madds.ref
>>>> create mode 100644 tests/tcg/mips64el/meson.build
>>>> delete mode 100644 tests/tcg/multiarch/Makefile.target
>>>> create mode 100644 tests/tcg/multiarch/meson.build
>>>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
>>>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
>>>> create mode 100644 tests/tcg/multiarch/sha1.ref
>>>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-
>>>> target
>>>> create mode 100644 tests/tcg/multiarch/system/meson.build
>>>> delete mode 100644 tests/tcg/or1k/Makefile
>>>> create mode 100644 tests/tcg/or1k/float_convd.ref
>>>> create mode 100644 tests/tcg/or1k/float_convs.ref
>>>> create mode 100644 tests/tcg/or1k/float_madds.ref
>>>> create mode 100644 tests/tcg/or1k/meson.build
>>>> delete mode 100644 tests/tcg/ppc64/Makefile.target
>>>> create mode 100644 tests/tcg/ppc64/float_convd.ref
>>>> create mode 100644 tests/tcg/ppc64/float_convs.ref
>>>> create mode 100644 tests/tcg/ppc64/float_madds.ref
>>>> create mode 100644 tests/tcg/ppc64/meson.build
>>>> delete mode 100644 tests/tcg/ppc64le/Makefile.target
>>>> create mode 100644 tests/tcg/ppc64le/float_convd.ref
>>>> create mode 100644 tests/tcg/ppc64le/meson.build
>>>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/riscv64/Makefile.target
>>>> create mode 100644 tests/tcg/riscv64/float_convd.ref
>>>> create mode 100644 tests/tcg/riscv64/float_convs.ref
>>>> create mode 100644 tests/tcg/riscv64/float_madds.ref
>>>> create mode 100644 tests/tcg/riscv64/meson.build
>>>> create mode 100644 tests/tcg/riscv64/system/meson.build
>>>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/s390x/Makefile.target
>>>> create mode 100644 tests/tcg/s390x/float_convd.ref
>>>> create mode 100644 tests/tcg/s390x/float_convs.ref
>>>> create mode 100644 tests/tcg/s390x/float_madds.ref
>>>> create mode 100644 tests/tcg/s390x/meson.build
>>>> create mode 100644 tests/tcg/s390x/system/meson.build
>>>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
>>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>>> create mode 100755 tests/tcg/scripts/
>>>> run_and_check_forbidden_output.sh
>>>> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>>>> create mode 100755 tests/tcg/scripts/run_with_input.sh
>>>> delete mode 100644 tests/tcg/sh4/Makefile.target
>>>> create mode 100644 tests/tcg/sh4/float_convd.ref
>>>> create mode 100644 tests/tcg/sh4/float_convs.ref
>>>> create mode 100644 tests/tcg/sh4/float_madds.ref
>>>> create mode 100644 tests/tcg/sh4/meson.build
>>>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
>>>> delete mode 100644 tests/tcg/x86_64/Makefile.target
>>>> create mode 100644 tests/tcg/x86_64/float_madds.ref
>>>> create mode 100644 tests/tcg/x86_64/meson.build
>>>> create mode 100644 tests/tcg/x86_64/system/meson.build
>>>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
>>>> create mode 100644 tests/tcg/xtensa/meson.build
>>>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>>>>
>>>
>>> Seems like something is wrong with cross-compiler detection now.
>>> On Fedora I get:
>>>
>>> FAILED: tests/tcg/s390x-softmmu-memory.test
>>> /usr/lib64/ccache/s390x-linux-gnu-gcc /mnt/root/home/iii/qemu-
>>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>>> tests/tcg/multiarch/system/memory.c -o tests/tcg/s390x-softmmu-
>>> memory.test -static -MMD -MF tests/tcg/s390x-softmmu-memory.d -Wall -
>>> Werror -O0 -g -fno-strict-aliasing -nostdlib -I /mnt/root/home/iii/qemu-
>>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>>> tests/tcg/s390x/system/../../minilib /mnt/root/home/iii/qemu-
>>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>>> tests/tcg/s390x/system/../../minilib/printf.c -I /mnt/root/home/iii/
>>> qemu-worktrees/20260706223343.988769-1-
>>> pierrick.bouvier@oss.qualcomm.com/include/hw/s390x/ipl -I /mnt/root/
>>> home/iii/qemu-worktrees/20260706223343.988769-1-
>>> pierrick.bouvier@oss.qualcomm.com/roms/SLOF/lib/libc/include -
>>> march=z13 ../tests/tcg/s390x/system/../head64.S ../tests/tcg/s390x/
>>> system/../console.c -DCHECK_UNALIGNED=0
>>> In file included from /mnt/root/home/iii/qemu-
>>> worktrees/20260706223343.988769-1-pierrick.bouvier@oss.qualcomm.com/
>>> tests/tcg/multiarch/system/memory.c:15:
>>> /usr/lib/gcc/s390x-linux-gnu/15/include/stdint.h:11:16: fatal error:
>>> stdint.h: No such file or directory
>>> 11 | # include_next <stdint.h>
>>> | ^~~~~~~~~~
>>>
>>> The cross-compiler situation on Fedora is that they ship the
>>> cross-compiler itself, but no userspace headers, so it's usable
>>> only for kernel builds. In this case QEMU should fall back to Docker,
>>> which works for me on master, but not with this series.
>>
>> Thanks for the report. I just tried that on debian for now.
>>
>> Also, for s390x, I noticed that some tests are relying on roms/SLOF/...
>> headers, which are not available if submodules are not initialized.
>> Probably another corner case to cover.
> We've got some logic in the configure script that should always
> initialize the roms/SLOF submodule when you build the s390x target:
>
> if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
> GIT=git "$source_path/scripts/git-submodule.sh"
> "$git_submodules_action" roms/SLOF >> config.log 2>&1; then
>
> Is that failing in your case?
>
The latest commits remove all those configure steps to use meson directly.
I solved it by adding the memcpy and memset definition directly in
console.c to remove the dependency on roms/SLOF.
> Thomas
>
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
2026-07-07 5:24 ` Manos Pitsidianakis
@ 2026-07-09 10:49 ` Philippe Mathieu-Daudé
2026-07-09 16:20 ` Alex Bennée
2 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-09 10:49 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 00:32, Pierrick Bouvier wrote:
> Instead of skipping tests and not declare them, always declare them and
> simply return an exit code 77 (SKIPPED for meson) and print reason why
> test is skipped.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/meson.build | 9 +++++++++
> 1 file changed, 9 insertions(+)
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h
2026-07-07 16:25 ` Pierrick Bouvier
@ 2026-07-09 10:52 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 144+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-07-09 10:52 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P . Berrangé, Thomas Huth, Paolo Bonzini,
Peter Maydell, Ilya Leoshkevich, Brian Cain, Alex Bennée,
Gustavo Romero, Laurent Vivier, Manos Pitsidianakis, Helge Deller,
Richard Henderson
On 7/7/26 18:25, Pierrick Bouvier wrote:
> On 7/6/2026 11:16 PM, Philippe Mathieu-Daudé wrote:
>> On 7/7/26 00:33, Pierrick Bouvier wrote:
>>> Replace definition of vector attribute, remove unlikely, and detect
>>> endianness from __BYTE_ORDER__.
>>
>> Why remove the dependency on qemu/compiler.h?
>>
>>>
>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>> ---
>>> tests/tcg/ppc64/vector.c | 11 ++++++-----
>>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 ++++---
>>> 2 files changed, 10 insertions(+), 8 deletions(-)
>>
>
> It's the only tests that use this, so for consistency, I think it's
> better to not make special rules all the time. Also, not having this
> include path by defaults prevents anyone from having the "good" idea to
> reuse any other header from qemu in the future.
>
> What do you think?
Yes you are right. Please just use this comment as description, with that:
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 90/91] tests/tcg: remove Makefiles
2026-07-06 22:33 ` [PATCH v3 90/91] tests/tcg: remove Makefiles Pierrick Bouvier
@ 2026-07-09 12:46 ` Alex Bennée
2026-07-09 14:26 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 12:46 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
<snip>
> tests/tcg/multiarch/Makefile.target | 232 ---------------
<snip>
There is a conflict here, probably because of db6b71f1ad7 (Revert "tests/tcg: skip the vma-pthread test on CI")
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (93 preceding siblings ...)
2026-07-08 12:09 ` Ilya Leoshkevich
@ 2026-07-09 13:50 ` Alex Bennée
2026-07-09 16:22 ` Alex Bennée
2026-07-10 6:32 ` Pierrick Bouvier
96 siblings, 0 replies; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 13:50 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
For the series:
Tested-by: Alex Bennée <alex.bennee@linaro.org>
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 90/91] tests/tcg: remove Makefiles
2026-07-09 12:46 ` Alex Bennée
@ 2026-07-09 14:26 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 14:26 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
On 7/9/2026 5:46 AM, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
> <snip>
>> tests/tcg/multiarch/Makefile.target | 232 ---------------
> <snip>
>
> There is a conflict here, probably because of db6b71f1ad7 (Revert "tests/tcg: skip the vma-pthread test on CI")
>
Yes, also a conflict with the new aarch64 fprcvt test.
I keep track of those and add new tests as they come when I rebase.
Meanwhile, the series can be applied on a commit matching it's
publication date.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-06 22:32 ` [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay Pierrick Bouvier
@ 2026-07-09 14:49 ` Alex Bennée
2026-07-09 14:52 ` Alex Bennée
1 sibling, 0 replies; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 14:49 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> Runs a record and replay test, and make sure the output produced by
> both runs is the same.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
<snip>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-06 22:32 ` [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay Pierrick Bouvier
2026-07-09 14:49 ` Alex Bennée
@ 2026-07-09 14:52 ` Alex Bennée
2026-07-09 15:03 ` Pierrick Bouvier
1 sibling, 1 reply; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 14:52 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> Runs a record and replay test, and make sure the output produced by
> both runs is the same.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/tcg/meson.build | 1 +
> tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
> 2 files changed, 17 insertions(+)
> create mode 100755 tests/tcg/scripts/record_replay.sh
>
> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
> index 30178df0f7a..e610ce30f40 100644
> --- a/tests/tcg/meson.build
> +++ b/tests/tcg/meson.build
> @@ -7,6 +7,7 @@ if config_host.has_key('GDB')
> endif
> gdb = find_program(gdb_progs, required: false)
> prog_gdb_test = find_program('../guest-debug/run-test.py')
> +prog_record_replay = find_program('./scripts/record_replay.sh')
> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
> prog_run_with_input = find_program('./scripts/run_with_input.sh')
> prog_run_and_check_forbidden_output = find_program(
> diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
> new file mode 100755
> index 00000000000..57775a2d4c1
> --- /dev/null
> +++ b/tests/tcg/scripts/record_replay.sh
> @@ -0,0 +1,16 @@
> +#!/usr/bin/env bash
While at it is there any reason this couldn't be plain POSIX shell. I
don't think we explicitly require bash although its super likely to be
on most systems. configure is all POSIX shell.
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +set -euo pipefail
> +
> +if [ $# -lt 2 ]; then
> + echo "record_replay: qemu_bin [args]..." 1>&2
> + exit 1
> +fi
> +qemu="$1";shift
> +tmp=$(mktemp -d)
> +trap "rm -rf $tmp" EXIT
> +set -x
> +$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
> +$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
> +diff $tmp/record $tmp/replay
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-09 14:52 ` Alex Bennée
@ 2026-07-09 15:03 ` Pierrick Bouvier
2026-07-09 15:10 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 15:03 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
On 7/9/2026 7:52 AM, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>
>> Runs a record and replay test, and make sure the output produced by
>> both runs is the same.
>>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>> ---
>> tests/tcg/meson.build | 1 +
>> tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
>> 2 files changed, 17 insertions(+)
>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>
>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>> index 30178df0f7a..e610ce30f40 100644
>> --- a/tests/tcg/meson.build
>> +++ b/tests/tcg/meson.build
>> @@ -7,6 +7,7 @@ if config_host.has_key('GDB')
>> endif
>> gdb = find_program(gdb_progs, required: false)
>> prog_gdb_test = find_program('../guest-debug/run-test.py')
>> +prog_record_replay = find_program('./scripts/record_replay.sh')
>> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>> prog_run_with_input = find_program('./scripts/run_with_input.sh')
>> prog_run_and_check_forbidden_output = find_program(
>> diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
>> new file mode 100755
>> index 00000000000..57775a2d4c1
>> --- /dev/null
>> +++ b/tests/tcg/scripts/record_replay.sh
>> @@ -0,0 +1,16 @@
>> +#!/usr/bin/env bash
>
> While at it is there any reason this couldn't be plain POSIX shell. I
> don't think we explicitly require bash although its super likely to be
> on most systems. configure is all POSIX shell.
>
The main reason for me to use bash is that it supports set -uo pipefail
in combination with set -e.
Which produces:
- exit if a variable is undefined
- exit if any command in a pipe sequence fails
Without this, script shells are pretty much house of cards waiting to
collapse on any corner case.
bash is available out of the box at least on macos, msys2, and I expect,
every single linux distro out there. Not sure about bsds though.
If that's such a big issue, I can port the scripts to sh.
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +set -euo pipefail
>> +
>> +if [ $# -lt 2 ]; then
>> + echo "record_replay: qemu_bin [args]..." 1>&2
>> + exit 1
>> +fi
>> +qemu="$1";shift
>> +tmp=$(mktemp -d)
>> +trap "rm -rf $tmp" EXIT
>> +set -x
>> +$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
>> +$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
>> +diff $tmp/record $tmp/replay
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-09 15:03 ` Pierrick Bouvier
@ 2026-07-09 15:10 ` Pierrick Bouvier
2026-07-09 16:12 ` Alex Bennée
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 15:10 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
On 7/9/2026 8:03 AM, Pierrick Bouvier wrote:
> On 7/9/2026 7:52 AM, Alex Bennée wrote:
>> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>>
>>> Runs a record and replay test, and make sure the output produced by
>>> both runs is the same.
>>>
>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>> ---
>>> tests/tcg/meson.build | 1 +
>>> tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
>>> 2 files changed, 17 insertions(+)
>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>>
>>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>>> index 30178df0f7a..e610ce30f40 100644
>>> --- a/tests/tcg/meson.build
>>> +++ b/tests/tcg/meson.build
>>> @@ -7,6 +7,7 @@ if config_host.has_key('GDB')
>>> endif
>>> gdb = find_program(gdb_progs, required: false)
>>> prog_gdb_test = find_program('../guest-debug/run-test.py')
>>> +prog_record_replay = find_program('./scripts/record_replay.sh')
>>> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>>> prog_run_with_input = find_program('./scripts/run_with_input.sh')
>>> prog_run_and_check_forbidden_output = find_program(
>>> diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
>>> new file mode 100755
>>> index 00000000000..57775a2d4c1
>>> --- /dev/null
>>> +++ b/tests/tcg/scripts/record_replay.sh
>>> @@ -0,0 +1,16 @@
>>> +#!/usr/bin/env bash
>>
>> While at it is there any reason this couldn't be plain POSIX shell. I
>> don't think we explicitly require bash although its super likely to be
>> on most systems. configure is all POSIX shell.
>>
>
> The main reason for me to use bash is that it supports set -uo pipefail
> in combination with set -e.
>
> Which produces:
> - exit if a variable is undefined
> - exit if any command in a pipe sequence fails
> Without this, script shells are pretty much house of cards waiting to
> collapse on any corner case.
>
> bash is available out of the box at least on macos, msys2, and I expect,
> every single linux distro out there. Not sure about bsds though.
>
> If that's such a big issue, I can port the scripts to sh.
>
Interestingly, QEMU main Makefile makes bash a defacto requirement,
since it uses it for every single command to run. The reason is... to
use -o pipefail.
https://gitlab.com/qemu-project/qemu/-/blob/master/Makefile?ref_type=heads#L17
>>> +# SPDX-License-Identifier: GPL-2.0-or-later
>>> +
>>> +set -euo pipefail
>>> +
>>> +if [ $# -lt 2 ]; then
>>> + echo "record_replay: qemu_bin [args]..." 1>&2
>>> + exit 1
>>> +fi
>>> +qemu="$1";shift
>>> +tmp=$(mktemp -d)
>>> +trap "rm -rf $tmp" EXIT
>>> +set -x
>>> +$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
>>> +$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
>>> +diff $tmp/record $tmp/replay
>>
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-08 16:36 ` Pierrick Bouvier
@ 2026-07-09 15:24 ` Pierrick Bouvier
2026-07-09 18:42 ` Max Filippov
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 15:24 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/8/2026 9:36 AM, Pierrick Bouvier wrote:
> On 7/7/2026 11:11 PM, Max Filippov wrote:
>> On Tue, Jul 7, 2026 at 11:10 AM Pierrick Bouvier
>> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>> On 7/7/2026 9:30 AM, Pierrick Bouvier wrote:
>>>> On 7/7/2026 6:45 AM, Max Filippov wrote:
>>>>> On Mon, Jul 6, 2026 at 3:43 PM Pierrick Bouvier
>>>>> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>>>>>
>>>>>> Needed, else we get this error:
>>>>>> dangerous relocation: l32r: misaligned literal target: .text
>>>>>
>>>>> This flag wasn't needed before because crt.S hasn't been built
>>>>> with text-section-literals, why is it needed now?
>>>>>
>>>> Previously, .S and .c were compiled in different steps, with different
>>>> options. Now, with meson, we have to provide a single compiler command
>>>> for all the files (no intermediate steps), which is a *hard* requirement
>>>> to save user from dealing with compilation details in arch files.
>>
>> This sounds a bit restrictive for the tests, no?
>>
>
> It may appear restrictive, but it has not been a problem for all the
> existing tests we have. In practice, only xtensa has such a structure,
> with this distinction between .S and .c that use/don't use text section
> literals. In such a case, I prefer to unify things instead of twist the
> workflow until it works.
>
> The alternative would be to give arch files full control of how they
> build all their binaries, which is much more verbose and error prone
> than the current approach. (Note: I tried that first before having the
> current design where tests are just declared).
> Also, it pushes all compiler details (is flag supported, is it available
> or through docker, how to build container?, ...) back to arch files.
>
> Also, because meson can only have one cc and cross cc at a time, we
> would still need custom targets for everything, which is really not
> something anyone wants to write themselves, trust me.
>
>>>> One consequence is that .c + .S combination gets
>>>> -mtext-section-literals, which triggers this. Easily fixed by adding the
>>>> .align section.
>>
>> Ok, not having literals in the text section isn't essential for the existing
>> xtensa tests. But not being able to do that deliberately feels a bit strange.
>>
>
> I'm sorry xtensa uses a corner case, but fortunately, this simple align
> makes things work as expected.
>
>>>> I can add this in commit description, if you're ok with this
>>>> explanation, and accept the patch.
>>
>> Sure. Feel free to add
>> Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
>>
>
> Thanks!
>
>>>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>>> ---
>>>>>> tests/tcg/xtensa/crt.S | 1 +
>>>>>> 1 file changed, 1 insertion(+)
>>>>>>
>>>>>> diff --git a/tests/tcg/xtensa/crt.S b/tests/tcg/xtensa/crt.S
>>>>>> index 909872cd385..de8fd8c1cd7 100644
>>>>>> --- a/tests/tcg/xtensa/crt.S
>>>>>> +++ b/tests/tcg/xtensa/crt.S
>>>>>> @@ -6,6 +6,7 @@
>>>>>> jx a2
>>>>>>
>>>>>> .text
>>>>>> +.align 4
>>>>>> .global _start
>>>>>> _start:
>>>>>> #if XCHAL_HAVE_WINDOWED
>>>>>> --
>>>>>> 2.47.3
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> While at it, any chance you could give some hints about how to compile
>>> for xtensaeb? I didn't find any compiler flag, and out of modifying
>>> target/xtensa/core-dc232b/core-isa.h to set XCHAL_HAVE_BE to 1, I'm stuck.
>>>
>>> I doubt it's the right way to do considering that it was not needed before.
>>
>> You can download a compiler for the core `test_kc705_be` from
>> https://github.com/foss-xtensa/toolchain/releases/tag/2020.07
>> and then either run qemu `configure` with the option
>> --cross-cc-xtensaeb=xtensa-test_kc705_be-elf-gcc
>> or run tests with
>> make test-tcg CORE=test_kc705_be CC=xtensa-test_kc705_be-elf-gcc
>>
>> The `CORE` variable chooses both the argument for the qemu `-cpu` option
>> and include directory used when building tests. The `CC` chooses the
>> compiler and linker.
>>
>> I usually run configure with some compilers for little- and big-endian xtensa
>> and then run tests switching the core and compiler.
>
> Sounds good. I'll add it to our debian-xtensa-cross, and uses it
> directly for xtensaeb.
> In case you want to run this with other cores, feel free to answer with
> a list with their names and toolchains, and I'll be happy to add all
> needed suites, so there is no need to set any CC and CORE, but directly
> offer check-tcg-xtensa-X-softmmu suites. The good side is that everyone,
> including our CI and you, will be able to run the *exact* same setup.
>
> Cheers,
> Pierrick
If you have a chance to take a look, I observed that test_timer.S is
flaky on xtensaeb with kc705_be. It fails with a probably of 25% on my
machine.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-09 15:10 ` Pierrick Bouvier
@ 2026-07-09 16:12 ` Alex Bennée
2026-07-09 16:44 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 16:12 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> On 7/9/2026 8:03 AM, Pierrick Bouvier wrote:
>> On 7/9/2026 7:52 AM, Alex Bennée wrote:
>>> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>>>
>>>> Runs a record and replay test, and make sure the output produced by
>>>> both runs is the same.
>>>>
>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>> ---
>>>> tests/tcg/meson.build | 1 +
>>>> tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
>>>> 2 files changed, 17 insertions(+)
>>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>>>
>>>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>>>> index 30178df0f7a..e610ce30f40 100644
>>>> --- a/tests/tcg/meson.build
>>>> +++ b/tests/tcg/meson.build
>>>> @@ -7,6 +7,7 @@ if config_host.has_key('GDB')
>>>> endif
>>>> gdb = find_program(gdb_progs, required: false)
>>>> prog_gdb_test = find_program('../guest-debug/run-test.py')
>>>> +prog_record_replay = find_program('./scripts/record_replay.sh')
>>>> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>>>> prog_run_with_input = find_program('./scripts/run_with_input.sh')
>>>> prog_run_and_check_forbidden_output = find_program(
>>>> diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
>>>> new file mode 100755
>>>> index 00000000000..57775a2d4c1
>>>> --- /dev/null
>>>> +++ b/tests/tcg/scripts/record_replay.sh
>>>> @@ -0,0 +1,16 @@
>>>> +#!/usr/bin/env bash
>>>
>>> While at it is there any reason this couldn't be plain POSIX shell. I
>>> don't think we explicitly require bash although its super likely to be
>>> on most systems. configure is all POSIX shell.
>>>
>>
>> The main reason for me to use bash is that it supports set -uo pipefail
>> in combination with set -e.
>>
>> Which produces:
>> - exit if a variable is undefined
>> - exit if any command in a pipe sequence fails
>> Without this, script shells are pretty much house of cards waiting to
>> collapse on any corner case.
>>
>> bash is available out of the box at least on macos, msys2, and I expect,
>> every single linux distro out there. Not sure about bsds though.
>>
>> If that's such a big issue, I can port the scripts to sh.
>>
>
> Interestingly, QEMU main Makefile makes bash a defacto requirement,
> since it uses it for every single command to run. The reason is... to
> use -o pipefail.
>
> https://gitlab.com/qemu-project/qemu/-/blob/master/Makefile?ref_type=heads#L17
>
Well it looks like I misremembered as we list bash as a dependency in
qemu-minimal:
packages:
- bash
so I drop my objection.
>>>> +# SPDX-License-Identifier: GPL-2.0-or-later
>>>> +
>>>> +set -euo pipefail
>>>> +
>>>> +if [ $# -lt 2 ]; then
>>>> + echo "record_replay: qemu_bin [args]..." 1>&2
>>>> + exit 1
>>>> +fi
>>>> +qemu="$1";shift
>>>> +tmp=$(mktemp -d)
>>>> +trap "rm -rf $tmp" EXIT
>>>> +set -x
>>>> +$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
>>>> +$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
>>>> +diff $tmp/record $tmp/replay
>>>
>>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
2026-07-07 5:24 ` Manos Pitsidianakis
2026-07-09 10:49 ` Philippe Mathieu-Daudé
@ 2026-07-09 16:20 ` Alex Bennée
2 siblings, 0 replies; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 16:20 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> Instead of skipping tests and not declare them, always declare them and
> simply return an exit code 77 (SKIPPED for meson) and print reason why
> test is skipped.
>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (94 preceding siblings ...)
2026-07-09 13:50 ` Alex Bennée
@ 2026-07-09 16:22 ` Alex Bennée
2026-07-09 16:43 ` Pierrick Bouvier
2026-07-10 6:32 ` Pierrick Bouvier
96 siblings, 1 reply; 144+ messages in thread
From: Alex Bennée @ 2026-07-09 16:22 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
Can these be built via ninja?
Also I noticed docs/devel/testing/main.rst needs updating for the new
world. It would be nice to add a simple example of adding a new test if
you can.
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-09 16:22 ` Alex Bennée
@ 2026-07-09 16:43 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 16:43 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
On 7/9/2026 9:22 AM, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>
>> This series replaces TCG tests makefiles with meson, with the
>> goal of having something more readable and maintainable in the long term.
>> Also it closes the gap that tcg tests had with the rest of tests, by integrating
>> them with meson directly.
>>
>> It covers all existing tests for all architectures, including
>> user/system/multiarch-user/multiarch-system. It implements all requirements
>> listed on original thread [1].
>>
>> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>>
>> We also have for free:
>> - correct and complete dependencies for any test, including:
>> scripts, c.inc, headers, reference files and binaries/plugins.
>> - catch test declaration issues at configure time vs test time.
>> - proper data types for variables instead of string expansion with make.
>>
>> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
>> by step. Then it adds support for all existing archs. Finally, we remove
>> Makefiles and configure bits.
>>
>> Usage:
>>
>> ```
>> make check-tcg
>> make check-tcg-aarch64-linux-user
>> make check-tcg-aarch64-softmmu
>>
>> make tcg-tests
>
> Can these be built via ninja?
>
Yes sure. I just listed make commands because I know some people can be
very sensitive about using anything out of make.
make tcg-tests is the same target as ninja tcg-tests.
The check targets are custom to Makefiles, because in an ideal world we
should be using meson test instead of make for this. Now that all tests
are meson native, maybe it will be time to reconsider this and
officially use meson test instead of make.
> Also I noticed docs/devel/testing/main.rst needs updating for the new
> world. It would be nice to add a simple example of adding a new test if
> you can.
>
If possible, I would like to avoid duplicating the comments from
tests/tcg/meson.build in docs. Documentation tends to become obsolete,
while code itself has to stay up to date by definition.
There are plenty of examples in tests/tcg/* to find how to declare tests
if someone is looking for information. Usually, a new test will just be
a copy of an existing one.
What do you think?
For the rest, you're right, I'll update
https://www.qemu.org/docs/master/devel/testing/main.html#testing-with-make-check-tcg
to match the new commands.
>>
>> ninja clean
>> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
>> ```
>>
>> A few items were left for further work (out of scope for this series):
>> - xtensaeb: didn't find how to cross compile for this architecture with what we
>> have now in container debian-xtensa-cross. Tips are welcome.
>> - tricore: implemented but reverted as all tests seem to hang. To be
>> investigated.
>> - riscv64/interruptedmemory.S is hanging. To be investigated.
>> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
>> match bare metal result) and is the slowest test we have. To be refactored and
>> fixed.
>>
>> v3
>> --
>>
>> - add all architectures
>> - reduce number of plugins tests (only add one test for each plugin from
>> multiarch pool)
>> - add depends for executable - allow to depend on a custom target for generated
>> headers (x86_64 mmx, avx)
>> - add new tests added since last version for aarch64 (mte + gpc)
>> - refactor series to keep all arch files at end
>> - add docker host architecture selection
>>
>> v2
>> --
>>
>> - s/mispell/misspell
>> - moved comment about why we remove 'lib' prefix for plugins
>> - if user declare a wrong entry in a dictionary, list possible keys
>> - build tests by default (with 'all' target), as long as cross compiler is
>> natively installed, to avoid triggering a container build.
>> - reword some comments based on reviewers feedback
>> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
>> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
>> - add support for cross containers
>> - add top target 'tcg-tests' to rebuild all tests
>>
>> Pierrick Bouvier (91):
>> tests/tcg/multiarch/system/memory.c: remove unused variable
>> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
>> input
>> tests/tcg/multiarch/plugin: rename check-plugin-output to
>> regex-compare
>> tests/tcg: introduce meson.build
>> tests/tcg/meson.build: introduce exe_name
>> tests/tcg/meson.build: introduce test_name
>> tests/tcg/meson.build: introduce cflags
>> tests/tcg/meson.build: introduce qemu_args
>> tests/tcg/meson.build: introduce env_var
>> tests/tcg/plugins: build list of test_plugins
>> tests/tcg/meson.build: introduce plugin_test
>> tests/tcg/meson.build: test gdb support and introduce gdb_arch
>> tests/tcg/meson.build: introduce gdb_test
>> tests/tcg/meson.build: add default flag for testing compiler support
>> tests/tcg/meson.build: introduce wrapper
>> tests/tcg/meson.build: introduce expected_output
>> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
>> tests/tcg/meson.build: add wrapper run_with_input
>> tests/tcg/meson.build: add wrapper record_replay
>> tests/tcg/meson.build: add wrapper check_plugin_output
>> tests/tcg/meson.build: add logic to skip tests
>> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
>> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
>> tests/tcg/meson.build: move gdb_arch support check
>> tests/tcg/meson.build: let test infrastructure detect compiler
>> tests/docker/docker.py: return error code if probe fails
>> tests/docker/docker.py: remove "Image is up to date" info
>> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
>> tests/tcg/meson.build: introduce depends
>> tests/tcg/meson.build: add top-level 'tcg-tests' target
>> tests/tcg/multiarch: declare user tests
>> tests/tcg/multiarch: declare system tests
>> tests/tcg/meson.build: add generic plugin tests
>> tests/tcg/aarch64: user tests
>> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
>> tests/tcg/aarch64: system tests
>> tests/tcg/aarch64_be: user tests
>> tests/tcg/alpha: add float reference files
>> tests/tcg/alpha: user tests
>> tests/tcg/alpha: system tests
>> tests/tcg/arm: user tests
>> tests/tcg/arm: system tests
>> tests/tcg/hexagon/overflow.c: add missing include
>> tests/tcg/hexagon: user tests
>> tests/tcg/multiarch/sha1.c: fix big endian implementation
>> tests/tcg/hppa: add float reference files
>> tests/tcg/hppa: user tests
>> tests/tcg/i386: add missing float reference files
>> tests/tcg/i386: user tests
>> tests/tcg/i386: system tests
>> tests/tcg/loongarch64: user tests
>> tests/tcg/loongarch64: system tests
>> tests/tcg/m68k: add float reference files
>> tests/tcg/m68k: user tests
>> scripts/probe-gdb-support.py: add mapping for mips architecture
>> tests/tcg/mips: add float reference files
>> test/tcg/mips: user tests
>> tests/tcg/mips64: add float reference files
>> tests/tcg/mips64: user tests
>> tests/tcg/mips64el: add float reference files
>> tests/tcg/mips64el: user tests
>> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
>> toolchain
>> tests/tcg/or1k/test_addic.c: remove unused variables
>> tests/tcg/or1k/test_muli.c: remove set but unused variable
>> tests/tcg/or1k: add float reference files
>> plugins/api.c: identify or1k pc register and mark it as read only
>> tests/tcg/or1k: user tests
>> tests/tcg/ppc64: add float reference files
>> tests/tcg/ppc64: remove dependency on qemu/compiler.h
>> tests/tcg/ppc64: user tests
>> tests/tcg/ppc64le: add missing float reference file
>> tests/tcg/ppc64le: user tests
>> tests/tcg/riscv64: add float reference files
>> tests/tcg/riscv64: user tests
>> tests/tcg/riscv64: system tests
>> tests/tcg/s390x/head64.S: declare _exit symbol after main
>> tests/tcg/s390x: add float reference files
>> tests/tcg/s390x: user tests
>> tests/tcg/s390x: system tests
>> tests/tcg/sh4: add float reference files
>> tests/tcg/sh4: user tests
>> tests/tcg/tricore: system tests
>> Revert "tests/tcg/tricore: system tests"
>> tests/tcg/x86_64: add missing float reference file
>> tests/tcg/x86_64: user tests
>> tests/tcg/x86_64: system tests
>> tests/tcg/xtensa/crt.S: align .text section
>> tests/tcg/xtensa: system tests
>> tests: remove tcg tests machinery
>> tests/tcg: remove Makefiles
>> configure: remove --cross-cc* options
>>
>> configure | 473 ---------
>> docs/devel/testing/main.rst | 22 +-
>> plugins/api.c | 2 +
>> scripts/probe-gdb-support.py | 1 +
>> tests/Makefile.include | 68 +-
>> tests/docker/docker.py | 4 +-
>> .../dockerfiles/debian-all-test-cross.docker | 16 +-
>> tests/lcitool/refresh | 107 +-
>> tests/meson.build | 2 +-
>> tests/tcg/Makefile.target | 281 -----
>> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
>> tests/tcg/aarch64/Makefile.target | 198 ----
>> tests/tcg/aarch64/meson.build | 195 ++++
>> tests/tcg/aarch64/system/gpc-test.c | 5 -
>> tests/tcg/aarch64/system/meson.build | 108 ++
>> tests/tcg/aarch64_be/Makefile.target | 17 -
>> tests/tcg/aarch64_be/meson.build | 22 +
>> tests/tcg/alpha/Makefile.softmmu-target | 34 -
>> tests/tcg/alpha/Makefile.target | 18 -
>> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
>> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/alpha/meson.build | 55 +
>> tests/tcg/alpha/system/meson.build | 46 +
>> tests/tcg/arm/Makefile.softmmu-target | 80 --
>> tests/tcg/arm/Makefile.target | 87 --
>> tests/tcg/arm/meson.build | 80 ++
>> tests/tcg/arm/system/meson.build | 66 ++
>> tests/tcg/hexagon/Makefile.target | 146 ---
>> tests/tcg/hexagon/meson.build | 111 ++
>> tests/tcg/hexagon/overflow.c | 1 +
>> tests/tcg/hppa/Makefile.target | 14 -
>> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
>> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/hppa/meson.build | 22 +
>> tests/tcg/i386/Makefile.softmmu-target | 37 -
>> tests/tcg/i386/Makefile.target | 102 --
>> tests/tcg/i386/float_convd.conf | 988 ------------------
>> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/i386/meson.build | 58 +
>> tests/tcg/i386/system/meson.build | 48 +
>> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
>> tests/tcg/loongarch64/Makefile.target | 20 -
>> tests/tcg/loongarch64/meson.build | 32 +
>> tests/tcg/loongarch64/system/meson.build | 47 +
>> tests/tcg/m68k/Makefile.target | 7 -
>> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
>> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/m68k/meson.build | 23 +
>> tests/tcg/meson.build | 447 ++++++++
>> tests/tcg/minilib/Makefile.target | 21 -
>> tests/tcg/mips/Makefile.target | 19 -
>> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips/meson.build | 25 +
>> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
>> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
>> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
>> tests/tcg/mips64/Makefile.target | 20 -
>> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips64/meson.build | 27 +
>> tests/tcg/mips64el/Makefile.target | 8 -
>> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
>> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/mips64el/meson.build | 14 +
>> tests/tcg/multiarch/Makefile.target | 233 -----
>> tests/tcg/multiarch/meson.build | 149 +++
>> .../multiarch/plugin/check-plugin-output.sh | 36 -
>> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
>> tests/tcg/multiarch/sha1.c | 4 +-
>> tests/tcg/multiarch/sha1.ref | 1 +
>> .../multiarch/system/Makefile.softmmu-target | 81 --
>> tests/tcg/multiarch/system/memory.c | 3 +-
>> tests/tcg/multiarch/system/meson.build | 53 +
>> tests/tcg/or1k/Makefile | 71 --
>> tests/tcg/or1k/float_convd.ref | 247 +++++
>> tests/tcg/or1k/float_convs.ref | 187 ++++
>> tests/tcg/or1k/float_madds.ref | 192 ++++
>> tests/tcg/or1k/meson.build | 72 ++
>> tests/tcg/or1k/test_addic.c | 2 +-
>> tests/tcg/or1k/test_muli.c | 5 +-
>> tests/tcg/plugins/meson.build | 11 +-
>> tests/tcg/ppc64/Makefile.target | 63 --
>> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/ppc64/meson.build | 56 +
>> tests/tcg/ppc64/vector.c | 11 +-
>> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
>> tests/tcg/ppc64le/Makefile.target | 7 -
>> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/ppc64le/meson.build | 14 +
>> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
>> tests/tcg/riscv64/Makefile.target | 20 -
>> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
>> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/riscv64/meson.build | 38 +
>> tests/tcg/riscv64/system/meson.build | 38 +
>> tests/tcg/s390x/Makefile.softmmu-target | 57 -
>> tests/tcg/s390x/Makefile.target | 127 ---
>> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
>> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
>> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/s390x/head64.S | 2 +
>> tests/tcg/s390x/meson.build | 140 +++
>> tests/tcg/s390x/system/meson.build | 92 ++
>> tests/tcg/scripts/check_plugin_output.sh | 25 +
>> tests/tcg/scripts/record_replay.sh | 16 +
>> .../scripts/run_and_check_forbidden_output.sh | 19 +
>> tests/tcg/scripts/run_and_diff.sh | 15 +
>> tests/tcg/scripts/run_with_input.sh | 12 +
>> tests/tcg/sh4/Makefile.target | 18 -
>> tests/tcg/sh4/float_convd.ref | 494 +++++++++
>> tests/tcg/sh4/float_convs.ref | 374 +++++++
>> tests/tcg/sh4/float_madds.ref | 384 +++++++
>> tests/tcg/sh4/meson.build | 25 +
>> tests/tcg/tricore/Makefile.softmmu-target | 53 -
>> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
>> tests/tcg/x86_64/Makefile.target | 40 -
>> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
>> tests/tcg/x86_64/meson.build | 83 ++
>> tests/tcg/x86_64/system/meson.build | 62 ++
>> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
>> tests/tcg/xtensa/crt.S | 1 +
>> tests/tcg/xtensa/meson.build | 89 ++
>> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
>> 134 files changed, 30491 insertions(+), 4114 deletions(-)
>> delete mode 100644 tests/tcg/Makefile.target
>> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/aarch64/Makefile.target
>> create mode 100644 tests/tcg/aarch64/meson.build
>> create mode 100644 tests/tcg/aarch64/system/meson.build
>> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
>> create mode 100644 tests/tcg/aarch64_be/meson.build
>> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/alpha/Makefile.target
>> create mode 100644 tests/tcg/alpha/float_convd.ref
>> create mode 100644 tests/tcg/alpha/float_convs.ref
>> create mode 100644 tests/tcg/alpha/float_madds.ref
>> create mode 100644 tests/tcg/alpha/meson.build
>> create mode 100644 tests/tcg/alpha/system/meson.build
>> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/arm/Makefile.target
>> create mode 100644 tests/tcg/arm/meson.build
>> create mode 100644 tests/tcg/arm/system/meson.build
>> delete mode 100644 tests/tcg/hexagon/Makefile.target
>> create mode 100644 tests/tcg/hexagon/meson.build
>> delete mode 100644 tests/tcg/hppa/Makefile.target
>> create mode 100644 tests/tcg/hppa/float_convd.ref
>> create mode 100644 tests/tcg/hppa/float_convs.ref
>> create mode 100644 tests/tcg/hppa/float_madds.ref
>> create mode 100644 tests/tcg/hppa/meson.build
>> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/i386/Makefile.target
>> delete mode 100644 tests/tcg/i386/float_convd.conf
>> create mode 100644 tests/tcg/i386/float_convd.ref
>> create mode 100644 tests/tcg/i386/float_madds.ref
>> create mode 100644 tests/tcg/i386/meson.build
>> create mode 100644 tests/tcg/i386/system/meson.build
>> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/loongarch64/Makefile.target
>> create mode 100644 tests/tcg/loongarch64/meson.build
>> create mode 100644 tests/tcg/loongarch64/system/meson.build
>> delete mode 100644 tests/tcg/m68k/Makefile.target
>> create mode 100644 tests/tcg/m68k/float_convd.ref
>> create mode 100644 tests/tcg/m68k/float_convs.ref
>> create mode 100644 tests/tcg/m68k/float_madds.ref
>> create mode 100644 tests/tcg/m68k/meson.build
>> create mode 100644 tests/tcg/meson.build
>> delete mode 100644 tests/tcg/minilib/Makefile.target
>> delete mode 100644 tests/tcg/mips/Makefile.target
>> create mode 100644 tests/tcg/mips/float_convd.ref
>> create mode 100644 tests/tcg/mips/float_convs.ref
>> create mode 100644 tests/tcg/mips/float_madds.ref
>> create mode 100644 tests/tcg/mips/meson.build
>> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
>> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
>> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
>> delete mode 100644 tests/tcg/mips64/Makefile.target
>> create mode 100644 tests/tcg/mips64/float_convd.ref
>> create mode 100644 tests/tcg/mips64/float_convs.ref
>> create mode 100644 tests/tcg/mips64/float_madds.ref
>> create mode 100644 tests/tcg/mips64/meson.build
>> delete mode 100644 tests/tcg/mips64el/Makefile.target
>> create mode 100644 tests/tcg/mips64el/float_convd.ref
>> create mode 100644 tests/tcg/mips64el/float_convs.ref
>> create mode 100644 tests/tcg/mips64el/float_madds.ref
>> create mode 100644 tests/tcg/mips64el/meson.build
>> delete mode 100644 tests/tcg/multiarch/Makefile.target
>> create mode 100644 tests/tcg/multiarch/meson.build
>> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
>> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
>> create mode 100644 tests/tcg/multiarch/sha1.ref
>> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
>> create mode 100644 tests/tcg/multiarch/system/meson.build
>> delete mode 100644 tests/tcg/or1k/Makefile
>> create mode 100644 tests/tcg/or1k/float_convd.ref
>> create mode 100644 tests/tcg/or1k/float_convs.ref
>> create mode 100644 tests/tcg/or1k/float_madds.ref
>> create mode 100644 tests/tcg/or1k/meson.build
>> delete mode 100644 tests/tcg/ppc64/Makefile.target
>> create mode 100644 tests/tcg/ppc64/float_convd.ref
>> create mode 100644 tests/tcg/ppc64/float_convs.ref
>> create mode 100644 tests/tcg/ppc64/float_madds.ref
>> create mode 100644 tests/tcg/ppc64/meson.build
>> delete mode 100644 tests/tcg/ppc64le/Makefile.target
>> create mode 100644 tests/tcg/ppc64le/float_convd.ref
>> create mode 100644 tests/tcg/ppc64le/meson.build
>> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/riscv64/Makefile.target
>> create mode 100644 tests/tcg/riscv64/float_convd.ref
>> create mode 100644 tests/tcg/riscv64/float_convs.ref
>> create mode 100644 tests/tcg/riscv64/float_madds.ref
>> create mode 100644 tests/tcg/riscv64/meson.build
>> create mode 100644 tests/tcg/riscv64/system/meson.build
>> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/s390x/Makefile.target
>> create mode 100644 tests/tcg/s390x/float_convd.ref
>> create mode 100644 tests/tcg/s390x/float_convs.ref
>> create mode 100644 tests/tcg/s390x/float_madds.ref
>> create mode 100644 tests/tcg/s390x/meson.build
>> create mode 100644 tests/tcg/s390x/system/meson.build
>> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
>> create mode 100755 tests/tcg/scripts/record_replay.sh
>> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
>> create mode 100755 tests/tcg/scripts/run_and_diff.sh
>> create mode 100755 tests/tcg/scripts/run_with_input.sh
>> delete mode 100644 tests/tcg/sh4/Makefile.target
>> create mode 100644 tests/tcg/sh4/float_convd.ref
>> create mode 100644 tests/tcg/sh4/float_convs.ref
>> create mode 100644 tests/tcg/sh4/float_madds.ref
>> create mode 100644 tests/tcg/sh4/meson.build
>> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
>> delete mode 100644 tests/tcg/x86_64/Makefile.target
>> create mode 100644 tests/tcg/x86_64/float_madds.ref
>> create mode 100644 tests/tcg/x86_64/meson.build
>> create mode 100644 tests/tcg/x86_64/system/meson.build
>> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
>> create mode 100644 tests/tcg/xtensa/meson.build
>> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay
2026-07-09 16:12 ` Alex Bennée
@ 2026-07-09 16:44 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 16:44 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P.Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Gustavo Romero, Laurent Vivier, Manos Pitsidianakis,
Helge Deller, Richard Henderson
On 7/9/2026 9:12 AM, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>
>> On 7/9/2026 8:03 AM, Pierrick Bouvier wrote:
>>> On 7/9/2026 7:52 AM, Alex Bennée wrote:
>>>> Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> writes:
>>>>
>>>>> Runs a record and replay test, and make sure the output produced by
>>>>> both runs is the same.
>>>>>
>>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>> ---
>>>>> tests/tcg/meson.build | 1 +
>>>>> tests/tcg/scripts/record_replay.sh | 16 ++++++++++++++++
>>>>> 2 files changed, 17 insertions(+)
>>>>> create mode 100755 tests/tcg/scripts/record_replay.sh
>>>>>
>>>>> diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
>>>>> index 30178df0f7a..e610ce30f40 100644
>>>>> --- a/tests/tcg/meson.build
>>>>> +++ b/tests/tcg/meson.build
>>>>> @@ -7,6 +7,7 @@ if config_host.has_key('GDB')
>>>>> endif
>>>>> gdb = find_program(gdb_progs, required: false)
>>>>> prog_gdb_test = find_program('../guest-debug/run-test.py')
>>>>> +prog_record_replay = find_program('./scripts/record_replay.sh')
>>>>> prog_run_and_diff = find_program('./scripts/run_and_diff.sh')
>>>>> prog_run_with_input = find_program('./scripts/run_with_input.sh')
>>>>> prog_run_and_check_forbidden_output = find_program(
>>>>> diff --git a/tests/tcg/scripts/record_replay.sh b/tests/tcg/scripts/record_replay.sh
>>>>> new file mode 100755
>>>>> index 00000000000..57775a2d4c1
>>>>> --- /dev/null
>>>>> +++ b/tests/tcg/scripts/record_replay.sh
>>>>> @@ -0,0 +1,16 @@
>>>>> +#!/usr/bin/env bash
>>>>
>>>> While at it is there any reason this couldn't be plain POSIX shell. I
>>>> don't think we explicitly require bash although its super likely to be
>>>> on most systems. configure is all POSIX shell.
>>>>
>>>
>>> The main reason for me to use bash is that it supports set -uo pipefail
>>> in combination with set -e.
>>>
>>> Which produces:
>>> - exit if a variable is undefined
>>> - exit if any command in a pipe sequence fails
>>> Without this, script shells are pretty much house of cards waiting to
>>> collapse on any corner case.
>>>
>>> bash is available out of the box at least on macos, msys2, and I expect,
>>> every single linux distro out there. Not sure about bsds though.
>>>
>>> If that's such a big issue, I can port the scripts to sh.
>>>
>>
>> Interestingly, QEMU main Makefile makes bash a defacto requirement,
>> since it uses it for every single command to run. The reason is... to
>> use -o pipefail.
>>
>> https://gitlab.com/qemu-project/qemu/-/blob/master/Makefile?ref_type=heads#L17
>>
>
> Well it looks like I misremembered as we list bash as a dependency in
> qemu-minimal:
>
> packages:
> - bash
>
> so I drop my objection.
>
👍
>
>>>>> +# SPDX-License-Identifier: GPL-2.0-or-later
>>>>> +
>>>>> +set -euo pipefail
>>>>> +
>>>>> +if [ $# -lt 2 ]; then
>>>>> + echo "record_replay: qemu_bin [args]..." 1>&2
>>>>> + exit 1
>>>>> +fi
>>>>> +qemu="$1";shift
>>>>> +tmp=$(mktemp -d)
>>>>> +trap "rm -rf $tmp" EXIT
>>>>> +set -x
>>>>> +$qemu -icount shift=5,rr=record,rrfile=$tmp/rr.bin "$@" |& tee $tmp/record
>>>>> +$qemu -icount shift=5,rr=replay,rrfile=$tmp/rr.bin "$@" |& tee $tmp/replay
>>>>> +diff $tmp/record $tmp/replay
>>>>
>>>
>
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-09 15:24 ` Pierrick Bouvier
@ 2026-07-09 18:42 ` Max Filippov
2026-07-09 19:03 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Max Filippov @ 2026-07-09 18:42 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On Thu, Jul 9, 2026 at 8:24 AM Pierrick Bouvier
<pierrick.bouvier@oss.qualcomm.com> wrote:
> If you have a chance to take a look, I observed that test_timer.S is
> flaky on xtensaeb with kc705_be. It fails with a probably of 25% on my
> machine.
This is a rather well-known issue that for a core with .clock_freq_khz
that is not
exactly matching the icount argument used to run the timer test it
will sometimes
fail. The easiest way to fix it is probably changing the default core
clock frequency.
The more useful way to fix it would be to make the core clock of the
`sim` machine
adjustable and set it to the value that matches the icount.
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-09 18:42 ` Max Filippov
@ 2026-07-09 19:03 ` Pierrick Bouvier
2026-07-10 5:53 ` Pierrick Bouvier
0 siblings, 1 reply; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-09 19:03 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/9/2026 11:42 AM, Max Filippov wrote:
> On Thu, Jul 9, 2026 at 8:24 AM Pierrick Bouvier
> <pierrick.bouvier@oss.qualcomm.com> wrote:
>> If you have a chance to take a look, I observed that test_timer.S is
>> flaky on xtensaeb with kc705_be. It fails with a probably of 25% on my
>> machine.
>
> This is a rather well-known issue that for a core with .clock_freq_khz
> that is not
> exactly matching the icount argument used to run the timer test it
> will sometimes
> fail. The easiest way to fix it is probably changing the default core
> clock frequency.
> The more useful way to fix it would be to make the core clock of the
> `sim` machine
> adjustable and set it to the value that matches the icount.
>
Could you share the magic command arguments that achieve this?
I can edit test qemu args to match this.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section
2026-07-09 19:03 ` Pierrick Bouvier
@ 2026-07-10 5:53 ` Pierrick Bouvier
0 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-10 5:53 UTC (permalink / raw)
To: Max Filippov
Cc: qemu-devel, Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/9/2026 12:03 PM, Pierrick Bouvier wrote:
> On 7/9/2026 11:42 AM, Max Filippov wrote:
>> On Thu, Jul 9, 2026 at 8:24 AM Pierrick Bouvier
>> <pierrick.bouvier@oss.qualcomm.com> wrote:
>>> If you have a chance to take a look, I observed that test_timer.S is
>>> flaky on xtensaeb with kc705_be. It fails with a probably of 25% on my
>>> machine.
>>
>> This is a rather well-known issue that for a core with .clock_freq_khz
>> that is not
>> exactly matching the icount argument used to run the timer test it
>> will sometimes
>> fail. The easiest way to fix it is probably changing the default core
>> clock frequency.
>> The more useful way to fix it would be to make the core clock of the
>> `sim` machine
>> adjustable and set it to the value that matches the icount.
>>
>
> Could you share the magic command arguments that achieve this?
> I can edit test qemu args to match this.
>
Using -icount 8 (instead of 6) solves the flakiness.
Also, icount is not needed for all other tests, so I restricted it to
test_timer only.
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
* Re: [PATCH v3 00/91] tests/tcg: run tests with meson
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
` (95 preceding siblings ...)
2026-07-09 16:22 ` Alex Bennée
@ 2026-07-10 6:32 ` Pierrick Bouvier
96 siblings, 0 replies; 144+ messages in thread
From: Pierrick Bouvier @ 2026-07-10 6:32 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Daniel P . Berrangé,
Thomas Huth, Paolo Bonzini, Peter Maydell, Ilya Leoshkevich,
Brian Cain, Alex Bennée, Gustavo Romero, Laurent Vivier,
Manos Pitsidianakis, Helge Deller, Richard Henderson
On 7/6/2026 3:32 PM, Pierrick Bouvier wrote:
> This series replaces TCG tests makefiles with meson, with the
> goal of having something more readable and maintainable in the long term.
> Also it closes the gap that tcg tests had with the rest of tests, by integrating
> them with meson directly.
>
> It covers all existing tests for all architectures, including
> user/system/multiarch-user/multiarch-system. It implements all requirements
> listed on original thread [1].
>
> [1] https://lore.kernel.org/qemu-devel/87wlwfsay4.fsf@draig.linaro.org/
>
> We also have for free:
> - correct and complete dependencies for any test, including:
> scripts, c.inc, headers, reference files and binaries/plugins.
> - catch test declaration issues at configure time vs test time.
> - proper data types for variables instead of string expansion with make.
>
> Series first introduce the meson machinery needed in tests/tcg/meson.build, step
> by step. Then it adds support for all existing archs. Finally, we remove
> Makefiles and configure bits.
>
> Usage:
>
> ```
> make check-tcg
> make check-tcg-aarch64-linux-user
> make check-tcg-aarch64-softmmu
>
> make tcg-tests
>
> ninja clean
> ./pyvenv/bin/meson test aarch64-softmmu-asid2 --verbose
> ```
>
> A few items were left for further work (out of scope for this series):
> - xtensaeb: didn't find how to cross compile for this architecture with what we
> have now in container debian-xtensa-cross. Tips are welcome.
> - tricore: implemented but reverted as all tests seem to hang. To be
> investigated.
> - riscv64/interruptedmemory.S is hanging. To be investigated.
> - i386/test-i386-fprem.c is deactivated for now. It's broken (output does not
> match bare metal result) and is the slowest test we have. To be refactored and
> fixed.
>
> v3
> --
>
> - add all architectures
> - reduce number of plugins tests (only add one test for each plugin from
> multiarch pool)
> - add depends for executable - allow to depend on a custom target for generated
> headers (x86_64 mmx, avx)
> - add new tests added since last version for aarch64 (mte + gpc)
> - refactor series to keep all arch files at end
> - add docker host architecture selection
>
> v2
> --
>
> - s/mispell/misspell
> - moved comment about why we remove 'lib' prefix for plugins
> - if user declare a wrong entry in a dictionary, list possible keys
> - build tests by default (with 'all' target), as long as cross compiler is
> natively installed, to avoid triggering a container build.
> - reword some comments based on reviewers feedback
> - always declare all tests and avoid "per config" errors (no 'if' in arch files)
> - move compiler feature and gdb version checks directly in tests/tcg/meson.build
> - add support for cross containers
> - add top target 'tcg-tests' to rebuild all tests
>
> Pierrick Bouvier (91):
> tests/tcg/multiarch/system/memory.c: remove unused variable
> tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as
> input
> tests/tcg/multiarch/plugin: rename check-plugin-output to
> regex-compare
> tests/tcg: introduce meson.build
> tests/tcg/meson.build: introduce exe_name
> tests/tcg/meson.build: introduce test_name
> tests/tcg/meson.build: introduce cflags
> tests/tcg/meson.build: introduce qemu_args
> tests/tcg/meson.build: introduce env_var
> tests/tcg/plugins: build list of test_plugins
> tests/tcg/meson.build: introduce plugin_test
> tests/tcg/meson.build: test gdb support and introduce gdb_arch
> tests/tcg/meson.build: introduce gdb_test
> tests/tcg/meson.build: add default flag for testing compiler support
> tests/tcg/meson.build: introduce wrapper
> tests/tcg/meson.build: introduce expected_output
> tests/tcg/meson.build: add wrapper run_and_check_forbidden_output
> tests/tcg/meson.build: add wrapper run_with_input
> tests/tcg/meson.build: add wrapper record_replay
> tests/tcg/meson.build: add wrapper check_plugin_output
> tests/tcg/meson.build: add logic to skip tests
> tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags
> tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version
> tests/tcg/meson.build: move gdb_arch support check
> tests/tcg/meson.build: let test infrastructure detect compiler
> tests/docker/docker.py: return error code if probe fails
> tests/docker/docker.py: remove "Image is up to date" info
> tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch
> tests/tcg/meson.build: introduce depends
> tests/tcg/meson.build: add top-level 'tcg-tests' target
> tests/tcg/multiarch: declare user tests
> tests/tcg/multiarch: declare system tests
> tests/tcg/meson.build: add generic plugin tests
> tests/tcg/aarch64: user tests
> tests/tcg/aarch64/system/gpc-test.c: remove unused variables
> tests/tcg/aarch64: system tests
> tests/tcg/aarch64_be: user tests
> tests/tcg/alpha: add float reference files
> tests/tcg/alpha: user tests
> tests/tcg/alpha: system tests
> tests/tcg/arm: user tests
> tests/tcg/arm: system tests
> tests/tcg/hexagon/overflow.c: add missing include
> tests/tcg/hexagon: user tests
> tests/tcg/multiarch/sha1.c: fix big endian implementation
> tests/tcg/hppa: add float reference files
> tests/tcg/hppa: user tests
> tests/tcg/i386: add missing float reference files
> tests/tcg/i386: user tests
> tests/tcg/i386: system tests
> tests/tcg/loongarch64: user tests
> tests/tcg/loongarch64: system tests
> tests/tcg/m68k: add float reference files
> tests/tcg/m68k: user tests
> scripts/probe-gdb-support.py: add mapping for mips architecture
> tests/tcg/mips: add float reference files
> test/tcg/mips: user tests
> tests/tcg/mips64: add float reference files
> tests/tcg/mips64: user tests
> tests/tcg/mips64el: add float reference files
> tests/tcg/mips64el: user tests
> tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k
> toolchain
> tests/tcg/or1k/test_addic.c: remove unused variables
> tests/tcg/or1k/test_muli.c: remove set but unused variable
> tests/tcg/or1k: add float reference files
> plugins/api.c: identify or1k pc register and mark it as read only
> tests/tcg/or1k: user tests
> tests/tcg/ppc64: add float reference files
> tests/tcg/ppc64: remove dependency on qemu/compiler.h
> tests/tcg/ppc64: user tests
> tests/tcg/ppc64le: add missing float reference file
> tests/tcg/ppc64le: user tests
> tests/tcg/riscv64: add float reference files
> tests/tcg/riscv64: user tests
> tests/tcg/riscv64: system tests
> tests/tcg/s390x/head64.S: declare _exit symbol after main
> tests/tcg/s390x: add float reference files
> tests/tcg/s390x: user tests
> tests/tcg/s390x: system tests
> tests/tcg/sh4: add float reference files
> tests/tcg/sh4: user tests
> tests/tcg/tricore: system tests
> Revert "tests/tcg/tricore: system tests"
> tests/tcg/x86_64: add missing float reference file
> tests/tcg/x86_64: user tests
> tests/tcg/x86_64: system tests
> tests/tcg/xtensa/crt.S: align .text section
> tests/tcg/xtensa: system tests
> tests: remove tcg tests machinery
> tests/tcg: remove Makefiles
> configure: remove --cross-cc* options
>
> configure | 473 ---------
> docs/devel/testing/main.rst | 22 +-
> plugins/api.c | 2 +
> scripts/probe-gdb-support.py | 1 +
> tests/Makefile.include | 68 +-
> tests/docker/docker.py | 4 +-
> .../dockerfiles/debian-all-test-cross.docker | 16 +-
> tests/lcitool/refresh | 107 +-
> tests/meson.build | 2 +-
> tests/tcg/Makefile.target | 281 -----
> tests/tcg/aarch64/Makefile.softmmu-target | 147 ---
> tests/tcg/aarch64/Makefile.target | 198 ----
> tests/tcg/aarch64/meson.build | 195 ++++
> tests/tcg/aarch64/system/gpc-test.c | 5 -
> tests/tcg/aarch64/system/meson.build | 108 ++
> tests/tcg/aarch64_be/Makefile.target | 17 -
> tests/tcg/aarch64_be/meson.build | 22 +
> tests/tcg/alpha/Makefile.softmmu-target | 34 -
> tests/tcg/alpha/Makefile.target | 18 -
> tests/tcg/alpha/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/alpha/float_convs.ref | 748 +++++++++++++
> tests/tcg/alpha/float_madds.ref | 768 ++++++++++++++
> tests/tcg/alpha/meson.build | 55 +
> tests/tcg/alpha/system/meson.build | 46 +
> tests/tcg/arm/Makefile.softmmu-target | 80 --
> tests/tcg/arm/Makefile.target | 87 --
> tests/tcg/arm/meson.build | 80 ++
> tests/tcg/arm/system/meson.build | 66 ++
> tests/tcg/hexagon/Makefile.target | 146 ---
> tests/tcg/hexagon/meson.build | 111 ++
> tests/tcg/hexagon/overflow.c | 1 +
> tests/tcg/hppa/Makefile.target | 14 -
> tests/tcg/hppa/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/hppa/float_convs.ref | 748 +++++++++++++
> tests/tcg/hppa/float_madds.ref | 768 ++++++++++++++
> tests/tcg/hppa/meson.build | 22 +
> tests/tcg/i386/Makefile.softmmu-target | 37 -
> tests/tcg/i386/Makefile.target | 102 --
> tests/tcg/i386/float_convd.conf | 988 ------------------
> tests/tcg/i386/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/i386/float_madds.ref | 768 ++++++++++++++
> tests/tcg/i386/meson.build | 58 +
> tests/tcg/i386/system/meson.build | 48 +
> tests/tcg/loongarch64/Makefile.softmmu-target | 33 -
> tests/tcg/loongarch64/Makefile.target | 20 -
> tests/tcg/loongarch64/meson.build | 32 +
> tests/tcg/loongarch64/system/meson.build | 47 +
> tests/tcg/m68k/Makefile.target | 7 -
> tests/tcg/m68k/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/m68k/float_convs.ref | 748 +++++++++++++
> tests/tcg/m68k/float_madds.ref | 768 ++++++++++++++
> tests/tcg/m68k/meson.build | 23 +
> tests/tcg/meson.build | 447 ++++++++
> tests/tcg/minilib/Makefile.target | 21 -
> tests/tcg/mips/Makefile.target | 19 -
> tests/tcg/mips/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips/meson.build | 25 +
> tests/tcg/mips/user/ase/dsp/Makefile | 184 ----
> tests/tcg/mips/user/isa/mips64r6/crc/Makefile | 40 -
> tests/tcg/mips/user/isa/r5900/Makefile | 32 -
> tests/tcg/mips64/Makefile.target | 20 -
> tests/tcg/mips64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64/meson.build | 27 +
> tests/tcg/mips64el/Makefile.target | 8 -
> tests/tcg/mips64el/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/mips64el/float_convs.ref | 748 +++++++++++++
> tests/tcg/mips64el/float_madds.ref | 768 ++++++++++++++
> tests/tcg/mips64el/meson.build | 14 +
> tests/tcg/multiarch/Makefile.target | 233 -----
> tests/tcg/multiarch/meson.build | 149 +++
> .../multiarch/plugin/check-plugin-output.sh | 36 -
> tests/tcg/multiarch/plugin/regex-compare.sh | 28 +
> tests/tcg/multiarch/sha1.c | 4 +-
> tests/tcg/multiarch/sha1.ref | 1 +
> .../multiarch/system/Makefile.softmmu-target | 81 --
> tests/tcg/multiarch/system/memory.c | 3 +-
> tests/tcg/multiarch/system/meson.build | 53 +
> tests/tcg/or1k/Makefile | 71 --
> tests/tcg/or1k/float_convd.ref | 247 +++++
> tests/tcg/or1k/float_convs.ref | 187 ++++
> tests/tcg/or1k/float_madds.ref | 192 ++++
> tests/tcg/or1k/meson.build | 72 ++
> tests/tcg/or1k/test_addic.c | 2 +-
> tests/tcg/or1k/test_muli.c | 5 +-
> tests/tcg/plugins/meson.build | 11 +-
> tests/tcg/ppc64/Makefile.target | 63 --
> tests/tcg/ppc64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64/float_convs.ref | 748 +++++++++++++
> tests/tcg/ppc64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/ppc64/meson.build | 56 +
> tests/tcg/ppc64/vector.c | 11 +-
> tests/tcg/ppc64/vsx_f2i_nan.c | 7 +-
> tests/tcg/ppc64le/Makefile.target | 7 -
> tests/tcg/ppc64le/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/ppc64le/meson.build | 14 +
> tests/tcg/riscv64/Makefile.softmmu-target | 45 -
> tests/tcg/riscv64/Makefile.target | 20 -
> tests/tcg/riscv64/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/riscv64/float_convs.ref | 748 +++++++++++++
> tests/tcg/riscv64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/riscv64/meson.build | 38 +
> tests/tcg/riscv64/system/meson.build | 38 +
> tests/tcg/s390x/Makefile.softmmu-target | 57 -
> tests/tcg/s390x/Makefile.target | 127 ---
> tests/tcg/s390x/float_convd.ref | 988 ++++++++++++++++++
> tests/tcg/s390x/float_convs.ref | 748 +++++++++++++
> tests/tcg/s390x/float_madds.ref | 768 ++++++++++++++
> tests/tcg/s390x/head64.S | 2 +
> tests/tcg/s390x/meson.build | 140 +++
> tests/tcg/s390x/system/meson.build | 92 ++
> tests/tcg/scripts/check_plugin_output.sh | 25 +
> tests/tcg/scripts/record_replay.sh | 16 +
> .../scripts/run_and_check_forbidden_output.sh | 19 +
> tests/tcg/scripts/run_and_diff.sh | 15 +
> tests/tcg/scripts/run_with_input.sh | 12 +
> tests/tcg/sh4/Makefile.target | 18 -
> tests/tcg/sh4/float_convd.ref | 494 +++++++++
> tests/tcg/sh4/float_convs.ref | 374 +++++++
> tests/tcg/sh4/float_madds.ref | 384 +++++++
> tests/tcg/sh4/meson.build | 25 +
> tests/tcg/tricore/Makefile.softmmu-target | 53 -
> tests/tcg/x86_64/Makefile.softmmu-target | 44 -
> tests/tcg/x86_64/Makefile.target | 40 -
> tests/tcg/x86_64/float_madds.ref | 768 ++++++++++++++
> tests/tcg/x86_64/meson.build | 83 ++
> tests/tcg/x86_64/system/meson.build | 62 ++
> tests/tcg/xtensa/Makefile.softmmu-target | 46 -
> tests/tcg/xtensa/crt.S | 1 +
> tests/tcg/xtensa/meson.build | 89 ++
> tests/tcg/xtensaeb/Makefile.softmmu-target | 5 -
> 134 files changed, 30491 insertions(+), 4114 deletions(-)
> delete mode 100644 tests/tcg/Makefile.target
> delete mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/aarch64/Makefile.target
> create mode 100644 tests/tcg/aarch64/meson.build
> create mode 100644 tests/tcg/aarch64/system/meson.build
> delete mode 100644 tests/tcg/aarch64_be/Makefile.target
> create mode 100644 tests/tcg/aarch64_be/meson.build
> delete mode 100644 tests/tcg/alpha/Makefile.softmmu-target
> delete mode 100644 tests/tcg/alpha/Makefile.target
> create mode 100644 tests/tcg/alpha/float_convd.ref
> create mode 100644 tests/tcg/alpha/float_convs.ref
> create mode 100644 tests/tcg/alpha/float_madds.ref
> create mode 100644 tests/tcg/alpha/meson.build
> create mode 100644 tests/tcg/alpha/system/meson.build
> delete mode 100644 tests/tcg/arm/Makefile.softmmu-target
> delete mode 100644 tests/tcg/arm/Makefile.target
> create mode 100644 tests/tcg/arm/meson.build
> create mode 100644 tests/tcg/arm/system/meson.build
> delete mode 100644 tests/tcg/hexagon/Makefile.target
> create mode 100644 tests/tcg/hexagon/meson.build
> delete mode 100644 tests/tcg/hppa/Makefile.target
> create mode 100644 tests/tcg/hppa/float_convd.ref
> create mode 100644 tests/tcg/hppa/float_convs.ref
> create mode 100644 tests/tcg/hppa/float_madds.ref
> create mode 100644 tests/tcg/hppa/meson.build
> delete mode 100644 tests/tcg/i386/Makefile.softmmu-target
> delete mode 100644 tests/tcg/i386/Makefile.target
> delete mode 100644 tests/tcg/i386/float_convd.conf
> create mode 100644 tests/tcg/i386/float_convd.ref
> create mode 100644 tests/tcg/i386/float_madds.ref
> create mode 100644 tests/tcg/i386/meson.build
> create mode 100644 tests/tcg/i386/system/meson.build
> delete mode 100644 tests/tcg/loongarch64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/loongarch64/Makefile.target
> create mode 100644 tests/tcg/loongarch64/meson.build
> create mode 100644 tests/tcg/loongarch64/system/meson.build
> delete mode 100644 tests/tcg/m68k/Makefile.target
> create mode 100644 tests/tcg/m68k/float_convd.ref
> create mode 100644 tests/tcg/m68k/float_convs.ref
> create mode 100644 tests/tcg/m68k/float_madds.ref
> create mode 100644 tests/tcg/m68k/meson.build
> create mode 100644 tests/tcg/meson.build
> delete mode 100644 tests/tcg/minilib/Makefile.target
> delete mode 100644 tests/tcg/mips/Makefile.target
> create mode 100644 tests/tcg/mips/float_convd.ref
> create mode 100644 tests/tcg/mips/float_convs.ref
> create mode 100644 tests/tcg/mips/float_madds.ref
> create mode 100644 tests/tcg/mips/meson.build
> delete mode 100644 tests/tcg/mips/user/ase/dsp/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/mips64r6/crc/Makefile
> delete mode 100644 tests/tcg/mips/user/isa/r5900/Makefile
> delete mode 100644 tests/tcg/mips64/Makefile.target
> create mode 100644 tests/tcg/mips64/float_convd.ref
> create mode 100644 tests/tcg/mips64/float_convs.ref
> create mode 100644 tests/tcg/mips64/float_madds.ref
> create mode 100644 tests/tcg/mips64/meson.build
> delete mode 100644 tests/tcg/mips64el/Makefile.target
> create mode 100644 tests/tcg/mips64el/float_convd.ref
> create mode 100644 tests/tcg/mips64el/float_convs.ref
> create mode 100644 tests/tcg/mips64el/float_madds.ref
> create mode 100644 tests/tcg/mips64el/meson.build
> delete mode 100644 tests/tcg/multiarch/Makefile.target
> create mode 100644 tests/tcg/multiarch/meson.build
> delete mode 100755 tests/tcg/multiarch/plugin/check-plugin-output.sh
> create mode 100755 tests/tcg/multiarch/plugin/regex-compare.sh
> create mode 100644 tests/tcg/multiarch/sha1.ref
> delete mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
> create mode 100644 tests/tcg/multiarch/system/meson.build
> delete mode 100644 tests/tcg/or1k/Makefile
> create mode 100644 tests/tcg/or1k/float_convd.ref
> create mode 100644 tests/tcg/or1k/float_convs.ref
> create mode 100644 tests/tcg/or1k/float_madds.ref
> create mode 100644 tests/tcg/or1k/meson.build
> delete mode 100644 tests/tcg/ppc64/Makefile.target
> create mode 100644 tests/tcg/ppc64/float_convd.ref
> create mode 100644 tests/tcg/ppc64/float_convs.ref
> create mode 100644 tests/tcg/ppc64/float_madds.ref
> create mode 100644 tests/tcg/ppc64/meson.build
> delete mode 100644 tests/tcg/ppc64le/Makefile.target
> create mode 100644 tests/tcg/ppc64le/float_convd.ref
> create mode 100644 tests/tcg/ppc64le/meson.build
> delete mode 100644 tests/tcg/riscv64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/riscv64/Makefile.target
> create mode 100644 tests/tcg/riscv64/float_convd.ref
> create mode 100644 tests/tcg/riscv64/float_convs.ref
> create mode 100644 tests/tcg/riscv64/float_madds.ref
> create mode 100644 tests/tcg/riscv64/meson.build
> create mode 100644 tests/tcg/riscv64/system/meson.build
> delete mode 100644 tests/tcg/s390x/Makefile.softmmu-target
> delete mode 100644 tests/tcg/s390x/Makefile.target
> create mode 100644 tests/tcg/s390x/float_convd.ref
> create mode 100644 tests/tcg/s390x/float_convs.ref
> create mode 100644 tests/tcg/s390x/float_madds.ref
> create mode 100644 tests/tcg/s390x/meson.build
> create mode 100644 tests/tcg/s390x/system/meson.build
> create mode 100755 tests/tcg/scripts/check_plugin_output.sh
> create mode 100755 tests/tcg/scripts/record_replay.sh
> create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh
> create mode 100755 tests/tcg/scripts/run_and_diff.sh
> create mode 100755 tests/tcg/scripts/run_with_input.sh
> delete mode 100644 tests/tcg/sh4/Makefile.target
> create mode 100644 tests/tcg/sh4/float_convd.ref
> create mode 100644 tests/tcg/sh4/float_convs.ref
> create mode 100644 tests/tcg/sh4/float_madds.ref
> create mode 100644 tests/tcg/sh4/meson.build
> delete mode 100644 tests/tcg/tricore/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.softmmu-target
> delete mode 100644 tests/tcg/x86_64/Makefile.target
> create mode 100644 tests/tcg/x86_64/float_madds.ref
> create mode 100644 tests/tcg/x86_64/meson.build
> create mode 100644 tests/tcg/x86_64/system/meson.build
> delete mode 100644 tests/tcg/xtensa/Makefile.softmmu-target
> create mode 100644 tests/tcg/xtensa/meson.build
> delete mode 100644 tests/tcg/xtensaeb/Makefile.softmmu-target
>
Sent v4, adding missing targets (xtensaeb + tricore) and all changes
requested on v3.
https://lore.kernel.org/qemu-devel/20260710062016.1818125-1-pierrick.bouvier@oss.qualcomm.com/T/#
Regards,
Pierrick
^ permalink raw reply [flat|nested] 144+ messages in thread
end of thread, other threads:[~2026-07-10 6:32 UTC | newest]
Thread overview: 144+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-06 22:32 [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 01/91] tests/tcg/multiarch/system/memory.c: remove unused variable Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 02/91] tests/tcg/multiarch/plugin/check-plugin-output.sh: take test output as input Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 03/91] tests/tcg/multiarch/plugin: rename check-plugin-output to regex-compare Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 04/91] tests/tcg: introduce meson.build Pierrick Bouvier
2026-07-07 18:10 ` Richard Henderson
2026-07-06 22:32 ` [PATCH v3 05/91] tests/tcg/meson.build: introduce exe_name Pierrick Bouvier
2026-07-07 18:11 ` Richard Henderson
2026-07-06 22:32 ` [PATCH v3 06/91] tests/tcg/meson.build: introduce test_name Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 07/91] tests/tcg/meson.build: introduce cflags Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 08/91] tests/tcg/meson.build: introduce qemu_args Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 09/91] tests/tcg/meson.build: introduce env_var Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 10/91] tests/tcg/plugins: build list of test_plugins Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 11/91] tests/tcg/meson.build: introduce plugin_test Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 12/91] tests/tcg/meson.build: test gdb support and introduce gdb_arch Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 13/91] tests/tcg/meson.build: introduce gdb_test Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 14/91] tests/tcg/meson.build: add default flag for testing compiler support Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 15/91] tests/tcg/meson.build: introduce wrapper Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 16/91] tests/tcg/meson.build: introduce expected_output Pierrick Bouvier
2026-07-07 5:15 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 17/91] tests/tcg/meson.build: add wrapper run_and_check_forbidden_output Pierrick Bouvier
2026-07-07 5:16 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 18/91] tests/tcg/meson.build: add wrapper run_with_input Pierrick Bouvier
2026-07-07 5:21 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 19/91] tests/tcg/meson.build: add wrapper record_replay Pierrick Bouvier
2026-07-09 14:49 ` Alex Bennée
2026-07-09 14:52 ` Alex Bennée
2026-07-09 15:03 ` Pierrick Bouvier
2026-07-09 15:10 ` Pierrick Bouvier
2026-07-09 16:12 ` Alex Bennée
2026-07-09 16:44 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 20/91] tests/tcg/meson.build: add wrapper check_plugin_output Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 21/91] tests/tcg/meson.build: add logic to skip tests Pierrick Bouvier
2026-07-07 5:24 ` Manos Pitsidianakis
2026-07-09 10:49 ` Philippe Mathieu-Daudé
2026-07-09 16:20 ` Alex Bennée
2026-07-06 22:32 ` [PATCH v3 22/91] tests/tcg/meson.build: introduce cc_feat and cc_feat_cflags Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 23/91] tests/tcg/meson.build: introduce gdb_feat and gdb_feat_version Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 24/91] tests/tcg/meson.build: move gdb_arch support check Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 25/91] tests/tcg/meson.build: let test infrastructure detect compiler Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 26/91] tests/docker/docker.py: return error code if probe fails Pierrick Bouvier
2026-07-07 6:24 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 27/91] tests/docker/docker.py: remove "Image is up to date" info Pierrick Bouvier
2026-07-07 6:01 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 28/91] tests/tcg/meson.build: introduce cc_dockerfile and cc_docker_arch Pierrick Bouvier
2026-07-07 6:15 ` Philippe Mathieu-Daudé
2026-07-07 18:05 ` Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 29/91] tests/tcg/meson.build: introduce depends Pierrick Bouvier
2026-07-08 6:07 ` Manos Pitsidianakis
2026-07-06 22:32 ` [PATCH v3 30/91] tests/tcg/meson.build: add top-level 'tcg-tests' target Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 31/91] tests/tcg/multiarch: declare user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 32/91] tests/tcg/multiarch: declare system tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 33/91] tests/tcg/meson.build: add generic plugin tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 34/91] tests/tcg/aarch64: user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 35/91] tests/tcg/aarch64/system/gpc-test.c: remove unused variables Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 36/91] tests/tcg/aarch64: system tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 37/91] tests/tcg/aarch64_be: user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 38/91] tests/tcg/alpha: add float reference files Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 39/91] tests/tcg/alpha: user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 40/91] tests/tcg/alpha: system tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 41/91] tests/tcg/arm: user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 42/91] tests/tcg/arm: system tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 43/91] tests/tcg/hexagon/overflow.c: add missing include Pierrick Bouvier
2026-07-07 6:24 ` Philippe Mathieu-Daudé
2026-07-06 22:32 ` [PATCH v3 44/91] tests/tcg/hexagon: user tests Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 45/91] tests/tcg/multiarch/sha1.c: fix big endian implementation Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 46/91] tests/tcg/hppa: add float reference files Pierrick Bouvier
2026-07-06 22:32 ` [PATCH v3 47/91] tests/tcg/hppa: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 48/91] tests/tcg/i386: add missing float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 49/91] tests/tcg/i386: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 50/91] tests/tcg/i386: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 51/91] tests/tcg/loongarch64: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 52/91] tests/tcg/loongarch64: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 53/91] tests/tcg/m68k: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 54/91] tests/tcg/m68k: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 55/91] scripts/probe-gdb-support.py: add mapping for mips architecture Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 56/91] tests/tcg/mips: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 57/91] test/tcg/mips: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 58/91] tests/tcg/mips64: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 59/91] tests/tcg/mips64: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 60/91] tests/tcg/mips64el: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 61/91] tests/tcg/mips64el: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 62/91] tests/docker/dockerfiles/debian-all-test-cross.docker: add or1k toolchain Pierrick Bouvier
2026-07-07 6:23 ` Philippe Mathieu-Daudé
2026-07-07 16:23 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 63/91] tests/tcg/or1k/test_addic.c: remove unused variables Pierrick Bouvier
2026-07-07 6:20 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 64/91] tests/tcg/or1k/test_muli.c: remove set but unused variable Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 65/91] tests/tcg/or1k: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 66/91] plugins/api.c: identify or1k pc register and mark it as read only Pierrick Bouvier
2026-07-07 6:12 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 67/91] tests/tcg/or1k: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 68/91] tests/tcg/ppc64: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 69/91] tests/tcg/ppc64: remove dependency on qemu/compiler.h Pierrick Bouvier
2026-07-07 6:16 ` Philippe Mathieu-Daudé
2026-07-07 16:25 ` Pierrick Bouvier
2026-07-09 10:52 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 70/91] tests/tcg/ppc64: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 71/91] tests/tcg/ppc64le: add missing float reference file Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 72/91] tests/tcg/ppc64le: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 73/91] tests/tcg/riscv64: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 74/91] tests/tcg/riscv64: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 75/91] tests/tcg/riscv64: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 76/91] tests/tcg/s390x/head64.S: declare _exit symbol after main Pierrick Bouvier
2026-07-07 6:17 ` Philippe Mathieu-Daudé
2026-07-06 22:33 ` [PATCH v3 77/91] tests/tcg/s390x: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 78/91] tests/tcg/s390x: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 79/91] tests/tcg/s390x: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 80/91] tests/tcg/sh4: add float reference files Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 81/91] tests/tcg/sh4: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 82/91] tests/tcg/tricore: system tests Pierrick Bouvier
2026-07-07 18:09 ` Parthiban
2026-07-07 18:19 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 83/91] Revert "tests/tcg/tricore: system tests" Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 84/91] tests/tcg/x86_64: add missing float reference file Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 85/91] tests/tcg/x86_64: user tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 86/91] tests/tcg/x86_64: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 87/91] tests/tcg/xtensa/crt.S: align .text section Pierrick Bouvier
2026-07-07 6:18 ` Philippe Mathieu-Daudé
2026-07-07 13:45 ` Max Filippov
2026-07-07 16:30 ` Pierrick Bouvier
2026-07-07 18:10 ` Pierrick Bouvier
2026-07-08 6:11 ` Max Filippov
2026-07-08 16:36 ` Pierrick Bouvier
2026-07-09 15:24 ` Pierrick Bouvier
2026-07-09 18:42 ` Max Filippov
2026-07-09 19:03 ` Pierrick Bouvier
2026-07-10 5:53 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 88/91] tests/tcg/xtensa: system tests Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 89/91] tests: remove tcg tests machinery Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 90/91] tests/tcg: remove Makefiles Pierrick Bouvier
2026-07-09 12:46 ` Alex Bennée
2026-07-09 14:26 ` Pierrick Bouvier
2026-07-06 22:33 ` [PATCH v3 91/91] configure: remove --cross-cc* options Pierrick Bouvier
2026-07-06 22:48 ` [PATCH v3 00/91] tests/tcg: run tests with meson Pierrick Bouvier
2026-07-07 6:27 ` Philippe Mathieu-Daudé
2026-07-08 12:09 ` Ilya Leoshkevich
2026-07-08 16:25 ` Pierrick Bouvier
2026-07-08 18:56 ` Thomas Huth
2026-07-08 19:58 ` Pierrick Bouvier
2026-07-09 13:50 ` Alex Bennée
2026-07-09 16:22 ` Alex Bennée
2026-07-09 16:43 ` Pierrick Bouvier
2026-07-10 6:32 ` Pierrick Bouvier
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.