Having to support bswap in the guest memory operations at times
requires an irritating number of temporaries. Better to allow
the bswap operations to be expanded outside of the memory ops
and let register allocation do its thing.
This is something that I've been planning to do for some time,
to aid i386 and arm32 especially. But I've been prompted again
by the nacent risc-v backend, for which this would be especially
irritating to have to open-code.
Alistair, for convenience I've pushed this to
https://github.com/rth7680/qemu.git tcg-next-for-4.0
r~
Richard Henderson (5):
tcg: Add TCG_TARGET_HAS_MEMORY_BSWAP
tcg/optimize: Optimize bswap
tcg/i386: Set TCG_TARGET_HAS_MEMORY_BSWAP with have_movbe
tcg/aarch64: Set TCG_TARGET_HAS_MEMORY_BSWAP to false
tcg/arm: Set TCG_TARGET_HAS_MEMORY_BSWAP to false
tcg/aarch64/tcg-target.h | 1 +
tcg/arm/tcg-target.h | 1 +
tcg/i386/tcg-target.h | 3 +
tcg/mips/tcg-target.h | 1 +
tcg/ppc/tcg-target.h | 1 +
tcg/s390/tcg-target.h | 1 +
tcg/sparc/tcg-target.h | 1 +
tcg/tci/tcg-target.h | 2 +
tcg/aarch64/tcg-target.inc.c | 63 +++--------
tcg/arm/tcg-target.inc.c | 198 +++++++++--------------------------
tcg/i386/tcg-target.inc.c | 112 +++++++-------------
tcg/optimize.c | 12 +++
tcg/tcg-op.c | 118 ++++++++++++++++++++-
13 files changed, 234 insertions(+), 280 deletions(-)
--
2.17.2