mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
tcg-mips: Move bswap code to a subroutine
Without the mips32r2 instructions to perform swapping, bswap is quite large, dominating the size of each reverse-endian qemu_ld/qemu_st operation. Create a subroutine in the prologue block. The subroutine requires 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-2-git-send-email-jinguojie@loongson.cn>
This commit is contained in:
parent
ffe22bf510
commit
bb08afe9f0
2 changed files with 139 additions and 70 deletions
|
@ -117,11 +117,11 @@ extern bool use_mips32r2_instructions;
|
|||
#define TCG_TARGET_HAS_muls2_i32 (!use_mips32r6_instructions)
|
||||
#define TCG_TARGET_HAS_muluh_i32 1
|
||||
#define TCG_TARGET_HAS_mulsh_i32 1
|
||||
#define TCG_TARGET_HAS_bswap32_i32 1
|
||||
|
||||
/* optional instructions detected at runtime */
|
||||
#define TCG_TARGET_HAS_movcond_i32 use_movnz_instructions
|
||||
#define TCG_TARGET_HAS_bswap16_i32 use_mips32r2_instructions
|
||||
#define TCG_TARGET_HAS_bswap32_i32 use_mips32r2_instructions
|
||||
#define TCG_TARGET_HAS_deposit_i32 use_mips32r2_instructions
|
||||
#define TCG_TARGET_HAS_ext8s_i32 use_mips32r2_instructions
|
||||
#define TCG_TARGET_HAS_ext16s_i32 use_mips32r2_instructions
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue