qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] sh4: Add FMAC instruction support


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH] sh4: Add FMAC instruction support
Date: Wed, 14 Jan 2009 22:03:22 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Mon, Jan 12, 2009 at 10:14:14PM +0100, Lionel Landwerlin wrote:
> sh4: Add FMAC instruction support
> 
> Signed-off-by: Laurent Desnogues <address@hidden>
> Signed-off-by: Lionel Landwerlin <address@hidden>

Thanks, applied.

> ---
>  target-sh4/helper.h    |    1 +
>  target-sh4/op_helper.c |   11 +++++++++++
>  target-sh4/translate.c |   11 +++++++++++
>  3 files changed, 23 insertions(+), 0 deletions(-)
> 
> diff --git a/target-sh4/helper.h b/target-sh4/helper.h
> index 631e7e1..e665185 100644
> --- a/target-sh4/helper.h
> +++ b/target-sh4/helper.h
> @@ -35,6 +35,7 @@ DEF_HELPER_2(fdiv_FT, i32, i32, i32)
>  DEF_HELPER_2(fdiv_DT, i64, i64, i64)
>  DEF_HELPER_1(float_FT, i32, i32)
>  DEF_HELPER_1(float_DT, i64, i32)
> +DEF_HELPER_3(fmac_FT, i32, i32, i32, i32)
>  DEF_HELPER_2(fmul_FT, i32, i32, i32)
>  DEF_HELPER_2(fmul_DT, i64, i64, i64)
>  DEF_HELPER_1(fneg_T, i32, i32)
> diff --git a/target-sh4/op_helper.c b/target-sh4/op_helper.c
> index 6352219..ead14e3 100644
> --- a/target-sh4/op_helper.c
> +++ b/target-sh4/op_helper.c
> @@ -531,6 +531,17 @@ uint64_t helper_float_DT(uint32_t t0)
>      return d.ll;
>  }
>  
> +uint32_t helper_fmac_FT(uint32_t t0, uint32_t t1, uint32_t t2)
> +{
> +    CPU_FloatU f0, f1, f2;
> +    f0.l = t0;
> +    f1.l = t1;
> +    f2.l = t2;
> +    f0.f = float32_mul(f0.f, f1.f, &env->fp_status);
> +    f0.f = float32_add(f0.f, f2.f, &env->fp_status);
> +    return f0.l;
> +}
> +
>  uint32_t helper_fmul_FT(uint32_t t0, uint32_t t1)
>  {
>      CPU_FloatU f0, f1;
> diff --git a/target-sh4/translate.c b/target-sh4/translate.c
> index 73134f0..bce7463 100644
> --- a/target-sh4/translate.c
> +++ b/target-sh4/translate.c
> @@ -1176,6 +1176,17 @@ static void _decode_opc(DisasContext * ctx)
>           }
>       }
>       return;
> +    case 0xf00e: /* fmac FR0,RM,Rn */
> +        {
> +            CHECK_FPU_ENABLED
> +            if (ctx->fpscr & FPSCR_PR) {
> +                break; /* illegal instruction */
> +            } else {
> +                gen_helper_fmac_FT(cpu_fregs[FREG(B11_8)],
> +                                   cpu_fregs[FREG(0)], 
> cpu_fregs[FREG(B7_4)], cpu_fregs[FREG(B11_8)]);
> +                return;
> +            }
> +        }
>      }
>  
>      switch (ctx->opcode & 0xff00) {
> -- 
> 1.5.6.5
> 
> 
> 
> 
> 
> 

-- 
  .''`.  Aurelien Jarno             | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   address@hidden         | address@hidden
   `-    people.debian.org/~aurel32 | www.aurel32.net




reply via email to

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