@@ -3192,10 +3192,14 @@ static void gen_sse(DisasContext *s, int b, target_ulong pc_start, int rex_r)
case 0x16e: /* movd xmm, ea */
#ifdef TARGET_X86_64
if (s->dflag == 2) {
+ TCGv_i64 tmp;
gen_ldst_modrm(s, modrm, OT_QUAD, OR_TMP0, 0);
tcg_gen_addi_ptr(cpu_ptr0, cpu_env,
offsetof(CPUX86State,xmm_regs[reg]));
- gen_helper_movq_mm_T0_xmm(cpu_ptr0, cpu_T[0]);
+ tmp = tcg_temp_new_i64();
+ tcg_gen_ext_tl_i64(tmp, cpu_T[0]);
+ gen_helper_movq_mm_T0_xmm(cpu_ptr0, tmp);
+ tcg_temp_free_i64(tmp);
} else
#endif
{
Insert call to tcg_gen_ext_tl_i64(). Signed-off-by: Andreas Färber <andreas.faerber@web.de> --- target-i386/translate.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)