On Sat, Oct 24, 2009 at 1:19 PM, <juha.riihim...@nokia.com> wrote: > From: Juha Riihimäki <juha.riihim...@nokia.com> > > In the existing code shift value is clobbered during the pass loop. > This patch changes the code so that it stores the intermediate > result in the target neon register directly and eliminates the need > to use a temporary to hold the intermediate value thus leaving the > shift value in the temporary variable intact. This is a new patch > in this version of the patch series. > > Signed-off-by: Juha Riihimäki <juha.riihim...@nokia.com>
Acked-by: Laurent Desnogues <laurent.desnog...@gmail.com> Laurent > --- > target-arm/translate.c | 12 +++--------- > 1 files changed, 3 insertions(+), 9 deletions(-) > > diff --git a/target-arm/translate.c b/target-arm/translate.c > index 9d13d42..8a85db6 100644 > --- a/target-arm/translate.c > +++ b/target-arm/translate.c > @@ -4680,18 +4680,12 @@ static int disas_neon_data_insn(CPUState * env, > DisasContext *s, uint32_t insn) > else > gen_neon_narrow_satu(size - 1, tmp, cpu_V0); > } > - if (pass == 0) { > - if (size != 3) { > - dead_tmp(tmp2); > - } > - tmp2 = tmp; > - } else { > - neon_store_reg(rd, 0, tmp2); > - neon_store_reg(rd, 1, tmp); > - } > + neon_store_reg(rd, pass, tmp); > } /* for pass */ > if (size == 3) { > tcg_temp_free_i64(tmp64); > + } else { > + dead_tmp(tmp2); > } > } else if (op == 10) { > /* VSHLL */ > -- > 1.6.5 > > > >