target-mips: implement unaligned loads using TCG
authorAurelien Jarno <aurelien@aurel32.net>
Tue, 9 Oct 2012 19:53:21 +0000 (21:53 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 31 Oct 2012 21:20:47 +0000 (22:20 +0100)
commitfc40787abcf8452b8f50d92b7a13243a12972c7a
treeff8c86f42a6930e4e7650c264e8b540bc0e1bd43
parent18bba4dc781a273c2c1ff5baec2909c214e2e0fa
target-mips: implement unaligned loads using TCG

Load/store from helpers should be avoided as they are quite
inefficient. Rewrite unaligned loads instructions using TCG and
aligned loads. The number of actual loads operations to implement
an unaligned load instruction is reduced from up to 8 to 1.

Note: As we can't rely on shift by 32 or 64 undefined behaviour,
the code loads already shift by one constants.

Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-mips/helper.h
target-mips/op_helper.c
target-mips/translate.c