Re: Proposal to switch powerpc64le to IEEE-754 binary128
Piotr Kubaj <[email protected]> Wed, 3 Jun 2026 07:17:48 +0200
| Newsgroups | gmane.os.freebsd.devel.ppc |
|---|---|
| Message-ID | <ah-4-7NZk9qFoxtL@talos-powerpc64le> |
--OMY8KCKeIqwo1OsO Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Depends what you mean. This proposal is about switching to IEEE-754 long double. It requires VSX, so doing the same on big-endian would raise the baseline to POWER7. There's no plan for that. There is IBM long double, but it's entirely non-standard. It would work even on G5, but while IEEE-754 long double is definitely an upgrade, IBM long double is either a downgrade or a sidegrade, so it's better to just stay on 64-bits for big-endian. On 26-06-02 23:56:13, Javi Hotmail wrote: > Why do you say "at least on powerpc64le"? Is there a problem of using 128= bits long double on powerpc64 big endian?. >=20 >=20 > On June 2, 2026 7:16:43 PM UTC, Piotr Kubaj <[email protected]> wrote: > >Hello, > > > >as you may know, FreeBSD currently uses 64-bit long double. Since plain > >double is also 64-bit, long double actually gives no advantage over > >double and is actually the same type. > > > >However, we can do better, at least on powerpc64le. On Linux with glibc, > >many distros have already switched to IEEE-754 binary128, which is > >128-bit long double. On FreeBSD, aarch64 and riscv64 already use 128-bit > >long double. > >Apart from the arguments "others do it", 128-bit long double provides > >obviously better precision - it's analogous to float vs double. > >Operations on long doubles are also slower and variables take twice as > >much memory, but that's expected of bigger types. > > > >Upgrades are another issue: LLVM uses different functions for operations > >on 64-bit long doubles and on binary128. This means that after upgrades, > >software using long doubles will need to be rebuilt. Otherwise, there's > >a risk of strange issues. I have verified that bootstraps for all the > >major languages work fine (rust, ghc, sbcl, openjdk), but I assume that > >some scientific software may have issues. > > > >The current patchset is at: https://reviews.freebsd.org/D57388 > > > >Some ports will probably also need to be patched, but that's another > >issue. > > > >If you have some spare system for testing, I recommend a try and a > >report, straight "make buildworld installworld" is expected to work. > > > >I have a powerpc64le VM where it works: > >root@ieeeldbl:~ # echo | cc -dM -E - | grep LDBL > >#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ > >#define __LDBL_DECIMAL_DIG__ 36 > >#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L > >#define __LDBL_DIG__ 33 > >#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L > >#define __LDBL_HAS_DENORM__ 1 > >#define __LDBL_HAS_INFINITY__ 1 > >#define __LDBL_HAS_QUIET_NAN__ 1 > >#define __LDBL_MANT_DIG__ 113 > >#define __LDBL_MAX_10_EXP__ 4932 > >#define __LDBL_MAX_EXP__ 16384 > >#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L > >#define __LDBL_MIN_10_EXP__ (-4931) > >#define __LDBL_MIN_EXP__ (-16381) > >#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L > >#define __LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L > > > >On a system with the current default, 64-bit long double, the following > >will be reported: > >root@blackbird:~ # echo | cc -dM -E - | grep LDBL > >#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ > >#define __LDBL_DECIMAL_DIG__ 17 > >#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L > >#define __LDBL_DIG__ 15 > >#define __LDBL_EPSILON__ 2.2204460492503131e-16L > >#define __LDBL_HAS_DENORM__ 1 > >#define __LDBL_HAS_INFINITY__ 1 > >#define __LDBL_HAS_QUIET_NAN__ 1 > >#define __LDBL_MANT_DIG__ 53 > >#define __LDBL_MAX_10_EXP__ 308 > >#define __LDBL_MAX_EXP__ 1024 > >#define __LDBL_MAX__ 1.7976931348623157e+308L > >#define __LDBL_MIN_10_EXP__ (-307) > >#define __LDBL_MIN_EXP__ (-1021) > >#define __LDBL_MIN__ 2.2250738585072014e-308L > >#define __LDBL_NORM_MAX__ 1.7976931348623157e+308L --OMY8KCKeIqwo1OsO Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJPBAABCAA5FiEEycyIeNkkgohzsoorelmbhSCDnJ0FAmofuPobFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwyAAoJEHpZm4Ugg5ydYrYQALqPGM7pDp4FO+BvwueW Lc5JnJWgQue1yKM9R+z+gFbUcHLeQFL/kRMrLO+aYNkg3+M1x/RQVitYfXAeezk8 z4OcSWXV6qEfb2VVOeQeBnjeirI6y8g7hRwirufv2ZcdTnh4y+mX0u5zB/Cbl+Cf yzj7n/v0NOca8fdn7GgO/IpQfwAm2W2+41Kl4wSuWrGcIX/m1/3bOigobKkTGDOK TYsWJWFqBEEjyGXNyi6Q/5Ydh0S4cM+arP36TDQ4M2g32HcpLgf8rHPhiMlnWIOW /RBp2BBJ5ohhd/vQi0alJFmGdPlLmW8qnBwd4XNBdILpmuF1tuYmWTVmqKt+iQ2t e5PSNr3Q/sc6M9rPAIUyDN2/9iDWGy7MKHonQ0l/j2TL9y2+C6uHvbnU8mRVuRuD rCu9oUTbZ9Z1sK74jZ4BfMXGi13Egp0xoGh8Cor21IahtegVDKuvajfSNsa3N3qb ZhR7QXLb4aBgM8uyIDqGmiO9jpORRwhvyOQW8XcPup6wDuKuRmV9l1ATghRk/zpg NaExPgj0cAP6xbMJUa0WSdZgS5eDe4UjPFzpQZ3Rdo4HchRIJ3biqjErZhZewL61 hSt75IxiUNjQULw6FFVoi3hr2oi8GsD104T1efXdat9XrXpsVH7K5LeL3vZPklYC SmpGzDEtggfiBLxnT/aJx1fn =PlWz -----END PGP SIGNATURE----- --OMY8KCKeIqwo1OsO--