target/i386: remove unnecessary truncations
gen_lea_v_seg (called by gen_add_A0_ds_seg) already zeroes any bits of s->A0 beyond s->aflag. It does so before summing the segment base and, if not in 64-bit mode, also after summing it. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
83280f6a62
commit
8cc746525c
@ -1242,9 +1242,7 @@ static void gen_LDMXCSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
|
||||
|
||||
static void gen_MASKMOV(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
|
||||
{
|
||||
tcg_gen_mov_tl(s->A0, cpu_regs[R_EDI]);
|
||||
gen_extu(s->aflag, s->A0);
|
||||
gen_add_A0_ds_seg(s);
|
||||
gen_lea_v_seg(s, s->aflag, cpu_regs[R_EDI], R_DS, s->override);
|
||||
|
||||
if (s->prefix & PREFIX_DATA) {
|
||||
gen_helper_maskmov_xmm(tcg_env, OP_PTR1, OP_PTR2, s->A0);
|
||||
|
@ -4183,7 +4183,6 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
|
||||
tcg_gen_mov_tl(s->A0, cpu_regs[R_EBX]);
|
||||
tcg_gen_ext8u_tl(s->T0, cpu_regs[R_EAX]);
|
||||
tcg_gen_add_tl(s->A0, s->A0, s->T0);
|
||||
gen_extu(s->aflag, s->A0);
|
||||
gen_add_A0_ds_seg(s);
|
||||
gen_op_ld_v(s, MO_8, s->T0, s->A0);
|
||||
gen_op_mov_reg_v(s, MO_8, R_EAX, s->T0);
|
||||
@ -5835,7 +5834,6 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
|
||||
gen_update_cc_op(s);
|
||||
gen_update_eip_cur(s);
|
||||
tcg_gen_mov_tl(s->A0, cpu_regs[R_EAX]);
|
||||
gen_extu(s->aflag, s->A0);
|
||||
gen_add_A0_ds_seg(s);
|
||||
gen_helper_monitor(tcg_env, s->A0);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user