Hi!

On Wed, Apr 25, 2018 at 11:28:44AM -0500, Kelvin Nilsen wrote:
> >>> 4. Remove descriptions of built-in function that do not belong in this
> >>> section because the
> >>>    built-in functions are generic (not specific to PowerPC):
> >>> __builtin_fabsq,
> >>>    __builtin_copysignq, __builtin_infq, __builtin_huge_valq, 
> >>> __builtin_nanq,
> >>>    __builtin_nansq, __builtin_sqrtf128, __builtin_fmaf128.
> > 
> > Are these described in a generic place, then?  I don't see it?
> > 
> >> +@node Low-Level PowerPC Built-in Functions Available on all Targets
> >> +@subsubsection Low-Level PowerPC Built-in Functions Available on all 
> >> Targets
> 
> Regarding your question about "q functions", the existing gcc.pdf document
> is a bit confusing.  Here's what I can figure out.
> 
> The following are mentioned only in "Section 6.59.33: x86 Built-in Functions"
> 
>   __float128 __builtin_fabsq (__float128)
>   __float128 __builtin_copysignq (__float128, __float128)
>   __float128 __builtin_infq (void)
>   __float128 __builtin_huge_valq (void)
>   __float128 __builtin_nanq (void)
>   __float128 __builtin_nansq (void)
> 
> As far as I can tell, these should not be documented as specific to x86, but
> should be documented as generic across all platforms.  This is an issue 
> outside
> the realm of PowerPC maintenance.
> 
> If we want to preserve mention of these "q" functions, I would recommend
> changing the text that introduces them.  Currently, it says:
> 
>   "Previous versions of GCC supported some 'q' builtins for IEEE 128-bit
>    floating point.  These functions are now mapped into the equivalent
>    'f128' builtin functions."

I think that is a bit confusing, especially if you are not familiar with
those builtins already.

> If the description of these built-ins is not moved to a more generic context,
> I would prefer to replace this section with something like:
> 
> The following functions, which are also supported on x86 targets, are 
> supported
> if the -mfloat128 option is specified:
> 
>   __float128 __builtin_fabsq (__float128)
>   __float128 __builtin_copysignq (__float128, __float128)
>   __float128 __builtin_infq (void)
>   __float128 __builtin_huge_valq (void)
>   __float128 __builtin_nanq (void)
>   __float128 __builtin_nansq (void)

That looks fine.

> Regarding your question about f128 functions, these are "supposed to be"
> documented in "Section 6.58: Other Built-in Functions Provided by GCC".
> Search for the phrase "corresponding to the TS 18661-3 functions".  We
> should add "__builtin_sqrtf128 and builtin_fmaf128 to the list of functions
> described this way.  These may not be the only omissions.  Should we push
> for fixing this documentation in Section 6.58 instead of keeping it in
> the PowerPC section?

Well, are they supported on other targets?

> It is difficult to find the official TS 18661-3 document, and
> I'm not sure where to look for a list of which of the functions are
> currently implemented by gcc.  I found this "diff" document, which provides
> some hints.  Given that this standard is not easily accessible, perhaps the
> generic built-in documentation should provide a little more information?
> 
> See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1945.pdf

That is the document I use.  See other mail for other resources :-)


Segher

Reply via email to