Better tested this time, including aarch64 host.

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/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                 | 465 ++++++++++++++++++++++++++++++++++++++++++-
 tcg/tcg-op.h                 |  18 ++
 tcg/tcg-opc.h                |   4 +
 tcg/tcg.h                    |   8 +
 tcg/tci/tcg-target.h         |   4 +
 27 files changed, 954 insertions(+), 313 deletions(-)

-- 
2.7.4


Reply via email to