On 19/03/2019 17:21, Richard Henderson wrote: > Changes since v2: > * Several generic tcg patches to improve dup vs dupi vs dupm. > > In particular, if a global temp (like guest r10) is not in > a host register, we should duplicate from memory instead of > loading to an integer register, spilling to stack, loading > to a vector register, and then duplicating. > > * I have more confidence that 32-bit ppc host should work > this time around. No testing on that front yet, but I've > unified some code sequences with 64-bit ppc host. > > * Base altivec now supports V128 only. Moved V64 support to > Power7 (v2.06), which has 64-bit load/store. > > * Dropped support for 64-bit vector multiply using Power8. > The expansion was too large compared to using integer regs. > > > r~ > > > Richard Henderson (17): > target/arm: Fill in .opc for cmtst_op > tcg: Assert fixed_reg is read-only > tcg: Return bool success from tcg_out_mov > tcg: Support cross-class moves without instruction support > tcg: Allow add_vec, sub_vec, neg_vec, not_vec to be expanded > tcg: Promote tcg_out_{dup,dupi}_vec to backend interface > tcg: Manually expand INDEX_op_dup_vec > tcg: Add tcg_out_dupm_vec to the backend interface > tcg/i386: Implement tcg_out_dupm_vec > tcg/aarch64: Implement tcg_out_dupm_vec > tcg: Add INDEX_op_dup_mem_vec > tcg/ppc: Initial backend support for Altivec > tcg/ppc: Support vector shift by immediate > tcg/ppc: Support vector multiply > tcg/ppc: Update vector support to v2.06 > tcg/ppc: Update vector support to v2.07 > tcg/ppc: Update vector support to v3.00 > > tcg/ppc/tcg-target.h | 36 +- > tcg/ppc/tcg-target.opc.h | 11 + > tcg/tcg-op.h | 1 + > tcg/tcg-opc.h | 1 + > target/arm/translate.c | 4 + > tcg/aarch64/tcg-target.inc.c | 70 ++- > tcg/arm/tcg-target.inc.c | 7 +- > tcg/i386/tcg-target.inc.c | 78 ++- > tcg/mips/tcg-target.inc.c | 3 +- > tcg/ppc/tcg-target.inc.c | 1077 +++++++++++++++++++++++++++++++--- > tcg/riscv/tcg-target.inc.c | 5 +- > tcg/s390/tcg-target.inc.c | 3 +- > tcg/sparc/tcg-target.inc.c | 3 +- > tcg/tcg-op-gvec.c | 88 +-- > tcg/tcg-op-vec.c | 60 +- > tcg/tcg.c | 252 ++++++-- > tcg/tci/tcg-target.inc.c | 3 +- > 17 files changed, 1482 insertions(+), 220 deletions(-) > create mode 100644 tcg/ppc/tcg-target.opc.h
I've given this a quick spin on my MacOS images on a G4, and a basic boot to userspace under qemu-system-ppc for MacOS 9 and MacOS X don't show anything obvious so far. Lightly-Tested-By: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> (It's a bit tricky to test much as something odd is going on with performance here - the emulator seems disproportionately slow during IO given the speed of the G4 CPU). ATB, Mark.