Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 May 2019 23:04:38 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Yuri <yuri@rawbw.com>
Cc:        Freebsd hackers list <freebsd-hackers@FreeBSD.org>
Subject:   Re: What is the portable 128-bit floating point type?
Message-ID:  <20190525200437.GV2748@kib.kiev.ua>
In-Reply-To: <eb15d9e4-c1d4-3886-a3b7-1264c12396cd@rawbw.com>
References:  <eb15d9e4-c1d4-3886-a3b7-1264c12396cd@rawbw.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, May 25, 2019 at 12:42:26PM -0700, Yuri wrote:
> 'long double' is 12 bytes on i386 and 16 bytes on amd64.
> 
> There is a gcc-specific  __float128 type: 
> https://stackoverflow.com/questions/13516476/long-double-gcc-specific-and-float128
> 
Neither i386 nor amd64 have hardware-supported 128 bit floating point
type. long double is defined by both i386 and amd64 Unix ABI as 80 bits
(10 bytes) representation as defined by IEEEE FP standard and supported
by x87 FPU (not-SSE). The difference in size is due to the different
natural alignment between 32 and 64 bit ISA.

The x86_64 psABI has interesting note that Android (non-Unix) ABI defines
128bit representation for long double.  Operations on it must be implemented
in software.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190525200437.GV2748>