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.