From: Richard Henderson Date: Thu, 29 Aug 2013 22:00:16 +0000 (-0700) Subject: tcg-i386: Make use of zero-extended memory helper routines X-Git-Tag: v1.7.0-rc0~141^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=6fb5874590589585cdcad4ca2431d9d8d4d491b1;p=users%2Fdwmw2%2Fqemu.git tcg-i386: Make use of zero-extended memory helper routines For 8 and 16-bit unsigned loads, rely on the zero-extension from the helper and use a smaller 32-bit move insn. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index 3ee54f18e2..c1f07415ab 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1531,20 +1531,17 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *l) case 1 | 4: tcg_out_ext16s(s, data_reg, TCG_REG_EAX, P_REXW); break; - case 0: - tcg_out_ext8u(s, data_reg, TCG_REG_EAX); - break; - case 1: - tcg_out_ext16u(s, data_reg, TCG_REG_EAX); - break; - case 2: - tcg_out_mov(s, TCG_TYPE_I32, data_reg, TCG_REG_EAX); - break; #if TCG_TARGET_REG_BITS == 64 case 2 | 4: tcg_out_ext32s(s, data_reg, TCG_REG_EAX); break; #endif + case 0: + case 1: + /* Note that the helpers have zero-extended to tcg_target_long. */ + case 2: + tcg_out_mov(s, TCG_TYPE_I32, data_reg, TCG_REG_EAX); + break; case 3: if (TCG_TARGET_REG_BITS == 64) { tcg_out_mov(s, TCG_TYPE_I64, data_reg, TCG_REG_RAX);