From f11c35713e852dcbb064beea449a04911a20b3dc Mon Sep 17 00:00:00 2001 From: Giovanni Petrantoni Date: Fri, 4 Dec 2015 12:37:43 +0900 Subject: [PATCH] added more Builtins --- Builtins.def | 1249 +++++++++++++++++++ NativePath/NativePath.h | 2499 ++++++++++++++++++++++++++------------- generate_builtins.lua | 10 +- 3 files changed, 2929 insertions(+), 829 deletions(-) create mode 100644 Builtins.def diff --git a/Builtins.def b/Builtins.def new file mode 100644 index 0000000..bf65b5f --- /dev/null +++ b/Builtins.def @@ -0,0 +1,1249 @@ +//===--- Builtins.def - Builtin function info database ----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the standard builtin function database. Users of this file +// must define the BUILTIN macro to make use of this information. +// +//===----------------------------------------------------------------------===// + +// FIXME: This should really be a .td file, but that requires modifying tblgen. +// Perhaps tblgen should have plugins. + +// The first value provided to the macro specifies the function name of the +// builtin, and results in a clang::builtin::BIXX enum value for XX. + +// The second value provided to the macro specifies the type of the function +// (result value, then each argument) as follows: +// v -> void +// b -> boolean +// c -> char +// s -> short +// i -> int +// h -> half +// f -> float +// d -> double +// z -> size_t +// F -> constant CFString +// G -> id +// H -> SEL +// M -> struct objc_super +// a -> __builtin_va_list +// A -> "reference" to __builtin_va_list +// V -> Vector, followed by the number of elements and the base type. +// E -> ext_vector, followed by the number of elements and the base type. +// X -> _Complex, followed by the base type. +// Y -> ptrdiff_t +// P -> FILE +// J -> jmp_buf +// SJ -> sigjmp_buf +// K -> ucontext_t +// p -> pid_t +// . -> "...". This may only occur at the end of the function list. +// +// Types may be prefixed with the following modifiers: +// L -> long (e.g. Li for 'long int') +// LL -> long long +// LLL -> __int128_t (e.g. LLLi) +// W -> int64_t +// S -> signed +// U -> unsigned +// I -> Required to constant fold to an integer constant expression. +// +// Types may be postfixed with the following modifiers: +// * -> pointer (optionally followed by an address space number, if no address +// space is specified than any address space will be accepted) +// & -> reference (optionally followed by an address space number) +// C -> const +// D -> volatile + +// The third value provided to the macro specifies information about attributes +// of the function. These must be kept in sync with the predicates in the +// Builtin::Context class. Currently we have: +// n -> nothrow +// r -> noreturn +// c -> const +// t -> signature is meaningless, use custom typechecking +// F -> this is a libc/libm function with a '__builtin_' prefix added. +// f -> this is a libc/libm function without the '__builtin_' prefix. It can +// be followed by ':headername:' to state which header this function +// comes from. +// i -> this is a runtime library implemented function without the +// '__builtin_' prefix. It will be implemented in compiler-rt or libgcc. +// p:N: -> this is a printf-like function whose Nth argument is the format +// string. +// P:N: -> similar to the p:N: attribute, but the function is like vprintf +// in that it accepts its arguments as a va_list rather than +// through an ellipsis +// s:N: -> this is a scanf-like function whose Nth argument is the format +// string. +// S:N: -> similar to the s:N: attribute, but the function is like vscanf +// in that it accepts its arguments as a va_list rather than +// through an ellipsis +// e -> const, but only when -fmath-errno=0 +// j -> returns_twice (like setjmp) +// u -> arguments are not evaluated for their side-effects +// FIXME: gcc has nonnull + +#if defined(BUILTIN) && !defined(LIBBUILTIN) +# define LIBBUILTIN(ID, TYPE, ATTRS, HEADER, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +#if defined(BUILTIN) && !defined(LANGBUILTIN) +# define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) +#endif + +// Standard libc/libm functions: +BUILTIN(__builtin_atan2 , "ddd" , "Fnc") +BUILTIN(__builtin_atan2f, "fff" , "Fnc") +BUILTIN(__builtin_atan2l, "LdLdLd", "Fnc") +BUILTIN(__builtin_abs , "ii" , "ncF") +BUILTIN(__builtin_copysign, "ddd", "ncF") +BUILTIN(__builtin_copysignf, "fff", "ncF") +BUILTIN(__builtin_copysignl, "LdLdLd", "ncF") +BUILTIN(__builtin_fabs , "dd" , "ncF") +BUILTIN(__builtin_fabsf, "ff" , "ncF") +BUILTIN(__builtin_fabsl, "LdLd", "ncF") +BUILTIN(__builtin_fmod , "ddd" , "Fnc") +BUILTIN(__builtin_fmodf, "fff" , "Fnc") +BUILTIN(__builtin_fmodl, "LdLdLd", "Fnc") +BUILTIN(__builtin_frexp , "ddi*" , "Fn") +BUILTIN(__builtin_frexpf, "ffi*" , "Fn") +BUILTIN(__builtin_frexpl, "LdLdi*", "Fn") +BUILTIN(__builtin_huge_val, "d", "nc") +BUILTIN(__builtin_huge_valf, "f", "nc") +BUILTIN(__builtin_huge_vall, "Ld", "nc") +BUILTIN(__builtin_inf , "d" , "nc") +BUILTIN(__builtin_inff , "f" , "nc") +BUILTIN(__builtin_infl , "Ld" , "nc") +BUILTIN(__builtin_labs , "LiLi" , "Fnc") +BUILTIN(__builtin_llabs, "LLiLLi", "Fnc") +BUILTIN(__builtin_ldexp , "ddi" , "Fnc") +BUILTIN(__builtin_ldexpf, "ffi" , "Fnc") +BUILTIN(__builtin_ldexpl, "LdLdi", "Fnc") +BUILTIN(__builtin_modf , "ddd*" , "Fn") +BUILTIN(__builtin_modff, "fff*" , "Fn") +BUILTIN(__builtin_modfl, "LdLdLd*", "Fn") +BUILTIN(__builtin_nan, "dcC*" , "ncF") +BUILTIN(__builtin_nanf, "fcC*" , "ncF") +BUILTIN(__builtin_nanl, "LdcC*", "ncF") +BUILTIN(__builtin_nans, "dcC*" , "ncF") +BUILTIN(__builtin_nansf, "fcC*" , "ncF") +BUILTIN(__builtin_nansl, "LdcC*", "ncF") +BUILTIN(__builtin_powi , "ddi" , "Fnc") +BUILTIN(__builtin_powif, "ffi" , "Fnc") +BUILTIN(__builtin_powil, "LdLdi", "Fnc") +BUILTIN(__builtin_pow , "ddd" , "Fnc") +BUILTIN(__builtin_powf, "fff" , "Fnc") +BUILTIN(__builtin_powl, "LdLdLd", "Fnc") + +// Standard unary libc/libm functions with double/float/long double variants: +BUILTIN(__builtin_acos , "dd" , "Fnc") +BUILTIN(__builtin_acosf, "ff" , "Fnc") +BUILTIN(__builtin_acosl, "LdLd", "Fnc") +BUILTIN(__builtin_acosh , "dd" , "Fnc") +BUILTIN(__builtin_acoshf, "ff" , "Fnc") +BUILTIN(__builtin_acoshl, "LdLd", "Fnc") +BUILTIN(__builtin_asin , "dd" , "Fnc") +BUILTIN(__builtin_asinf, "ff" , "Fnc") +BUILTIN(__builtin_asinl, "LdLd", "Fnc") +BUILTIN(__builtin_asinh , "dd" , "Fnc") +BUILTIN(__builtin_asinhf, "ff" , "Fnc") +BUILTIN(__builtin_asinhl, "LdLd", "Fnc") +BUILTIN(__builtin_atan , "dd" , "Fnc") +BUILTIN(__builtin_atanf, "ff" , "Fnc") +BUILTIN(__builtin_atanl, "LdLd", "Fnc") +BUILTIN(__builtin_atanh , "dd", "Fnc") +BUILTIN(__builtin_atanhf, "ff", "Fnc") +BUILTIN(__builtin_atanhl, "LdLd", "Fnc") +BUILTIN(__builtin_cbrt , "dd", "Fnc") +BUILTIN(__builtin_cbrtf, "ff", "Fnc") +BUILTIN(__builtin_cbrtl, "LdLd", "Fnc") +BUILTIN(__builtin_ceil , "dd" , "Fnc") +BUILTIN(__builtin_ceilf, "ff" , "Fnc") +BUILTIN(__builtin_ceill, "LdLd", "Fnc") +BUILTIN(__builtin_cos , "dd" , "Fnc") +BUILTIN(__builtin_cosf, "ff" , "Fnc") +BUILTIN(__builtin_cosh , "dd" , "Fnc") +BUILTIN(__builtin_coshf, "ff" , "Fnc") +BUILTIN(__builtin_coshl, "LdLd", "Fnc") +BUILTIN(__builtin_cosl, "LdLd", "Fnc") +BUILTIN(__builtin_erf , "dd", "Fnc") +BUILTIN(__builtin_erff, "ff", "Fnc") +BUILTIN(__builtin_erfl, "LdLd", "Fnc") +BUILTIN(__builtin_erfc , "dd", "Fnc") +BUILTIN(__builtin_erfcf, "ff", "Fnc") +BUILTIN(__builtin_erfcl, "LdLd", "Fnc") +BUILTIN(__builtin_exp , "dd" , "Fnc") +BUILTIN(__builtin_expf, "ff" , "Fnc") +BUILTIN(__builtin_expl, "LdLd", "Fnc") +BUILTIN(__builtin_exp2 , "dd" , "Fnc") +BUILTIN(__builtin_exp2f, "ff" , "Fnc") +BUILTIN(__builtin_exp2l, "LdLd", "Fnc") +BUILTIN(__builtin_expm1 , "dd", "Fnc") +BUILTIN(__builtin_expm1f, "ff", "Fnc") +BUILTIN(__builtin_expm1l, "LdLd", "Fnc") +BUILTIN(__builtin_fdim, "ddd", "Fnc") +BUILTIN(__builtin_fdimf, "fff", "Fnc") +BUILTIN(__builtin_fdiml, "LdLdLd", "Fnc") +BUILTIN(__builtin_floor , "dd" , "Fnc") +BUILTIN(__builtin_floorf, "ff" , "Fnc") +BUILTIN(__builtin_floorl, "LdLd", "Fnc") +BUILTIN(__builtin_fma, "dddd", "Fnc") +BUILTIN(__builtin_fmaf, "ffff", "Fnc") +BUILTIN(__builtin_fmal, "LdLdLdLd", "Fnc") +BUILTIN(__builtin_fmax, "ddd", "Fnc") +BUILTIN(__builtin_fmaxf, "fff", "Fnc") +BUILTIN(__builtin_fmaxl, "LdLdLd", "Fnc") +BUILTIN(__builtin_fmin, "ddd", "Fnc") +BUILTIN(__builtin_fminf, "fff", "Fnc") +BUILTIN(__builtin_fminl, "LdLdLd", "Fnc") +BUILTIN(__builtin_hypot , "ddd" , "Fnc") +BUILTIN(__builtin_hypotf, "fff" , "Fnc") +BUILTIN(__builtin_hypotl, "LdLdLd", "Fnc") +BUILTIN(__builtin_ilogb , "id", "Fnc") +BUILTIN(__builtin_ilogbf, "if", "Fnc") +BUILTIN(__builtin_ilogbl, "iLd", "Fnc") +BUILTIN(__builtin_lgamma , "dd", "Fnc") +BUILTIN(__builtin_lgammaf, "ff", "Fnc") +BUILTIN(__builtin_lgammal, "LdLd", "Fnc") +BUILTIN(__builtin_llrint, "LLid", "Fnc") +BUILTIN(__builtin_llrintf, "LLif", "Fnc") +BUILTIN(__builtin_llrintl, "LLiLd", "Fnc") +BUILTIN(__builtin_llround , "LLid", "Fnc") +BUILTIN(__builtin_llroundf, "LLif", "Fnc") +BUILTIN(__builtin_llroundl, "LLiLd", "Fnc") +BUILTIN(__builtin_log , "dd" , "Fnc") +BUILTIN(__builtin_log10 , "dd" , "Fnc") +BUILTIN(__builtin_log10f, "ff" , "Fnc") +BUILTIN(__builtin_log10l, "LdLd", "Fnc") +BUILTIN(__builtin_log1p , "dd" , "Fnc") +BUILTIN(__builtin_log1pf, "ff" , "Fnc") +BUILTIN(__builtin_log1pl, "LdLd", "Fnc") +BUILTIN(__builtin_log2, "dd" , "Fnc") +BUILTIN(__builtin_log2f, "ff" , "Fnc") +BUILTIN(__builtin_log2l, "LdLd" , "Fnc") +BUILTIN(__builtin_logb , "dd", "Fnc") +BUILTIN(__builtin_logbf, "ff", "Fnc") +BUILTIN(__builtin_logbl, "LdLd", "Fnc") +BUILTIN(__builtin_logf, "ff" , "Fnc") +BUILTIN(__builtin_logl, "LdLd", "Fnc") +BUILTIN(__builtin_lrint , "Lid", "Fnc") +BUILTIN(__builtin_lrintf, "Lif", "Fnc") +BUILTIN(__builtin_lrintl, "LiLd", "Fnc") +BUILTIN(__builtin_lround , "Lid", "Fnc") +BUILTIN(__builtin_lroundf, "Lif", "Fnc") +BUILTIN(__builtin_lroundl, "LiLd", "Fnc") +BUILTIN(__builtin_nearbyint , "dd", "Fnc") +BUILTIN(__builtin_nearbyintf, "ff", "Fnc") +BUILTIN(__builtin_nearbyintl, "LdLd", "Fnc") +BUILTIN(__builtin_nextafter , "ddd", "Fnc") +BUILTIN(__builtin_nextafterf, "fff", "Fnc") +BUILTIN(__builtin_nextafterl, "LdLdLd", "Fnc") +BUILTIN(__builtin_nexttoward , "ddLd", "Fnc") +BUILTIN(__builtin_nexttowardf, "ffLd", "Fnc") +BUILTIN(__builtin_nexttowardl, "LdLdLd", "Fnc") +BUILTIN(__builtin_remainder , "ddd", "Fnc") +BUILTIN(__builtin_remainderf, "fff", "Fnc") +BUILTIN(__builtin_remainderl, "LdLdLd", "Fnc") +BUILTIN(__builtin_remquo , "dddi*", "Fn") +BUILTIN(__builtin_remquof, "fffi*", "Fn") +BUILTIN(__builtin_remquol, "LdLdLdi*", "Fn") +BUILTIN(__builtin_rint , "dd", "Fnc") +BUILTIN(__builtin_rintf, "ff", "Fnc") +BUILTIN(__builtin_rintl, "LdLd", "Fnc") +BUILTIN(__builtin_round, "dd" , "Fnc") +BUILTIN(__builtin_roundf, "ff" , "Fnc") +BUILTIN(__builtin_roundl, "LdLd" , "Fnc") +BUILTIN(__builtin_scalbln , "ddLi", "Fnc") +BUILTIN(__builtin_scalblnf, "ffLi", "Fnc") +BUILTIN(__builtin_scalblnl, "LdLdLi", "Fnc") +BUILTIN(__builtin_scalbn , "ddi", "Fnc") +BUILTIN(__builtin_scalbnf, "ffi", "Fnc") +BUILTIN(__builtin_scalbnl, "LdLdi", "Fnc") +BUILTIN(__builtin_sin , "dd" , "Fnc") +BUILTIN(__builtin_sinf, "ff" , "Fnc") +BUILTIN(__builtin_sinh , "dd" , "Fnc") +BUILTIN(__builtin_sinhf, "ff" , "Fnc") +BUILTIN(__builtin_sinhl, "LdLd", "Fnc") +BUILTIN(__builtin_sinl, "LdLd", "Fnc") +BUILTIN(__builtin_sqrt , "dd" , "Fnc") +BUILTIN(__builtin_sqrtf, "ff" , "Fnc") +BUILTIN(__builtin_sqrtl, "LdLd", "Fnc") +BUILTIN(__builtin_tan , "dd" , "Fnc") +BUILTIN(__builtin_tanf, "ff" , "Fnc") +BUILTIN(__builtin_tanh , "dd" , "Fnc") +BUILTIN(__builtin_tanhf, "ff" , "Fnc") +BUILTIN(__builtin_tanhl, "LdLd", "Fnc") +BUILTIN(__builtin_tanl, "LdLd", "Fnc") +BUILTIN(__builtin_tgamma , "dd", "Fnc") +BUILTIN(__builtin_tgammaf, "ff", "Fnc") +BUILTIN(__builtin_tgammal, "LdLd", "Fnc") +BUILTIN(__builtin_trunc , "dd", "Fnc") +BUILTIN(__builtin_truncf, "ff", "Fnc") +BUILTIN(__builtin_truncl, "LdLd", "Fnc") + +// C99 complex builtins +BUILTIN(__builtin_cabs, "dXd", "Fnc") +BUILTIN(__builtin_cabsf, "fXf", "Fnc") +BUILTIN(__builtin_cabsl, "LdXLd", "Fnc") +BUILTIN(__builtin_cacos, "XdXd", "Fnc") +BUILTIN(__builtin_cacosf, "XfXf", "Fnc") +BUILTIN(__builtin_cacosh, "XdXd", "Fnc") +BUILTIN(__builtin_cacoshf, "XfXf", "Fnc") +BUILTIN(__builtin_cacoshl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cacosl, "XLdXLd", "Fnc") +BUILTIN(__builtin_carg, "dXd", "Fnc") +BUILTIN(__builtin_cargf, "fXf", "Fnc") +BUILTIN(__builtin_cargl, "LdXLd", "Fnc") +BUILTIN(__builtin_casin, "XdXd", "Fnc") +BUILTIN(__builtin_casinf, "XfXf", "Fnc") +BUILTIN(__builtin_casinh, "XdXd", "Fnc") +BUILTIN(__builtin_casinhf, "XfXf", "Fnc") +BUILTIN(__builtin_casinhl, "XLdXLd", "Fnc") +BUILTIN(__builtin_casinl, "XLdXLd", "Fnc") +BUILTIN(__builtin_catan, "XdXd", "Fnc") +BUILTIN(__builtin_catanf, "XfXf", "Fnc") +BUILTIN(__builtin_catanh, "XdXd", "Fnc") +BUILTIN(__builtin_catanhf, "XfXf", "Fnc") +BUILTIN(__builtin_catanhl, "XLdXLd", "Fnc") +BUILTIN(__builtin_catanl, "XLdXLd", "Fnc") +BUILTIN(__builtin_ccos, "XdXd", "Fnc") +BUILTIN(__builtin_ccosf, "XfXf", "Fnc") +BUILTIN(__builtin_ccosl, "XLdXLd", "Fnc") +BUILTIN(__builtin_ccosh, "XdXd", "Fnc") +BUILTIN(__builtin_ccoshf, "XfXf", "Fnc") +BUILTIN(__builtin_ccoshl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cexp, "XdXd", "Fnc") +BUILTIN(__builtin_cexpf, "XfXf", "Fnc") +BUILTIN(__builtin_cexpl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cimag, "dXd", "Fnc") +BUILTIN(__builtin_cimagf, "fXf", "Fnc") +BUILTIN(__builtin_cimagl, "LdXLd", "Fnc") +BUILTIN(__builtin_conj, "XdXd", "Fnc") +BUILTIN(__builtin_conjf, "XfXf", "Fnc") +BUILTIN(__builtin_conjl, "XLdXLd", "Fnc") +BUILTIN(__builtin_clog, "XdXd", "Fnc") +BUILTIN(__builtin_clogf, "XfXf", "Fnc") +BUILTIN(__builtin_clogl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cproj, "XdXd", "Fnc") +BUILTIN(__builtin_cprojf, "XfXf", "Fnc") +BUILTIN(__builtin_cprojl, "XLdXLd", "Fnc") +BUILTIN(__builtin_cpow, "XdXdXd", "Fnc") +BUILTIN(__builtin_cpowf, "XfXfXf", "Fnc") +BUILTIN(__builtin_cpowl, "XLdXLdXLd", "Fnc") +BUILTIN(__builtin_creal, "dXd", "Fnc") +BUILTIN(__builtin_crealf, "fXf", "Fnc") +BUILTIN(__builtin_creall, "LdXLd", "Fnc") +BUILTIN(__builtin_csin, "XdXd", "Fnc") +BUILTIN(__builtin_csinf, "XfXf", "Fnc") +BUILTIN(__builtin_csinl, "XLdXLd", "Fnc") +BUILTIN(__builtin_csinh, "XdXd", "Fnc") +BUILTIN(__builtin_csinhf, "XfXf", "Fnc") +BUILTIN(__builtin_csinhl, "XLdXLd", "Fnc") +BUILTIN(__builtin_csqrt, "XdXd", "Fnc") +BUILTIN(__builtin_csqrtf, "XfXf", "Fnc") +BUILTIN(__builtin_csqrtl, "XLdXLd", "Fnc") +BUILTIN(__builtin_ctan, "XdXd", "Fnc") +BUILTIN(__builtin_ctanf, "XfXf", "Fnc") +BUILTIN(__builtin_ctanl, "XLdXLd", "Fnc") +BUILTIN(__builtin_ctanh, "XdXd", "Fnc") +BUILTIN(__builtin_ctanhf, "XfXf", "Fnc") +BUILTIN(__builtin_ctanhl, "XLdXLd", "Fnc") + +// FP Comparisons. +BUILTIN(__builtin_isgreater , "i.", "nc") +BUILTIN(__builtin_isgreaterequal, "i.", "nc") +BUILTIN(__builtin_isless , "i.", "nc") +BUILTIN(__builtin_islessequal , "i.", "nc") +BUILTIN(__builtin_islessgreater , "i.", "nc") +BUILTIN(__builtin_isunordered , "i.", "nc") + +// Unary FP classification +BUILTIN(__builtin_fpclassify, "iiiii.", "nc") +BUILTIN(__builtin_isfinite, "i.", "nc") +BUILTIN(__builtin_isinf, "i.", "nc") +BUILTIN(__builtin_isinf_sign, "i.", "nc") +BUILTIN(__builtin_isnan, "i.", "nc") +BUILTIN(__builtin_isnormal, "i.", "nc") + +// FP signbit builtins +BUILTIN(__builtin_signbit, "id", "nc") +BUILTIN(__builtin_signbitf, "if", "nc") +BUILTIN(__builtin_signbitl, "iLd", "nc") + +// Builtins for arithmetic. +BUILTIN(__builtin_clzs , "iUs" , "nc") +BUILTIN(__builtin_clz , "iUi" , "nc") +BUILTIN(__builtin_clzl , "iULi" , "nc") +BUILTIN(__builtin_clzll, "iULLi", "nc") +// TODO: int clzimax(uintmax_t) +BUILTIN(__builtin_ctzs , "iUs" , "nc") +BUILTIN(__builtin_ctz , "iUi" , "nc") +BUILTIN(__builtin_ctzl , "iULi" , "nc") +BUILTIN(__builtin_ctzll, "iULLi", "nc") +// TODO: int ctzimax(uintmax_t) +BUILTIN(__builtin_ffs , "ii" , "nc") +BUILTIN(__builtin_ffsl , "iLi" , "nc") +BUILTIN(__builtin_ffsll, "iLLi", "nc") +BUILTIN(__builtin_parity , "iUi" , "nc") +BUILTIN(__builtin_parityl , "iULi" , "nc") +BUILTIN(__builtin_parityll, "iULLi", "nc") +BUILTIN(__builtin_popcount , "iUi" , "nc") +BUILTIN(__builtin_popcountl , "iULi" , "nc") +BUILTIN(__builtin_popcountll, "iULLi", "nc") + +// FIXME: These type signatures are not correct for targets with int != 32-bits +// or with ULL != 64-bits. +BUILTIN(__builtin_bswap16, "UsUs", "nc") +BUILTIN(__builtin_bswap32, "UiUi", "nc") +BUILTIN(__builtin_bswap64, "ULLiULLi", "nc") + +// Random GCC builtins +BUILTIN(__builtin_constant_p, "i.", "nctu") +BUILTIN(__builtin_classify_type, "i.", "nctu") +BUILTIN(__builtin___CFStringMakeConstantString, "FC*cC*", "nc") +BUILTIN(__builtin___NSStringMakeConstantString, "FC*cC*", "nc") +BUILTIN(__builtin_va_start, "vA.", "nt") +BUILTIN(__builtin_va_end, "vA", "n") +BUILTIN(__builtin_va_copy, "vAA", "n") +BUILTIN(__builtin_stdarg_start, "vA.", "n") +BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc") +BUILTIN(__builtin_bcmp, "iv*v*z", "n") +BUILTIN(__builtin_bcopy, "vv*v*z", "n") +BUILTIN(__builtin_bzero, "vv*z", "nF") +BUILTIN(__builtin_fprintf, "iP*cC*.", "Fp:1:") +BUILTIN(__builtin_memchr, "v*vC*iz", "nF") +BUILTIN(__builtin_memcmp, "ivC*vC*z", "nF") +BUILTIN(__builtin_memcpy, "v*v*vC*z", "nF") +BUILTIN(__builtin_memmove, "v*v*vC*z", "nF") +BUILTIN(__builtin_mempcpy, "v*v*vC*z", "nF") +BUILTIN(__builtin_memset, "v*v*iz", "nF") +BUILTIN(__builtin_printf, "icC*.", "Fp:0:") +BUILTIN(__builtin_stpcpy, "c*c*cC*", "nF") +BUILTIN(__builtin_stpncpy, "c*c*cC*z", "nF") +BUILTIN(__builtin_strcasecmp, "icC*cC*", "nF") +BUILTIN(__builtin_strcat, "c*c*cC*", "nF") +BUILTIN(__builtin_strchr, "c*cC*i", "nF") +BUILTIN(__builtin_strcmp, "icC*cC*", "nF") +BUILTIN(__builtin_strcpy, "c*c*cC*", "nF") +BUILTIN(__builtin_strcspn, "zcC*cC*", "nF") +BUILTIN(__builtin_strdup, "c*cC*", "nF") +BUILTIN(__builtin_strlen, "zcC*", "nF") +BUILTIN(__builtin_strncasecmp, "icC*cC*z", "nF") +BUILTIN(__builtin_strncat, "c*c*cC*z", "nF") +BUILTIN(__builtin_strncmp, "icC*cC*z", "nF") +BUILTIN(__builtin_strncpy, "c*c*cC*z", "nF") +BUILTIN(__builtin_strndup, "c*cC*z", "nF") +BUILTIN(__builtin_strpbrk, "c*cC*cC*", "nF") +BUILTIN(__builtin_strrchr, "c*cC*i", "nF") +BUILTIN(__builtin_strspn, "zcC*cC*", "nF") +BUILTIN(__builtin_strstr, "c*cC*cC*", "nF") +BUILTIN(__builtin_return_address, "v*IUi", "n") +BUILTIN(__builtin_extract_return_addr, "v*v*", "n") +BUILTIN(__builtin_frame_address, "v*IUi", "n") +BUILTIN(__builtin___clear_cache, "vc*c*", "n") +BUILTIN(__builtin_flt_rounds, "i", "nc") +BUILTIN(__builtin_setjmp, "iv**", "j") +BUILTIN(__builtin_longjmp, "vv**i", "r") +BUILTIN(__builtin_unwind_init, "v", "") +BUILTIN(__builtin_eh_return_data_regno, "iIi", "nc") +BUILTIN(__builtin_snprintf, "ic*zcC*.", "nFp:2:") +BUILTIN(__builtin_vsprintf, "ic*cC*a", "nFP:1:") +BUILTIN(__builtin_vsnprintf, "ic*zcC*a", "nFP:2:") + +// GCC exception builtins +BUILTIN(__builtin_eh_return, "vzv*", "r") // FIXME: Takes intptr_t, not size_t! +BUILTIN(__builtin_frob_return_addr, "v*v*", "n") +BUILTIN(__builtin_dwarf_cfa, "v*", "n") +BUILTIN(__builtin_init_dwarf_reg_size_table, "vv*", "n") +BUILTIN(__builtin_dwarf_sp_column, "Ui", "n") +BUILTIN(__builtin_extend_pointer, "ULLiv*", "n") // _Unwind_Word == uint64_t + +// GCC Object size checking builtins +BUILTIN(__builtin_object_size, "zvC*i", "nu") +BUILTIN(__builtin___memcpy_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___memccpy_chk, "v*v*vC*izz", "nF") +BUILTIN(__builtin___memmove_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___mempcpy_chk, "v*v*vC*zz", "nF") +BUILTIN(__builtin___memset_chk, "v*v*izz", "nF") +BUILTIN(__builtin___stpcpy_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strcat_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strcpy_chk, "c*c*cC*z", "nF") +BUILTIN(__builtin___strlcat_chk, "zc*cC*zz", "nF") +BUILTIN(__builtin___strlcpy_chk, "zc*cC*zz", "nF") +BUILTIN(__builtin___strncat_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___strncpy_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___stpncpy_chk, "c*c*cC*zz", "nF") +BUILTIN(__builtin___snprintf_chk, "ic*zizcC*.", "Fp:4:") +BUILTIN(__builtin___sprintf_chk, "ic*izcC*.", "Fp:3:") +BUILTIN(__builtin___vsnprintf_chk, "ic*zizcC*a", "FP:4:") +BUILTIN(__builtin___vsprintf_chk, "ic*izcC*a", "FP:3:") +BUILTIN(__builtin___fprintf_chk, "iP*icC*.", "Fp:2:") +BUILTIN(__builtin___printf_chk, "iicC*.", "Fp:1:") +BUILTIN(__builtin___vfprintf_chk, "iP*icC*a", "FP:2:") +BUILTIN(__builtin___vprintf_chk, "iicC*a", "FP:1:") + +BUILTIN(__builtin_expect, "LiLiLi" , "nc") +BUILTIN(__builtin_prefetch, "vvC*.", "nc") +BUILTIN(__builtin_readcyclecounter, "ULLi", "n") +BUILTIN(__builtin_trap, "v", "nr") +BUILTIN(__builtin_debugtrap, "v", "n") +BUILTIN(__builtin_unreachable, "v", "nr") +BUILTIN(__builtin_shufflevector, "v." , "nc") +BUILTIN(__builtin_convertvector, "v." , "nct") +BUILTIN(__builtin_alloca, "v*z" , "n") +BUILTIN(__builtin_call_with_static_chain, "v.", "nt") + +// "Overloaded" Atomic operator builtins. These are overloaded to support data +// types of i8, i16, i32, i64, and i128. The front-end sees calls to the +// non-suffixed version of these (which has a bogus type) and transforms them to +// the right overloaded version in Sema (plus casts). + +// FIXME: These assume that char -> i8, short -> i16, int -> i32, +// long long -> i64. + +BUILTIN(__sync_fetch_and_add, "v.", "t") +BUILTIN(__sync_fetch_and_add_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_add_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_add_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_add_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_add_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_sub, "v.", "t") +BUILTIN(__sync_fetch_and_sub_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_sub_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_sub_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_sub_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_sub_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_or, "v.", "t") +BUILTIN(__sync_fetch_and_or_1, "ccD*c.", "nt") +BUILTIN(__sync_fetch_and_or_2, "ssD*s.", "nt") +BUILTIN(__sync_fetch_and_or_4, "iiD*i.", "nt") +BUILTIN(__sync_fetch_and_or_8, "LLiLLiD*LLi.", "nt") +BUILTIN(__sync_fetch_and_or_16, "LLLiLLLiD*LLLi.", "nt") + +BUILTIN(__sync_fetch_and_and, "v.", "t") +BUILTIN(__sync_fetch_and_and_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_and_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_and_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_and_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_and_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_fetch_and_xor, "v.", "t") +BUILTIN(__sync_fetch_and_xor_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_xor_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_xor_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_xor_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_xor_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_fetch_and_nand, "v.", "t") +BUILTIN(__sync_fetch_and_nand_1, "ccD*c.", "tn") +BUILTIN(__sync_fetch_and_nand_2, "ssD*s.", "tn") +BUILTIN(__sync_fetch_and_nand_4, "iiD*i.", "tn") +BUILTIN(__sync_fetch_and_nand_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_fetch_and_nand_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_add_and_fetch, "v.", "t") +BUILTIN(__sync_add_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_add_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_add_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_add_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_add_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_sub_and_fetch, "v.", "t") +BUILTIN(__sync_sub_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_sub_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_sub_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_sub_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_sub_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_or_and_fetch, "v.", "t") +BUILTIN(__sync_or_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_or_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_or_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_or_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_or_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_and_and_fetch, "v.", "t") +BUILTIN(__sync_and_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_and_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_and_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_and_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_and_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_xor_and_fetch, "v.", "t") +BUILTIN(__sync_xor_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_xor_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_xor_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_xor_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_xor_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_nand_and_fetch, "v.", "t") +BUILTIN(__sync_nand_and_fetch_1, "ccD*c.", "tn") +BUILTIN(__sync_nand_and_fetch_2, "ssD*s.", "tn") +BUILTIN(__sync_nand_and_fetch_4, "iiD*i.", "tn") +BUILTIN(__sync_nand_and_fetch_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_nand_and_fetch_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_bool_compare_and_swap, "v.", "t") +BUILTIN(__sync_bool_compare_and_swap_1, "bcD*cc.", "tn") +BUILTIN(__sync_bool_compare_and_swap_2, "bsD*ss.", "tn") +BUILTIN(__sync_bool_compare_and_swap_4, "biD*ii.", "tn") +BUILTIN(__sync_bool_compare_and_swap_8, "bLLiD*LLiLLi.", "tn") +BUILTIN(__sync_bool_compare_and_swap_16, "bLLLiD*LLLiLLLi.", "tn") + +BUILTIN(__sync_val_compare_and_swap, "v.", "t") +BUILTIN(__sync_val_compare_and_swap_1, "ccD*cc.", "tn") +BUILTIN(__sync_val_compare_and_swap_2, "ssD*ss.", "tn") +BUILTIN(__sync_val_compare_and_swap_4, "iiD*ii.", "tn") +BUILTIN(__sync_val_compare_and_swap_8, "LLiLLiD*LLiLLi.", "tn") +BUILTIN(__sync_val_compare_and_swap_16, "LLLiLLLiD*LLLiLLLi.", "tn") + +BUILTIN(__sync_lock_test_and_set, "v.", "t") +BUILTIN(__sync_lock_test_and_set_1, "ccD*c.", "tn") +BUILTIN(__sync_lock_test_and_set_2, "ssD*s.", "tn") +BUILTIN(__sync_lock_test_and_set_4, "iiD*i.", "tn") +BUILTIN(__sync_lock_test_and_set_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_lock_test_and_set_16, "LLLiLLLiD*LLLi.", "tn") + +BUILTIN(__sync_lock_release, "v.", "t") +BUILTIN(__sync_lock_release_1, "vcD*.", "tn") +BUILTIN(__sync_lock_release_2, "vsD*.", "tn") +BUILTIN(__sync_lock_release_4, "viD*.", "tn") +BUILTIN(__sync_lock_release_8, "vLLiD*.", "tn") +BUILTIN(__sync_lock_release_16, "vLLLiD*.", "tn") + +BUILTIN(__sync_swap, "v.", "t") +BUILTIN(__sync_swap_1, "ccD*c.", "tn") +BUILTIN(__sync_swap_2, "ssD*s.", "tn") +BUILTIN(__sync_swap_4, "iiD*i.", "tn") +BUILTIN(__sync_swap_8, "LLiLLiD*LLi.", "tn") +BUILTIN(__sync_swap_16, "LLLiLLLiD*LLLi.", "tn") + +// Some of our atomics builtins are handled by AtomicExpr rather than +// as normal builtin CallExprs. This macro is used for such builtins. +#ifndef ATOMIC_BUILTIN +#define ATOMIC_BUILTIN(ID, TYPE, ATTRS) BUILTIN(ID, TYPE, ATTRS) +#endif + +// C11 _Atomic operations for . +ATOMIC_BUILTIN(__c11_atomic_init, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_load, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_store, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_exchange, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_compare_exchange_strong, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_compare_exchange_weak, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_add, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_sub, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_and, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_or, "v.", "t") +ATOMIC_BUILTIN(__c11_atomic_fetch_xor, "v.", "t") +BUILTIN(__c11_atomic_thread_fence, "vi", "n") +BUILTIN(__c11_atomic_signal_fence, "vi", "n") +BUILTIN(__c11_atomic_is_lock_free, "iz", "n") + +// GNU atomic builtins. +ATOMIC_BUILTIN(__atomic_load, "v.", "t") +ATOMIC_BUILTIN(__atomic_load_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_store, "v.", "t") +ATOMIC_BUILTIN(__atomic_store_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_exchange, "v.", "t") +ATOMIC_BUILTIN(__atomic_exchange_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_compare_exchange, "v.", "t") +ATOMIC_BUILTIN(__atomic_compare_exchange_n, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_add, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_sub, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_and, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_or, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_xor, "v.", "t") +ATOMIC_BUILTIN(__atomic_fetch_nand, "v.", "t") +ATOMIC_BUILTIN(__atomic_add_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_sub_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_and_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_or_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_xor_fetch, "v.", "t") +ATOMIC_BUILTIN(__atomic_nand_fetch, "v.", "t") +BUILTIN(__atomic_test_and_set, "bvD*i", "n") +BUILTIN(__atomic_clear, "vvD*i", "n") +BUILTIN(__atomic_thread_fence, "vi", "n") +BUILTIN(__atomic_signal_fence, "vi", "n") +BUILTIN(__atomic_always_lock_free, "izvCD*", "n") +BUILTIN(__atomic_is_lock_free, "izvCD*", "n") + +#undef ATOMIC_BUILTIN + +// Non-overloaded atomic builtins. +BUILTIN(__sync_synchronize, "v.", "n") +// GCC does not support these, they are a Clang extension. +BUILTIN(__sync_fetch_and_min, "iiD*i", "n") +BUILTIN(__sync_fetch_and_max, "iiD*i", "n") +BUILTIN(__sync_fetch_and_umin, "UiUiD*Ui", "n") +BUILTIN(__sync_fetch_and_umax, "UiUiD*Ui", "n") + +// Random libc builtins. +BUILTIN(__builtin_abort, "v", "Fnr") +BUILTIN(__builtin_index, "c*cC*i", "Fn") +BUILTIN(__builtin_rindex, "c*cC*i", "Fn") + +// Microsoft builtins. These are only active with -fms-extensions. +LANGBUILTIN(_alloca, "v*z", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__assume, "vb", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__debugbreak, "v", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__exception_code, "ULi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_exception_code, "ULi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__exception_info, "v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_exception_info, "v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__abnormal_termination, "i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_abnormal_termination, "i", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__GetExceptionInfo, "v*.", "ntu", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchange, "LiLiD*LiLi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedCompareExchangePointer, "v*v*D*v*v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedDecrement, "LiLiD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangeAdd, "LiLiD*Li", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchange, "LiLiD*Li", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedExchangePointer, "v*v*D*v*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(_InterlockedIncrement, "LiLiD*", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__noop, "i.", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__readfsdword, "ULiULi", "n", ALL_MS_LANGUAGES) +LANGBUILTIN(__va_start, "vc**.", "nt", ALL_MS_LANGUAGES) + +// Microsoft library builtins. +LIBBUILTIN(_setjmpex, "iJ", "fj", "setjmpex.h", ALL_MS_LANGUAGES) + +// C99 library functions +// C99 stdlib.h +LIBBUILTIN(abort, "v", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(calloc, "v*zz", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(exit, "vi", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(_Exit, "vi", "fr", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(malloc, "v*z", "f", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(realloc, "v*v*z", "f", "stdlib.h", ALL_LANGUAGES) +// C99 string.h +LIBBUILTIN(memcpy, "v*v*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memcmp, "ivC*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memmove, "v*v*vC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcpy, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncpy, "c*c*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcmp, "icC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncmp, "icC*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcat, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strncat, "c*c*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strxfrm, "zc*cC*z", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memchr, "v*vC*iz", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strchr, "c*cC*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strcspn, "zcC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strpbrk, "c*cC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strrchr, "c*cC*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strspn, "zcC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strstr, "c*cC*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strtok, "c*c*cC*", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(memset, "v*v*iz", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strerror, "c*i", "f", "string.h", ALL_LANGUAGES) +LIBBUILTIN(strlen, "zcC*", "f", "string.h", ALL_LANGUAGES) +// C99 stdio.h +LIBBUILTIN(printf, "icC*.", "fp:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fprintf, "iP*cC*.", "fp:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(snprintf, "ic*zcC*.", "fp:2:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(sprintf, "ic*cC*.", "fp:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vprintf, "icC*a", "fP:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vfprintf, "i.", "fP:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsnprintf, "ic*zcC*a", "fP:2:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsprintf, "ic*cC*a", "fP:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(scanf, "icC*R.", "fs:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(fscanf, "iP*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(sscanf, "icC*RcC*R.", "fs:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vscanf, "icC*Ra", "fS:0:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vfscanf, "iP*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) +LIBBUILTIN(vsscanf, "icC*RcC*Ra", "fS:1:", "stdio.h", ALL_LANGUAGES) +// C99 +// In some systems setjmp is a macro that expands to _setjmp. We undefine +// it here to avoid having two identical LIBBUILTIN entries. +#undef setjmp +LIBBUILTIN(setjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(longjmp, "vJi", "fr", "setjmp.h", ALL_LANGUAGES) + +// Non-C library functions, active in GNU mode only. +// Functions with (returns_twice) attribute (marked as "j") are still active in +// all languages, because losing this attribute would result in miscompilation +// when these functions are used in non-GNU mode. PR16138. +LIBBUILTIN(alloca, "v*z", "f", "stdlib.h", ALL_GNU_LANGUAGES) +// POSIX string.h +LIBBUILTIN(stpcpy, "c*c*cC*", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(stpncpy, "c*c*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strdup, "c*cC*", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strndup, "c*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +// POSIX strings.h +LIBBUILTIN(index, "c*cC*i", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(rindex, "c*cC*i", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(bzero, "vv*z", "f", "strings.h", ALL_GNU_LANGUAGES) +// In some systems str[n]casejmp is a macro that expands to _str[n]icmp. +// We undefine then here to avoid wrong name. +#undef strcasecmp +#undef strncasecmp +LIBBUILTIN(strcasecmp, "icC*cC*", "f", "strings.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strncasecmp, "icC*cC*z", "f", "strings.h", ALL_GNU_LANGUAGES) +// POSIX unistd.h +LIBBUILTIN(_exit, "vi", "fr", "unistd.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(vfork, "p", "fj", "unistd.h", ALL_LANGUAGES) +// POSIX setjmp.h + +LIBBUILTIN(_setjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(__sigsetjmp, "iSJi", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(sigsetjmp, "iSJi", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(setjmp_syscall, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(savectx, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(qsetjmp, "iJ", "fj", "setjmp.h", ALL_LANGUAGES) +LIBBUILTIN(getcontext, "iK*", "fj", "setjmp.h", ALL_LANGUAGES) + +LIBBUILTIN(_longjmp, "vJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(siglongjmp, "vSJi", "fr", "setjmp.h", ALL_GNU_LANGUAGES) +// non-standard but very common +LIBBUILTIN(strlcpy, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +LIBBUILTIN(strlcat, "zc*cC*z", "f", "string.h", ALL_GNU_LANGUAGES) +// id objc_msgSend(id, SEL, ...) +LIBBUILTIN(objc_msgSend, "GGH.", "f", "objc/message.h", OBJC_LANG) +// long double objc_msgSend_fpret(id self, SEL op, ...) +LIBBUILTIN(objc_msgSend_fpret, "LdGH.", "f", "objc/message.h", OBJC_LANG) +// _Complex long double objc_msgSend_fp2ret(id self, SEL op, ...) +LIBBUILTIN(objc_msgSend_fp2ret, "XLdGH.", "f", "objc/message.h", OBJC_LANG) +// void objc_msgSend_stret (id, SEL, ...) +LIBBUILTIN(objc_msgSend_stret, "vGH.", "f", "objc/message.h", OBJC_LANG) +// id objc_msgSendSuper(struct objc_super *super, SEL op, ...) +LIBBUILTIN(objc_msgSendSuper, "GM*H.", "f", "objc/message.h", OBJC_LANG) +// void objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...) +LIBBUILTIN(objc_msgSendSuper_stret, "vM*H.", "f", "objc/message.h", OBJC_LANG) +// id objc_getClass(const char *name) +LIBBUILTIN(objc_getClass, "GcC*", "f", "objc/runtime.h", OBJC_LANG) +// id objc_getMetaClass(const char *name) +LIBBUILTIN(objc_getMetaClass, "GcC*", "f", "objc/runtime.h", OBJC_LANG) +// void objc_enumerationMutation(id) +LIBBUILTIN(objc_enumerationMutation, "vG", "f", "objc/runtime.h", OBJC_LANG) + +// id objc_read_weak(id *location) +LIBBUILTIN(objc_read_weak, "GG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_weak(id value, id *location) +LIBBUILTIN(objc_assign_weak, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_ivar(id value, id dest, ptrdiff_t offset) +LIBBUILTIN(objc_assign_ivar, "GGGY", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_global(id val, id *dest) +LIBBUILTIN(objc_assign_global, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) +// id objc_assign_strongCast(id val, id *dest +LIBBUILTIN(objc_assign_strongCast, "GGG*", "f", "objc/objc-auto.h", OBJC_LANG) + +// id objc_exception_extract(void *localExceptionData) +LIBBUILTIN(objc_exception_extract, "Gv*", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_try_enter(void *localExceptionData) +LIBBUILTIN(objc_exception_try_enter, "vv*", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_try_exit(void *localExceptionData) +LIBBUILTIN(objc_exception_try_exit, "vv*", "f", "objc/objc-exception.h", OBJC_LANG) +// int objc_exception_match(Class exceptionClass, id exception) +LIBBUILTIN(objc_exception_match, "iGG", "f", "objc/objc-exception.h", OBJC_LANG) +// void objc_exception_throw(id exception) +LIBBUILTIN(objc_exception_throw, "vG", "f", "objc/objc-exception.h", OBJC_LANG) + +// int objc_sync_enter(id obj) +LIBBUILTIN(objc_sync_enter, "iG", "f", "objc/objc-sync.h", OBJC_LANG) +// int objc_sync_exit(id obj) +LIBBUILTIN(objc_sync_exit, "iG", "f", "objc/objc-sync.h", OBJC_LANG) + +BUILTIN(__builtin_objc_memmove_collectable, "v*v*vC*z", "nF") + +// void NSLog(NSString *fmt, ...) +LIBBUILTIN(NSLog, "vG.", "fp:0:", "Foundation/NSObjCRuntime.h", OBJC_LANG) +// void NSLogv(NSString *fmt, va_list args) +LIBBUILTIN(NSLogv, "vGa", "fP:0:", "Foundation/NSObjCRuntime.h", OBJC_LANG) + +// Builtin math library functions +LIBBUILTIN(atan2, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atan2f, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atan2l, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(abs, "ii", "fnc", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(labs, "LiLi", "fnc", "stdlib.h", ALL_LANGUAGES) +LIBBUILTIN(llabs, "LLiLLi", "fnc", "stdlib.h", ALL_LANGUAGES) + +LIBBUILTIN(copysign, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(copysignf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(copysignl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fabs, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fabsf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fabsl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmod, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmodf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmodl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(frexp, "ddi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(frexpf, "ffi*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(frexpl, "LdLdi*", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ldexp, "ddi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ldexpf, "ffi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ldexpl, "LdLdi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(modf, "ddd*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(modff, "fff*", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(modfl, "LdLdLd*", "fn", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nan, "dcC*", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nanf, "fcC*", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nanl, "LdcC*", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(pow, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(powf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(powl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(acos, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acosf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acosl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(acosh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acoshf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(acoshl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(asin, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(asinh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(asinhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(atan, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(atanh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(atanhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cbrt, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cbrtf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cbrtl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ceil, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ceilf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ceill, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cos, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cosf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(cosl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cosh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(coshf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(coshl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(erf, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erff, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(erfc, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfcf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(erfcl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(exp, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(exp2, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(exp2f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(exp2l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(expm1, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expm1f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(expm1l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fdim, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fdimf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fdiml, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(floor, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(floorf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(floorl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fma, "dddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaf, "ffff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmal, "LdLdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmax, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaxf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fmaxl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(fmin, "ddd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fminf, "fff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(fminl, "LdLdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(hypot, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(hypotf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(hypotl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(ilogb, "id", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ilogbf, "if", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(ilogbl, "iLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(lgamma, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammaf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammal, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(llrint, "LLid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llrintf, "LLif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llrintl, "LLiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(llround, "LLid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llroundf, "LLif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(llroundl, "LLiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log10, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log10f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log10l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log1p, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log1pf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log1pl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(log2, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log2f, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(log2l, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(logb, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logbf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(logbl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(lrint, "Lid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lrintf, "Lif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lrintl, "LiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(lround, "Lid", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lroundf, "Lif", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lroundl, "LiLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nearbyint, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nearbyintf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nearbyintl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nextafter, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nextafterf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nextafterl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(nexttoward, "ddLd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nexttowardf, "ffLd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(nexttowardl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(remainder, "ddd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remainderf, "fff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(remainderl, "LdLdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(rint, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(rintf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(rintl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(round, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(roundf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(roundl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(scalbln, "ddLi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalblnf, "ffLi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalblnl, "LdLdLi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(scalbn, "ddi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalbnf, "ffi", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(scalbnl, "LdLdi", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sin, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sinh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sinhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(sqrt, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sqrtf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(sqrtl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tan, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tanh, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanhf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tanhl, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(tgamma, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tgammaf, "ff", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(tgammal, "LdLd", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(trunc, "dd", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(truncf, "ff", "fnc", "math.h", ALL_LANGUAGES) +LIBBUILTIN(truncl, "LdLd", "fnc", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(cabs, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cabsf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cabsl, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cacos, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacosf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacosl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cacosh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacoshf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cacoshl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(carg, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cargf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cargl, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(casin, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(casinh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(casinhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(catan, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(catanh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(catanhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ccos, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccosf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccosl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ccosh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccoshf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ccoshl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cexp, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cexpf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cexpl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cimag, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cimagf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cimagl, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(conj, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(conjf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(conjl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(clog, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(clogf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(clogl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cproj, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cprojf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cprojl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(cpow, "XdXdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cpowf, "XfXfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(cpowl, "XLdXLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(creal, "dXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(crealf, "fXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(creall, "LdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csin, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csinh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csinhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(csqrt, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csqrtf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(csqrtl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ctan, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +LIBBUILTIN(ctanh, "XdXd", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES) +LIBBUILTIN(ctanhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES) + +// __sinpi and friends are OS X specific library functions, but otherwise much +// like the standard (non-complex) sin (etc). +LIBBUILTIN(__sinpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__sinpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__cospi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__cospif, "ff", "fne", "math.h", ALL_LANGUAGES) + +LIBBUILTIN(__tanpi, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__tanpif, "ff", "fne", "math.h", ALL_LANGUAGES) + +// Similarly, __exp10 is OS X only +LIBBUILTIN(__exp10, "dd", "fne", "math.h", ALL_LANGUAGES) +LIBBUILTIN(__exp10f, "ff", "fne", "math.h", ALL_LANGUAGES) + +// Blocks runtime Builtin math library functions +LIBBUILTIN(_Block_object_assign, "vv*vC*iC", "f", "Blocks.h", ALL_LANGUAGES) +LIBBUILTIN(_Block_object_dispose, "vvC*iC", "f", "Blocks.h", ALL_LANGUAGES) +// FIXME: Also declare NSConcreteGlobalBlock and NSConcreteStackBlock. + +// Annotation function +BUILTIN(__builtin_annotation, "v.", "tn") + +// Invariants +BUILTIN(__builtin_assume, "vb", "n") + +// Multiprecision Arithmetic Builtins. +BUILTIN(__builtin_addcb, "UcUcCUcCUcCUc*", "n") +BUILTIN(__builtin_addcs, "UsUsCUsCUsCUs*", "n") +BUILTIN(__builtin_addc, "UiUiCUiCUiCUi*", "n") +BUILTIN(__builtin_addcl, "ULiULiCULiCULiCULi*", "n") +BUILTIN(__builtin_addcll, "ULLiULLiCULLiCULLiCULLi*", "n") +BUILTIN(__builtin_subcb, "UcUcCUcCUcCUc*", "n") +BUILTIN(__builtin_subcs, "UsUsCUsCUsCUs*", "n") +BUILTIN(__builtin_subc, "UiUiCUiCUiCUi*", "n") +BUILTIN(__builtin_subcl, "ULiULiCULiCULiCULi*", "n") +BUILTIN(__builtin_subcll, "ULLiULLiCULLiCULLiCULLi*", "n") + +// Checked Arithmetic Builtins for Security. +BUILTIN(__builtin_uadd_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_uaddl_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_uaddll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_usub_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_usubl_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_usubll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_umul_overflow, "bUiCUiCUi*", "n") +BUILTIN(__builtin_umull_overflow, "bULiCULiCULi*", "n") +BUILTIN(__builtin_umulll_overflow, "bULLiCULLiCULLi*", "n") +BUILTIN(__builtin_sadd_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_saddl_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_saddll_overflow, "bSLLiCSLLiCSLLi*", "n") +BUILTIN(__builtin_ssub_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_ssubl_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_ssubll_overflow, "bSLLiCSLLiCSLLi*", "n") +BUILTIN(__builtin_smul_overflow, "bSiCSiCSi*", "n") +BUILTIN(__builtin_smull_overflow, "bSLiCSLiCSLi*", "n") +BUILTIN(__builtin_smulll_overflow, "bSLLiCSLLiCSLLi*", "n") + +// Clang builtins (not available in GCC). +BUILTIN(__builtin_addressof, "v*v&", "nct") +BUILTIN(__builtin_operator_new, "v*z", "c") +BUILTIN(__builtin_operator_delete, "vv*", "n") + +// Safestack builtins +BUILTIN(__builtin___get_unsafe_stack_start, "v*", "Fn") +BUILTIN(__builtin___get_unsafe_stack_ptr, "v*", "Fn") + +#undef BUILTIN +#undef LIBBUILTIN +#undef LANGBUILTIN diff --git a/NativePath/NativePath.h b/NativePath/NativePath.h index 16f4b00..ceb7b94 100644 --- a/NativePath/NativePath.h +++ b/NativePath/NativePath.h @@ -110,2075 +110,2918 @@ typedef float float4 __attribute__((vector_size(VECTOR_BYTES), aligned(VECTOR_AL typedef int32_t int4 __attribute__((vector_size(VECTOR_BYTES), aligned(VECTOR_ALIGN))); typedef uint32_t uint4 __attribute__((vector_size(VECTOR_BYTES), aligned(VECTOR_ALIGN))); +//CLANG usable builtins + #if !__has_builtin(__builtin_atan2) -#error "atan2 clang built-in not available" + #error "atan2 clang built-in not available" #else -#define atan2 __builtin_atan2 + #define atan2 __builtin_atan2 #endif + #if !__has_builtin(__builtin_atan2f) -#error "atan2f clang built-in not available" + #error "atan2f clang built-in not available" #else -#define atan2f __builtin_atan2f + #define atan2f __builtin_atan2f #endif + #if !__has_builtin(__builtin_atan2l) -#error "atan2l clang built-in not available" + #error "atan2l clang built-in not available" #else -#define atan2l __builtin_atan2l + #define atan2l __builtin_atan2l #endif + #if !__has_builtin(__builtin_abs) -#error "abs clang built-in not available" + #error "abs clang built-in not available" #else -#define abs __builtin_abs + #define abs __builtin_abs #endif + #if !__has_builtin(__builtin_copysign) -#error "copysign clang built-in not available" + #error "copysign clang built-in not available" #else -#define copysign __builtin_copysign + #define copysign __builtin_copysign #endif + #if !__has_builtin(__builtin_copysignf) -#error "copysignf clang built-in not available" + #error "copysignf clang built-in not available" #else -#define copysignf __builtin_copysignf + #define copysignf __builtin_copysignf #endif + #if !__has_builtin(__builtin_copysignl) -#error "copysignl clang built-in not available" + #error "copysignl clang built-in not available" #else -#define copysignl __builtin_copysignl + #define copysignl __builtin_copysignl #endif + #if !__has_builtin(__builtin_fabs) -#error "fabs clang built-in not available" + #error "fabs clang built-in not available" #else -#define fabs __builtin_fabs + #define fabs __builtin_fabs #endif + #if !__has_builtin(__builtin_fabsf) -#error "fabsf clang built-in not available" + #error "fabsf clang built-in not available" #else -#define fabsf __builtin_fabsf + #define fabsf __builtin_fabsf #endif + #if !__has_builtin(__builtin_fabsl) -#error "fabsl clang built-in not available" + #error "fabsl clang built-in not available" #else -#define fabsl __builtin_fabsl + #define fabsl __builtin_fabsl #endif + #if !__has_builtin(__builtin_fmod) -#error "fmod clang built-in not available" + #error "fmod clang built-in not available" #else -#define fmod __builtin_fmod + #define fmod __builtin_fmod #endif + #if !__has_builtin(__builtin_fmodf) -#error "fmodf clang built-in not available" + #error "fmodf clang built-in not available" #else -#define fmodf __builtin_fmodf + #define fmodf __builtin_fmodf #endif + #if !__has_builtin(__builtin_fmodl) -#error "fmodl clang built-in not available" + #error "fmodl clang built-in not available" #else -#define fmodl __builtin_fmodl + #define fmodl __builtin_fmodl #endif + #if !__has_builtin(__builtin_frexp) -#error "frexp clang built-in not available" + #error "frexp clang built-in not available" #else -#define frexp __builtin_frexp + #define frexp __builtin_frexp #endif + #if !__has_builtin(__builtin_frexpf) -#error "frexpf clang built-in not available" + #error "frexpf clang built-in not available" #else -#define frexpf __builtin_frexpf + #define frexpf __builtin_frexpf #endif + #if !__has_builtin(__builtin_frexpl) -#error "frexpl clang built-in not available" + #error "frexpl clang built-in not available" #else -#define frexpl __builtin_frexpl + #define frexpl __builtin_frexpl #endif + #if !__has_builtin(__builtin_huge_val) -#error "huge_val clang built-in not available" + #error "huge_val clang built-in not available" #else -#define huge_val __builtin_huge_val + #define huge_val __builtin_huge_val #endif + #if !__has_builtin(__builtin_huge_valf) -#error "huge_valf clang built-in not available" + #error "huge_valf clang built-in not available" #else -#define huge_valf __builtin_huge_valf + #define huge_valf __builtin_huge_valf #endif + #if !__has_builtin(__builtin_huge_vall) -#error "huge_vall clang built-in not available" + #error "huge_vall clang built-in not available" #else -#define huge_vall __builtin_huge_vall + #define huge_vall __builtin_huge_vall #endif + #if !__has_builtin(__builtin_inf) -#error "inf clang built-in not available" + #error "inf clang built-in not available" #else -#define inf __builtin_inf + #define inf __builtin_inf #endif + #if !__has_builtin(__builtin_inff) -#error "inff clang built-in not available" + #error "inff clang built-in not available" #else -#define inff __builtin_inff + #define inff __builtin_inff #endif + #if !__has_builtin(__builtin_infl) -#error "infl clang built-in not available" + #error "infl clang built-in not available" #else -#define infl __builtin_infl + #define infl __builtin_infl #endif + #if !__has_builtin(__builtin_labs) -#error "labs clang built-in not available" + #error "labs clang built-in not available" #else -#define labs __builtin_labs + #define labs __builtin_labs #endif + #if !__has_builtin(__builtin_llabs) -#error "llabs clang built-in not available" + #error "llabs clang built-in not available" #else -#define llabs __builtin_llabs + #define llabs __builtin_llabs #endif + #if !__has_builtin(__builtin_ldexp) -#error "ldexp clang built-in not available" + #error "ldexp clang built-in not available" #else -#define ldexp __builtin_ldexp + #define ldexp __builtin_ldexp #endif + #if !__has_builtin(__builtin_ldexpf) -#error "ldexpf clang built-in not available" + #error "ldexpf clang built-in not available" #else -#define ldexpf __builtin_ldexpf + #define ldexpf __builtin_ldexpf #endif + #if !__has_builtin(__builtin_ldexpl) -#error "ldexpl clang built-in not available" + #error "ldexpl clang built-in not available" #else -#define ldexpl __builtin_ldexpl + #define ldexpl __builtin_ldexpl #endif + #if !__has_builtin(__builtin_modf) -#error "modf clang built-in not available" + #error "modf clang built-in not available" #else -#define modf __builtin_modf + #define modf __builtin_modf #endif + #if !__has_builtin(__builtin_modff) -#error "modff clang built-in not available" + #error "modff clang built-in not available" #else -#define modff __builtin_modff + #define modff __builtin_modff #endif + #if !__has_builtin(__builtin_modfl) -#error "modfl clang built-in not available" + #error "modfl clang built-in not available" #else -#define modfl __builtin_modfl + #define modfl __builtin_modfl #endif + #if !__has_builtin(__builtin_nan) -#error "nan clang built-in not available" + #error "nan clang built-in not available" #else -#define nan __builtin_nan + #define nan __builtin_nan #endif + #if !__has_builtin(__builtin_nanf) -#error "nanf clang built-in not available" + #error "nanf clang built-in not available" #else -#define nanf __builtin_nanf + #define nanf __builtin_nanf #endif + #if !__has_builtin(__builtin_nanl) -#error "nanl clang built-in not available" + #error "nanl clang built-in not available" #else -#define nanl __builtin_nanl + #define nanl __builtin_nanl #endif + #if !__has_builtin(__builtin_nans) -#error "nans clang built-in not available" + #error "nans clang built-in not available" #else -#define nans __builtin_nans + #define nans __builtin_nans #endif + #if !__has_builtin(__builtin_nansf) -#error "nansf clang built-in not available" + #error "nansf clang built-in not available" #else -#define nansf __builtin_nansf + #define nansf __builtin_nansf #endif + #if !__has_builtin(__builtin_nansl) -#error "nansl clang built-in not available" + #error "nansl clang built-in not available" #else -#define nansl __builtin_nansl + #define nansl __builtin_nansl #endif + #if !__has_builtin(__builtin_powi) -#error "powi clang built-in not available" + #error "powi clang built-in not available" #else -#define powi __builtin_powi + #define powi __builtin_powi #endif + #if !__has_builtin(__builtin_powif) -#error "powif clang built-in not available" + #error "powif clang built-in not available" #else -#define powif __builtin_powif + #define powif __builtin_powif #endif + #if !__has_builtin(__builtin_powil) -#error "powil clang built-in not available" + #error "powil clang built-in not available" #else -#define powil __builtin_powil + #define powil __builtin_powil #endif + #if !__has_builtin(__builtin_pow) -#error "pow clang built-in not available" + #error "pow clang built-in not available" #else -#define pow __builtin_pow + #define pow __builtin_pow #endif + #if !__has_builtin(__builtin_powf) -#error "powf clang built-in not available" + #error "powf clang built-in not available" #else -#define powf __builtin_powf + #define powf __builtin_powf #endif + #if !__has_builtin(__builtin_powl) -#error "powl clang built-in not available" + #error "powl clang built-in not available" #else -#define powl __builtin_powl + #define powl __builtin_powl #endif + #if !__has_builtin(__builtin_acos) -#error "acos clang built-in not available" + #error "acos clang built-in not available" #else -#define acos __builtin_acos + #define acos __builtin_acos #endif + #if !__has_builtin(__builtin_acosf) -#error "acosf clang built-in not available" + #error "acosf clang built-in not available" #else -#define acosf __builtin_acosf + #define acosf __builtin_acosf #endif + #if !__has_builtin(__builtin_acosl) -#error "acosl clang built-in not available" + #error "acosl clang built-in not available" #else -#define acosl __builtin_acosl + #define acosl __builtin_acosl #endif + #if !__has_builtin(__builtin_acosh) -#error "acosh clang built-in not available" + #error "acosh clang built-in not available" #else -#define acosh __builtin_acosh + #define acosh __builtin_acosh #endif + #if !__has_builtin(__builtin_acoshf) -#error "acoshf clang built-in not available" + #error "acoshf clang built-in not available" #else -#define acoshf __builtin_acoshf + #define acoshf __builtin_acoshf #endif + #if !__has_builtin(__builtin_acoshl) -#error "acoshl clang built-in not available" + #error "acoshl clang built-in not available" #else -#define acoshl __builtin_acoshl + #define acoshl __builtin_acoshl #endif + #if !__has_builtin(__builtin_asin) -#error "asin clang built-in not available" + #error "asin clang built-in not available" #else -#define asin __builtin_asin + #define asin __builtin_asin #endif + #if !__has_builtin(__builtin_asinf) -#error "asinf clang built-in not available" + #error "asinf clang built-in not available" #else -#define asinf __builtin_asinf + #define asinf __builtin_asinf #endif + #if !__has_builtin(__builtin_asinl) -#error "asinl clang built-in not available" + #error "asinl clang built-in not available" #else -#define asinl __builtin_asinl + #define asinl __builtin_asinl #endif + #if !__has_builtin(__builtin_asinh) -#error "asinh clang built-in not available" + #error "asinh clang built-in not available" #else -#define asinh __builtin_asinh + #define asinh __builtin_asinh #endif + #if !__has_builtin(__builtin_asinhf) -#error "asinhf clang built-in not available" + #error "asinhf clang built-in not available" #else -#define asinhf __builtin_asinhf + #define asinhf __builtin_asinhf #endif + #if !__has_builtin(__builtin_asinhl) -#error "asinhl clang built-in not available" + #error "asinhl clang built-in not available" #else -#define asinhl __builtin_asinhl + #define asinhl __builtin_asinhl #endif + #if !__has_builtin(__builtin_atan) -#error "atan clang built-in not available" + #error "atan clang built-in not available" #else -#define atan __builtin_atan + #define atan __builtin_atan #endif + #if !__has_builtin(__builtin_atanf) -#error "atanf clang built-in not available" + #error "atanf clang built-in not available" #else -#define atanf __builtin_atanf + #define atanf __builtin_atanf #endif + #if !__has_builtin(__builtin_atanl) -#error "atanl clang built-in not available" + #error "atanl clang built-in not available" #else -#define atanl __builtin_atanl + #define atanl __builtin_atanl #endif + #if !__has_builtin(__builtin_atanh) -#error "atanh clang built-in not available" + #error "atanh clang built-in not available" #else -#define atanh __builtin_atanh + #define atanh __builtin_atanh #endif + #if !__has_builtin(__builtin_atanhf) -#error "atanhf clang built-in not available" + #error "atanhf clang built-in not available" #else -#define atanhf __builtin_atanhf + #define atanhf __builtin_atanhf #endif + #if !__has_builtin(__builtin_atanhl) -#error "atanhl clang built-in not available" + #error "atanhl clang built-in not available" #else -#define atanhl __builtin_atanhl + #define atanhl __builtin_atanhl #endif + #if !__has_builtin(__builtin_cbrt) -#error "cbrt clang built-in not available" + #error "cbrt clang built-in not available" #else -#define cbrt __builtin_cbrt + #define cbrt __builtin_cbrt #endif + #if !__has_builtin(__builtin_cbrtf) -#error "cbrtf clang built-in not available" + #error "cbrtf clang built-in not available" #else -#define cbrtf __builtin_cbrtf + #define cbrtf __builtin_cbrtf #endif + #if !__has_builtin(__builtin_cbrtl) -#error "cbrtl clang built-in not available" + #error "cbrtl clang built-in not available" #else -#define cbrtl __builtin_cbrtl + #define cbrtl __builtin_cbrtl #endif + #if !__has_builtin(__builtin_ceil) -#error "ceil clang built-in not available" + #error "ceil clang built-in not available" #else -#define ceil __builtin_ceil + #define ceil __builtin_ceil #endif + #if !__has_builtin(__builtin_ceilf) -#error "ceilf clang built-in not available" + #error "ceilf clang built-in not available" #else -#define ceilf __builtin_ceilf + #define ceilf __builtin_ceilf #endif + #if !__has_builtin(__builtin_ceill) -#error "ceill clang built-in not available" + #error "ceill clang built-in not available" #else -#define ceill __builtin_ceill + #define ceill __builtin_ceill #endif + #if !__has_builtin(__builtin_cos) -#error "cos clang built-in not available" + #error "cos clang built-in not available" #else -#define cos __builtin_cos + #define cos __builtin_cos #endif + #if !__has_builtin(__builtin_cosf) -#error "cosf clang built-in not available" + #error "cosf clang built-in not available" #else -#define cosf __builtin_cosf + #define cosf __builtin_cosf #endif + #if !__has_builtin(__builtin_cosh) -#error "cosh clang built-in not available" + #error "cosh clang built-in not available" #else -#define cosh __builtin_cosh + #define cosh __builtin_cosh #endif + #if !__has_builtin(__builtin_coshf) -#error "coshf clang built-in not available" + #error "coshf clang built-in not available" #else -#define coshf __builtin_coshf + #define coshf __builtin_coshf #endif + #if !__has_builtin(__builtin_coshl) -#error "coshl clang built-in not available" + #error "coshl clang built-in not available" #else -#define coshl __builtin_coshl + #define coshl __builtin_coshl #endif + #if !__has_builtin(__builtin_cosl) -#error "cosl clang built-in not available" + #error "cosl clang built-in not available" #else -#define cosl __builtin_cosl + #define cosl __builtin_cosl #endif + #if !__has_builtin(__builtin_erf) -#error "erf clang built-in not available" + #error "erf clang built-in not available" #else -#define erf __builtin_erf + #define erf __builtin_erf #endif + #if !__has_builtin(__builtin_erff) -#error "erff clang built-in not available" + #error "erff clang built-in not available" #else -#define erff __builtin_erff + #define erff __builtin_erff #endif + #if !__has_builtin(__builtin_erfl) -#error "erfl clang built-in not available" + #error "erfl clang built-in not available" #else -#define erfl __builtin_erfl + #define erfl __builtin_erfl #endif + #if !__has_builtin(__builtin_erfc) -#error "erfc clang built-in not available" + #error "erfc clang built-in not available" #else -#define erfc __builtin_erfc + #define erfc __builtin_erfc #endif + #if !__has_builtin(__builtin_erfcf) -#error "erfcf clang built-in not available" + #error "erfcf clang built-in not available" #else -#define erfcf __builtin_erfcf + #define erfcf __builtin_erfcf #endif + #if !__has_builtin(__builtin_erfcl) -#error "erfcl clang built-in not available" + #error "erfcl clang built-in not available" #else -#define erfcl __builtin_erfcl + #define erfcl __builtin_erfcl #endif + #if !__has_builtin(__builtin_exp) -#error "exp clang built-in not available" + #error "exp clang built-in not available" #else -#define exp __builtin_exp + #define exp __builtin_exp #endif + #if !__has_builtin(__builtin_expf) -#error "expf clang built-in not available" + #error "expf clang built-in not available" #else -#define expf __builtin_expf + #define expf __builtin_expf #endif + #if !__has_builtin(__builtin_expl) -#error "expl clang built-in not available" + #error "expl clang built-in not available" #else -#define expl __builtin_expl + #define expl __builtin_expl #endif + #if !__has_builtin(__builtin_exp2) -#error "exp2 clang built-in not available" + #error "exp2 clang built-in not available" #else -#define exp2 __builtin_exp2 + #define exp2 __builtin_exp2 #endif + #if !__has_builtin(__builtin_exp2f) -#error "exp2f clang built-in not available" + #error "exp2f clang built-in not available" #else -#define exp2f __builtin_exp2f + #define exp2f __builtin_exp2f #endif + #if !__has_builtin(__builtin_exp2l) -#error "exp2l clang built-in not available" + #error "exp2l clang built-in not available" #else -#define exp2l __builtin_exp2l + #define exp2l __builtin_exp2l #endif + #if !__has_builtin(__builtin_expm1) -#error "expm1 clang built-in not available" + #error "expm1 clang built-in not available" #else -#define expm1 __builtin_expm1 + #define expm1 __builtin_expm1 #endif + #if !__has_builtin(__builtin_expm1f) -#error "expm1f clang built-in not available" + #error "expm1f clang built-in not available" #else -#define expm1f __builtin_expm1f + #define expm1f __builtin_expm1f #endif + #if !__has_builtin(__builtin_expm1l) -#error "expm1l clang built-in not available" + #error "expm1l clang built-in not available" #else -#define expm1l __builtin_expm1l + #define expm1l __builtin_expm1l #endif + #if !__has_builtin(__builtin_fdim) -#error "fdim clang built-in not available" + #error "fdim clang built-in not available" #else -#define fdim __builtin_fdim + #define fdim __builtin_fdim #endif + #if !__has_builtin(__builtin_fdimf) -#error "fdimf clang built-in not available" + #error "fdimf clang built-in not available" #else -#define fdimf __builtin_fdimf + #define fdimf __builtin_fdimf #endif + #if !__has_builtin(__builtin_fdiml) -#error "fdiml clang built-in not available" + #error "fdiml clang built-in not available" #else -#define fdiml __builtin_fdiml + #define fdiml __builtin_fdiml #endif + #if !__has_builtin(__builtin_floor) -#error "floor clang built-in not available" + #error "floor clang built-in not available" #else -#define floor __builtin_floor + #define floor __builtin_floor #endif + #if !__has_builtin(__builtin_floorf) -#error "floorf clang built-in not available" + #error "floorf clang built-in not available" #else -#define floorf __builtin_floorf + #define floorf __builtin_floorf #endif + #if !__has_builtin(__builtin_floorl) -#error "floorl clang built-in not available" + #error "floorl clang built-in not available" #else -#define floorl __builtin_floorl + #define floorl __builtin_floorl #endif + #if !__has_builtin(__builtin_fma) -#error "fma clang built-in not available" + #error "fma clang built-in not available" #else -#define fma __builtin_fma + #define fma __builtin_fma #endif + #if !__has_builtin(__builtin_fmaf) -#error "fmaf clang built-in not available" + #error "fmaf clang built-in not available" #else -#define fmaf __builtin_fmaf + #define fmaf __builtin_fmaf #endif + #if !__has_builtin(__builtin_fmal) -#error "fmal clang built-in not available" + #error "fmal clang built-in not available" #else -#define fmal __builtin_fmal + #define fmal __builtin_fmal #endif + #if !__has_builtin(__builtin_fmax) -#error "fmax clang built-in not available" + #error "fmax clang built-in not available" #else -#define fmax __builtin_fmax + #define fmax __builtin_fmax #endif + #if !__has_builtin(__builtin_fmaxf) -#error "fmaxf clang built-in not available" + #error "fmaxf clang built-in not available" #else -#define fmaxf __builtin_fmaxf + #define fmaxf __builtin_fmaxf #endif + #if !__has_builtin(__builtin_fmaxl) -#error "fmaxl clang built-in not available" + #error "fmaxl clang built-in not available" #else -#define fmaxl __builtin_fmaxl + #define fmaxl __builtin_fmaxl #endif + #if !__has_builtin(__builtin_fmin) -#error "fmin clang built-in not available" + #error "fmin clang built-in not available" #else -#define fmin __builtin_fmin + #define fmin __builtin_fmin #endif + #if !__has_builtin(__builtin_fminf) -#error "fminf clang built-in not available" + #error "fminf clang built-in not available" #else -#define fminf __builtin_fminf + #define fminf __builtin_fminf #endif + #if !__has_builtin(__builtin_fminl) -#error "fminl clang built-in not available" + #error "fminl clang built-in not available" #else -#define fminl __builtin_fminl + #define fminl __builtin_fminl #endif + #if !__has_builtin(__builtin_hypot) -#error "hypot clang built-in not available" + #error "hypot clang built-in not available" #else -#define hypot __builtin_hypot + #define hypot __builtin_hypot #endif + #if !__has_builtin(__builtin_hypotf) -#error "hypotf clang built-in not available" + #error "hypotf clang built-in not available" #else -#define hypotf __builtin_hypotf + #define hypotf __builtin_hypotf #endif + #if !__has_builtin(__builtin_hypotl) -#error "hypotl clang built-in not available" + #error "hypotl clang built-in not available" #else -#define hypotl __builtin_hypotl + #define hypotl __builtin_hypotl #endif + #if !__has_builtin(__builtin_ilogb) -#error "ilogb clang built-in not available" + #error "ilogb clang built-in not available" #else -#define ilogb __builtin_ilogb + #define ilogb __builtin_ilogb #endif + #if !__has_builtin(__builtin_ilogbf) -#error "ilogbf clang built-in not available" + #error "ilogbf clang built-in not available" #else -#define ilogbf __builtin_ilogbf + #define ilogbf __builtin_ilogbf #endif + #if !__has_builtin(__builtin_ilogbl) -#error "ilogbl clang built-in not available" + #error "ilogbl clang built-in not available" #else -#define ilogbl __builtin_ilogbl + #define ilogbl __builtin_ilogbl #endif + #if !__has_builtin(__builtin_lgamma) -#error "lgamma clang built-in not available" + #error "lgamma clang built-in not available" #else -#define lgamma __builtin_lgamma + #define lgamma __builtin_lgamma #endif + #if !__has_builtin(__builtin_lgammaf) -#error "lgammaf clang built-in not available" + #error "lgammaf clang built-in not available" #else -#define lgammaf __builtin_lgammaf + #define lgammaf __builtin_lgammaf #endif + #if !__has_builtin(__builtin_lgammal) -#error "lgammal clang built-in not available" + #error "lgammal clang built-in not available" #else -#define lgammal __builtin_lgammal + #define lgammal __builtin_lgammal #endif + #if !__has_builtin(__builtin_llrint) -#error "llrint clang built-in not available" + #error "llrint clang built-in not available" #else -#define llrint __builtin_llrint + #define llrint __builtin_llrint #endif + #if !__has_builtin(__builtin_llrintf) -#error "llrintf clang built-in not available" + #error "llrintf clang built-in not available" #else -#define llrintf __builtin_llrintf + #define llrintf __builtin_llrintf #endif + #if !__has_builtin(__builtin_llrintl) -#error "llrintl clang built-in not available" + #error "llrintl clang built-in not available" #else -#define llrintl __builtin_llrintl + #define llrintl __builtin_llrintl #endif + #if !__has_builtin(__builtin_llround) -#error "llround clang built-in not available" + #error "llround clang built-in not available" #else -#define llround __builtin_llround + #define llround __builtin_llround #endif + #if !__has_builtin(__builtin_llroundf) -#error "llroundf clang built-in not available" + #error "llroundf clang built-in not available" #else -#define llroundf __builtin_llroundf + #define llroundf __builtin_llroundf #endif + #if !__has_builtin(__builtin_llroundl) -#error "llroundl clang built-in not available" + #error "llroundl clang built-in not available" #else -#define llroundl __builtin_llroundl + #define llroundl __builtin_llroundl #endif + #if !__has_builtin(__builtin_log) -#error "log clang built-in not available" + #error "log clang built-in not available" #else -#define log __builtin_log + #define log __builtin_log #endif + #if !__has_builtin(__builtin_log10) -#error "log10 clang built-in not available" + #error "log10 clang built-in not available" #else -#define log10 __builtin_log10 + #define log10 __builtin_log10 #endif + #if !__has_builtin(__builtin_log10f) -#error "log10f clang built-in not available" + #error "log10f clang built-in not available" #else -#define log10f __builtin_log10f + #define log10f __builtin_log10f #endif + #if !__has_builtin(__builtin_log10l) -#error "log10l clang built-in not available" + #error "log10l clang built-in not available" #else -#define log10l __builtin_log10l + #define log10l __builtin_log10l #endif + #if !__has_builtin(__builtin_log1p) -#error "log1p clang built-in not available" + #error "log1p clang built-in not available" #else -#define log1p __builtin_log1p + #define log1p __builtin_log1p #endif + #if !__has_builtin(__builtin_log1pf) -#error "log1pf clang built-in not available" + #error "log1pf clang built-in not available" #else -#define log1pf __builtin_log1pf + #define log1pf __builtin_log1pf #endif + #if !__has_builtin(__builtin_log1pl) -#error "log1pl clang built-in not available" + #error "log1pl clang built-in not available" #else -#define log1pl __builtin_log1pl + #define log1pl __builtin_log1pl #endif + #if !__has_builtin(__builtin_log2) -#error "log2 clang built-in not available" + #error "log2 clang built-in not available" #else -#define log2 __builtin_log2 + #define log2 __builtin_log2 #endif + #if !__has_builtin(__builtin_log2f) -#error "log2f clang built-in not available" + #error "log2f clang built-in not available" #else -#define log2f __builtin_log2f + #define log2f __builtin_log2f #endif + #if !__has_builtin(__builtin_log2l) -#error "log2l clang built-in not available" + #error "log2l clang built-in not available" #else -#define log2l __builtin_log2l + #define log2l __builtin_log2l #endif + #if !__has_builtin(__builtin_logb) -#error "logb clang built-in not available" + #error "logb clang built-in not available" #else -#define logb __builtin_logb + #define logb __builtin_logb #endif + #if !__has_builtin(__builtin_logbf) -#error "logbf clang built-in not available" + #error "logbf clang built-in not available" #else -#define logbf __builtin_logbf + #define logbf __builtin_logbf #endif + #if !__has_builtin(__builtin_logbl) -#error "logbl clang built-in not available" + #error "logbl clang built-in not available" #else -#define logbl __builtin_logbl + #define logbl __builtin_logbl #endif + #if !__has_builtin(__builtin_logf) -#error "logf clang built-in not available" + #error "logf clang built-in not available" #else -#define logf __builtin_logf + #define logf __builtin_logf #endif + #if !__has_builtin(__builtin_logl) -#error "logl clang built-in not available" + #error "logl clang built-in not available" #else -#define logl __builtin_logl + #define logl __builtin_logl #endif + #if !__has_builtin(__builtin_lrint) -#error "lrint clang built-in not available" + #error "lrint clang built-in not available" #else -#define lrint __builtin_lrint + #define lrint __builtin_lrint #endif + #if !__has_builtin(__builtin_lrintf) -#error "lrintf clang built-in not available" + #error "lrintf clang built-in not available" #else -#define lrintf __builtin_lrintf + #define lrintf __builtin_lrintf #endif + #if !__has_builtin(__builtin_lrintl) -#error "lrintl clang built-in not available" + #error "lrintl clang built-in not available" #else -#define lrintl __builtin_lrintl + #define lrintl __builtin_lrintl #endif + #if !__has_builtin(__builtin_lround) -#error "lround clang built-in not available" + #error "lround clang built-in not available" #else -#define lround __builtin_lround + #define lround __builtin_lround #endif + #if !__has_builtin(__builtin_lroundf) -#error "lroundf clang built-in not available" + #error "lroundf clang built-in not available" #else -#define lroundf __builtin_lroundf + #define lroundf __builtin_lroundf #endif + #if !__has_builtin(__builtin_lroundl) -#error "lroundl clang built-in not available" + #error "lroundl clang built-in not available" #else -#define lroundl __builtin_lroundl + #define lroundl __builtin_lroundl #endif + #if !__has_builtin(__builtin_nearbyint) -#error "nearbyint clang built-in not available" + #error "nearbyint clang built-in not available" #else -#define nearbyint __builtin_nearbyint + #define nearbyint __builtin_nearbyint #endif + #if !__has_builtin(__builtin_nearbyintf) -#error "nearbyintf clang built-in not available" + #error "nearbyintf clang built-in not available" #else -#define nearbyintf __builtin_nearbyintf + #define nearbyintf __builtin_nearbyintf #endif + #if !__has_builtin(__builtin_nearbyintl) -#error "nearbyintl clang built-in not available" + #error "nearbyintl clang built-in not available" #else -#define nearbyintl __builtin_nearbyintl + #define nearbyintl __builtin_nearbyintl #endif + #if !__has_builtin(__builtin_nextafter) -#error "nextafter clang built-in not available" + #error "nextafter clang built-in not available" #else -#define nextafter __builtin_nextafter + #define nextafter __builtin_nextafter #endif + #if !__has_builtin(__builtin_nextafterf) -#error "nextafterf clang built-in not available" + #error "nextafterf clang built-in not available" #else -#define nextafterf __builtin_nextafterf + #define nextafterf __builtin_nextafterf #endif + #if !__has_builtin(__builtin_nextafterl) -#error "nextafterl clang built-in not available" + #error "nextafterl clang built-in not available" #else -#define nextafterl __builtin_nextafterl + #define nextafterl __builtin_nextafterl #endif + #if !__has_builtin(__builtin_nexttoward) -#error "nexttoward clang built-in not available" + #error "nexttoward clang built-in not available" #else -#define nexttoward __builtin_nexttoward + #define nexttoward __builtin_nexttoward #endif + #if !__has_builtin(__builtin_nexttowardf) -#error "nexttowardf clang built-in not available" + #error "nexttowardf clang built-in not available" #else -#define nexttowardf __builtin_nexttowardf + #define nexttowardf __builtin_nexttowardf #endif + #if !__has_builtin(__builtin_nexttowardl) -#error "nexttowardl clang built-in not available" + #error "nexttowardl clang built-in not available" #else -#define nexttowardl __builtin_nexttowardl + #define nexttowardl __builtin_nexttowardl #endif + #if !__has_builtin(__builtin_remainder) -#error "remainder clang built-in not available" + #error "remainder clang built-in not available" #else -#define remainder __builtin_remainder + #define remainder __builtin_remainder #endif + #if !__has_builtin(__builtin_remainderf) -#error "remainderf clang built-in not available" + #error "remainderf clang built-in not available" #else -#define remainderf __builtin_remainderf + #define remainderf __builtin_remainderf #endif + #if !__has_builtin(__builtin_remainderl) -#error "remainderl clang built-in not available" + #error "remainderl clang built-in not available" #else -#define remainderl __builtin_remainderl + #define remainderl __builtin_remainderl #endif + #if !__has_builtin(__builtin_remquo) -#error "remquo clang built-in not available" + #error "remquo clang built-in not available" #else -#define remquo __builtin_remquo + #define remquo __builtin_remquo #endif + #if !__has_builtin(__builtin_remquof) -#error "remquof clang built-in not available" + #error "remquof clang built-in not available" #else -#define remquof __builtin_remquof + #define remquof __builtin_remquof #endif + #if !__has_builtin(__builtin_remquol) -#error "remquol clang built-in not available" + #error "remquol clang built-in not available" #else -#define remquol __builtin_remquol + #define remquol __builtin_remquol #endif + #if !__has_builtin(__builtin_rint) -#error "rint clang built-in not available" + #error "rint clang built-in not available" #else -#define rint __builtin_rint + #define rint __builtin_rint #endif + #if !__has_builtin(__builtin_rintf) -#error "rintf clang built-in not available" + #error "rintf clang built-in not available" #else -#define rintf __builtin_rintf + #define rintf __builtin_rintf #endif + #if !__has_builtin(__builtin_rintl) -#error "rintl clang built-in not available" + #error "rintl clang built-in not available" #else -#define rintl __builtin_rintl + #define rintl __builtin_rintl #endif + #if !__has_builtin(__builtin_round) -#error "round clang built-in not available" + #error "round clang built-in not available" #else -#define round __builtin_round + #define round __builtin_round #endif + #if !__has_builtin(__builtin_roundf) -#error "roundf clang built-in not available" + #error "roundf clang built-in not available" #else -#define roundf __builtin_roundf + #define roundf __builtin_roundf #endif + #if !__has_builtin(__builtin_roundl) -#error "roundl clang built-in not available" + #error "roundl clang built-in not available" #else -#define roundl __builtin_roundl + #define roundl __builtin_roundl #endif + #if !__has_builtin(__builtin_scalbln) -#error "scalbln clang built-in not available" + #error "scalbln clang built-in not available" #else -#define scalbln __builtin_scalbln + #define scalbln __builtin_scalbln #endif + #if !__has_builtin(__builtin_scalblnf) -#error "scalblnf clang built-in not available" + #error "scalblnf clang built-in not available" #else -#define scalblnf __builtin_scalblnf + #define scalblnf __builtin_scalblnf #endif + #if !__has_builtin(__builtin_scalblnl) -#error "scalblnl clang built-in not available" + #error "scalblnl clang built-in not available" #else -#define scalblnl __builtin_scalblnl + #define scalblnl __builtin_scalblnl #endif + #if !__has_builtin(__builtin_scalbn) -#error "scalbn clang built-in not available" + #error "scalbn clang built-in not available" #else -#define scalbn __builtin_scalbn + #define scalbn __builtin_scalbn #endif + #if !__has_builtin(__builtin_scalbnf) -#error "scalbnf clang built-in not available" + #error "scalbnf clang built-in not available" #else -#define scalbnf __builtin_scalbnf + #define scalbnf __builtin_scalbnf #endif + #if !__has_builtin(__builtin_scalbnl) -#error "scalbnl clang built-in not available" + #error "scalbnl clang built-in not available" #else -#define scalbnl __builtin_scalbnl + #define scalbnl __builtin_scalbnl #endif + #if !__has_builtin(__builtin_sin) -#error "sin clang built-in not available" + #error "sin clang built-in not available" #else -#define sin __builtin_sin + #define sin __builtin_sin #endif + #if !__has_builtin(__builtin_sinf) -#error "sinf clang built-in not available" + #error "sinf clang built-in not available" #else -#define sinf __builtin_sinf + #define sinf __builtin_sinf #endif + #if !__has_builtin(__builtin_sinh) -#error "sinh clang built-in not available" + #error "sinh clang built-in not available" #else -#define sinh __builtin_sinh + #define sinh __builtin_sinh #endif + #if !__has_builtin(__builtin_sinhf) -#error "sinhf clang built-in not available" + #error "sinhf clang built-in not available" #else -#define sinhf __builtin_sinhf + #define sinhf __builtin_sinhf #endif + #if !__has_builtin(__builtin_sinhl) -#error "sinhl clang built-in not available" + #error "sinhl clang built-in not available" #else -#define sinhl __builtin_sinhl + #define sinhl __builtin_sinhl #endif + #if !__has_builtin(__builtin_sinl) -#error "sinl clang built-in not available" + #error "sinl clang built-in not available" #else -#define sinl __builtin_sinl + #define sinl __builtin_sinl #endif + #if !__has_builtin(__builtin_sqrt) -#error "sqrt clang built-in not available" + #error "sqrt clang built-in not available" #else -#define sqrt __builtin_sqrt + #define sqrt __builtin_sqrt #endif + #if !__has_builtin(__builtin_sqrtf) -#error "sqrtf clang built-in not available" + #error "sqrtf clang built-in not available" #else -#define sqrtf __builtin_sqrtf + #define sqrtf __builtin_sqrtf #endif + #if !__has_builtin(__builtin_sqrtl) -#error "sqrtl clang built-in not available" + #error "sqrtl clang built-in not available" #else -#define sqrtl __builtin_sqrtl + #define sqrtl __builtin_sqrtl #endif + #if !__has_builtin(__builtin_tan) -#error "tan clang built-in not available" + #error "tan clang built-in not available" #else -#define tan __builtin_tan + #define tan __builtin_tan #endif + #if !__has_builtin(__builtin_tanf) -#error "tanf clang built-in not available" + #error "tanf clang built-in not available" #else -#define tanf __builtin_tanf + #define tanf __builtin_tanf #endif + #if !__has_builtin(__builtin_tanh) -#error "tanh clang built-in not available" + #error "tanh clang built-in not available" #else -#define tanh __builtin_tanh + #define tanh __builtin_tanh #endif + #if !__has_builtin(__builtin_tanhf) -#error "tanhf clang built-in not available" + #error "tanhf clang built-in not available" #else -#define tanhf __builtin_tanhf + #define tanhf __builtin_tanhf #endif + #if !__has_builtin(__builtin_tanhl) -#error "tanhl clang built-in not available" + #error "tanhl clang built-in not available" #else -#define tanhl __builtin_tanhl + #define tanhl __builtin_tanhl #endif + #if !__has_builtin(__builtin_tanl) -#error "tanl clang built-in not available" + #error "tanl clang built-in not available" #else -#define tanl __builtin_tanl + #define tanl __builtin_tanl #endif + #if !__has_builtin(__builtin_tgamma) -#error "tgamma clang built-in not available" + #error "tgamma clang built-in not available" #else -#define tgamma __builtin_tgamma + #define tgamma __builtin_tgamma #endif + #if !__has_builtin(__builtin_tgammaf) -#error "tgammaf clang built-in not available" + #error "tgammaf clang built-in not available" #else -#define tgammaf __builtin_tgammaf + #define tgammaf __builtin_tgammaf #endif + #if !__has_builtin(__builtin_tgammal) -#error "tgammal clang built-in not available" + #error "tgammal clang built-in not available" #else -#define tgammal __builtin_tgammal + #define tgammal __builtin_tgammal #endif + #if !__has_builtin(__builtin_trunc) -#error "trunc clang built-in not available" + #error "trunc clang built-in not available" #else -#define trunc __builtin_trunc + #define trunc __builtin_trunc #endif + #if !__has_builtin(__builtin_truncf) -#error "truncf clang built-in not available" + #error "truncf clang built-in not available" #else -#define truncf __builtin_truncf + #define truncf __builtin_truncf #endif + #if !__has_builtin(__builtin_truncl) -#error "truncl clang built-in not available" + #error "truncl clang built-in not available" #else -#define truncl __builtin_truncl + #define truncl __builtin_truncl #endif + #if !__has_builtin(__builtin_cabs) -#error "cabs clang built-in not available" + #error "cabs clang built-in not available" #else -#define cabs __builtin_cabs + #define cabs __builtin_cabs #endif + #if !__has_builtin(__builtin_cabsf) -#error "cabsf clang built-in not available" + #error "cabsf clang built-in not available" #else -#define cabsf __builtin_cabsf + #define cabsf __builtin_cabsf #endif + #if !__has_builtin(__builtin_cabsl) -#error "cabsl clang built-in not available" + #error "cabsl clang built-in not available" #else -#define cabsl __builtin_cabsl + #define cabsl __builtin_cabsl #endif + #if !__has_builtin(__builtin_cacos) -#error "cacos clang built-in not available" + #error "cacos clang built-in not available" #else -#define cacos __builtin_cacos + #define cacos __builtin_cacos #endif + #if !__has_builtin(__builtin_cacosf) -#error "cacosf clang built-in not available" + #error "cacosf clang built-in not available" #else -#define cacosf __builtin_cacosf + #define cacosf __builtin_cacosf #endif + #if !__has_builtin(__builtin_cacosh) -#error "cacosh clang built-in not available" + #error "cacosh clang built-in not available" #else -#define cacosh __builtin_cacosh + #define cacosh __builtin_cacosh #endif + #if !__has_builtin(__builtin_cacoshf) -#error "cacoshf clang built-in not available" + #error "cacoshf clang built-in not available" #else -#define cacoshf __builtin_cacoshf + #define cacoshf __builtin_cacoshf #endif + #if !__has_builtin(__builtin_cacoshl) -#error "cacoshl clang built-in not available" + #error "cacoshl clang built-in not available" #else -#define cacoshl __builtin_cacoshl + #define cacoshl __builtin_cacoshl #endif + #if !__has_builtin(__builtin_cacosl) -#error "cacosl clang built-in not available" + #error "cacosl clang built-in not available" #else -#define cacosl __builtin_cacosl + #define cacosl __builtin_cacosl #endif + #if !__has_builtin(__builtin_carg) -#error "carg clang built-in not available" + #error "carg clang built-in not available" #else -#define carg __builtin_carg + #define carg __builtin_carg #endif + #if !__has_builtin(__builtin_cargf) -#error "cargf clang built-in not available" + #error "cargf clang built-in not available" #else -#define cargf __builtin_cargf + #define cargf __builtin_cargf #endif + #if !__has_builtin(__builtin_cargl) -#error "cargl clang built-in not available" + #error "cargl clang built-in not available" #else -#define cargl __builtin_cargl + #define cargl __builtin_cargl #endif + #if !__has_builtin(__builtin_casin) -#error "casin clang built-in not available" + #error "casin clang built-in not available" #else -#define casin __builtin_casin + #define casin __builtin_casin #endif + #if !__has_builtin(__builtin_casinf) -#error "casinf clang built-in not available" + #error "casinf clang built-in not available" #else -#define casinf __builtin_casinf + #define casinf __builtin_casinf #endif + #if !__has_builtin(__builtin_casinh) -#error "casinh clang built-in not available" + #error "casinh clang built-in not available" #else -#define casinh __builtin_casinh + #define casinh __builtin_casinh #endif + #if !__has_builtin(__builtin_casinhf) -#error "casinhf clang built-in not available" + #error "casinhf clang built-in not available" #else -#define casinhf __builtin_casinhf + #define casinhf __builtin_casinhf #endif + #if !__has_builtin(__builtin_casinhl) -#error "casinhl clang built-in not available" + #error "casinhl clang built-in not available" #else -#define casinhl __builtin_casinhl + #define casinhl __builtin_casinhl #endif + #if !__has_builtin(__builtin_casinl) -#error "casinl clang built-in not available" + #error "casinl clang built-in not available" #else -#define casinl __builtin_casinl + #define casinl __builtin_casinl #endif + #if !__has_builtin(__builtin_catan) -#error "catan clang built-in not available" + #error "catan clang built-in not available" #else -#define catan __builtin_catan + #define catan __builtin_catan #endif + #if !__has_builtin(__builtin_catanf) -#error "catanf clang built-in not available" + #error "catanf clang built-in not available" #else -#define catanf __builtin_catanf + #define catanf __builtin_catanf #endif + #if !__has_builtin(__builtin_catanh) -#error "catanh clang built-in not available" + #error "catanh clang built-in not available" #else -#define catanh __builtin_catanh + #define catanh __builtin_catanh #endif + #if !__has_builtin(__builtin_catanhf) -#error "catanhf clang built-in not available" + #error "catanhf clang built-in not available" #else -#define catanhf __builtin_catanhf + #define catanhf __builtin_catanhf #endif + #if !__has_builtin(__builtin_catanhl) -#error "catanhl clang built-in not available" + #error "catanhl clang built-in not available" #else -#define catanhl __builtin_catanhl + #define catanhl __builtin_catanhl #endif + #if !__has_builtin(__builtin_catanl) -#error "catanl clang built-in not available" + #error "catanl clang built-in not available" #else -#define catanl __builtin_catanl + #define catanl __builtin_catanl #endif + #if !__has_builtin(__builtin_ccos) -#error "ccos clang built-in not available" + #error "ccos clang built-in not available" #else -#define ccos __builtin_ccos + #define ccos __builtin_ccos #endif + #if !__has_builtin(__builtin_ccosf) -#error "ccosf clang built-in not available" + #error "ccosf clang built-in not available" #else -#define ccosf __builtin_ccosf + #define ccosf __builtin_ccosf #endif + #if !__has_builtin(__builtin_ccosl) -#error "ccosl clang built-in not available" + #error "ccosl clang built-in not available" #else -#define ccosl __builtin_ccosl + #define ccosl __builtin_ccosl #endif + #if !__has_builtin(__builtin_ccosh) -#error "ccosh clang built-in not available" + #error "ccosh clang built-in not available" #else -#define ccosh __builtin_ccosh + #define ccosh __builtin_ccosh #endif + #if !__has_builtin(__builtin_ccoshf) -#error "ccoshf clang built-in not available" + #error "ccoshf clang built-in not available" #else -#define ccoshf __builtin_ccoshf + #define ccoshf __builtin_ccoshf #endif + #if !__has_builtin(__builtin_ccoshl) -#error "ccoshl clang built-in not available" + #error "ccoshl clang built-in not available" #else -#define ccoshl __builtin_ccoshl + #define ccoshl __builtin_ccoshl #endif + #if !__has_builtin(__builtin_cexp) -#error "cexp clang built-in not available" + #error "cexp clang built-in not available" #else -#define cexp __builtin_cexp + #define cexp __builtin_cexp #endif + #if !__has_builtin(__builtin_cexpf) -#error "cexpf clang built-in not available" + #error "cexpf clang built-in not available" #else -#define cexpf __builtin_cexpf + #define cexpf __builtin_cexpf #endif + #if !__has_builtin(__builtin_cexpl) -#error "cexpl clang built-in not available" + #error "cexpl clang built-in not available" #else -#define cexpl __builtin_cexpl + #define cexpl __builtin_cexpl #endif + #if !__has_builtin(__builtin_cimag) -#error "cimag clang built-in not available" + #error "cimag clang built-in not available" #else -#define cimag __builtin_cimag + #define cimag __builtin_cimag #endif + #if !__has_builtin(__builtin_cimagf) -#error "cimagf clang built-in not available" + #error "cimagf clang built-in not available" #else -#define cimagf __builtin_cimagf + #define cimagf __builtin_cimagf #endif + #if !__has_builtin(__builtin_cimagl) -#error "cimagl clang built-in not available" + #error "cimagl clang built-in not available" #else -#define cimagl __builtin_cimagl + #define cimagl __builtin_cimagl #endif + #if !__has_builtin(__builtin_conj) -#error "conj clang built-in not available" + #error "conj clang built-in not available" #else -#define conj __builtin_conj + #define conj __builtin_conj #endif + #if !__has_builtin(__builtin_conjf) -#error "conjf clang built-in not available" + #error "conjf clang built-in not available" #else -#define conjf __builtin_conjf + #define conjf __builtin_conjf #endif + #if !__has_builtin(__builtin_conjl) -#error "conjl clang built-in not available" + #error "conjl clang built-in not available" #else -#define conjl __builtin_conjl + #define conjl __builtin_conjl #endif + #if !__has_builtin(__builtin_clog) -#error "clog clang built-in not available" + #error "clog clang built-in not available" #else -#define clog __builtin_clog + #define clog __builtin_clog #endif + #if !__has_builtin(__builtin_clogf) -#error "clogf clang built-in not available" + #error "clogf clang built-in not available" #else -#define clogf __builtin_clogf + #define clogf __builtin_clogf #endif + #if !__has_builtin(__builtin_clogl) -#error "clogl clang built-in not available" + #error "clogl clang built-in not available" #else -#define clogl __builtin_clogl + #define clogl __builtin_clogl #endif + #if !__has_builtin(__builtin_cproj) -#error "cproj clang built-in not available" + #error "cproj clang built-in not available" #else -#define cproj __builtin_cproj + #define cproj __builtin_cproj #endif + #if !__has_builtin(__builtin_cprojf) -#error "cprojf clang built-in not available" + #error "cprojf clang built-in not available" #else -#define cprojf __builtin_cprojf + #define cprojf __builtin_cprojf #endif + #if !__has_builtin(__builtin_cprojl) -#error "cprojl clang built-in not available" + #error "cprojl clang built-in not available" #else -#define cprojl __builtin_cprojl + #define cprojl __builtin_cprojl #endif + #if !__has_builtin(__builtin_cpow) -#error "cpow clang built-in not available" + #error "cpow clang built-in not available" #else -#define cpow __builtin_cpow + #define cpow __builtin_cpow #endif + #if !__has_builtin(__builtin_cpowf) -#error "cpowf clang built-in not available" + #error "cpowf clang built-in not available" #else -#define cpowf __builtin_cpowf + #define cpowf __builtin_cpowf #endif + #if !__has_builtin(__builtin_cpowl) -#error "cpowl clang built-in not available" + #error "cpowl clang built-in not available" #else -#define cpowl __builtin_cpowl + #define cpowl __builtin_cpowl #endif + #if !__has_builtin(__builtin_creal) -#error "creal clang built-in not available" + #error "creal clang built-in not available" #else -#define creal __builtin_creal + #define creal __builtin_creal #endif + #if !__has_builtin(__builtin_crealf) -#error "crealf clang built-in not available" + #error "crealf clang built-in not available" #else -#define crealf __builtin_crealf + #define crealf __builtin_crealf #endif + #if !__has_builtin(__builtin_creall) -#error "creall clang built-in not available" + #error "creall clang built-in not available" #else -#define creall __builtin_creall + #define creall __builtin_creall #endif + #if !__has_builtin(__builtin_csin) -#error "csin clang built-in not available" + #error "csin clang built-in not available" #else -#define csin __builtin_csin + #define csin __builtin_csin #endif + #if !__has_builtin(__builtin_csinf) -#error "csinf clang built-in not available" + #error "csinf clang built-in not available" #else -#define csinf __builtin_csinf + #define csinf __builtin_csinf #endif + #if !__has_builtin(__builtin_csinl) -#error "csinl clang built-in not available" + #error "csinl clang built-in not available" #else -#define csinl __builtin_csinl + #define csinl __builtin_csinl #endif + #if !__has_builtin(__builtin_csinh) -#error "csinh clang built-in not available" + #error "csinh clang built-in not available" #else -#define csinh __builtin_csinh + #define csinh __builtin_csinh #endif + #if !__has_builtin(__builtin_csinhf) -#error "csinhf clang built-in not available" + #error "csinhf clang built-in not available" #else -#define csinhf __builtin_csinhf + #define csinhf __builtin_csinhf #endif + #if !__has_builtin(__builtin_csinhl) -#error "csinhl clang built-in not available" + #error "csinhl clang built-in not available" #else -#define csinhl __builtin_csinhl + #define csinhl __builtin_csinhl #endif + #if !__has_builtin(__builtin_csqrt) -#error "csqrt clang built-in not available" + #error "csqrt clang built-in not available" #else -#define csqrt __builtin_csqrt + #define csqrt __builtin_csqrt #endif + #if !__has_builtin(__builtin_csqrtf) -#error "csqrtf clang built-in not available" + #error "csqrtf clang built-in not available" #else -#define csqrtf __builtin_csqrtf + #define csqrtf __builtin_csqrtf #endif + #if !__has_builtin(__builtin_csqrtl) -#error "csqrtl clang built-in not available" + #error "csqrtl clang built-in not available" #else -#define csqrtl __builtin_csqrtl + #define csqrtl __builtin_csqrtl #endif + #if !__has_builtin(__builtin_ctan) -#error "ctan clang built-in not available" + #error "ctan clang built-in not available" #else -#define ctan __builtin_ctan + #define ctan __builtin_ctan #endif + #if !__has_builtin(__builtin_ctanf) -#error "ctanf clang built-in not available" + #error "ctanf clang built-in not available" #else -#define ctanf __builtin_ctanf + #define ctanf __builtin_ctanf #endif + #if !__has_builtin(__builtin_ctanl) -#error "ctanl clang built-in not available" + #error "ctanl clang built-in not available" #else -#define ctanl __builtin_ctanl + #define ctanl __builtin_ctanl #endif + #if !__has_builtin(__builtin_ctanh) -#error "ctanh clang built-in not available" + #error "ctanh clang built-in not available" #else -#define ctanh __builtin_ctanh + #define ctanh __builtin_ctanh #endif + #if !__has_builtin(__builtin_ctanhf) -#error "ctanhf clang built-in not available" + #error "ctanhf clang built-in not available" #else -#define ctanhf __builtin_ctanhf + #define ctanhf __builtin_ctanhf #endif + #if !__has_builtin(__builtin_ctanhl) -#error "ctanhl clang built-in not available" + #error "ctanhl clang built-in not available" #else -#define ctanhl __builtin_ctanhl + #define ctanhl __builtin_ctanhl #endif + #if !__has_builtin(__builtin_isgreater) -#error "isgreater clang built-in not available" + #error "isgreater clang built-in not available" #else -#define isgreater __builtin_isgreater + #define isgreater __builtin_isgreater #endif + #if !__has_builtin(__builtin_isgreaterequal) -#error "isgreaterequal clang built-in not available" + #error "isgreaterequal clang built-in not available" #else -#define isgreaterequal __builtin_isgreaterequal + #define isgreaterequal __builtin_isgreaterequal #endif + #if !__has_builtin(__builtin_isless) -#error "isless clang built-in not available" + #error "isless clang built-in not available" #else -#define isless __builtin_isless + #define isless __builtin_isless #endif + #if !__has_builtin(__builtin_islessequal) -#error "islessequal clang built-in not available" + #error "islessequal clang built-in not available" #else -#define islessequal __builtin_islessequal + #define islessequal __builtin_islessequal #endif + #if !__has_builtin(__builtin_islessgreater) -#error "islessgreater clang built-in not available" + #error "islessgreater clang built-in not available" #else -#define islessgreater __builtin_islessgreater + #define islessgreater __builtin_islessgreater #endif + #if !__has_builtin(__builtin_isunordered) -#error "isunordered clang built-in not available" + #error "isunordered clang built-in not available" #else -#define isunordered __builtin_isunordered + #define isunordered __builtin_isunordered #endif + #if !__has_builtin(__builtin_fpclassify) -#error "fpclassify clang built-in not available" + #error "fpclassify clang built-in not available" #else -#define fpclassify __builtin_fpclassify + #define fpclassify __builtin_fpclassify #endif + #if !__has_builtin(__builtin_isfinite) -#error "isfinite clang built-in not available" + #error "isfinite clang built-in not available" #else -#define isfinite __builtin_isfinite + #define isfinite __builtin_isfinite #endif + #if !__has_builtin(__builtin_isinf) -#error "isinf clang built-in not available" + #error "isinf clang built-in not available" #else -#define isinf __builtin_isinf + #define isinf __builtin_isinf #endif + #if !__has_builtin(__builtin_isinf_sign) -#error "isinf_sign clang built-in not available" + #error "isinf_sign clang built-in not available" #else -#define isinf_sign __builtin_isinf_sign + #define isinf_sign __builtin_isinf_sign #endif + #if !__has_builtin(__builtin_isnan) -#error "isnan clang built-in not available" + #error "isnan clang built-in not available" #else -#define isnan __builtin_isnan + #define isnan __builtin_isnan #endif + #if !__has_builtin(__builtin_isnormal) -#error "isnormal clang built-in not available" + #error "isnormal clang built-in not available" #else -#define isnormal __builtin_isnormal + #define isnormal __builtin_isnormal #endif + #if !__has_builtin(__builtin_signbit) -#error "signbit clang built-in not available" + #error "signbit clang built-in not available" #else -#define signbit __builtin_signbit + #define signbit __builtin_signbit #endif + #if !__has_builtin(__builtin_signbitf) -#error "signbitf clang built-in not available" + #error "signbitf clang built-in not available" #else -#define signbitf __builtin_signbitf + #define signbitf __builtin_signbitf #endif + #if !__has_builtin(__builtin_signbitl) -#error "signbitl clang built-in not available" + #error "signbitl clang built-in not available" #else -#define signbitl __builtin_signbitl + #define signbitl __builtin_signbitl #endif + #if !__has_builtin(__builtin_clzs) -#error "clzs clang built-in not available" + #error "clzs clang built-in not available" #else -#define clzs __builtin_clzs + #define clzs __builtin_clzs #endif + #if !__has_builtin(__builtin_clz) -#error "clz clang built-in not available" + #error "clz clang built-in not available" #else -#define clz __builtin_clz + #define clz __builtin_clz #endif + #if !__has_builtin(__builtin_clzl) -#error "clzl clang built-in not available" + #error "clzl clang built-in not available" #else -#define clzl __builtin_clzl + #define clzl __builtin_clzl #endif + #if !__has_builtin(__builtin_clzll) -#error "clzll clang built-in not available" + #error "clzll clang built-in not available" #else -#define clzll __builtin_clzll + #define clzll __builtin_clzll #endif + #if !__has_builtin(__builtin_ctzs) -#error "ctzs clang built-in not available" + #error "ctzs clang built-in not available" #else -#define ctzs __builtin_ctzs + #define ctzs __builtin_ctzs #endif + #if !__has_builtin(__builtin_ctz) -#error "ctz clang built-in not available" + #error "ctz clang built-in not available" #else -#define ctz __builtin_ctz + #define ctz __builtin_ctz #endif + #if !__has_builtin(__builtin_ctzl) -#error "ctzl clang built-in not available" + #error "ctzl clang built-in not available" #else -#define ctzl __builtin_ctzl + #define ctzl __builtin_ctzl #endif + #if !__has_builtin(__builtin_ctzll) -#error "ctzll clang built-in not available" + #error "ctzll clang built-in not available" #else -#define ctzll __builtin_ctzll + #define ctzll __builtin_ctzll #endif + #if !__has_builtin(__builtin_ffs) -#error "ffs clang built-in not available" + #error "ffs clang built-in not available" #else -#define ffs __builtin_ffs + #define ffs __builtin_ffs #endif + #if !__has_builtin(__builtin_ffsl) -#error "ffsl clang built-in not available" + #error "ffsl clang built-in not available" #else -#define ffsl __builtin_ffsl + #define ffsl __builtin_ffsl #endif + #if !__has_builtin(__builtin_ffsll) -#error "ffsll clang built-in not available" + #error "ffsll clang built-in not available" #else -#define ffsll __builtin_ffsll + #define ffsll __builtin_ffsll #endif + #if !__has_builtin(__builtin_parity) -#error "parity clang built-in not available" + #error "parity clang built-in not available" #else -#define parity __builtin_parity + #define parity __builtin_parity #endif + #if !__has_builtin(__builtin_parityl) -#error "parityl clang built-in not available" + #error "parityl clang built-in not available" #else -#define parityl __builtin_parityl + #define parityl __builtin_parityl #endif + #if !__has_builtin(__builtin_parityll) -#error "parityll clang built-in not available" + #error "parityll clang built-in not available" #else -#define parityll __builtin_parityll + #define parityll __builtin_parityll #endif + #if !__has_builtin(__builtin_popcount) -#error "popcount clang built-in not available" + #error "popcount clang built-in not available" #else -#define popcount __builtin_popcount + #define popcount __builtin_popcount #endif + #if !__has_builtin(__builtin_popcountl) -#error "popcountl clang built-in not available" + #error "popcountl clang built-in not available" #else -#define popcountl __builtin_popcountl + #define popcountl __builtin_popcountl #endif + #if !__has_builtin(__builtin_popcountll) -#error "popcountll clang built-in not available" + #error "popcountll clang built-in not available" #else -#define popcountll __builtin_popcountll + #define popcountll __builtin_popcountll #endif + #if !__has_builtin(__builtin_bswap16) -#error "bswap16 clang built-in not available" + #error "bswap16 clang built-in not available" #else -#define bswap16 __builtin_bswap16 + #define bswap16 __builtin_bswap16 #endif + #if !__has_builtin(__builtin_bswap32) -#error "bswap32 clang built-in not available" + #error "bswap32 clang built-in not available" #else -#define bswap32 __builtin_bswap32 + #define bswap32 __builtin_bswap32 #endif + #if !__has_builtin(__builtin_bswap64) -#error "bswap64 clang built-in not available" + #error "bswap64 clang built-in not available" #else -#define bswap64 __builtin_bswap64 + #define bswap64 __builtin_bswap64 #endif + #if !__has_builtin(__builtin_constant_p) -#error "constant_p clang built-in not available" + #error "constant_p clang built-in not available" #else -#define constant_p __builtin_constant_p + #define constant_p __builtin_constant_p #endif + #if !__has_builtin(__builtin_classify_type) -#error "classify_type clang built-in not available" + #error "classify_type clang built-in not available" #else -#define classify_type __builtin_classify_type + #define classify_type __builtin_classify_type #endif + #if !__has_builtin(__builtin___CFStringMakeConstantString) -#error "__CFStringMakeConstantString clang built-in not available" + #error "__CFStringMakeConstantString clang built-in not available" #else -#define __CFStringMakeConstantString __builtin___CFStringMakeConstantString + #define __CFStringMakeConstantString __builtin___CFStringMakeConstantString #endif + #if !__has_builtin(__builtin___NSStringMakeConstantString) -#error "__NSStringMakeConstantString clang built-in not available" + #error "__NSStringMakeConstantString clang built-in not available" #else -#define __NSStringMakeConstantString __builtin___NSStringMakeConstantString + #define __NSStringMakeConstantString __builtin___NSStringMakeConstantString #endif + #if !__has_builtin(__builtin_va_start) -#error "va_start clang built-in not available" + #error "va_start clang built-in not available" #else -#define va_start __builtin_va_start + #define va_start __builtin_va_start #endif + #if !__has_builtin(__builtin_va_end) -#error "va_end clang built-in not available" + #error "va_end clang built-in not available" #else -#define va_end __builtin_va_end + #define va_end __builtin_va_end #endif + #if !__has_builtin(__builtin_va_copy) -#error "va_copy clang built-in not available" + #error "va_copy clang built-in not available" #else -#define va_copy __builtin_va_copy + #define va_copy __builtin_va_copy #endif + #if !__has_builtin(__builtin_stdarg_start) -#error "stdarg_start clang built-in not available" + #error "stdarg_start clang built-in not available" #else -#define stdarg_start __builtin_stdarg_start + #define stdarg_start __builtin_stdarg_start #endif + #if !__has_builtin(__builtin_assume_aligned) -#error "assume_aligned clang built-in not available" + #error "assume_aligned clang built-in not available" #else -#define assume_aligned __builtin_assume_aligned + #define assume_aligned __builtin_assume_aligned #endif + #if !__has_builtin(__builtin_bcmp) -#error "bcmp clang built-in not available" + #error "bcmp clang built-in not available" #else -#define bcmp __builtin_bcmp + #define bcmp __builtin_bcmp #endif + #if !__has_builtin(__builtin_bcopy) -#error "bcopy clang built-in not available" + #error "bcopy clang built-in not available" #else -#define bcopy __builtin_bcopy + #define bcopy __builtin_bcopy #endif + #if !__has_builtin(__builtin_bzero) -#error "bzero clang built-in not available" + #error "bzero clang built-in not available" #else -#define bzero __builtin_bzero + #define bzero __builtin_bzero #endif + #if !__has_builtin(__builtin_fprintf) -#error "fprintf clang built-in not available" + #error "fprintf clang built-in not available" #else -#define fprintf __builtin_fprintf + #define fprintf __builtin_fprintf #endif + #if !__has_builtin(__builtin_memchr) -#error "memchr clang built-in not available" + #error "memchr clang built-in not available" #else -#define memchr __builtin_memchr + #define memchr __builtin_memchr #endif + #if !__has_builtin(__builtin_memcmp) -#error "memcmp clang built-in not available" + #error "memcmp clang built-in not available" #else -#define memcmp __builtin_memcmp + #define memcmp __builtin_memcmp #endif + #if !__has_builtin(__builtin_memcpy) -#error "memcpy clang built-in not available" + #error "memcpy clang built-in not available" #else -#define memcpy __builtin_memcpy + #define memcpy __builtin_memcpy #endif + #if !__has_builtin(__builtin_memmove) -#error "memmove clang built-in not available" + #error "memmove clang built-in not available" #else -#define memmove __builtin_memmove + #define memmove __builtin_memmove #endif + #if !__has_builtin(__builtin_mempcpy) -#error "mempcpy clang built-in not available" + #error "mempcpy clang built-in not available" #else -#define mempcpy __builtin_mempcpy + #define mempcpy __builtin_mempcpy #endif + #if !__has_builtin(__builtin_memset) -#error "memset clang built-in not available" + #error "memset clang built-in not available" #else -#define memset __builtin_memset + #define memset __builtin_memset #endif + #if !__has_builtin(__builtin_printf) -#error "printf clang built-in not available" + #error "printf clang built-in not available" #else -#define printf __builtin_printf + #define printf __builtin_printf #endif + #if !__has_builtin(__builtin_stpcpy) -#error "stpcpy clang built-in not available" + #error "stpcpy clang built-in not available" #else -#define stpcpy __builtin_stpcpy + #define stpcpy __builtin_stpcpy #endif + #if !__has_builtin(__builtin_stpncpy) -#error "stpncpy clang built-in not available" + #error "stpncpy clang built-in not available" #else -#define stpncpy __builtin_stpncpy + #define stpncpy __builtin_stpncpy #endif + #if !__has_builtin(__builtin_strcasecmp) -#error "strcasecmp clang built-in not available" + #error "strcasecmp clang built-in not available" #else -#define strcasecmp __builtin_strcasecmp + #define strcasecmp __builtin_strcasecmp #endif + #if !__has_builtin(__builtin_strcat) -#error "strcat clang built-in not available" + #error "strcat clang built-in not available" #else -#define strcat __builtin_strcat + #define strcat __builtin_strcat #endif + #if !__has_builtin(__builtin_strchr) -#error "strchr clang built-in not available" + #error "strchr clang built-in not available" #else -#define strchr __builtin_strchr + #define strchr __builtin_strchr #endif + #if !__has_builtin(__builtin_strcmp) -#error "strcmp clang built-in not available" + #error "strcmp clang built-in not available" #else -#define strcmp __builtin_strcmp + #define strcmp __builtin_strcmp #endif + #if !__has_builtin(__builtin_strcpy) -#error "strcpy clang built-in not available" + #error "strcpy clang built-in not available" #else -#define strcpy __builtin_strcpy + #define strcpy __builtin_strcpy #endif + #if !__has_builtin(__builtin_strcspn) -#error "strcspn clang built-in not available" + #error "strcspn clang built-in not available" #else -#define strcspn __builtin_strcspn + #define strcspn __builtin_strcspn #endif + #if !__has_builtin(__builtin_strdup) -#error "strdup clang built-in not available" + #error "strdup clang built-in not available" #else -#define strdup __builtin_strdup + #define strdup __builtin_strdup #endif + #if !__has_builtin(__builtin_strlen) -#error "strlen clang built-in not available" + #error "strlen clang built-in not available" #else -#define strlen __builtin_strlen + #define strlen __builtin_strlen #endif + #if !__has_builtin(__builtin_strncasecmp) -#error "strncasecmp clang built-in not available" + #error "strncasecmp clang built-in not available" #else -#define strncasecmp __builtin_strncasecmp + #define strncasecmp __builtin_strncasecmp #endif + #if !__has_builtin(__builtin_strncat) -#error "strncat clang built-in not available" + #error "strncat clang built-in not available" #else -#define strncat __builtin_strncat + #define strncat __builtin_strncat #endif + #if !__has_builtin(__builtin_strncmp) -#error "strncmp clang built-in not available" + #error "strncmp clang built-in not available" #else -#define strncmp __builtin_strncmp + #define strncmp __builtin_strncmp #endif + #if !__has_builtin(__builtin_strncpy) -#error "strncpy clang built-in not available" + #error "strncpy clang built-in not available" #else -#define strncpy __builtin_strncpy + #define strncpy __builtin_strncpy #endif + #if !__has_builtin(__builtin_strndup) -#error "strndup clang built-in not available" + #error "strndup clang built-in not available" #else -#define strndup __builtin_strndup + #define strndup __builtin_strndup #endif + #if !__has_builtin(__builtin_strpbrk) -#error "strpbrk clang built-in not available" + #error "strpbrk clang built-in not available" #else -#define strpbrk __builtin_strpbrk + #define strpbrk __builtin_strpbrk #endif + #if !__has_builtin(__builtin_strrchr) -#error "strrchr clang built-in not available" + #error "strrchr clang built-in not available" #else -#define strrchr __builtin_strrchr + #define strrchr __builtin_strrchr #endif + #if !__has_builtin(__builtin_strspn) -#error "strspn clang built-in not available" + #error "strspn clang built-in not available" #else -#define strspn __builtin_strspn + #define strspn __builtin_strspn #endif + #if !__has_builtin(__builtin_strstr) -#error "strstr clang built-in not available" + #error "strstr clang built-in not available" #else -#define strstr __builtin_strstr + #define strstr __builtin_strstr #endif + #if !__has_builtin(__builtin_return_address) -#error "return_address clang built-in not available" + #error "return_address clang built-in not available" #else -#define return_address __builtin_return_address + #define return_address __builtin_return_address #endif + #if !__has_builtin(__builtin_extract_return_addr) -#error "extract_return_addr clang built-in not available" + #error "extract_return_addr clang built-in not available" #else -#define extract_return_addr __builtin_extract_return_addr + #define extract_return_addr __builtin_extract_return_addr #endif + #if !__has_builtin(__builtin_frame_address) -#error "frame_address clang built-in not available" + #error "frame_address clang built-in not available" #else -#define frame_address __builtin_frame_address + #define frame_address __builtin_frame_address #endif + #if !__has_builtin(__builtin___clear_cache) -#error "__clear_cache clang built-in not available" + #error "__clear_cache clang built-in not available" #else -#define __clear_cache __builtin___clear_cache + #define __clear_cache __builtin___clear_cache #endif + #if !__has_builtin(__builtin_flt_rounds) -#error "flt_rounds clang built-in not available" + #error "flt_rounds clang built-in not available" #else -#define flt_rounds __builtin_flt_rounds + #define flt_rounds __builtin_flt_rounds #endif + #if !__has_builtin(__builtin_setjmp) -#error "setjmp clang built-in not available" + #error "setjmp clang built-in not available" #else -#define setjmp __builtin_setjmp + #define setjmp __builtin_setjmp #endif + #if !__has_builtin(__builtin_longjmp) -#error "longjmp clang built-in not available" + #error "longjmp clang built-in not available" #else -#define longjmp __builtin_longjmp + #define longjmp __builtin_longjmp #endif + #if !__has_builtin(__builtin_eh_return_data_regno) -#error "eh_return_data_regno clang built-in not available" + #error "eh_return_data_regno clang built-in not available" #else -#define eh_return_data_regno __builtin_eh_return_data_regno + #define eh_return_data_regno __builtin_eh_return_data_regno #endif + #if !__has_builtin(__builtin_snprintf) -#error "snprintf clang built-in not available" + #error "snprintf clang built-in not available" #else -#define snprintf __builtin_snprintf + #define snprintf __builtin_snprintf #endif + #if !__has_builtin(__builtin_vsprintf) -#error "vsprintf clang built-in not available" + #error "vsprintf clang built-in not available" #else -#define vsprintf __builtin_vsprintf + #define vsprintf __builtin_vsprintf #endif + #if !__has_builtin(__builtin_vsnprintf) -#error "vsnprintf clang built-in not available" + #error "vsnprintf clang built-in not available" #else -#define vsnprintf __builtin_vsnprintf + #define vsnprintf __builtin_vsnprintf #endif + #if !__has_builtin(__builtin_eh_return) -#error "eh_return clang built-in not available" + #error "eh_return clang built-in not available" #else -#define eh_return __builtin_eh_return + #define eh_return __builtin_eh_return #endif + #if !__has_builtin(__builtin_frob_return_addr) -#error "frob_return_addr clang built-in not available" + #error "frob_return_addr clang built-in not available" #else -#define frob_return_addr __builtin_frob_return_addr + #define frob_return_addr __builtin_frob_return_addr #endif + #if !__has_builtin(__builtin_dwarf_cfa) -#error "dwarf_cfa clang built-in not available" + #error "dwarf_cfa clang built-in not available" #else -#define dwarf_cfa __builtin_dwarf_cfa + #define dwarf_cfa __builtin_dwarf_cfa #endif + #if !__has_builtin(__builtin_init_dwarf_reg_size_table) -#error "init_dwarf_reg_size_table clang built-in not available" + #error "init_dwarf_reg_size_table clang built-in not available" #else -#define init_dwarf_reg_size_table __builtin_init_dwarf_reg_size_table + #define init_dwarf_reg_size_table __builtin_init_dwarf_reg_size_table #endif + #if !__has_builtin(__builtin_dwarf_sp_column) -#error "dwarf_sp_column clang built-in not available" + #error "dwarf_sp_column clang built-in not available" #else -#define dwarf_sp_column __builtin_dwarf_sp_column + #define dwarf_sp_column __builtin_dwarf_sp_column #endif + #if !__has_builtin(__builtin_extend_pointer) -#error "extend_pointer clang built-in not available" + #error "extend_pointer clang built-in not available" #else -#define extend_pointer __builtin_extend_pointer + #define extend_pointer __builtin_extend_pointer #endif + #if !__has_builtin(__builtin_object_size) -#error "object_size clang built-in not available" + #error "object_size clang built-in not available" #else -#define object_size __builtin_object_size + #define object_size __builtin_object_size #endif + #if !__has_builtin(__builtin___memcpy_chk) -#error "__memcpy_chk clang built-in not available" + #error "__memcpy_chk clang built-in not available" #else -#define __memcpy_chk __builtin___memcpy_chk + #define __memcpy_chk __builtin___memcpy_chk #endif + #if !__has_builtin(__builtin___memccpy_chk) -#error "__memccpy_chk clang built-in not available" + #error "__memccpy_chk clang built-in not available" #else -#define __memccpy_chk __builtin___memccpy_chk + #define __memccpy_chk __builtin___memccpy_chk #endif + #if !__has_builtin(__builtin___memmove_chk) -#error "__memmove_chk clang built-in not available" + #error "__memmove_chk clang built-in not available" #else -#define __memmove_chk __builtin___memmove_chk + #define __memmove_chk __builtin___memmove_chk #endif + #if !__has_builtin(__builtin___mempcpy_chk) -#error "__mempcpy_chk clang built-in not available" + #error "__mempcpy_chk clang built-in not available" #else -#define __mempcpy_chk __builtin___mempcpy_chk + #define __mempcpy_chk __builtin___mempcpy_chk #endif + #if !__has_builtin(__builtin___memset_chk) -#error "__memset_chk clang built-in not available" + #error "__memset_chk clang built-in not available" #else -#define __memset_chk __builtin___memset_chk + #define __memset_chk __builtin___memset_chk #endif + #if !__has_builtin(__builtin___stpcpy_chk) -#error "__stpcpy_chk clang built-in not available" + #error "__stpcpy_chk clang built-in not available" #else -#define __stpcpy_chk __builtin___stpcpy_chk + #define __stpcpy_chk __builtin___stpcpy_chk #endif + #if !__has_builtin(__builtin___strcat_chk) -#error "__strcat_chk clang built-in not available" + #error "__strcat_chk clang built-in not available" #else -#define __strcat_chk __builtin___strcat_chk + #define __strcat_chk __builtin___strcat_chk #endif + #if !__has_builtin(__builtin___strcpy_chk) -#error "__strcpy_chk clang built-in not available" + #error "__strcpy_chk clang built-in not available" #else -#define __strcpy_chk __builtin___strcpy_chk + #define __strcpy_chk __builtin___strcpy_chk #endif + #if !__has_builtin(__builtin___strlcat_chk) -#error "__strlcat_chk clang built-in not available" + #error "__strlcat_chk clang built-in not available" #else -#define __strlcat_chk __builtin___strlcat_chk + #define __strlcat_chk __builtin___strlcat_chk #endif + #if !__has_builtin(__builtin___strlcpy_chk) -#error "__strlcpy_chk clang built-in not available" + #error "__strlcpy_chk clang built-in not available" #else -#define __strlcpy_chk __builtin___strlcpy_chk + #define __strlcpy_chk __builtin___strlcpy_chk #endif + #if !__has_builtin(__builtin___strncat_chk) -#error "__strncat_chk clang built-in not available" + #error "__strncat_chk clang built-in not available" #else -#define __strncat_chk __builtin___strncat_chk + #define __strncat_chk __builtin___strncat_chk #endif + #if !__has_builtin(__builtin___strncpy_chk) -#error "__strncpy_chk clang built-in not available" + #error "__strncpy_chk clang built-in not available" #else -#define __strncpy_chk __builtin___strncpy_chk + #define __strncpy_chk __builtin___strncpy_chk #endif + #if !__has_builtin(__builtin___stpncpy_chk) -#error "__stpncpy_chk clang built-in not available" + #error "__stpncpy_chk clang built-in not available" #else -#define __stpncpy_chk __builtin___stpncpy_chk + #define __stpncpy_chk __builtin___stpncpy_chk #endif + #if !__has_builtin(__builtin___snprintf_chk) -#error "__snprintf_chk clang built-in not available" + #error "__snprintf_chk clang built-in not available" #else -#define __snprintf_chk __builtin___snprintf_chk + #define __snprintf_chk __builtin___snprintf_chk #endif + #if !__has_builtin(__builtin___sprintf_chk) -#error "__sprintf_chk clang built-in not available" + #error "__sprintf_chk clang built-in not available" #else -#define __sprintf_chk __builtin___sprintf_chk + #define __sprintf_chk __builtin___sprintf_chk #endif + #if !__has_builtin(__builtin___vsnprintf_chk) -#error "__vsnprintf_chk clang built-in not available" + #error "__vsnprintf_chk clang built-in not available" #else -#define __vsnprintf_chk __builtin___vsnprintf_chk + #define __vsnprintf_chk __builtin___vsnprintf_chk #endif + #if !__has_builtin(__builtin___vsprintf_chk) -#error "__vsprintf_chk clang built-in not available" + #error "__vsprintf_chk clang built-in not available" #else -#define __vsprintf_chk __builtin___vsprintf_chk + #define __vsprintf_chk __builtin___vsprintf_chk #endif + #if !__has_builtin(__builtin___fprintf_chk) -#error "__fprintf_chk clang built-in not available" + #error "__fprintf_chk clang built-in not available" #else -#define __fprintf_chk __builtin___fprintf_chk + #define __fprintf_chk __builtin___fprintf_chk #endif + #if !__has_builtin(__builtin___printf_chk) -#error "__printf_chk clang built-in not available" + #error "__printf_chk clang built-in not available" #else -#define __printf_chk __builtin___printf_chk + #define __printf_chk __builtin___printf_chk #endif + #if !__has_builtin(__builtin___vfprintf_chk) -#error "__vfprintf_chk clang built-in not available" + #error "__vfprintf_chk clang built-in not available" #else -#define __vfprintf_chk __builtin___vfprintf_chk + #define __vfprintf_chk __builtin___vfprintf_chk #endif + #if !__has_builtin(__builtin___vprintf_chk) -#error "__vprintf_chk clang built-in not available" + #error "__vprintf_chk clang built-in not available" #else -#define __vprintf_chk __builtin___vprintf_chk + #define __vprintf_chk __builtin___vprintf_chk #endif + #if !__has_builtin(__builtin_expect) -#error "expect clang built-in not available" + #error "expect clang built-in not available" #else -#define expect __builtin_expect + #define expect __builtin_expect #endif + #if !__has_builtin(__builtin_prefetch) -#error "prefetch clang built-in not available" + #error "prefetch clang built-in not available" #else -#define prefetch __builtin_prefetch + #define prefetch __builtin_prefetch #endif + #if !__has_builtin(__builtin_readcyclecounter) -#error "readcyclecounter clang built-in not available" + #error "readcyclecounter clang built-in not available" #else -#define readcyclecounter __builtin_readcyclecounter + #define readcyclecounter __builtin_readcyclecounter #endif + #if !__has_builtin(__builtin_trap) -#error "trap clang built-in not available" + #error "trap clang built-in not available" #else -#define trap __builtin_trap + #define trap __builtin_trap #endif + #if !__has_builtin(__builtin_debugtrap) -#error "debugtrap clang built-in not available" + #error "debugtrap clang built-in not available" #else -#define debugtrap __builtin_debugtrap + #define debugtrap __builtin_debugtrap #endif + #if !__has_builtin(__builtin_unreachable) -#error "unreachable clang built-in not available" + #error "unreachable clang built-in not available" #else -#define unreachable __builtin_unreachable + #define unreachable __builtin_unreachable #endif + #if !__has_builtin(__builtin_shufflevector) -#error "shufflevector clang built-in not available" + #error "shufflevector clang built-in not available" #else -#define shufflevector __builtin_shufflevector + #define shufflevector __builtin_shufflevector #endif + #if !__has_builtin(__builtin_convertvector) -#error "convertvector clang built-in not available" + #error "convertvector clang built-in not available" #else -#define convertvector __builtin_convertvector + #define convertvector __builtin_convertvector #endif + #if !__has_builtin(__builtin_alloca) -#error "alloca clang built-in not available" + #error "alloca clang built-in not available" #else -#define alloca __builtin_alloca + #define alloca __builtin_alloca #endif + #if !__has_builtin(__builtin_call_with_static_chain) -#error "call_with_static_chain clang built-in not available" + #error "call_with_static_chain clang built-in not available" #else -#define call_with_static_chain __builtin_call_with_static_chain + #define call_with_static_chain __builtin_call_with_static_chain #endif + +#if !__has_builtin(__sync_fetch_and_add) + #error "__sync_fetch_and_add clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_add_1) + #error "__sync_fetch_and_add_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_add_2) + #error "__sync_fetch_and_add_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_add_4) + #error "__sync_fetch_and_add_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_add_8) + #error "__sync_fetch_and_add_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_add_16) + #error "__sync_fetch_and_add_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub) + #error "__sync_fetch_and_sub clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub_1) + #error "__sync_fetch_and_sub_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub_2) + #error "__sync_fetch_and_sub_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub_4) + #error "__sync_fetch_and_sub_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub_8) + #error "__sync_fetch_and_sub_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_sub_16) + #error "__sync_fetch_and_sub_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or) + #error "__sync_fetch_and_or clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or_1) + #error "__sync_fetch_and_or_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or_2) + #error "__sync_fetch_and_or_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or_4) + #error "__sync_fetch_and_or_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or_8) + #error "__sync_fetch_and_or_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_or_16) + #error "__sync_fetch_and_or_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and) + #error "__sync_fetch_and_and clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and_1) + #error "__sync_fetch_and_and_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and_2) + #error "__sync_fetch_and_and_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and_4) + #error "__sync_fetch_and_and_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and_8) + #error "__sync_fetch_and_and_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_and_16) + #error "__sync_fetch_and_and_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor) + #error "__sync_fetch_and_xor clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor_1) + #error "__sync_fetch_and_xor_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor_2) + #error "__sync_fetch_and_xor_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor_4) + #error "__sync_fetch_and_xor_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor_8) + #error "__sync_fetch_and_xor_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_xor_16) + #error "__sync_fetch_and_xor_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand) + #error "__sync_fetch_and_nand clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand_1) + #error "__sync_fetch_and_nand_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand_2) + #error "__sync_fetch_and_nand_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand_4) + #error "__sync_fetch_and_nand_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand_8) + #error "__sync_fetch_and_nand_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_nand_16) + #error "__sync_fetch_and_nand_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch) + #error "__sync_add_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch_1) + #error "__sync_add_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch_2) + #error "__sync_add_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch_4) + #error "__sync_add_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch_8) + #error "__sync_add_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_add_and_fetch_16) + #error "__sync_add_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch) + #error "__sync_sub_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch_1) + #error "__sync_sub_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch_2) + #error "__sync_sub_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch_4) + #error "__sync_sub_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch_8) + #error "__sync_sub_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_sub_and_fetch_16) + #error "__sync_sub_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch) + #error "__sync_or_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch_1) + #error "__sync_or_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch_2) + #error "__sync_or_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch_4) + #error "__sync_or_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch_8) + #error "__sync_or_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_or_and_fetch_16) + #error "__sync_or_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch) + #error "__sync_and_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch_1) + #error "__sync_and_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch_2) + #error "__sync_and_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch_4) + #error "__sync_and_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch_8) + #error "__sync_and_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_and_and_fetch_16) + #error "__sync_and_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch) + #error "__sync_xor_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch_1) + #error "__sync_xor_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch_2) + #error "__sync_xor_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch_4) + #error "__sync_xor_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch_8) + #error "__sync_xor_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_xor_and_fetch_16) + #error "__sync_xor_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch) + #error "__sync_nand_and_fetch clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch_1) + #error "__sync_nand_and_fetch_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch_2) + #error "__sync_nand_and_fetch_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch_4) + #error "__sync_nand_and_fetch_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch_8) + #error "__sync_nand_and_fetch_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_nand_and_fetch_16) + #error "__sync_nand_and_fetch_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap) + #error "__sync_bool_compare_and_swap clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap_1) + #error "__sync_bool_compare_and_swap_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap_2) + #error "__sync_bool_compare_and_swap_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap_4) + #error "__sync_bool_compare_and_swap_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap_8) + #error "__sync_bool_compare_and_swap_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_bool_compare_and_swap_16) + #error "__sync_bool_compare_and_swap_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap) + #error "__sync_val_compare_and_swap clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap_1) + #error "__sync_val_compare_and_swap_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap_2) + #error "__sync_val_compare_and_swap_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap_4) + #error "__sync_val_compare_and_swap_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap_8) + #error "__sync_val_compare_and_swap_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_val_compare_and_swap_16) + #error "__sync_val_compare_and_swap_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set) + #error "__sync_lock_test_and_set clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set_1) + #error "__sync_lock_test_and_set_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set_2) + #error "__sync_lock_test_and_set_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set_4) + #error "__sync_lock_test_and_set_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set_8) + #error "__sync_lock_test_and_set_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_test_and_set_16) + #error "__sync_lock_test_and_set_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release) + #error "__sync_lock_release clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release_1) + #error "__sync_lock_release_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release_2) + #error "__sync_lock_release_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release_4) + #error "__sync_lock_release_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release_8) + #error "__sync_lock_release_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_lock_release_16) + #error "__sync_lock_release_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap) + #error "__sync_swap clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap_1) + #error "__sync_swap_1 clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap_2) + #error "__sync_swap_2 clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap_4) + #error "__sync_swap_4 clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap_8) + #error "__sync_swap_8 clang built-in not available" +#endif + +#if !__has_builtin(__sync_swap_16) + #error "__sync_swap_16 clang built-in not available" +#endif + +#if !__has_builtin(__sync_synchronize) + #error "__sync_synchronize clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_min) + #error "__sync_fetch_and_min clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_max) + #error "__sync_fetch_and_max clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_umin) + #error "__sync_fetch_and_umin clang built-in not available" +#endif + +#if !__has_builtin(__sync_fetch_and_umax) + #error "__sync_fetch_and_umax clang built-in not available" +#endif + #if !__has_builtin(__builtin_abort) -#error "abort clang built-in not available" + #error "abort clang built-in not available" #else -#define abort __builtin_abort + #define abort __builtin_abort #endif + #if !__has_builtin(__builtin_index) -#error "index clang built-in not available" + #error "index clang built-in not available" #else -#define index __builtin_index + #define index __builtin_index #endif + #if !__has_builtin(__builtin_rindex) -#error "rindex clang built-in not available" + #error "rindex clang built-in not available" #else -#define rindex __builtin_rindex + #define rindex __builtin_rindex #endif + #if !__has_builtin(__builtin_objc_memmove_collectable) -#error "objc_memmove_collectable clang built-in not available" + #error "objc_memmove_collectable clang built-in not available" #else -#define objc_memmove_collectable __builtin_objc_memmove_collectable + #define objc_memmove_collectable __builtin_objc_memmove_collectable #endif + #if !__has_builtin(__builtin_annotation) -#error "annotation clang built-in not available" + #error "annotation clang built-in not available" #else -#define annotation __builtin_annotation + #define annotation __builtin_annotation #endif + #if !__has_builtin(__builtin_assume) -#error "assume clang built-in not available" + #error "assume clang built-in not available" #else -#define assume __builtin_assume + #define assume __builtin_assume #endif + #if !__has_builtin(__builtin_addcb) -#error "addcb clang built-in not available" + #error "addcb clang built-in not available" #else -#define addcb __builtin_addcb + #define addcb __builtin_addcb #endif + #if !__has_builtin(__builtin_addcs) -#error "addcs clang built-in not available" + #error "addcs clang built-in not available" #else -#define addcs __builtin_addcs + #define addcs __builtin_addcs #endif + #if !__has_builtin(__builtin_addc) -#error "addc clang built-in not available" + #error "addc clang built-in not available" #else -#define addc __builtin_addc + #define addc __builtin_addc #endif + #if !__has_builtin(__builtin_addcl) -#error "addcl clang built-in not available" + #error "addcl clang built-in not available" #else -#define addcl __builtin_addcl + #define addcl __builtin_addcl #endif + #if !__has_builtin(__builtin_addcll) -#error "addcll clang built-in not available" + #error "addcll clang built-in not available" #else -#define addcll __builtin_addcll + #define addcll __builtin_addcll #endif + #if !__has_builtin(__builtin_subcb) -#error "subcb clang built-in not available" + #error "subcb clang built-in not available" #else -#define subcb __builtin_subcb + #define subcb __builtin_subcb #endif + #if !__has_builtin(__builtin_subcs) -#error "subcs clang built-in not available" + #error "subcs clang built-in not available" #else -#define subcs __builtin_subcs + #define subcs __builtin_subcs #endif + #if !__has_builtin(__builtin_subc) -#error "subc clang built-in not available" + #error "subc clang built-in not available" #else -#define subc __builtin_subc + #define subc __builtin_subc #endif + #if !__has_builtin(__builtin_subcl) -#error "subcl clang built-in not available" + #error "subcl clang built-in not available" #else -#define subcl __builtin_subcl + #define subcl __builtin_subcl #endif + #if !__has_builtin(__builtin_subcll) -#error "subcll clang built-in not available" + #error "subcll clang built-in not available" #else -#define subcll __builtin_subcll + #define subcll __builtin_subcll #endif + #if !__has_builtin(__builtin_uadd_overflow) -#error "uadd_overflow clang built-in not available" + #error "uadd_overflow clang built-in not available" #else -#define uadd_overflow __builtin_uadd_overflow + #define uadd_overflow __builtin_uadd_overflow #endif + #if !__has_builtin(__builtin_uaddl_overflow) -#error "uaddl_overflow clang built-in not available" + #error "uaddl_overflow clang built-in not available" #else -#define uaddl_overflow __builtin_uaddl_overflow + #define uaddl_overflow __builtin_uaddl_overflow #endif + #if !__has_builtin(__builtin_uaddll_overflow) -#error "uaddll_overflow clang built-in not available" + #error "uaddll_overflow clang built-in not available" #else -#define uaddll_overflow __builtin_uaddll_overflow + #define uaddll_overflow __builtin_uaddll_overflow #endif + #if !__has_builtin(__builtin_usub_overflow) -#error "usub_overflow clang built-in not available" + #error "usub_overflow clang built-in not available" #else -#define usub_overflow __builtin_usub_overflow + #define usub_overflow __builtin_usub_overflow #endif + #if !__has_builtin(__builtin_usubl_overflow) -#error "usubl_overflow clang built-in not available" + #error "usubl_overflow clang built-in not available" #else -#define usubl_overflow __builtin_usubl_overflow + #define usubl_overflow __builtin_usubl_overflow #endif + #if !__has_builtin(__builtin_usubll_overflow) -#error "usubll_overflow clang built-in not available" + #error "usubll_overflow clang built-in not available" #else -#define usubll_overflow __builtin_usubll_overflow + #define usubll_overflow __builtin_usubll_overflow #endif + #if !__has_builtin(__builtin_umul_overflow) -#error "umul_overflow clang built-in not available" + #error "umul_overflow clang built-in not available" #else -#define umul_overflow __builtin_umul_overflow + #define umul_overflow __builtin_umul_overflow #endif + #if !__has_builtin(__builtin_umull_overflow) -#error "umull_overflow clang built-in not available" + #error "umull_overflow clang built-in not available" #else -#define umull_overflow __builtin_umull_overflow + #define umull_overflow __builtin_umull_overflow #endif + #if !__has_builtin(__builtin_umulll_overflow) -#error "umulll_overflow clang built-in not available" + #error "umulll_overflow clang built-in not available" #else -#define umulll_overflow __builtin_umulll_overflow + #define umulll_overflow __builtin_umulll_overflow #endif + #if !__has_builtin(__builtin_sadd_overflow) -#error "sadd_overflow clang built-in not available" + #error "sadd_overflow clang built-in not available" #else -#define sadd_overflow __builtin_sadd_overflow + #define sadd_overflow __builtin_sadd_overflow #endif + #if !__has_builtin(__builtin_saddl_overflow) -#error "saddl_overflow clang built-in not available" + #error "saddl_overflow clang built-in not available" #else -#define saddl_overflow __builtin_saddl_overflow + #define saddl_overflow __builtin_saddl_overflow #endif + #if !__has_builtin(__builtin_saddll_overflow) -#error "saddll_overflow clang built-in not available" + #error "saddll_overflow clang built-in not available" #else -#define saddll_overflow __builtin_saddll_overflow + #define saddll_overflow __builtin_saddll_overflow #endif + #if !__has_builtin(__builtin_ssub_overflow) -#error "ssub_overflow clang built-in not available" + #error "ssub_overflow clang built-in not available" #else -#define ssub_overflow __builtin_ssub_overflow + #define ssub_overflow __builtin_ssub_overflow #endif + #if !__has_builtin(__builtin_ssubl_overflow) -#error "ssubl_overflow clang built-in not available" + #error "ssubl_overflow clang built-in not available" #else -#define ssubl_overflow __builtin_ssubl_overflow + #define ssubl_overflow __builtin_ssubl_overflow #endif + #if !__has_builtin(__builtin_ssubll_overflow) -#error "ssubll_overflow clang built-in not available" + #error "ssubll_overflow clang built-in not available" #else -#define ssubll_overflow __builtin_ssubll_overflow + #define ssubll_overflow __builtin_ssubll_overflow #endif + #if !__has_builtin(__builtin_smul_overflow) -#error "smul_overflow clang built-in not available" + #error "smul_overflow clang built-in not available" #else -#define smul_overflow __builtin_smul_overflow + #define smul_overflow __builtin_smul_overflow #endif + #if !__has_builtin(__builtin_smull_overflow) -#error "smull_overflow clang built-in not available" + #error "smull_overflow clang built-in not available" #else -#define smull_overflow __builtin_smull_overflow + #define smull_overflow __builtin_smull_overflow #endif + #if !__has_builtin(__builtin_smulll_overflow) -#error "smulll_overflow clang built-in not available" + #error "smulll_overflow clang built-in not available" #else -#define smulll_overflow __builtin_smulll_overflow + #define smulll_overflow __builtin_smulll_overflow #endif + #if !__has_builtin(__builtin_addressof) -#error "addressof clang built-in not available" + #error "addressof clang built-in not available" #else -#define addressof __builtin_addressof + #define addressof __builtin_addressof #endif + #if !__has_builtin(__builtin_operator_new) -#error "operator_new clang built-in not available" + #error "operator_new clang built-in not available" #else -#define operator_new __builtin_operator_new + #define operator_new __builtin_operator_new #endif + #if !__has_builtin(__builtin_operator_delete) -#error "operator_delete clang built-in not available" + #error "operator_delete clang built-in not available" #else -#define operator_delete __builtin_operator_delete + #define operator_delete __builtin_operator_delete #endif + #if !__has_builtin(__builtin___get_unsafe_stack_start) -#error "__get_unsafe_stack_start clang built-in not available" + #error "__get_unsafe_stack_start clang built-in not available" #else -#define __get_unsafe_stack_start __builtin___get_unsafe_stack_start + #define __get_unsafe_stack_start __builtin___get_unsafe_stack_start #endif + #if !__has_builtin(__builtin___get_unsafe_stack_ptr) -#error "__get_unsafe_stack_ptr clang built-in not available" + #error "__get_unsafe_stack_ptr clang built-in not available" #else -#define __get_unsafe_stack_ptr __builtin___get_unsafe_stack_ptr + #define __get_unsafe_stack_ptr __builtin___get_unsafe_stack_ptr #endif #endif /* nativepath_h */ diff --git a/generate_builtins.lua b/generate_builtins.lua index d6529c2..18a16e0 100644 --- a/generate_builtins.lua +++ b/generate_builtins.lua @@ -1,7 +1,8 @@ io.input("Builtins.def") io.output("output.txt") -local define = "#if !__has_builtin(__builtin_x)\n#error \"x clang built-in not available\"\n#else\n#define x __builtin_x\n#endif" +local define = "#if !__has_builtin(__builtin_x)\n\t#error \"x clang built-in not available\"\n#else\n\t#define x __builtin_x\n#endif\n" +local define2 = "#if !__has_builtin(x)\n\t#error \"x clang built-in not available\"\n#endif\n" while true do local line = io.read() @@ -13,4 +14,11 @@ while true do io.write(func) io.write("\n") end + + for w in string.gmatch(line, "BUILTIN%((__sync_.+)%s*,%s*\".+\"%s*,%s*\".+\"%)") do + w = string.gsub(w, " ", ""); + local func = string.gsub(define2, "x", w) + io.write(func) + io.write("\n") + end end \ No newline at end of file