http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54408
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-09-03 15:47:38 UTC --- Built-in mathematical functions are generally type-generic where they correspond to type-generic math.h macros (e.g. isgreater, isnan), not otherwise. (__builtin_signbit should be changed to type-generic: bug 36757.) I think __builtin_sqrt should be expected to correspond directly to the sqrt (double) library function rather than being type-generic - thus, I think vector versions of library functions (where those functions are not type-generic) should be separate from the normal built-in versions of those functions (e.g. define __builtin_vec_sqrt - which could itself be type-generic over different vector types). Remember to define, both at the language level and at the ABI level, things such as how such a built-in function handles errors / exceptional values (and whether or not this depends at the language level on the various -f options that affect this for ordinary C language arithmetic and library calls).