Re: [PATCH RFC] allow inline intrinsics for __ieee754_sqrt/f

Wilco Dijkstra <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <DB5PR08MB10308D872F0E6369E8310A2A833D0@DB5PR08MB1030.eurprd08.prod.outlook.com>
[email protected] wrote:

>>The best option is to let the compiler inline sqrt - it knows when it is
feasible and avoids 
>>having to add lots of target specific inline assembly code which is hard to
maintain.
>>
>>In GLIBC I renamed all __ieee754_sqrt(f) uses to sqrt(f) and added
-fno-math-errno 
>>which allows compilers to inline sqrt on all targets. libm/common already
uses 
>>-fno-math-errno, but could be used in all of libm safely.
>
> That works for most of the uses of __ieee754_sqrt, except, I think, for
> those in w_sqrt.c / wf_sqrt.c, that implement sqrt & sqrtf.  If the target
> didn't have a builtin for sqrt, you'd end up with a recursive call, no?

You could add more libm/machine/*/w_sqrt.c files. These already exist
for arm and aarch64 - though they use inline assembler rather than the
obvious __builtin_sqrt. 

Note that the sqrt function will never be called if you have a sqrt
instruction (even if you forget to use -fno-math-errno), so optimizing
w_sqrt.c is less important than ensuring __ieee754_sqrt gets inlined.

Wilco
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.