> 在 2016年12月22日,23:48,Yunqiang Su <yunqiang...@imgtec.com> 写道:
> 
>> 
>> 在 2016年12月22日,23:31,Richard Sandiford <rdsandif...@googlemail.com> 写道:
>> 
>> Matthew Fortune <matthew.fort...@imgtec.com> writes:
>>> Sandra Loosemore <san...@codesourcery.com> writes:
>>>> On 12/21/2016 11:54 AM, Yunqiang Su wrote:
>>>>> By this patch, I add a build-time option ` --with-unfused-madd4=yes/no',
>>>>> and runtime option -m(no-)unfused-madd4,
>>>>> to disable generate madd.fmt instructions.
>>>> 
>>>> Your patch also needs a documentation change so that the new
>>>> command-line option is listed in the GCC manual with other MIPS target
>>>> options.
>>> 
>>> Any opinions on option names to control this? Is it best to target the 
>>> specific
>>> feature that is non-compliant on loongson or apply a general -mfix-loongson
>>> type option?
>>> 
>>> I'm not sure I have a strong opinion either way but there do seem to be
>>> multiple possible variants.
>> 
>> Wasn't sure from this thread whether Loongson simply had a fused
>> implementation (without intermediate rounding) or whether the
>> instructions gave numerically incorrect results for some inputs.
> 
> I test to define ISA_HAS_FUSED_MADD4 true and 
> define ISA_HAS_UNFUSED_MADD4 false, and try to build a test case.
> With ISA_HAS_FUSED_MADD4, the result is about 1e-17,
> and with ISA_HAS_UNFUSED_MADD4, the result is about 1e-17,
> both of the are incorrect (the expect value is 0).
> 
> The test case is 
> 
> #include <stdio.h>
> 
> double a = 0.6;
> double b = 0.4;
> double c = 0.6;
> double d = 0.4;
> 
> int main(void)
> {
>        double x = a * b - c * d;
>        printf("%le\n", x);
>        return 0;
> }
> 
> 
>> It sounds from a later thread like it's generating incorrect results,
>> is that right?  If so, then FWIW I agree an -mfix option would be more
>> consistent.  E.g. one of the -mfix-vr4120 errata was an incorrect
>> integer division result and one of the -mfix-sb1 errata was an incorrect
>> single-precision float division result.  The latter case could have been
>> handled by an option to disable DIV.S and DIV.PS, but the -mfix option
>> gave more control.
>> 
>> If instead the problem is that the instructions are fused then that's
>> also what the original MIPS 4 parts did, so maybe an option to control
>> fusedness would make sense.
> 
> The result to thread it fused or unfused, is different, while neither of them
> is correct.

ohh, the result are same, and neither is correct.
both of them are 1.332268e-17.

> 
>> 
>> Thanks,
>> Richard

Reply via email to