OSDN Git Service

tcg-mips: Add bswap32u and bswap64
authorJin Guojie <jinguojie@loongson.cn>
Thu, 5 Jan 2017 04:57:49 +0000 (12:57 +0800)
committerRichard Henderson <rth@twiddle.net>
Fri, 6 Jan 2017 18:03:54 +0000 (10:03 -0800)
commit7f54eaa3b78d71cb57e45a719980f9b5ff06d21c
treeed8a7f68d11704f5aa62521d528b02333bf458d6
parent0119b1927d531f3fac22b9b4da01dafc23644973
tcg-mips: Add bswap32u and bswap64

Without the mips32r2 instructions to perform swapping, bswap is quite large,
dominating the size of each reverse-endian qemu_ld/qemu_st operation.

Create two subroutines in the prologue block.  The subroutines require extra
reserved registers (TCG_TMP[2, 3]).  Using these within qemu_ld means that
we need not place additional restrictions on the qemu_ld outputs.

Tested-by: Aurelien Jarno <aurelien@aurel32.net>
Tested-by: James Hogan <james.hogan@imgtec.com>
Tested-by: YunQiang Su <wzssyqa@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Jin Guojie <jinguojie@loongson.cn>
Message-Id: <1483592275-4496-5-git-send-email-jinguojie@loongson.cn>
tcg/mips/tcg-target.inc.c