On Tue, Oct 18, 2011 at 6:50 PM, Richard Henderson <r...@twiddle.net> wrote: > 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.
Excellent patch series. > 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. There is something fishy with Sparc fork() (spork?), I also tried to fix that in the past several times. Maybe fork() was actually implemented as vfork()? > 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 Thanks. Unfortunately I'm not sure I'll be able to fix and push my series before the freeze, because other than x86_64, none of the TCG targets implement AREG0 free mode. > > 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 > >