qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 05/14] Make mtvscr use a helper


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 05/14] Make mtvscr use a helper
Date: Tue, 3 Feb 2009 20:59:36 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Thu, Jan 22, 2009 at 12:44:05PM -0800, Nathan Froyd wrote:
> Do this so we can set float statuses once per mtvscr, rather than once
> per Altivec instruction.
> 
> Signed-off-by: Nathan Froyd <address@hidden>

Thanks, applied.

> ---
>  target-ppc/helper.h    |    1 +
>  target-ppc/op_helper.c |   10 ++++++++++
>  target-ppc/translate.c |    9 ++++-----
>  3 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/target-ppc/helper.h b/target-ppc/helper.h
> index 755bfba..8c04ba7 100644
> --- a/target-ppc/helper.h
> +++ b/target-ppc/helper.h
> @@ -220,6 +220,7 @@ DEF_HELPER_4(vmsumuhs, void, avr, avr, avr, avr)
>  DEF_HELPER_4(vmsumshm, void, avr, avr, avr, avr)
>  DEF_HELPER_4(vmsumshs, void, avr, avr, avr, avr)
>  DEF_HELPER_4(vmladduhm, void, avr, avr, avr, avr)
> +DEF_HELPER_1(mtvscr, void, avr);
>  DEF_HELPER_2(lvebx, void, avr, tl)
>  DEF_HELPER_2(lvehx, void, avr, tl)
>  DEF_HELPER_2(lvewx, void, avr, tl)
> diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
> index 3086bfd..107f977 100644
> --- a/target-ppc/op_helper.c
> +++ b/target-ppc/op_helper.c
> @@ -2067,6 +2067,16 @@ STVE(stvewx, stl, bswap32, u32)
>  #undef I
>  #undef LVE
>  
> +void helper_mtvscr (ppc_avr_t *r)
> +{
> +#if defined(WORDS_BIGENDIAN)
> +    env->vscr = r->u32[3];
> +#else
> +    env->vscr = r->u32[0];
> +#endif
> +    set_flush_to_zero(vscr_nj, &env->vec_status);
> +}
> +
>  void helper_vaddcuw (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
>  {
>      int i;
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 1bbe7f5..19abec1 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -6268,15 +6268,14 @@ GEN_HANDLER(mfvscr, 0x04, 0x2, 0x18, 0x001ff800, 
> PPC_ALTIVEC)
>  
>  GEN_HANDLER(mtvscr, 0x04, 0x2, 0x19, 0x03ff0000, PPC_ALTIVEC)
>  {
> -    TCGv_i32 t;
> +    TCGv_ptr p;
>      if (unlikely(!ctx->altivec_enabled)) {
>          gen_exception(ctx, POWERPC_EXCP_VPU);
>          return;
>      }
> -    t = tcg_temp_new_i32();
> -    tcg_gen_trunc_i64_i32(t, cpu_avrl[rD(ctx->opcode)]);
> -    tcg_gen_st_i32(t, cpu_env, offsetof(CPUState, vscr));
> -    tcg_temp_free_i32(t);
> +    p = gen_avr_ptr(rD(ctx->opcode));
> +    gen_helper_mtvscr(p);
> +    tcg_temp_free_ptr(p);
>  }
>  
>  /* Logical operations */
> -- 
> 1.6.0.5
> 
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net




reply via email to

[Prev in Thread] Current Thread [Next in Thread]