From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/9571 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: long double on powerpc64 Date: Thu, 10 Mar 2016 23:17:59 -0500 Message-ID: <20160311041759.GU9349@brightrain.aerifal.cx> References: <20160311031636.GA3851@gordon.members.linode.com> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1457669902 25981 80.91.229.3 (11 Mar 2016 04:18:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 11 Mar 2016 04:18:22 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-9584-gllmg-musl=m.gmane.org@lists.openwall.com Fri Mar 11 05:18:16 2016 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1aeEWl-00052j-LH for gllmg-musl@m.gmane.org; Fri, 11 Mar 2016 05:18:15 +0100 Original-Received: (qmail 7425 invoked by uid 550); 11 Mar 2016 04:18:13 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 7402 invoked from network); 11 Mar 2016 04:18:12 -0000 Content-Disposition: inline In-Reply-To: <20160311031636.GA3851@gordon.members.linode.com> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:9571 Archived-At: On Thu, Mar 10, 2016 at 09:16:36PM -0600, Bobby Bingham wrote: > I've been working on a PPC64 port of musl lately. I've made some good > progress, and it's time to decide what to do about the long double type. > > The PPC64 ELFv2 ABI [1] calls for a 128 bit long double. It allows an > implementation to choose to use either IEEE quad, or IBM double double, > with IEEE quad being preferred. > > On the compiler side, it looks like things are a bit of a mess. > > Clang only supports IBM double double on PPC64, AFAICS, and therefore > won't work for us currently. > > GCC support is more complicated. It supports both 128 bit variants, as > well as supporting (and defaulting to) a 64 bit long double. To get a > 128 bit long double, you must build gcc with --with-long-double-128 or > pass -mlong-double-128, and even then you get IBM double double. To get > IEEE quad, you must additionally pass -mlong-double-128, though there > are whispers that the default may change in gcc 7 [2]. > > The final piece of bad news is that gcc can't successfully build musl on > PPC64 with IEEE quad long double. It chokes on even trivial code using > long double complex [3]. So only 64 bit long double is usable for now. > > The good news is that gcc's predefined macros are sufficient to detect > which long double variant is in use. My current thinking is that we can > support both 64 bit long and IEEE quad as two powerpc64 subarchs, even > if we can only implement 64 bit for now. Because it looks like the > future direction is for IEEE quad to become the default, I think that > should be the suffix-less subarch, and the 64 bit long double subarch > should have a -ld64 suffix or similar. My leaning would be to just go with ld64 if nobody has their act together for quad support, but let's see what people who want to use powerpc64 think about it. The only option that's not on the table is IBM double-double (because it's incompatible with musl's assumption of IEEE semantics; math-savvy people in the musl community already know this of course but I'm repeating it for the sake of possible newcomers). Thanks for digging up this information. Rich