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