Date: Sat, 11 Jan 2020 11:22:34 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: [PATCH] math: move more x86-family lrint functions to C On Sat, Jan 11, 2020 at 11:07:01AM -0500, Rich Felker wrote: > On Sat, Jan 11, 2020 at 06:23:54PM +0300, Alexander Monakov wrote: > > --- > > It was news to me that GCC inline asm conventions allow to specify > > effect on x87 register stack. Here a clobber tells the compiler > > that the asm pops the topmost element off the stack. > > Is this documented/reliable/supported by other compilers (clang, pcc, > old gcc)? It looks very nice and I hope we can do it; otherwise it > looks like a gratuitous instruction would be needed. But I want to > make sure it's safe. OK, I see it documented at the end of the page here: https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html under 126.96.36.199 x86 Floating-Point asm Operands. So if other compilers don't honor this they're not implementing it as documented. I noticed also there (bullet point 5) that, if inline asm pushes anything to x87 stack, it needs appropriate clobbers so the compiler can ensure the stack is not full on entry. This would be easy to miss because the stack will be empty in standalone functions, and it would only come up if they get inlined via LTO. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.