On Mon, 13 Jun 2016, Uros Bizjak wrote: > Hello! > > Attached patch intriduces __builtin_signbitq built-in function, so the > compiler will be able to use SSE4.1 PTEST instruction to determine > sign bit of __float128 value.
The __builtin_signbit function is type-generic from GCC 6 onwards, so I don't see any need for this type-specific function. (The .md pattern may still be useful, of course, for better expansion of type-generic __builtin_signbit on float128 arguments.) > The patch introduces complete infrastructure, including fallback to > __signbittf2 libgcc function for non-SSE4.1 targets. I don't see any need for a libgcc fallback either. Generic code in GCC should always be able to implement signbit using bit-manipulation, without needing any library fallback. > I have changed libquadmath to use __builtin_signbitq, and there were > numerous places, where the call to signbitq + test + conditional jump > reduced to e.g.: Current glibc systematically uses type-generic classification macros such as signbit where they exist in <math.h>, rather than direct calls to __signbitl etc. such as were formerly used. Thus, I don't think changes to use __builtin_signbitq should go into libquadmath. Rather, it should be updated for the past few years' changes in glibc (this is long overdue), with some header used in building libquadmath being made to define signbit, isfinite etc. to use the type-generic built-in functions, and such type-generic macro calls (as in glibc) replacing libquadmath's calls to signbitq, finiteq, isinfq etc. -- Joseph S. Myers jos...@codesourcery.com