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.


Reply via email to