TargetLibraryInfo.h revision b704d23062aa78b00999b75dcdcb628d4d84ee3f
1ce99120084f549a523213064648662a704e8b789Chris Lattner//===-- llvm/Target/TargetLibraryInfo.h - Library information ---*- C++ -*-===// 2ce99120084f549a523213064648662a704e8b789Chris Lattner// 3ce99120084f549a523213064648662a704e8b789Chris Lattner// The LLVM Compiler Infrastructure 4ce99120084f549a523213064648662a704e8b789Chris Lattner// 5ce99120084f549a523213064648662a704e8b789Chris Lattner// This file is distributed under the University of Illinois Open Source 6ce99120084f549a523213064648662a704e8b789Chris Lattner// License. See LICENSE.TXT for details. 7ce99120084f549a523213064648662a704e8b789Chris Lattner// 8ce99120084f549a523213064648662a704e8b789Chris Lattner//===----------------------------------------------------------------------===// 9ce99120084f549a523213064648662a704e8b789Chris Lattner 10ce99120084f549a523213064648662a704e8b789Chris Lattner#ifndef LLVM_TARGET_TARGETLIBRARYINFO_H 11ce99120084f549a523213064648662a704e8b789Chris Lattner#define LLVM_TARGET_TARGETLIBRARYINFO_H 12ce99120084f549a523213064648662a704e8b789Chris Lattner 139d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman#include "llvm/ADT/DenseMap.h" 14255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth#include "llvm/Pass.h" 15ce99120084f549a523213064648662a704e8b789Chris Lattner 16ce99120084f549a523213064648662a704e8b789Chris Lattnernamespace llvm { 17ce99120084f549a523213064648662a704e8b789Chris Lattner class Triple; 18ce99120084f549a523213064648662a704e8b789Chris Lattner 19ce99120084f549a523213064648662a704e8b789Chris Lattner namespace LibFunc { 20ce99120084f549a523213064648662a704e8b789Chris Lattner enum Func { 21cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int _IO_getc(_IO_FILE * __fp); 22cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge under_IO_getc, 23cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int _IO_putc(int __c, _IO_FILE * __fp); 24cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge under_IO_putc, 258e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void operator delete[](void*); 268e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZdaPv, 278e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void operator delete(void*); 288e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZdlPv, 298e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned int); 308e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znaj, 318e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned int, nothrow); 328e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnajRKSt9nothrow_t, 338e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned long); 348e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znam, 358e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned long, nothrow); 368e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnamRKSt9nothrow_t, 378e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned int); 388e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znwj, 398e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned int, nothrow); 408e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnwjRKSt9nothrow_t, 418e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned long); 428e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znwm, 438e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned long, nothrow); 448e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnwmRKSt9nothrow_t, 45d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int __cxa_atexit(void (*f)(void *), void *p, void *d); 46d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_atexit, 47d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void __cxa_guard_abort(guard_t *guard); 48d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// guard_t is int64_t in Itanium ABI or int32_t on ARM eabi. 49d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_abort, 50d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int __cxa_guard_acquire(guard_t *guard); 51d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_acquire, 52d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void __cxa_guard_release(guard_t *guard); 53d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_release, 54cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int __isoc99_scanf (const char *format, ...) 55cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_isoc99_scanf, 56cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int __isoc99_sscanf(const char *s, const char *format, ...) 57cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_isoc99_sscanf, 58d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void *__memcpy_chk(void *s1, const void *s2, size_t n, size_t s1size); 59d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson memcpy_chk, 60b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// double __sqrt_finite(double x); 61b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrt_finite, 62b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// float __sqrt_finite(float x); 63b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrtf_finite, 64b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// long double __sqrt_finite(long double x); 65b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrtl_finite, 66cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char * __strdup(const char *s); 67cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strdup, 68cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *__strndup(const char *s, size_t n); 69cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strndup, 70cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char * __strtok_r(char *s, const char *delim, char **save_ptr); 71cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strtok_r, 726098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int abs(int j); 736098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge abs, 74cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int access(const char *path, int amode); 75cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge access, 768ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double acos(double x); 778ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier acos, 788ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float acosf(float x); 798ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier acosf, 806871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double acosh(double x); 816871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acosh, 826871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float acoshf(float x); 836871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acoshf, 846871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double acoshl(long double x); 856871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acoshl, 86d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double acosl(long double x); 87d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson acosl, 888ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double asin(double x); 898ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier asin, 908ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float asinf(float x); 918ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier asinf, 926871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double asinh(double x); 936871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinh, 946871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float asinhf(float x); 956871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinhf, 966871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double asinhl(long double x); 976871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinhl, 98d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double asinl(long double x); 99d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson asinl, 1008ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double atan(double x); 1018ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier atan, 10232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double atan2(double y, double x); 10332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier atan2, 10432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float atan2f(float y, float x); 10532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier atan2f, 106d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double atan2l(long double y, long double x); 107d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atan2l, 108d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float atanf(float x); 109d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atanf, 1106871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double atanh(double x); 1116871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanh, 1126871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float atanhf(float x); 1136871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanhf, 1146871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double atanhl(long double x); 1156871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanhl, 116d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double atanl(long double x); 117d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atanl, 118cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double atof(const char *str); 119cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atof, 120cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int atoi(const char *str); 121cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atoi, 122cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long atol(const char *str); 123cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atol, 124cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long long atoll(const char *nptr); 125cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atoll, 126cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int bcmp(const void *s1, const void *s2, size_t n); 127cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bcmp, 128cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void bcopy(const void *s1, void *s2, size_t n); 129cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bcopy, 130cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void bzero(void *s, size_t n); 131cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bzero, 1328e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *calloc(size_t count, size_t size); 1338e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer calloc, 1346871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double cbrt(double x); 1356871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrt, 1366871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float cbrtf(float x); 1376871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrtf, 1386871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double cbrtl(long double x); 1396871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrtl, 1408ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double ceil(double x); 1418ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier ceil, 1428ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float ceilf(float x); 1438ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier ceilf, 144d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double ceill(long double x); 145d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson ceill, 146cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int chmod(const char *path, mode_t mode); 147cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge chmod, 148cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int chown(const char *path, uid_t owner, gid_t group); 149cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge chown, 150cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void clearerr(FILE *stream); 151cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge clearerr, 152cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int closedir(DIR *dirp); 153cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge closedir, 154243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double copysign(double x, double y); 155243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysign, 156243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float copysignf(float x, float y); 157243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysignf, 158243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double copysignl(long double x, long double y); 159243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysignl, 1608ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double cos(double x); 1618ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cos, 1628ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float cosf(float x); 1638ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cosf, 1648ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double cosh(double x); 1658ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cosh, 1668ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float coshf(float x); 1678ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier coshf, 168d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double coshl(long double x); 169d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson coshl, 170d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double cosl(long double x); 171d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cosl, 172cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *ctermid(char *s); 173cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ctermid, 1748ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double exp(double x); 1758ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp, 1766871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double exp10(double x); 1776871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10, 1786871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float exp10f(float x); 1796871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10f, 1806871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double exp10l(long double x); 1816871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10l, 1828ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double exp2(double x); 1838ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp2, 1848ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float exp2f(float x); 1858ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp2f, 186d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double exp2l(long double x); 187d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson exp2l, 188d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float expf(float x); 189d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expf, 190d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double expl(long double x); 191d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expl, 1928ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double expm1(double x); 1938ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier expm1, 1948ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float expm1f(float x); 195d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff expm1f, 196d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double expm1l(long double x); 197d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expm1l, 1988ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double fabs(double x); 1998ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier fabs, 2008ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float fabsf(float x); 2018ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier fabsf, 202d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double fabsl(long double x); 203d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fabsl, 204cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fclose(FILE *stream); 205cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fclose, 206cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fdopen(int fildes, const char *mode); 207cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fdopen, 208cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int feof(FILE *stream); 209cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge feof, 210cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ferror(FILE *stream); 211cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ferror, 212cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fflush(FILE *stream); 213cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fflush, 2146098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffs(int i); 2156098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffs, 2166098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffsl(long int i); 2176098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffsl, 2186098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffsll(long long int i); 2196098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffsll, 220cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fgetc(FILE *stream); 221cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgetc, 222cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fgetpos(FILE *stream, fpos_t *pos); 223cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgetpos, 224cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *fgets(char *s, int n, FILE *stream); 225cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgets, 226cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fileno(FILE *stream); 227cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fileno, 228d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int fiprintf(FILE *stream, const char *format, ...); 229d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fiprintf, 230cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void flockfile(FILE *file); 231cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge flockfile, 2328ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double floor(double x); 2338ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier floor, 2348ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float floorf(float x); 2358ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier floorf, 236d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double floorl(long double x); 237d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson floorl, 23832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double fmod(double x, double y); 23932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier fmod, 24032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float fmodf(float x, float y); 24132b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier fmodf, 242d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double fmodl(long double x, long double y); 243d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fmodl, 244cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fopen(const char *filename, const char *mode); 245cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fopen, 246cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fopen64(const char *filename, const char *opentype) 247cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fopen64, 2486098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int fprintf(FILE *stream, const char *format, ...); 2496098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge fprintf, 2508d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int fputc(int c, FILE *stream); 2518d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes fputc, 252683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// int fputs(const char *s, FILE *stream); 253683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier fputs, 254cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream); 255cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fread, 2568e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void free(void *ptr); 2578e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer free, 258cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double frexp(double num, int *exp); 259cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexp, 260cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// float frexpf(float num, int *exp); 261cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexpf, 262cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long double frexpl(long double num, int *exp); 263cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexpl, 264cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fscanf(FILE *stream, const char *format, ... ); 265cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fscanf, 266cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseek(FILE *stream, long offset, int whence); 267cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseek, 268cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseeko(FILE *stream, off_t offset, int whence); 269cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseeko, 270cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseeko64(FILE *stream, off64_t offset, int whence) 271cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseeko64, 272cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fsetpos(FILE *stream, const fpos_t *pos); 273cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fsetpos, 274cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstat(int fildes, struct stat *buf); 275cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstat, 276cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstat64(int filedes, struct stat64 *buf) 277cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstat64, 278cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstatvfs(int fildes, struct statvfs *buf); 279cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstatvfs, 280cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstatvfs64(int fildes, struct statvfs64 *buf); 281cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstatvfs64, 282cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long ftell(FILE *stream); 283cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftell, 284cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off_t ftello(FILE *stream); 285cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftello, 286cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off64_t ftello64(FILE *stream) 287cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftello64, 288cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ftrylockfile(FILE *file); 289cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftrylockfile, 290cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void funlockfile(FILE *file); 291cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge funlockfile, 292683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// size_t fwrite(const void *ptr, size_t size, size_t nitems, 293683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// FILE *stream); 294683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier fwrite, 295cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getc(FILE *stream); 296cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getc, 297cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getc_unlocked(FILE *stream); 298cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getc_unlocked, 299cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getchar(void); 300cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getchar, 301cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *getenv(const char *name); 302cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getenv, 303cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getitimer(int which, struct itimerval *value); 304cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getitimer, 305cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getlogin_r(char *name, size_t namesize); 306cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getlogin_r, 307cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// struct passwd *getpwnam(const char *name); 308cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getpwnam, 309cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *gets(char *s); 310cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge gets, 311cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint32_t htonl(uint32_t hostlong); 312cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge htonl, 313cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint16_t htons(uint16_t hostshort); 314cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge htons, 315683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// int iprintf(const char *format, ...); 316683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier iprintf, 3176098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int isascii(int c); 3186098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge isascii, 3196098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int isdigit(int c); 3206098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge isdigit, 3216098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// long int labs(long int j); 3226098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge labs, 323cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lchown(const char *path, uid_t owner, gid_t group); 324cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lchown, 3256098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// long long int llabs(long long int j); 3266098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge llabs, 3278ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log(double x); 3288ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log, 3298ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log10(double x); 3308ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log10, 3318ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float log10f(float x); 3328ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log10f, 333d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double log10l(long double x); 334d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log10l, 3358ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log1p(double x); 3368ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log1p, 3378ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float log1pf(float x); 3388ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log1pf, 339d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double log1pl(long double x); 340d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log1pl, 341d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// double log2(double x); 342d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2, 343d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float log2f(float x); 344d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2f, 345d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// double long double log2l(long double x); 346d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2l, 3476871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double logb(double x); 3486871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logb, 3496871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float logbf(float x); 3506871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logbf, 3516871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double logbl(long double x); 3526871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logbl, 353d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float logf(float x); 354d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson logf, 355d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double logl(long double x); 356d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson logl, 357cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lstat(const char *path, struct stat *buf); 358cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lstat, 359cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lstat64(const char *path, struct stat64 *buf); 360cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lstat64, 3618e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *malloc(size_t size); 3628e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer malloc, 363cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void *memalign(size_t boundary, size_t size); 364cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memalign, 365cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void *memccpy(void *s1, const void *s2, int c, size_t n); 366cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memccpy, 3678d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// void *memchr(const void *s, int c, size_t n); 3688d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes memchr, 3698d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int memcmp(const void *s1, const void *s2, size_t n); 3708d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes memcmp, 371683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memcpy(void *s1, const void *s2, size_t n); 372398c0d8b7417dedbe244020ffb67abb54aaa1c59Chris Lattner memcpy, 373683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memmove(void *s1, const void *s2, size_t n); 374149f5283f93ec85b96888c284f56099a72cc2731Chris Lattner memmove, 375cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // void *memrchr(const void *s, int c, size_t n); 376cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memrchr, 377683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memset(void *b, int c, size_t len); 378683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier memset, 379ce99120084f549a523213064648662a704e8b789Chris Lattner /// void memset_pattern16(void *b, const void *pattern16, size_t len); 380ce99120084f549a523213064648662a704e8b789Chris Lattner memset_pattern16, 381cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int mkdir(const char *path, mode_t mode); 382cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge mkdir, 383cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// time_t mktime(struct tm *timeptr); 384cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge mktime, 385cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double modf(double x, double *iptr); 386cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modf, 387cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// float modff(float, float *iptr); 388cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modff, 389cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long double modfl(long double value, long double *iptr); 390cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modfl, 391243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double nearbyint(double x); 392243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyint, 393243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float nearbyintf(float x); 394243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyintf, 395243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double nearbyintl(long double x); 396243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyintl, 397cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint32_t ntohl(uint32_t netlong); 398cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ntohl, 399cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint16_t ntohs(uint16_t netshort); 400cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ntohs, 401cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int open(const char *path, int oflag, ... ); 402cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge open, 403cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int open64(const char *filename, int flags[, mode_t mode]) 404cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge open64, 405cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// DIR *opendir(const char *dirname); 406cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge opendir, 407cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int pclose(FILE *stream); 408cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pclose, 409cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void perror(const char *s); 410cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge perror, 411cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *popen(const char *command, const char *mode); 412cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge popen, 4138e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// int posix_memalign(void **memptr, size_t alignment, size_t size); 4148e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer posix_memalign, 4158ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double pow(double x, double y); 4168ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier pow, 4178ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float powf(float x, float y); 4188ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier powf, 4198ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// long double powl(long double x, long double y); 4208ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier powl, 421cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset); 422cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pread, 4236098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int printf(const char *format, ...); 4246098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge printf, 425cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int putc(int c, FILE *stream); 426cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge putc, 4278d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int putchar(int c); 4288d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes putchar, 4298d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int puts(const char *s); 4308d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes puts, 431cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t pwrite(int fildes, const void *buf, size_t nbyte, 432cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off_t offset); 433cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pwrite, 434cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void qsort(void *base, size_t nel, size_t width, 435cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int (*compar)(const void *, const void *)); 436cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge qsort, 437cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t read(int fildes, void *buf, size_t nbyte); 438cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge read, 439cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t readlink(const char *path, char *buf, size_t bufsize); 440cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge readlink, 4418e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *realloc(void *ptr, size_t size); 4428e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer realloc, 4438e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *reallocf(void *ptr, size_t size); 4448e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer reallocf, 445cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *realpath(const char *file_name, char *resolved_name); 446cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge realpath, 447cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int remove(const char *path); 448cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge remove, 449cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int rename(const char *old, const char *new); 450cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rename, 451cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void rewind(FILE *stream); 452cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rewind, 453243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double rint(double x); 454243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rint, 455243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float rintf(float x); 456243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rintf, 457d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// long double rintl(long double x); 458243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rintl, 459cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int rmdir(const char *path); 460cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rmdir, 461d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// double round(double x); 462d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff round, 463d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// float roundf(float x); 464d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff roundf, 465d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// long double roundl(long double x); 466d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff roundl, 467cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int scanf(const char *restrict format, ... ); 468cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge scanf, 469cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void setbuf(FILE *stream, char *buf); 470cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setbuf, 471cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int setitimer(int which, const struct itimerval *value, 472cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// struct itimerval *ovalue); 473cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setitimer, 474cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int setvbuf(FILE *stream, char *buf, int type, size_t size); 475cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setvbuf, 47632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double sin(double x); 47732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sin, 47832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float sinf(float x); 47932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinf, 48032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double sinh(double x); 48132b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinh, 48232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float sinhf(float x); 48332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinhf, 484d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sinhl(long double x); 485d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sinhl, 486d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sinl(long double x); 487d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sinl, 488419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne /// int siprintf(char *str, const char *format, ...); 489419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne siprintf, 490cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int snprintf(char *s, size_t n, const char *format, ...); 491cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge snprintf, 4926098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int sprintf(char *str, const char *format, ...); 4936098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge sprintf, 4943d925d24e8c54cde05228258c25cc21687cad922Chad Rosier /// double sqrt(double x); 4953d925d24e8c54cde05228258c25cc21687cad922Chad Rosier sqrt, 4963d925d24e8c54cde05228258c25cc21687cad922Chad Rosier /// float sqrtf(float x); 4973d925d24e8c54cde05228258c25cc21687cad922Chad Rosier sqrtf, 498d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sqrtl(long double x); 499d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sqrtl, 500cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int sscanf(const char *s, const char *format, ... ); 501cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge sscanf, 502cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int stat(const char *path, struct stat *buf); 503cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stat, 504cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int stat64(const char *path, struct stat64 *buf); 505cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stat64, 506cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int statvfs(const char *path, struct statvfs *buf); 507cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge statvfs, 508cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int statvfs64(const char *path, struct statvfs64 *buf) 509cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge statvfs64, 510939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *stpcpy(char *s1, const char *s2); 511939f5002027e3ccb710ac1c3050dc25471251565Meador Inge stpcpy, 512cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *stpncpy(char *s1, const char *s2, size_t n); 513cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stpncpy, 514cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strcasecmp(const char *s1, const char *s2); 515cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strcasecmp, 5160841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strcat(char *s1, const char *s2); 5170841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strcat, 5188d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// char *strchr(const char *s, int c); 5198d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes strchr, 520939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// int strcmp(const char *s1, const char *s2); 521939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strcmp, 522cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strcoll(const char *s1, const char *s2); 523cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strcoll, 5240841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strcpy(char *s1, const char *s2); 5250841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strcpy, 526939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// size_t strcspn(const char *s1, const char *s2); 527939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strcspn, 5288e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// char *strdup(const char *s1); 5298e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer strdup, 5300841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// size_t strlen(const char *s); 5310841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strlen, 532cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strncasecmp(const char *s1, const char *s2, size_t n); 533cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strncasecmp, 5340841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strncat(char *s1, const char *s2, size_t n); 5350841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strncat, 5368d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int strncmp(const char *s1, const char *s2, size_t n); 5378d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes strncmp, 5380841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strncpy(char *s1, const char *s2, size_t n); 5390841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strncpy, 5408e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// char *strndup(const char *s1, size_t n); 5418e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer strndup, 5420841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// size_t strnlen(const char *s, size_t maxlen); 5430841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strnlen, 544939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strpbrk(const char *s1, const char *s2); 545939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strpbrk, 546939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strrchr(const char *s, int c); 547939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strrchr, 548939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// size_t strspn(const char *s1, const char *s2); 549939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strspn, 550939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strstr(const char *s1, const char *s2); 551939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strstr, 552939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// double strtod(const char *nptr, char **endptr); 553939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtod, 554939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// float strtof(const char *nptr, char **endptr); 555939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtof, 556cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // char *strtok(char *s1, const char *s2); 557cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strtok, 558cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // char *strtok_r(char *s, const char *sep, char **lasts); 559cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strtok_r, 560939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long int strtol(const char *nptr, char **endptr, int base); 561939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtol, 562939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long double strtold(const char *nptr, char **endptr); 563939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtold, 564939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long long int strtoll(const char *nptr, char **endptr, int base); 565939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoll, 566939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// unsigned long int strtoul(const char *nptr, char **endptr, int base); 567939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoul, 568939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// unsigned long long int strtoull(const char *nptr, char **endptr, 569939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// int base); 570939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoull, 571cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// size_t strxfrm(char *s1, const char *s2, size_t n); 572cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strxfrm, 573cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int system(const char *command); 574cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge system, 57532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double tan(double x); 57632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tan, 57732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float tanf(float x); 57832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanf, 57932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double tanh(double x); 58032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanh, 58132b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float tanhf(float x); 58232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanhf, 583d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double tanhl(long double x); 584d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson tanhl, 585d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double tanl(long double x); 586d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson tanl, 587cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// clock_t times(struct tms *buffer); 588cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge times, 589cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *tmpfile(void); 590cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge tmpfile, 591cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *tmpfile64(void) 592cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge tmpfile64, 5936098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int toascii(int c); 5946098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge toascii, 595243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double trunc(double x); 596243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson trunc, 597243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float truncf(float x); 598243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson truncf, 599243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double truncl(long double x); 600243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson truncl, 601cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int uname(struct utsname *name); 602cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge uname, 603cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ungetc(int c, FILE *stream); 604cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ungetc, 605cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int unlink(const char *path); 606cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge unlink, 607cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int unsetenv(const char *name); 608cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge unsetenv, 609cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int utime(const char *path, const struct utimbuf *times); 610cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge utime, 611cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int utimes(const char *path, const struct timeval times[2]); 612cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge utimes, 6138e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *valloc(size_t size); 6148e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer valloc, 615cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vfprintf(FILE *stream, const char *format, va_list ap); 616cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vfprintf, 617cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vfscanf(FILE *stream, const char *format, va_list arg); 618cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vfscanf, 619cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vprintf(const char *restrict format, va_list ap); 620cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vprintf, 621cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vscanf(const char *format, va_list arg); 622cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vscanf, 623cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsnprintf(char *s, size_t n, const char *format, va_list ap); 624cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsnprintf, 625cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsprintf(char *s, const char *format, va_list ap); 626cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsprintf, 627cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsscanf(const char *s, const char *format, va_list arg); 628cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsscanf, 629cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t write(int fildes, const void *buf, size_t nbyte); 630cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge write, 6319d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 632ce99120084f549a523213064648662a704e8b789Chris Lattner NumLibFuncs 633ce99120084f549a523213064648662a704e8b789Chris Lattner }; 634ce99120084f549a523213064648662a704e8b789Chris Lattner } 635ce99120084f549a523213064648662a704e8b789Chris Lattner 636ce99120084f549a523213064648662a704e8b789Chris Lattner/// TargetLibraryInfo - This immutable pass captures information about what 637ce99120084f549a523213064648662a704e8b789Chris Lattner/// library functions are available for the current target, and allows a 638ce99120084f549a523213064648662a704e8b789Chris Lattner/// frontend to disable optimizations through -fno-builtin etc. 639ce99120084f549a523213064648662a704e8b789Chris Lattnerclass TargetLibraryInfo : public ImmutablePass { 6402d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 6419d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman unsigned char AvailableArray[(LibFunc::NumLibFuncs+3)/4]; 6429d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman llvm::DenseMap<unsigned, std::string> CustomNames; 6439d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman static const char* StandardNames[LibFunc::NumLibFuncs]; 6449d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 6459d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman enum AvailabilityState { 6469d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman StandardName = 3, // (memset to all ones) 6479d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman CustomName = 1, 6489d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman Unavailable = 0 // (memset to all zeros) 6499d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman }; 6509d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman void setState(LibFunc::Func F, AvailabilityState State) { 6519d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailableArray[F/4] &= ~(3 << 2*(F&3)); 6529d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailableArray[F/4] |= State << 2*(F&3); 6539d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6549d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailabilityState getState(LibFunc::Func F) const { 6559d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return static_cast<AvailabilityState>((AvailableArray[F/4] >> 2*(F&3)) & 3); 6569d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6579d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 658ce99120084f549a523213064648662a704e8b789Chris Lattnerpublic: 659ce99120084f549a523213064648662a704e8b789Chris Lattner static char ID; 660ce99120084f549a523213064648662a704e8b789Chris Lattner TargetLibraryInfo(); 661ce99120084f549a523213064648662a704e8b789Chris Lattner TargetLibraryInfo(const Triple &T); 66240f5fbcc5c95bb96c43ce2d06d57ae9b7f852539Chris Lattner explicit TargetLibraryInfo(const TargetLibraryInfo &TLI); 663ce99120084f549a523213064648662a704e8b789Chris Lattner 664d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// getLibFunc - Search for a particular function name. If it is one of the 665d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// known library functions, return true and set F to the corresponding value. 666d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson bool getLibFunc(StringRef funcName, LibFunc::Func &F) const; 667d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson 668ce99120084f549a523213064648662a704e8b789Chris Lattner /// has - This function is used by optimizations that want to match on or form 669ce99120084f549a523213064648662a704e8b789Chris Lattner /// a given library function. 670ce99120084f549a523213064648662a704e8b789Chris Lattner bool has(LibFunc::Func F) const { 6719d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return getState(F) != Unavailable; 6729d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6739d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 674982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson /// hasOptimizedCodeGen - Return true if the function is both available as 675982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson /// a builtin and a candidate for optimized code generation. 676982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson bool hasOptimizedCodeGen(LibFunc::Func F) const { 677982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson if (getState(F) == Unavailable) 678982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return false; 679982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson switch (F) { 680982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson default: break; 681982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::copysign: case LibFunc::copysignf: case LibFunc::copysignl: 682982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::fabs: case LibFunc::fabsf: case LibFunc::fabsl: 683982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::sin: case LibFunc::sinf: case LibFunc::sinl: 684982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::cos: case LibFunc::cosf: case LibFunc::cosl: 685982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::sqrt: case LibFunc::sqrtf: case LibFunc::sqrtl: 686b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd case LibFunc::sqrt_finite: case LibFunc::sqrtf_finite: 687b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd case LibFunc::sqrtl_finite: 688982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::floor: case LibFunc::floorf: case LibFunc::floorl: 689982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::nearbyint: case LibFunc::nearbyintf: case LibFunc::nearbyintl: 690982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::ceil: case LibFunc::ceilf: case LibFunc::ceill: 691982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::rint: case LibFunc::rintf: case LibFunc::rintl: 692982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::trunc: case LibFunc::truncf: case LibFunc::truncl: 693982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::log2: case LibFunc::log2f: case LibFunc::log2l: 694982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::exp2: case LibFunc::exp2f: case LibFunc::exp2l: 695982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::memcmp: 696982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return true; 697982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson } 698982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return false; 699982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson } 700982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson 7019d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman StringRef getName(LibFunc::Func F) const { 7029d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailabilityState State = getState(F); 7039d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (State == Unavailable) 7049d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return StringRef(); 7059d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (State == StandardName) 7069d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return StandardNames[F]; 7079d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman assert(State == CustomName); 7089d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return CustomNames.find(F)->second; 709ce99120084f549a523213064648662a704e8b789Chris Lattner } 710ce99120084f549a523213064648662a704e8b789Chris Lattner 711ce99120084f549a523213064648662a704e8b789Chris Lattner /// setUnavailable - this can be used by whatever sets up TargetLibraryInfo to 712ce99120084f549a523213064648662a704e8b789Chris Lattner /// ban use of specific library functions. 713ce99120084f549a523213064648662a704e8b789Chris Lattner void setUnavailable(LibFunc::Func F) { 7149d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, Unavailable); 715ce99120084f549a523213064648662a704e8b789Chris Lattner } 716ce99120084f549a523213064648662a704e8b789Chris Lattner 717ce99120084f549a523213064648662a704e8b789Chris Lattner void setAvailable(LibFunc::Func F) { 7189d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, StandardName); 719ce99120084f549a523213064648662a704e8b789Chris Lattner } 7209d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 7219d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman void setAvailableWithName(LibFunc::Func F, StringRef Name) { 7229d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (StandardNames[F] != Name) { 7239d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, CustomName); 7249d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman CustomNames[F] = Name; 7259d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman assert(CustomNames.find(F) != CustomNames.end()); 7269d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } else { 7279d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, StandardName); 7289d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 7299d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 7309d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 731188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner /// disableAllFunctions - This disables all builtins, which is used for 732188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner /// options like -fno-builtin. 733188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner void disableAllFunctions(); 734ce99120084f549a523213064648662a704e8b789Chris Lattner}; 735ce99120084f549a523213064648662a704e8b789Chris Lattner 736ce99120084f549a523213064648662a704e8b789Chris Lattner} // end namespace llvm 737ce99120084f549a523213064648662a704e8b789Chris Lattner 738ce99120084f549a523213064648662a704e8b789Chris Lattner#endif 739