On 29 November 2013 03:00, Richard Henderson <r...@twiddle.net> wrote: > Merge gen_op_addl_A0_im and gen_op_addq_A0_im into gen_add_A0_im > and clean up the ifdef. > > Replace the one remaining user of gen_op_addl_A0_im with gen_add_A0_im. > > Signed-off-by: Richard Henderson <r...@twiddle.net> > --- > target-i386/translate.c | 27 +++++---------------------- > 1 file changed, 5 insertions(+), 22 deletions(-) > > diff --git a/target-i386/translate.c b/target-i386/translate.c > index 19cabf6..ee9d586 100644 > --- a/target-i386/translate.c > +++ b/target-i386/translate.c > @@ -376,29 +376,12 @@ static inline void gen_op_mov_v_reg(TCGMemOp ot, TCGv > t0, int reg) > } > } > > -static inline void gen_op_addl_A0_im(int32_t val) > -{ > - tcg_gen_addi_tl(cpu_A0, cpu_A0, val); > -#ifdef TARGET_X86_64 > - tcg_gen_andi_tl(cpu_A0, cpu_A0, 0xffffffff); > -#endif > -} > - > -#ifdef TARGET_X86_64 > -static inline void gen_op_addq_A0_im(int64_t val) > -{ > - tcg_gen_addi_tl(cpu_A0, cpu_A0, val); > -} > -#endif > - > static void gen_add_A0_im(DisasContext *s, int val) > { > -#ifdef TARGET_X86_64 > - if (CODE64(s)) > - gen_op_addq_A0_im(val); > - else > -#endif > - gen_op_addl_A0_im(val); > + tcg_gen_addi_tl(cpu_A0, cpu_A0, val); > + if (!CODE64(s)) { > + tcg_gen_ext32u_tl(cpu_A0, cpu_A0); > + } > } > > static inline void gen_op_jmp_T0(void) > @@ -6231,7 +6214,7 @@ static target_ulong disas_insn(CPUX86State *env, > DisasContext *s, > exception */ > gen_op_jmp_T0(); > /* pop selector */ > - gen_op_addl_A0_im(1 << dflag); > + gen_add_A0_im(s, 1 << dflag);
Why is it OK that we no longer zero extend the result of the add from 32 to 64 bits if CODE64(s) ? Previously we did the extend unconditionally. > gen_op_ld_v(s, dflag, cpu_T[0], cpu_A0); > gen_op_movl_seg_T0_vm(R_CS); > /* add stack offset */ thanks -- PMM