Changes since v2:
* Fixes to aarch64 guest. Some tcg_debug_asserts were triggering.
* Silly typo fixed in tcg/mips
* tcg/README updated.
Changes since v1:
* Added tcg_gen_deposit_z_*. Depositing into zero turns out to be
quite common among targets. Providing that as a primitive expander
allows us to easily generate optimal-ish code for hosts with and
without a real deposit operation.
* Cleanups in tcg/s390 akin to those I already did for tcg/arm.
* Add support in tcg/s390 for deposit into zero.
* More special cases in the expanders for better code generation,
especially on an x86 host *without* the extract primitives.
* Silly think-o on aarch64 host.
r~
Richard Henderson (18):
tcg: Add field extraction primitives
tcg: Minor adjustments to deposit expanders
tcg: Add deposit_z expander
tcg/aarch64: Implement field extraction opcodes
tcg/arm: Move isa detection to tcg-target.h
tcg/arm: Implement field extraction opcodes
tcg/i386: Implement field extraction opcodes
tcg/mips: Implement field extraction opcodes
tcg/ppc: Implement field extraction opcodes
tcg/s390: Expose host facilities to tcg-target.h
tcg/s390: Implement field extraction opcodes
tcg/s390: Support deposit into zero
target-alpha: Use deposit and extract ops
target-arm: Use new deposit and extract ops
target-i386: Use new deposit and extract ops
target-mips: Use the new extract op
target-ppc: Use the new deposit and extract ops
target-s390x: Use the new deposit and extract ops
target-alpha/translate.c | 67 +++---
target-arm/translate-a64.c | 79 +++-----
target-arm/translate.c | 37 +---
target-i386/translate.c | 45 +++--
target-mips/translate.c | 12 +-
target-ppc/translate.c | 35 ++--
target-s390x/translate.c | 34 ++--
tcg/README | 20 +-
tcg/aarch64/tcg-target.h | 4 +
tcg/aarch64/tcg-target.inc.c | 14 ++
tcg/arm/tcg-target.h | 38 +++-
tcg/arm/tcg-target.inc.c | 63 +++---
tcg/i386/tcg-target.h | 10 +
tcg/i386/tcg-target.inc.c | 38 ++++
tcg/ia64/tcg-target.h | 4 +
tcg/mips/tcg-target.h | 2 +
tcg/mips/tcg-target.inc.c | 4 +
tcg/optimize.c | 29 +++
tcg/ppc/tcg-target.h | 4 +
tcg/ppc/tcg-target.inc.c | 10 +
tcg/s390/tcg-target.h | 122 ++++++-----
tcg/s390/tcg-target.inc.c | 113 ++++++-----
tcg/sparc/tcg-target.h | 4 +
tcg/tcg-op.c | 472 ++++++++++++++++++++++++++++++++++++++++++-
tcg/tcg-op.h | 18 ++
tcg/tcg-opc.h | 4 +
tcg/tcg.h | 8 +
tcg/tci/tcg-target.h | 4 +
28 files changed, 979 insertions(+), 315 deletions(-)
--
2.7.4