"Maciej W. Rozycki" <ma...@codesourcery.com> writes:
> On Tue, 8 Jan 2013, Richard Sandiford wrote:
>> >> > I disabled 64 bit FPU instructions by "-msoft-float". This works, but
>> >> > using "-msingle-float" fails. This would be the better
>> >> > configuration. There are still 64 bit FPU instructions used (e.g. "dmfc1
>> >> > $2,$f0" when using "long double" multiplication). So "-msingle-float"
>> >> > doesn't seem to work on generic mips64-linux-gnu.
>> >> 
>> >> Right.  That combination hasn't really been defined.  What happens
>> >> for plain doubles?  Do you pass those in FPRs or GPRs?
>> >
>> >  IIUC the R5900 has an FPU that is functionally the same as that of the 
>> > R4640/R4650.  If that is the case, then there is no way to pass doubles in 
>> > FPRs -- there is no room to store the upper halves.
>> 
>> My point was that you could pass them in consecutive FPRs, like n32 does
>> for long double.  There's no architectural support for long double either,
>> but the decision was still to pass them in FPRs rather than GPRs.
>
>  You mean using a pair of FPRs (e.g. $f0/$f2) as a sum of two values of 
> different exponents for extra precision?  That would make sense, but would 
> not match the way the double type has been defined in the ISO C standard 
> for IEEE-754 targets -- please note that contrariwise the standard 
> provides more freedom as to how the long double type can be implemented on 
> IEEE-754 targets.

No, I mean passing the two 32-bit halves in two FPRs, like we pass the
two 64-bit halves of long doubles in two FPRs.  Like I say...

>> I'm not saying that that's a sensible precendent to copy.  I was just
>> using it as one example of why an ABI has to be defined.
>
>  Not necessarily, the double type may simply be banned or alias to the 
> single type.  Especially the latter -- such an arrangement is allowed by 
> ISO C as long as the target does not claim IEEE-754 compliance (we'd have 
> a problem with the Java frontend though) and I think such a compilation 
> mode might be permitted as long as it is useful to someone.

But that's the point: we have to define what the rules are.  The definition
includes what isn't allowed.

Richard

Reply via email to