On Sun, Sep 09, 2012 at 01:40:52AM +0400, Max Filippov wrote:
> On Sun, Sep 9, 2012 at 1:12 AM, Aurelien Jarno <aurel...@aurel32.net> wrote:
> > float{32,64}_muladd takes an enum as a parameter, and not flags. It
> > means the parameter should be checked with == test instead of &.
> >
> > Cc: Peter Maydell <peter.mayd...@linaro.org>
> > Signed-off-by: Aurelien Jarno <aurel...@aurel32.net>
> > ---
> 
> Hi Aurelien,
> 
> I've also stumbled upon this bug, have a patch for it in the xtensa tree.
> I guess that the interface was designed to allow combining these flags, why
> don't just make them independent:

My idea was that negating both the product and c is equivalent to
negating the result, so there is no need to allow all of them
independent.

> diff --git a/fpu/softfloat.h b/fpu/softfloat.h
> index feec3a1..2860ca0 100644
> --- a/fpu/softfloat.h
> +++ b/fpu/softfloat.h
> @@ -219,7 +219,7 @@ void float_raise( int8 flags STATUS_PARAM);
>  enum {
>      float_muladd_negate_c = 1,
>      float_muladd_negate_product = 2,
> -    float_muladd_negate_result = 3,
> +    float_muladd_negate_result = 4,
>  };
> 
>  
> /*----------------------------------------------------------------------------

That said your solution is also fine, it just allow multiple way to do
the same thing. 

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

Reply via email to