On Wed, Jan 27, 2021 at 07:43:56PM -0600, Segher Boessenkool wrote:
> On Wed, Jan 27, 2021 at 01:06:46PM -0600, will schmidt wrote:
> > On Thu, 2021-01-14 at 11:59 -0500, Michael Meissner via Gcc-patches wrote:
> > > November 19th, 2020:
> > > Message-ID: <[email protected]>
> >
> > Subject and date should be sufficient
>
> Only if people pick good subjects, and do not send ten patches with a
> similar subject line on the same day. I asked for the message id,
> that works pretty much everywhere.
>
> > _if_ having the old versions
> > of the patchs are necessary to review the latest version of the
> > patch. Which ideally is not the case.
>
> Stronger that that: I need to know what changed! So please just explain
> what changed, in just a short sentence or two, or more if that is needed
> (but not if it is not needed).
In the past you complained that the patch would abort if the user did not link
against GLIBC 2.32 (because there is an #ifdef in the code to do the abort if
gcc was configured against an older GLIBC).
In addition, it used some pre-processor magic so that I didn't have to modify
the dfp-bit.{c,h} functions to add new functions. In particular, the new
functions pretended they where the TF functions, and used #define to change the
names.
The new code modifies dfp-bit.{c,h} to have support for the KF functions as
separate #ifdef's. It eliminates the preprocessor trickery, since I did modify
the dfp-bit.{c,h} support.
In order to deal with older GLIBC's, I used a different function for the KF
library (__sprintfkf instead of sprintf, and __strtokf instead of strold).
This function uses weak references to see if we had the GLIBC symbols
(__sprintfieee128 and __strtoieee128 that are in GLIBC 2.32). If those
functions exist, we call those functions directly.
If those functions do not exist, I converted the _Float128 type to or from
__ibm128, and I did the normal long double conversions. Given that IEEE
128-bit has a much larger exponent range than IBM 128-bit, it means there are
some numbers that can't be converted. But at least the majority of the values
are converted.
Note all of the other binary/decimal conversions use the GLIBC functions
(either sprintf or strto<x>). The GLIBC people have the expertise to do the
conversion, wheras I do not. But until GLIBC 2.32, there was not enough of the
support in GLIBC to handle IEEE 128-bit conversions.
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: [email protected], phone: +1 (978) 899-4797