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