This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


jon@beniston.com 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]