qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] target-ppc: fix nego and subf*o instructions


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH] target-ppc: fix nego and subf*o instructions
Date: Mon, 1 Apr 2013 02:22:31 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

On Sun, Mar 31, 2013 at 04:19:45PM -0700, Richard Henderson wrote:
> On 2013-03-30 16:54, Aurelien Jarno wrote:
> >The overflow computation of nego and subf*o instructions has been broken
> >in commit ffe30937. This patch fixes it.
> >
> >With this change the PPC emulation passes the Gwenole Beauchesne
> >testsuite again.
> >
> >Cc: Alexander Graf <address@hidden>
> >Cc: Richard Henderson <address@hidden>
> >Signed-off-by: Aurelien Jarno <address@hidden>
> >---
> >  target-ppc/translate.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> >index 5e741d1..062493a 100644
> >--- a/target-ppc/translate.c
> >+++ b/target-ppc/translate.c
> >@@ -749,7 +749,7 @@ static inline void gen_op_arith_compute_ov(DisasContext 
> >*ctx, TCGv arg0,
> >      tcg_gen_xor_tl(cpu_ov, arg0, arg1);
> >      tcg_gen_xor_tl(t0, arg1, arg2);
> >      if (sub) {
> >-        tcg_gen_and_tl(cpu_ov, cpu_ov, t0);
> >+        tcg_gen_andc_tl(cpu_ov, t0, cpu_ov);
> >      } else {
> >          tcg_gen_andc_tl(cpu_ov, cpu_ov, t0);
> >      }
> 
> I'm a bit confused.  This is the exact same algorithm that's used on
> ARM and i386.  And as far as I can determine, all three platforms
> have the same definition of "overflow".
> 

I based my patch on the previous version of the code, which swaps
*both* the brcond conditions testing the results of the xor. As far I
understand the brcond are replaced by the and/andc in your patch.

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



reply via email to

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