This started out to be simply flushing out the VIS2 instruction set. But when I got a look a the DT0/1 "calling convention" I choked, and thought we could really do better than that.
The end result (op_opt,out_asm) looks significantly cleaner for a 64-bit host. It looks about the same for a 32-bit host. I've been testing this vs the gcc testsuite, both for its generic ieee test cases, and the vectorization tests w/ -mvis2. Watch out for the last patch. It was an attempt to get rid of the hundreds of tls failures in the gcc testsuite by supporting NPTL. Except the clone syscall crashes, and seems to be crashing at a point where it's difficult to see what's going wrong. That patch is present here for discussion only. All of this is relative to blueswirl's sparc tree. Which I think should go in as a most excellent cleanup of target-sparc. I've pushed the tree to git://repo.or.cz/qemu/rth.git rth/vis r~ Richard Henderson (21): target-sparc: Add accessors for single-precision fpr access. target-sparc: Mark fprs dirty in store accessor. target-sparc: Add accessors for double-precision fpr access. target-sparc: Pass float64 parameters instead of dt0/1 temporaries. target-sparc: Make VIS helpers const when possible. target-sparc: Extract common code for floating-point operations. target-sparc: Extract float128 move to a function. target-sparc: Undo cpu_fpr rename. target-sparc: Change fpr representation to doubles. tcg: Optimize some forms of deposit. target-sparc: Do exceptions management fully inside the helpers. sparc-linux-user: Handle SIGILL. target-sparc: Implement PDIST. target-sparc: Implement fpack{16,32,fix}. target-sparc: Implement EDGE* instructions. target-sparc: Implement ALIGNADDR* inline. target-sparc: Implement BMASK/BSHUFFLE. target-sparc: Tidy fpack32. target-sparc: Implement FALIGNDATA inline. sparc-linux-user: Add some missing syscall numbers sparc-linux-user: Enable NPTL configure | 3 + gdbstub.c | 35 +- linux-user/main.c | 9 + linux-user/signal.c | 28 +- linux-user/sparc/syscall_nr.h | 3 + linux-user/syscall.c | 12 +- monitor.c | 96 ++-- target-sparc/cpu.h | 38 +- target-sparc/cpu_init.c | 6 +- target-sparc/fop_helper.c | 294 ++++++--- target-sparc/helper.h | 120 ++-- target-sparc/ldst_helper.c | 123 +--- target-sparc/machine.c | 20 +- target-sparc/translate.c | 1461 ++++++++++++++++++++++++----------------- target-sparc/vis_helper.c | 251 +++++--- tcg/tcg-op.h | 65 ++- 16 files changed, 1503 insertions(+), 1061 deletions(-) -- 1.7.6.4