On 26/05/2024 20:36, Richard Henderson wrote:
Let risu accept elf test files, adjusted from v1.
Adjust risugen to invoke the assembler and linker,
with a cross-compiler prefix if needed.
Add some sparc64 testing which utilizes this.
Changes for v2:
- Implement VIS2 through VIS4.
There's something odd going on with the Sparc M8 Solaris host where
the values recorded via RISU for some floating-point operations are
incorrectly rounded, but performing the same operations with the
same inputs in a standalone test program produces correct results.
I wonder if there's some unfinished_FPop exception being generated
and the operating system emulation is producing incorrect results.
I'd be much happier if I could test this on Linux...
r~
Richard Henderson (13):
risu: Allow use of ELF test files
Build elf test cases instead of raw binaries
Introduce host_context_t
risu: Add initial sparc64 support
risugen: Be explicit about print destinations
risugen: Add sparc64 support
contrib/generate_all: Do not rely on ag
sparc64: Add a few logical insns
sparc64: Add VIS1 instructions
sparc64: Add VIS2 and FMAF insns
sparc64: Add VIS3 instructions
sparc64: Add IMA instructions
sparc64: Add VIS4 instructions
Makefile | 22 ++-
risu.h | 16 +-
risu_reginfo_aarch64.h | 2 +
risu_reginfo_arm.h | 2 +
risu_reginfo_i386.h | 2 +
risu_reginfo_loongarch64.h | 3 +
risu_reginfo_m68k.h | 2 +
risu_reginfo_ppc64.h | 2 +
risu_reginfo_s390x.h | 2 +
risu_reginfo_sparc64.h | 36 ++++
risu.c | 59 +++++-
risu_aarch64.c | 6 +-
risu_arm.c | 7 +-
risu_i386.c | 7 +-
risu_loongarch64.c | 6 +-
risu_m68k.c | 6 +-
risu_ppc64.c | 6 +-
risu_reginfo_loongarch64.c | 3 +-
risu_reginfo_sparc64.c | 186 ++++++++++++++++++
risu_s390x.c | 5 +-
risu_sparc64.c | 52 +++++
configure | 2 +
contrib/generate_all.sh | 4 +-
risugen | 10 +-
risugen_common.pm | 68 ++++++-
risugen_sparc64.pm | 385 +++++++++++++++++++++++++++++++++++++
sparc64.risu | 298 ++++++++++++++++++++++++++++
test.ld | 12 ++
test_aarch64.s | 4 +-
test_arm.s | 16 +-
test_i386.S | 4 +-
test_sparc64.s | 137 +++++++++++++
32 files changed, 1298 insertions(+), 74 deletions(-)
create mode 100644 risu_reginfo_sparc64.h
create mode 100644 risu_reginfo_sparc64.c
create mode 100644 risu_sparc64.c
create mode 100644 risugen_sparc64.pm
create mode 100644 sparc64.risu
create mode 100644 test.ld
create mode 100644 test_sparc64.s
Nice! I don't have any experience with RISU so I don't feel too qualified to review
the series, but obviously there are clear benefits to having SPARC support included :)
ATB,
Mark.