Re: i386 floating point expertise needed

Matthias Drochner <[email protected]>
Newsgroups gmane.os.netbsd.ports.i386
Message-ID <[email protected]>
On 11/30/2017 05:41 PM, Terry Moore wrote:
>> Does the i386 function return for floats (doubles) also return more bits
> than are expected by the data type?
>
> Yes. Returns are on the stack as 80-bit values.

Better be more precise: The return value in on the _FP_ register stack.
While these registers hold 80-bit values, at least in a simple test
case the called function makes sure that no excess precision is
returned to the caller.
The test case is: compile the attached file with "cc -S -m32 ftest.c".
In my case (gcc 5.4 on Linux/amd64) the compiler issues a series
of fld/fst. With -O6, only an "fldl" of the 64-bit constant is left.

best regards
Matthias



------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
ftest.c (text/x-csrc, 66 B)
double
xxx()
{
	long double a = (long double)1.0/5;
	return a;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.