aboutsummaryrefslogtreecommitdiff
path: root/llvm/include/llvm/IR/RuntimeLibcalls.td
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/include/llvm/IR/RuntimeLibcalls.td')
-rw-r--r--llvm/include/llvm/IR/RuntimeLibcalls.td1735
1 files changed, 1724 insertions, 11 deletions
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td
index 24c1b03..2d7ebc3 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.td
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.td
@@ -24,6 +24,7 @@ def isNotOSWindows : RuntimeLibcallPredicate<"!TT.isOSWindows()">;
def isNotOSLinux : RuntimeLibcallPredicate<[{!TT.isOSLinux()}]>;
def isNotOSMSVCRT : RuntimeLibcallPredicate<"!TT.isOSMSVCRT()">;
def isPS : RuntimeLibcallPredicate<"TT.isPS()">;
+def isMacOSX : RuntimeLibcallPredicate<[{TT.isMacOSX()}]>;
def isNotOSWindowsOrIsCygwinMinGW
: RuntimeLibcallPredicate<"!TT.isOSWindows() || TT.isOSCygMing()">;
def isWindowsMSVCEnvironment : RuntimeLibcallPredicate<
@@ -35,6 +36,9 @@ def isNotOSLinuxAndNotOSOpenBSD : RuntimeLibcallPredicate<
def isNotOSAIXAndNotOSOpenBSD : RuntimeLibcallPredicate<
[{!TT.isOSAIX() && !TT.isOSOpenBSD()}]>;
+def isNotPS : RuntimeLibcallPredicate<
+ [{!TT.isPS()}]>;
+
// OpenBSD uses __guard_local. AIX uses __ssp_canary_word, MSVC/Windows
// Itanium uses __security_cookie
def hasStackChkFail : RuntimeLibcallPredicate<
@@ -47,6 +51,7 @@ def isWindowsMSVCOrItaniumEnvironment : RuntimeLibcallPredicate<
def isGNUEnvironment : RuntimeLibcallPredicate<"TT.isGNUEnvironment()">;
def darwinHasSinCosStret : RuntimeLibcallPredicate<"darwinHasSinCosStret(TT)">;
def darwinHasExp10 : RuntimeLibcallPredicate<"darwinHasExp10(TT)">;
+def darwinHasMemsetPattern : RuntimeLibcallPredicate<[{darwinHasMemsetPattern(TT)}]>;
def hasExp10 : RuntimeLibcallPredicate<[{!TT.isOSDarwin()}]>;
@@ -149,6 +154,10 @@ foreach FPTy = ["F32", "F64", "F80", "F128", "PPCF128"] in {
def ATAN_#FPTy : RuntimeLibcall;
def ATAN2_#FPTy : RuntimeLibcall;
def SINCOS_#FPTy : RuntimeLibcall;
+ def REMQUO_#FPTy : RuntimeLibcall;
+ def FDIM_#FPTy : RuntimeLibcall;
+
+ def CABS_#FPTy : RuntimeLibcall;
}
foreach FPTy = [ "F32", "F64" ] in {
@@ -180,6 +189,71 @@ foreach FPTy = ["F32", "F64", "F80", "F128", "PPCF128"] in {
def FREXP_#FPTy : RuntimeLibcall;
def SINCOSPI_#FPTy : RuntimeLibcall;
def MODF_#FPTy : RuntimeLibcall;
+ def NAN_#FPTy : RuntimeLibcall;
+ def NEXTTOWARD_#FPTy : RuntimeLibcall;
+ def REMAINDER_#FPTy : RuntimeLibcall;
+ def SCALBLN_#FPTy : RuntimeLibcall;
+ def SCALBN_#FPTy : RuntimeLibcall;
+ def TGAMMA_#FPTy : RuntimeLibcall;
+}
+
+defvar F32VectorSuffixes = ["V2F32", "V4F32", "V8F32", "V16F32", "NXV4F32"];
+defvar F64VectorSuffixes = ["V2F64", "V4F64", "V8F64", "NXV2F64"];
+
+foreach S = !listconcat(F32VectorSuffixes, F64VectorSuffixes) in {
+ def ACOS_#S : RuntimeLibcall;
+ def ACOSH_#S : RuntimeLibcall;
+ def ASIN_#S : RuntimeLibcall;
+ def ASINH_#S : RuntimeLibcall;
+ def ATAN_#S : RuntimeLibcall;
+ def ATAN2_#S : RuntimeLibcall;
+ def ATANH_#S : RuntimeLibcall;
+ def CBRT_#S : RuntimeLibcall;
+ def CEIL_#S : RuntimeLibcall;
+ def COPYSIGN_#S : RuntimeLibcall;
+ def COS_#S : RuntimeLibcall;
+ def COSH_#S : RuntimeLibcall;
+ def COSPI_#S : RuntimeLibcall;
+ def ERFC_#S : RuntimeLibcall;
+ def ERF_#S : RuntimeLibcall;
+ def EXP_#S : RuntimeLibcall;
+ def EXP_FINITE_#S : RuntimeLibcall;
+ def EXP10_#S : RuntimeLibcall;
+ def EXP2_#S : RuntimeLibcall;
+ def EXPM1_#S : RuntimeLibcall;
+ def FABS_#S : RuntimeLibcall;
+ def FDIM_#S : RuntimeLibcall;
+ def FLOOR_#S : RuntimeLibcall;
+ def FMA_#S : RuntimeLibcall;
+ def FMAX_#S : RuntimeLibcall;
+ def FMIN_#S : RuntimeLibcall;
+ def FMOD_#S : RuntimeLibcall;
+ def HYPOT_#S : RuntimeLibcall;
+ def ILOGB_#S : RuntimeLibcall;
+ def LDEXP_#S : RuntimeLibcall;
+ def LGAMMA_#S : RuntimeLibcall;
+ def LOG_#S : RuntimeLibcall;
+ def LOG10_#S : RuntimeLibcall;
+ def LOG1P_#S : RuntimeLibcall;
+ def LOG2_#S : RuntimeLibcall;
+ def LOGB_#S : RuntimeLibcall;
+ def MODF_#S : RuntimeLibcall;
+ def NEXTAFTER_#S : RuntimeLibcall;
+ def POW_#S : RuntimeLibcall;
+ def SINCOS_#S : RuntimeLibcall;
+ def SINCOSPI_#S : RuntimeLibcall;
+ def SIN_#S : RuntimeLibcall;
+ def SINH_#S : RuntimeLibcall;
+ def SINPI_#S : RuntimeLibcall;
+ def SQRT_#S : RuntimeLibcall;
+ def TAN_#S : RuntimeLibcall;
+ def TANH_#S : RuntimeLibcall;
+ def TGAMMA_#S : RuntimeLibcall;
+}
+
+foreach S = F64VectorSuffixes in {
+ def LOG_FINITE_#S : RuntimeLibcall;
+ def POW_FINITE_#S : RuntimeLibcall;
}
def FEGETENV : RuntimeLibcall;
@@ -307,9 +381,14 @@ foreach FPTy = ["F32", "F64", "F128", "PPCF128"] in {
// Memory
def MEMCMP : RuntimeLibcall;
def MEMCPY : RuntimeLibcall;
+def MEMCPY_CHK : RuntimeLibcall;
def MEMMOVE : RuntimeLibcall;
+def MEMMOVE_CHK : RuntimeLibcall;
def MEMSET : RuntimeLibcall;
+def MEMSET_CHK : RuntimeLibcall;
+def MALLOC : RuntimeLibcall;
def CALLOC : RuntimeLibcall;
+def FREE : RuntimeLibcall;
def BZERO : RuntimeLibcall;
def STRLEN : RuntimeLibcall;
@@ -496,6 +575,302 @@ def OBJC_RETAIN_AUTORELEASE : RuntimeLibcall;
def OBJC_SYNC_ENTER : RuntimeLibcall;
def OBJC_SYNC_EXIT : RuntimeLibcall;
+def ABORT : RuntimeLibcall;
+def ABS : RuntimeLibcall;
+def ACCESS : RuntimeLibcall;
+def ALIGNED_ALLOC : RuntimeLibcall;
+def ATEXIT : RuntimeLibcall;
+def ATOF : RuntimeLibcall;
+def ATOI : RuntimeLibcall;
+def ATOL : RuntimeLibcall;
+def ATOLL : RuntimeLibcall;
+def BCMP : RuntimeLibcall;
+def BCOPY : RuntimeLibcall;
+def CHMOD : RuntimeLibcall;
+def CHOWN : RuntimeLibcall;
+def CLEARERR : RuntimeLibcall;
+def CLOSEDIR : RuntimeLibcall;
+def CTERMID : RuntimeLibcall;
+def CXA_ATEXIT : RuntimeLibcall;
+def CXA_GUARD_ABORT : RuntimeLibcall;
+def CXA_GUARD_ACQUIRE : RuntimeLibcall;
+def CXA_GUARD_RELEASE : RuntimeLibcall;
+def CXA_THROW : RuntimeLibcall;
+def DUNDER_ISOC99_SCANF : RuntimeLibcall;
+def DUNDER_ISOC99_SSCANF : RuntimeLibcall;
+def DUNDER_STRDUP : RuntimeLibcall;
+def DUNDER_STRNDUP : RuntimeLibcall;
+def DUNDER_STRTOK_R : RuntimeLibcall;
+def ENUM_VARIANT : RuntimeLibcall;
+def EXECL : RuntimeLibcall;
+def EXECLE : RuntimeLibcall;
+def EXECLP : RuntimeLibcall;
+def EXECV : RuntimeLibcall;
+def EXECVE : RuntimeLibcall;
+def EXECVP : RuntimeLibcall;
+def EXECVPE : RuntimeLibcall;
+def EXIT : RuntimeLibcall;
+def FCLOSE : RuntimeLibcall;
+def FDOPEN : RuntimeLibcall;
+def FEOF : RuntimeLibcall;
+def FERROR : RuntimeLibcall;
+def FFLUSH : RuntimeLibcall;
+def FFS : RuntimeLibcall;
+def FFSL : RuntimeLibcall;
+def FFSLL : RuntimeLibcall;
+def FGETC : RuntimeLibcall;
+def FGETC_UNLOCKED : RuntimeLibcall;
+def FGETPOS : RuntimeLibcall;
+def FGETS : RuntimeLibcall;
+def FGETS_UNLOCKED : RuntimeLibcall;
+def FILENO : RuntimeLibcall;
+def FIPRINTF : RuntimeLibcall;
+def FLOCKFILE : RuntimeLibcall;
+def FLS : RuntimeLibcall;
+def FLSL : RuntimeLibcall;
+def FLSLL : RuntimeLibcall;
+def FOPEN : RuntimeLibcall;
+def FOPEN64 : RuntimeLibcall;
+def FORK : RuntimeLibcall;
+def FPRINTF : RuntimeLibcall;
+def FPUTC : RuntimeLibcall;
+def FPUTC_UNLOCKED : RuntimeLibcall;
+def FPUTS : RuntimeLibcall;
+def FPUTS_UNLOCKED : RuntimeLibcall;
+def FREAD : RuntimeLibcall;
+def FREAD_UNLOCKED : RuntimeLibcall;
+def FSCANF : RuntimeLibcall;
+def FSEEK : RuntimeLibcall;
+def FSEEKO : RuntimeLibcall;
+def FSEEKO64 : RuntimeLibcall;
+def FSETPOS : RuntimeLibcall;
+def FSTAT : RuntimeLibcall;
+def FSTAT64 : RuntimeLibcall;
+def FSTATVFS : RuntimeLibcall;
+def FSTATVFS64 : RuntimeLibcall;
+def FTELL : RuntimeLibcall;
+def FTELLO : RuntimeLibcall;
+def FTELLO64 : RuntimeLibcall;
+def FTRYLOCKFILE : RuntimeLibcall;
+def FUNLOCKFILE : RuntimeLibcall;
+def FWRITE : RuntimeLibcall;
+def FWRITE_UNLOCKED : RuntimeLibcall;
+def GETC : RuntimeLibcall;
+def GETCHAR : RuntimeLibcall;
+def GETCHAR_UNLOCKED : RuntimeLibcall;
+def GETC_UNLOCKED : RuntimeLibcall;
+def GETENV : RuntimeLibcall;
+def GETITIMER : RuntimeLibcall;
+def GETLOGIN_R : RuntimeLibcall;
+def GETPWNAM : RuntimeLibcall;
+def GETS : RuntimeLibcall;
+def GETTIMEOFDAY : RuntimeLibcall;
+def HTONL : RuntimeLibcall;
+def HTONS : RuntimeLibcall;
+def IPRINTF : RuntimeLibcall;
+def ISASCII : RuntimeLibcall;
+def ISDIGIT : RuntimeLibcall;
+def LABS : RuntimeLibcall;
+def LCHOWN : RuntimeLibcall;
+def LLABS : RuntimeLibcall;
+def LSTAT : RuntimeLibcall;
+def LSTAT64 : RuntimeLibcall;
+def MEMALIGN : RuntimeLibcall;
+def MEMCCPY : RuntimeLibcall;
+def MEMCCPY_CHK : RuntimeLibcall;
+def MEMCHR : RuntimeLibcall;
+def MEMPCPY : RuntimeLibcall;
+def MEMPCPY_CHK : RuntimeLibcall;
+def MEMRCHR : RuntimeLibcall;
+def MEMSET_PATTERN16 : RuntimeLibcall;
+def MEMSET_PATTERN4 : RuntimeLibcall;
+def MEMSET_PATTERN8 : RuntimeLibcall;
+def MKDIR : RuntimeLibcall;
+def MKTIME : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR32 : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR32_INT : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR32_NOTHROW : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR64 : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR64_LONGLONG : RuntimeLibcall;
+def MSVC_DELETE_ARRAY_PTR64_NOTHROW : RuntimeLibcall;
+def MSVC_DELETE_PTR32 : RuntimeLibcall;
+def MSVC_DELETE_PTR32_INT : RuntimeLibcall;
+def MSVC_DELETE_PTR32_NOTHROW : RuntimeLibcall;
+def MSVC_DELETE_PTR64 : RuntimeLibcall;
+def MSVC_DELETE_PTR64_LONGLONG : RuntimeLibcall;
+def MSVC_DELETE_PTR64_NOTHROW : RuntimeLibcall;
+def MSVC_NEW_ARRAY_INT : RuntimeLibcall;
+def MSVC_NEW_ARRAY_INT_NOTHROW : RuntimeLibcall;
+def MSVC_NEW_ARRAY_LONGLONG : RuntimeLibcall;
+def MSVC_NEW_ARRAY_LONGLONG_NOTHROW : RuntimeLibcall;
+def MSVC_NEW_INT : RuntimeLibcall;
+def MSVC_NEW_INT_NOTHROW : RuntimeLibcall;
+def MSVC_NEW_LONGLONG : RuntimeLibcall;
+def MSVC_NEW_LONGLONG_NOTHROW : RuntimeLibcall;
+def NTOHL : RuntimeLibcall;
+def NTOHS : RuntimeLibcall;
+def OPEN : RuntimeLibcall;
+def OPEN64 : RuntimeLibcall;
+def OPENDIR : RuntimeLibcall;
+def PCLOSE : RuntimeLibcall;
+def PERROR : RuntimeLibcall;
+def POPEN : RuntimeLibcall;
+def POSIX_MEMALIGN : RuntimeLibcall;
+def PREAD : RuntimeLibcall;
+def PRINTF : RuntimeLibcall;
+def PUTC : RuntimeLibcall;
+def PUTCHAR : RuntimeLibcall;
+def PUTCHAR_UNLOCKED : RuntimeLibcall;
+def PUTC_UNLOCKED : RuntimeLibcall;
+def PUTS : RuntimeLibcall;
+def PVALLOC : RuntimeLibcall;
+def PWRITE : RuntimeLibcall;
+def QSORT : RuntimeLibcall;
+def READ : RuntimeLibcall;
+def READLINK : RuntimeLibcall;
+def REALLOC : RuntimeLibcall;
+def REALLOCARRAY : RuntimeLibcall;
+def REALLOCF : RuntimeLibcall;
+def REALPATH : RuntimeLibcall;
+def REMOVE : RuntimeLibcall;
+def RENAME : RuntimeLibcall;
+def REWIND : RuntimeLibcall;
+def RMDIR : RuntimeLibcall;
+def SCANF : RuntimeLibcall;
+def SETBUF : RuntimeLibcall;
+def SETITIMER : RuntimeLibcall;
+def SETVBUF : RuntimeLibcall;
+def SIPRINTF : RuntimeLibcall;
+def SIZE_RETURNING_NEW : RuntimeLibcall;
+def SIZE_RETURNING_NEW_ALIGNED : RuntimeLibcall;
+def SIZE_RETURNING_NEW_ALIGNED_HOT_COLD : RuntimeLibcall;
+def SIZE_RETURNING_NEW_HOT_COLD : RuntimeLibcall;
+def SMALL_FPRINTF : RuntimeLibcall;
+def SMALL_PRINTF : RuntimeLibcall;
+def SMALL_SPRINTF : RuntimeLibcall;
+def SNPRINTF : RuntimeLibcall;
+def SNPRINTF_CHK : RuntimeLibcall;
+def SPRINTF : RuntimeLibcall;
+def SPRINTF_CHK : RuntimeLibcall;
+def SSCANF : RuntimeLibcall;
+def STAT : RuntimeLibcall;
+def STAT64 : RuntimeLibcall;
+def STATVFS : RuntimeLibcall;
+def STATVFS64 : RuntimeLibcall;
+def STPCPY : RuntimeLibcall;
+def STPCPY_CHK : RuntimeLibcall;
+def STPNCPY : RuntimeLibcall;
+def STPNCPY_CHK : RuntimeLibcall;
+def STRCASECMP : RuntimeLibcall;
+def STRCAT : RuntimeLibcall;
+def STRCAT_CHK : RuntimeLibcall;
+def STRCHR : RuntimeLibcall;
+def STRCMP : RuntimeLibcall;
+def STRCOLL : RuntimeLibcall;
+def STRCPY : RuntimeLibcall;
+def STRCPY_CHK : RuntimeLibcall;
+def STRCSPN : RuntimeLibcall;
+def STRDUP : RuntimeLibcall;
+def STRLCAT : RuntimeLibcall;
+def STRLCAT_CHK : RuntimeLibcall;
+def STRLCPY : RuntimeLibcall;
+def STRLCPY_CHK : RuntimeLibcall;
+def STRLEN_CHK : RuntimeLibcall;
+def STRNCASECMP : RuntimeLibcall;
+def STRNCAT : RuntimeLibcall;
+def STRNCAT_CHK : RuntimeLibcall;
+def STRNCMP : RuntimeLibcall;
+def STRNCPY : RuntimeLibcall;
+def STRNCPY_CHK : RuntimeLibcall;
+def STRNDUP : RuntimeLibcall;
+def STRNLEN : RuntimeLibcall;
+def STRPBRK : RuntimeLibcall;
+def STRRCHR : RuntimeLibcall;
+def STRSPN : RuntimeLibcall;
+def STRSTR : RuntimeLibcall;
+def STRTOD : RuntimeLibcall;
+def STRTOF : RuntimeLibcall;
+def STRTOK : RuntimeLibcall;
+def STRTOK_R : RuntimeLibcall;
+def STRTOL : RuntimeLibcall;
+def STRTOLD : RuntimeLibcall;
+def STRTOLL : RuntimeLibcall;
+def STRTOUL : RuntimeLibcall;
+def STRTOULL : RuntimeLibcall;
+def STRXFRM : RuntimeLibcall;
+def SYSTEM : RuntimeLibcall;
+def TERMINATE : RuntimeLibcall;
+def TIMES : RuntimeLibcall;
+def TMPFILE : RuntimeLibcall;
+def TMPFILE64 : RuntimeLibcall;
+def TOASCII : RuntimeLibcall;
+def UNAME : RuntimeLibcall;
+def UNDER_IO_GETC : RuntimeLibcall;
+def UNDER_IO_PUTC : RuntimeLibcall;
+def UNGETC : RuntimeLibcall;
+def UNLINK : RuntimeLibcall;
+def UNSETENV : RuntimeLibcall;
+def UTIME : RuntimeLibcall;
+def UTIMES : RuntimeLibcall;
+def VALLOC : RuntimeLibcall;
+def VEC_CALLOC : RuntimeLibcall;
+def VEC_FREE : RuntimeLibcall;
+def VEC_MALLOC : RuntimeLibcall;
+def VEC_REALLOC : RuntimeLibcall;
+def VFPRINTF : RuntimeLibcall;
+def VFSCANF : RuntimeLibcall;
+def VPRINTF : RuntimeLibcall;
+def VSCANF : RuntimeLibcall;
+def VSNPRINTF : RuntimeLibcall;
+def VSNPRINTF_CHK : RuntimeLibcall;
+def VSPRINTF : RuntimeLibcall;
+def VSPRINTF_CHK : RuntimeLibcall;
+def VSSCANF : RuntimeLibcall;
+def WCSLEN : RuntimeLibcall;
+def WRITE : RuntimeLibcall;
+def ZDAPV : RuntimeLibcall;
+def ZDAPVJ : RuntimeLibcall;
+def ZDAPVJST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDAPVM : RuntimeLibcall;
+def ZDAPVMST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDAPVRKST9NOTHROW_T : RuntimeLibcall;
+def ZDAPVST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDAPVST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZDLPV : RuntimeLibcall;
+def ZDLPVJ : RuntimeLibcall;
+def ZDLPVJST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDLPVM : RuntimeLibcall;
+def ZDLPVMST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDLPVRKST9NOTHROW_T : RuntimeLibcall;
+def ZDLPVST11ALIGN_VAL_T : RuntimeLibcall;
+def ZDLPVST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZNAJ : RuntimeLibcall;
+def ZNAJRKST9NOTHROW_T : RuntimeLibcall;
+def ZNAJST11ALIGN_VAL_T : RuntimeLibcall;
+def ZNAJST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZNAM : RuntimeLibcall;
+def ZNAM12__HOT_COLD_T : RuntimeLibcall;
+def ZNAMRKST9NOTHROW_T : RuntimeLibcall;
+def ZNAMRKST9NOTHROW_T12__HOT_COLD_T : RuntimeLibcall;
+def ZNAMST11ALIGN_VAL_T : RuntimeLibcall;
+def ZNAMST11ALIGN_VAL_T12__HOT_COLD_T : RuntimeLibcall;
+def ZNAMST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZNAMST11ALIGN_VAL_TRKST9NOTHROW_T12__HOT_COLD_T : RuntimeLibcall;
+def ZNWJ : RuntimeLibcall;
+def ZNWJRKST9NOTHROW_T : RuntimeLibcall;
+def ZNWJST11ALIGN_VAL_T : RuntimeLibcall;
+def ZNWJST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZNWM : RuntimeLibcall;
+def ZNWM12__HOT_COLD_T : RuntimeLibcall;
+def ZNWMRKST9NOTHROW_T : RuntimeLibcall;
+def ZNWMRKST9NOTHROW_T12__HOT_COLD_T : RuntimeLibcall;
+def ZNWMST11ALIGN_VAL_T : RuntimeLibcall;
+def ZNWMST11ALIGN_VAL_T12__HOT_COLD_T : RuntimeLibcall;
+def ZNWMST11ALIGN_VAL_TRKST9NOTHROW_T : RuntimeLibcall;
+def ZNWMST11ALIGN_VAL_TRKST9NOTHROW_T12__HOT_COLD_T : RuntimeLibcall;
+def KMPC_ALLOC_SHARED : RuntimeLibcall;
+def KMPC_FREE_SHARED : RuntimeLibcall;
+
//--------------------------------------------------------------------
// Global variable references
//--------------------------------------------------------------------
@@ -971,14 +1346,42 @@ def frexpf : RuntimeLibcallImpl<FREXP_F32>;
def frexp : RuntimeLibcallImpl<FREXP_F64>;
defm frexpl : LibmLongDoubleLibCall;
-def sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
-def sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
-defm sincospil : LibmLongDoubleLibCall;
-
def modff : RuntimeLibcallImpl<MODF_F32>;
def modf : RuntimeLibcallImpl<MODF_F64>;
defm modfl : LibmLongDoubleLibCall;
+def nanf : RuntimeLibcallImpl<NAN_F32>;
+def nan : RuntimeLibcallImpl<NAN_F64>;
+defm nanl : LibmLongDoubleLibCall;
+
+def nexttowardf : RuntimeLibcallImpl<NEXTTOWARD_F32>;
+def nexttoward : RuntimeLibcallImpl<NEXTTOWARD_F64>;
+defm nexttowardl : LibmLongDoubleLibCall;
+
+def remainderf : RuntimeLibcallImpl<REMAINDER_F32>;
+def remainder : RuntimeLibcallImpl<REMAINDER_F64>;
+defm remainderl : LibmLongDoubleLibCall;
+
+def remquof : RuntimeLibcallImpl<REMQUO_F32>;
+def remquo : RuntimeLibcallImpl<REMQUO_F64>;
+defm remquol : LibmLongDoubleLibCall;
+
+def fdimf : RuntimeLibcallImpl<FDIM_F32>;
+def fdim : RuntimeLibcallImpl<FDIM_F64>;
+defm fdiml : LibmLongDoubleLibCall;
+
+def scalbnf : RuntimeLibcallImpl<SCALBN_F32>;
+def scalbn : RuntimeLibcallImpl<SCALBN_F64>;
+defm scalbnl : LibmLongDoubleLibCall;
+
+def scalblnf : RuntimeLibcallImpl<SCALBLN_F32>;
+def scalbln : RuntimeLibcallImpl<SCALBLN_F64>;
+defm scalblnl : LibmLongDoubleLibCall;
+
+def tgammaf : RuntimeLibcallImpl<TGAMMA_F32>;
+def tgamma : RuntimeLibcallImpl<TGAMMA_F64>;
+defm tgammal : LibmLongDoubleLibCall;
+
// Floating point environment
def fegetenv : RuntimeLibcallImpl<FEGETENV>;
def fesetenv : RuntimeLibcallImpl<FESETENV>;
@@ -996,8 +1399,15 @@ def memcpy : RuntimeLibcallImpl<MEMCPY>;
def memmove : RuntimeLibcallImpl<MEMMOVE>;
def memset : RuntimeLibcallImpl<MEMSET>;
+def __memcpy_chk : RuntimeLibcallImpl<MEMCPY_CHK>;
+def __memmove_chk : RuntimeLibcallImpl<MEMMOVE_CHK>;
+def __memset_chk : RuntimeLibcallImpl<MEMSET_CHK>;
+
+def malloc : RuntimeLibcallImpl<MALLOC>;
+
// DSEPass can emit calloc if it finds a pair of malloc/memset
def calloc : RuntimeLibcallImpl<CALLOC>;
+def free : RuntimeLibcallImpl<FREE>;
} // End let IsDefault = true
@@ -1011,6 +1421,353 @@ def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
//--------------------------------------------------------------------
+// Other functions from TargetLibraryInfo
+//
+// TODO: These need to be organized by library and added to relevant
+// systems.
+///
+// --------------------------------------------------------------------
+
+def __2_YAPAXI_Z : RuntimeLibcallImpl<MSVC_NEW_INT, "??2@YAPAXI@Z">;
+def __2_YAPAXIABUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_NEW_INT_NOTHROW,
+ "??2@YAPAXIABUnothrow_t@std@@@Z">;
+def __2_YAPEAX_K_Z : RuntimeLibcallImpl<MSVC_NEW_LONGLONG, "??2@YAPEAX_K@Z">;
+def __2_YAPEAX_KAEBUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_NEW_LONGLONG_NOTHROW,
+ "??2@YAPEAX_KAEBUnothrow_t@std@@@Z">;
+def __3_YAXPAX_Z : RuntimeLibcallImpl<MSVC_DELETE_PTR32, "??3@YAXPAX@Z">;
+def __3_YAXPAXABUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_DELETE_PTR32_NOTHROW,
+ "??3@YAXPAXABUnothrow_t@std@@@Z">;
+def __3_YAXPAXI_Z : RuntimeLibcallImpl<MSVC_DELETE_PTR32_INT, "??3@YAXPAXI@Z">;
+def __3_YAXPEAX_Z : RuntimeLibcallImpl<MSVC_DELETE_PTR64, "??3@YAXPEAX@Z">;
+def __3_YAXPEAXAEBUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_DELETE_PTR64_NOTHROW,
+ "??3@YAXPEAXAEBUnothrow_t@std@@@Z">;
+def __3_YAXPEAX_K_Z
+ : RuntimeLibcallImpl<MSVC_DELETE_PTR64_LONGLONG, "??3@YAXPEAX_K@Z">;
+def ___U_YAPAXI_Z : RuntimeLibcallImpl<MSVC_NEW_ARRAY_INT, "??_U@YAPAXI@Z">;
+def ___U_YAPAXIABUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_NEW_ARRAY_INT_NOTHROW,
+ "??_U@YAPAXIABUnothrow_t@std@@@Z">;
+def ___U_YAPEAX_K_Z
+ : RuntimeLibcallImpl<MSVC_NEW_ARRAY_LONGLONG, "??_U@YAPEAX_K@Z">;
+def ___U_YAPEAX_KAEBUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_NEW_ARRAY_LONGLONG_NOTHROW,
+ "??_U@YAPEAX_KAEBUnothrow_t@std@@@Z">;
+def ___V_YAXPAX_Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR32, "??_V@YAXPAX@Z">;
+def ___V_YAXPAXABUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR32_NOTHROW,
+ "??_V@YAXPAXABUnothrow_t@std@@@Z">;
+def ___V_YAXPAXI_Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR32_INT, "??_V@YAXPAXI@Z">;
+def ___V_YAXPEAX_Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR64, "??_V@YAXPEAX@Z">;
+def ___V_YAXPEAXAEBUnothrow_t_std___Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR64_NOTHROW,
+ "??_V@YAXPEAXAEBUnothrow_t@std@@@Z">;
+def ___V_YAXPEAX_K_Z
+ : RuntimeLibcallImpl<MSVC_DELETE_ARRAY_PTR64_LONGLONG, "??_V@YAXPEAX_K@Z">;
+def _IO_getc : RuntimeLibcallImpl<UNDER_IO_GETC>;
+def _IO_putc : RuntimeLibcallImpl<UNDER_IO_PUTC>;
+def _ZdaPv : RuntimeLibcallImpl<ZDAPV>;
+def _ZdaPvRKSt9nothrow_t : RuntimeLibcallImpl<ZDAPVRKST9NOTHROW_T>;
+def _ZdaPvSt11align_val_t : RuntimeLibcallImpl<ZDAPVST11ALIGN_VAL_T>;
+def _ZdaPvSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZDAPVST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _ZdaPvj : RuntimeLibcallImpl<ZDAPVJ>;
+def _ZdaPvjSt11align_val_t : RuntimeLibcallImpl<ZDAPVJST11ALIGN_VAL_T>;
+def _ZdaPvm : RuntimeLibcallImpl<ZDAPVM>;
+def _ZdaPvmSt11align_val_t : RuntimeLibcallImpl<ZDAPVMST11ALIGN_VAL_T>;
+def _ZdlPv : RuntimeLibcallImpl<ZDLPV>;
+def _ZdlPvRKSt9nothrow_t : RuntimeLibcallImpl<ZDLPVRKST9NOTHROW_T>;
+def _ZdlPvSt11align_val_t : RuntimeLibcallImpl<ZDLPVST11ALIGN_VAL_T>;
+def _ZdlPvSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZDLPVST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _ZdlPvj : RuntimeLibcallImpl<ZDLPVJ>;
+def _ZdlPvjSt11align_val_t : RuntimeLibcallImpl<ZDLPVJST11ALIGN_VAL_T>;
+def _ZdlPvm : RuntimeLibcallImpl<ZDLPVM>;
+def _ZdlPvmSt11align_val_t : RuntimeLibcallImpl<ZDLPVMST11ALIGN_VAL_T>;
+def _Znaj : RuntimeLibcallImpl<ZNAJ>;
+def _ZnajRKSt9nothrow_t : RuntimeLibcallImpl<ZNAJRKST9NOTHROW_T>;
+def _ZnajSt11align_val_t : RuntimeLibcallImpl<ZNAJST11ALIGN_VAL_T>;
+def _ZnajSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZNAJST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _Znam : RuntimeLibcallImpl<ZNAM>;
+def _Znam12__hot_cold_t : RuntimeLibcallImpl<ZNAM12__HOT_COLD_T>;
+def _ZnamRKSt9nothrow_t : RuntimeLibcallImpl<ZNAMRKST9NOTHROW_T>;
+def _ZnamRKSt9nothrow_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNAMRKST9NOTHROW_T12__HOT_COLD_T>;
+def _ZnamSt11align_val_t : RuntimeLibcallImpl<ZNAMST11ALIGN_VAL_T>;
+def _ZnamSt11align_val_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNAMST11ALIGN_VAL_T12__HOT_COLD_T>;
+def _ZnamSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZNAMST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNAMST11ALIGN_VAL_TRKST9NOTHROW_T12__HOT_COLD_T>;
+def _Znwj : RuntimeLibcallImpl<ZNWJ>;
+def _ZnwjRKSt9nothrow_t : RuntimeLibcallImpl<ZNWJRKST9NOTHROW_T>;
+def _ZnwjSt11align_val_t : RuntimeLibcallImpl<ZNWJST11ALIGN_VAL_T>;
+def _ZnwjSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZNWJST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _Znwm : RuntimeLibcallImpl<ZNWM>;
+def _Znwm12__hot_cold_t : RuntimeLibcallImpl<ZNWM12__HOT_COLD_T>;
+def _ZnwmRKSt9nothrow_t : RuntimeLibcallImpl<ZNWMRKST9NOTHROW_T>;
+def _ZnwmRKSt9nothrow_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNWMRKST9NOTHROW_T12__HOT_COLD_T>;
+def _ZnwmSt11align_val_t : RuntimeLibcallImpl<ZNWMST11ALIGN_VAL_T>;
+def _ZnwmSt11align_val_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNWMST11ALIGN_VAL_T12__HOT_COLD_T>;
+def _ZnwmSt11align_val_tRKSt9nothrow_t
+ : RuntimeLibcallImpl<ZNWMST11ALIGN_VAL_TRKST9NOTHROW_T>;
+def _ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t
+ : RuntimeLibcallImpl<ZNWMST11ALIGN_VAL_TRKST9NOTHROW_T12__HOT_COLD_T>;
+def __size_returning_new : RuntimeLibcallImpl<SIZE_RETURNING_NEW>;
+def __size_returning_new_hot_cold
+ : RuntimeLibcallImpl<SIZE_RETURNING_NEW_HOT_COLD>;
+def __size_returning_new_aligned
+ : RuntimeLibcallImpl<SIZE_RETURNING_NEW_ALIGNED>;
+def __size_returning_new_aligned_hot_cold
+ : RuntimeLibcallImpl<SIZE_RETURNING_NEW_ALIGNED_HOT_COLD>;
+def __cxa_atexit : RuntimeLibcallImpl<CXA_ATEXIT>;
+def atexit : RuntimeLibcallImpl<ATEXIT>;
+def abort : RuntimeLibcallImpl<ABORT>;
+def exit : RuntimeLibcallImpl<EXIT>;
+def _Exit : RuntimeLibcallImpl<EXIT>;
+def _ZSt9terminatev : RuntimeLibcallImpl<TERMINATE>;
+def __cxa_throw : RuntimeLibcallImpl<CXA_THROW>;
+def __cxa_guard_abort : RuntimeLibcallImpl<CXA_GUARD_ABORT>;
+def __cxa_guard_acquire : RuntimeLibcallImpl<CXA_GUARD_ACQUIRE>;
+def __cxa_guard_release : RuntimeLibcallImpl<CXA_GUARD_RELEASE>;
+def __isoc99_scanf : RuntimeLibcallImpl<DUNDER_ISOC99_SCANF>;
+def __isoc99_sscanf : RuntimeLibcallImpl<DUNDER_ISOC99_SSCANF>;
+def __kmpc_alloc_shared : RuntimeLibcallImpl<KMPC_ALLOC_SHARED>;
+def __kmpc_free_shared : RuntimeLibcallImpl<KMPC_FREE_SHARED>;
+def __memccpy_chk : RuntimeLibcallImpl<MEMCCPY_CHK>;
+def __mempcpy_chk : RuntimeLibcallImpl<MEMPCPY_CHK>;
+def __small_fprintf : RuntimeLibcallImpl<SMALL_FPRINTF>;
+def __small_printf : RuntimeLibcallImpl<SMALL_PRINTF>;
+def __small_sprintf : RuntimeLibcallImpl<SMALL_SPRINTF>;
+def __snprintf_chk : RuntimeLibcallImpl<SNPRINTF_CHK>;
+def __sprintf_chk : RuntimeLibcallImpl<SPRINTF_CHK>;
+def __stpcpy_chk : RuntimeLibcallImpl<STPCPY_CHK>;
+def __stpncpy_chk : RuntimeLibcallImpl<STPNCPY_CHK>;
+def __strcat_chk : RuntimeLibcallImpl<STRCAT_CHK>;
+def __strcpy_chk : RuntimeLibcallImpl<STRCPY_CHK>;
+def __strdup : RuntimeLibcallImpl<DUNDER_STRDUP>;
+def __strlcat_chk : RuntimeLibcallImpl<STRLCAT_CHK>;
+def __strlcpy_chk : RuntimeLibcallImpl<STRLCPY_CHK>;
+def __strlen_chk : RuntimeLibcallImpl<STRLEN_CHK>;
+def __strncat_chk : RuntimeLibcallImpl<STRNCAT_CHK>;
+def __strncpy_chk : RuntimeLibcallImpl<STRNCPY_CHK>;
+def __strndup : RuntimeLibcallImpl<DUNDER_STRNDUP>;
+def __strtok_r : RuntimeLibcallImpl<DUNDER_STRTOK_R>;
+def __vsnprintf_chk : RuntimeLibcallImpl<VSNPRINTF_CHK>;
+def __vsprintf_chk : RuntimeLibcallImpl<VSPRINTF_CHK>;
+def abs : RuntimeLibcallImpl<ABS>;
+def access : RuntimeLibcallImpl<ACCESS>;
+def aligned_alloc : RuntimeLibcallImpl<ALIGNED_ALLOC>;
+def atof : RuntimeLibcallImpl<ATOF>;
+def atoi : RuntimeLibcallImpl<ATOI>;
+def atol : RuntimeLibcallImpl<ATOL>;
+def atoll : RuntimeLibcallImpl<ATOLL>;
+def bcmp : RuntimeLibcallImpl<BCMP>;
+def bcopy : RuntimeLibcallImpl<BCOPY>;
+def cabs : RuntimeLibcallImpl<CABS_F64>;
+def cabsf : RuntimeLibcallImpl<CABS_F32>;
+defm cabsl : LibmLongDoubleLibCall;
+def chmod : RuntimeLibcallImpl<CHMOD>;
+def chown : RuntimeLibcallImpl<CHOWN>;
+def clearerr : RuntimeLibcallImpl<CLEARERR>;
+def closedir : RuntimeLibcallImpl<CLOSEDIR>;
+def ctermid : RuntimeLibcallImpl<CTERMID>;
+def execl : RuntimeLibcallImpl<EXECL>;
+def execle : RuntimeLibcallImpl<EXECLE>;
+def execlp : RuntimeLibcallImpl<EXECLP>;
+def execv : RuntimeLibcallImpl<EXECV>;
+def execvP : RuntimeLibcallImpl<EXECVP>;
+def execve : RuntimeLibcallImpl<EXECVE>;
+def execvp : RuntimeLibcallImpl<EXECVP>;
+def execvpe : RuntimeLibcallImpl<EXECVPE>;
+def fclose : RuntimeLibcallImpl<FCLOSE>;
+def fdopen : RuntimeLibcallImpl<FDOPEN>;
+def feof : RuntimeLibcallImpl<FEOF>;
+def ferror : RuntimeLibcallImpl<FERROR>;
+def fflush : RuntimeLibcallImpl<FFLUSH>;
+def ffs : RuntimeLibcallImpl<FFS>;
+def ffsl : RuntimeLibcallImpl<FFSL>;
+def ffsll : RuntimeLibcallImpl<FFSLL>;
+def fgetc : RuntimeLibcallImpl<FGETC>;
+def fgetc_unlocked : RuntimeLibcallImpl<FGETC_UNLOCKED>;
+def fgetpos : RuntimeLibcallImpl<FGETPOS>;
+def fgets : RuntimeLibcallImpl<FGETS>;
+def fgets_unlocked : RuntimeLibcallImpl<FGETS_UNLOCKED>;
+def fileno : RuntimeLibcallImpl<FILENO>;
+def fiprintf : RuntimeLibcallImpl<FIPRINTF>;
+def flockfile : RuntimeLibcallImpl<FLOCKFILE>;
+def fls : RuntimeLibcallImpl<FLS>;
+def flsl : RuntimeLibcallImpl<FLSL>;
+def flsll : RuntimeLibcallImpl<FLSLL>;
+def fopen : RuntimeLibcallImpl<FOPEN>;
+def fopen64 : RuntimeLibcallImpl<FOPEN64>;
+def fork : RuntimeLibcallImpl<FORK>;
+def fprintf : RuntimeLibcallImpl<FPRINTF>;
+def fputc : RuntimeLibcallImpl<FPUTC>;
+def fputc_unlocked : RuntimeLibcallImpl<FPUTC_UNLOCKED>;
+def fputs : RuntimeLibcallImpl<FPUTS>;
+def fputs_unlocked : RuntimeLibcallImpl<FPUTS_UNLOCKED>;
+def fread : RuntimeLibcallImpl<FREAD>;
+def fread_unlocked : RuntimeLibcallImpl<FREAD_UNLOCKED>;
+def fscanf : RuntimeLibcallImpl<FSCANF>;
+def fseek : RuntimeLibcallImpl<FSEEK>;
+def fseeko : RuntimeLibcallImpl<FSEEKO>;
+def fseeko64 : RuntimeLibcallImpl<FSEEKO64>;
+def fsetpos : RuntimeLibcallImpl<FSETPOS>;
+def fstat : RuntimeLibcallImpl<FSTAT>;
+def fstat64 : RuntimeLibcallImpl<FSTAT64>;
+def fstatvfs : RuntimeLibcallImpl<FSTATVFS>;
+def fstatvfs64 : RuntimeLibcallImpl<FSTATVFS64>;
+def ftell : RuntimeLibcallImpl<FTELL>;
+def ftello : RuntimeLibcallImpl<FTELLO>;
+def ftello64 : RuntimeLibcallImpl<FTELLO64>;
+def ftrylockfile : RuntimeLibcallImpl<FTRYLOCKFILE>;
+def funlockfile : RuntimeLibcallImpl<FUNLOCKFILE>;
+def fwrite : RuntimeLibcallImpl<FWRITE>;
+def fwrite_unlocked : RuntimeLibcallImpl<FWRITE_UNLOCKED>;
+def getc : RuntimeLibcallImpl<GETC>;
+def getc_unlocked : RuntimeLibcallImpl<GETC_UNLOCKED>;
+def getchar : RuntimeLibcallImpl<GETCHAR>;
+def getchar_unlocked : RuntimeLibcallImpl<GETCHAR_UNLOCKED>;
+def getenv : RuntimeLibcallImpl<GETENV>;
+def getitimer : RuntimeLibcallImpl<GETITIMER>;
+def getlogin_r : RuntimeLibcallImpl<GETLOGIN_R>;
+def getpwnam : RuntimeLibcallImpl<GETPWNAM>;
+def gets : RuntimeLibcallImpl<GETS>;
+def gettimeofday : RuntimeLibcallImpl<GETTIMEOFDAY>;
+def htonl : RuntimeLibcallImpl<HTONL>;
+def htons : RuntimeLibcallImpl<HTONS>;
+def iprintf : RuntimeLibcallImpl<IPRINTF>;
+def isascii : RuntimeLibcallImpl<ISASCII>;
+def isdigit : RuntimeLibcallImpl<ISDIGIT>;
+def labs : RuntimeLibcallImpl<LABS>;
+def lchown : RuntimeLibcallImpl<LCHOWN>;
+def llabs : RuntimeLibcallImpl<LLABS>;
+def lstat : RuntimeLibcallImpl<LSTAT>;
+def lstat64 : RuntimeLibcallImpl<LSTAT64>;
+def memalign : RuntimeLibcallImpl<MEMALIGN>;
+def memccpy : RuntimeLibcallImpl<MEMCCPY>;
+def memchr : RuntimeLibcallImpl<MEMCHR>;
+def memcmp : RuntimeLibcallImpl<MEMCMP>;
+def mempcpy : RuntimeLibcallImpl<MEMPCPY>;
+def memrchr : RuntimeLibcallImpl<MEMRCHR>;
+def memset_pattern16 : RuntimeLibcallImpl<MEMSET_PATTERN16>;
+def memset_pattern4 : RuntimeLibcallImpl<MEMSET_PATTERN4>;
+def memset_pattern8 : RuntimeLibcallImpl<MEMSET_PATTERN8>;
+def mkdir : RuntimeLibcallImpl<MKDIR>;
+def mktime : RuntimeLibcallImpl<MKTIME>;
+def ntohl : RuntimeLibcallImpl<NTOHL>;
+def ntohs : RuntimeLibcallImpl<NTOHS>;
+def open : RuntimeLibcallImpl<OPEN>;
+def open64 : RuntimeLibcallImpl<OPEN64>;
+def opendir : RuntimeLibcallImpl<OPENDIR>;
+def pclose : RuntimeLibcallImpl<PCLOSE>;
+def perror : RuntimeLibcallImpl<PERROR>;
+def popen : RuntimeLibcallImpl<POPEN>;
+def posix_memalign : RuntimeLibcallImpl<POSIX_MEMALIGN>;
+def pread : RuntimeLibcallImpl<PREAD>;
+def printf : RuntimeLibcallImpl<PRINTF>;
+def putc : RuntimeLibcallImpl<PUTC>;
+def putc_unlocked : RuntimeLibcallImpl<PUTC_UNLOCKED>;
+def putchar : RuntimeLibcallImpl<PUTCHAR>;
+def putchar_unlocked : RuntimeLibcallImpl<PUTCHAR_UNLOCKED>;
+def puts : RuntimeLibcallImpl<PUTS>;
+def pvalloc : RuntimeLibcallImpl<PVALLOC>;
+def pwrite : RuntimeLibcallImpl<PWRITE>;
+def qsort : RuntimeLibcallImpl<QSORT>;
+def read : RuntimeLibcallImpl<READ>;
+def readlink : RuntimeLibcallImpl<READLINK>;
+def realloc : RuntimeLibcallImpl<REALLOC>;
+def reallocf : RuntimeLibcallImpl<REALLOCF>;
+def reallocarray : RuntimeLibcallImpl<REALLOCARRAY>;
+def realpath : RuntimeLibcallImpl<REALPATH>;
+def remove : RuntimeLibcallImpl<REMOVE>;
+def rename : RuntimeLibcallImpl<RENAME>;
+def rewind : RuntimeLibcallImpl<REWIND>;
+def rmdir : RuntimeLibcallImpl<RMDIR>;
+def scanf : RuntimeLibcallImpl<SCANF>;
+def setbuf : RuntimeLibcallImpl<SETBUF>;
+def setitimer : RuntimeLibcallImpl<SETITIMER>;
+def setvbuf : RuntimeLibcallImpl<SETVBUF>;
+def siprintf : RuntimeLibcallImpl<SIPRINTF>;
+def snprintf : RuntimeLibcallImpl<SNPRINTF>;
+def sprintf : RuntimeLibcallImpl<SPRINTF>;
+def sscanf : RuntimeLibcallImpl<SSCANF>;
+def stat : RuntimeLibcallImpl<STAT>;
+def stat64 : RuntimeLibcallImpl<STAT64>;
+def statvfs : RuntimeLibcallImpl<STATVFS>;
+def statvfs64 : RuntimeLibcallImpl<STATVFS64>;
+def stpcpy : RuntimeLibcallImpl<STPCPY>;
+def stpncpy : RuntimeLibcallImpl<STPNCPY>;
+def strcasecmp : RuntimeLibcallImpl<STRCASECMP>;
+def strcat : RuntimeLibcallImpl<STRCAT>;
+def strchr : RuntimeLibcallImpl<STRCHR>;
+def strcmp : RuntimeLibcallImpl<STRCMP>;
+def strcoll : RuntimeLibcallImpl<STRCOLL>;
+def strcpy : RuntimeLibcallImpl<STRCPY>;
+def strcspn : RuntimeLibcallImpl<STRCSPN>;
+def strdup : RuntimeLibcallImpl<STRDUP>;
+def strlcat : RuntimeLibcallImpl<STRLCAT>;
+def strlcpy : RuntimeLibcallImpl<STRLCPY>;
+def strlen : RuntimeLibcallImpl<STRLEN>;
+def strncasecmp : RuntimeLibcallImpl<STRNCASECMP>;
+def strncat : RuntimeLibcallImpl<STRNCAT>;
+def strncmp : RuntimeLibcallImpl<STRNCMP>;
+def strncpy : RuntimeLibcallImpl<STRNCPY>;
+def strndup : RuntimeLibcallImpl<STRNDUP>;
+def strnlen : RuntimeLibcallImpl<STRNLEN>;
+def strpbrk : RuntimeLibcallImpl<STRPBRK>;
+def strrchr : RuntimeLibcallImpl<STRRCHR>;
+def strspn : RuntimeLibcallImpl<STRSPN>;
+def strstr : RuntimeLibcallImpl<STRSTR>;
+def strtod : RuntimeLibcallImpl<STRTOD>;
+def strtof : RuntimeLibcallImpl<STRTOF>;
+def strtok : RuntimeLibcallImpl<STRTOK>;
+def strtok_r : RuntimeLibcallImpl<STRTOK_R>;
+def strtol : RuntimeLibcallImpl<STRTOL>;
+def strtold : RuntimeLibcallImpl<STRTOLD>;
+def strtoll : RuntimeLibcallImpl<STRTOLL>;
+def strtoul : RuntimeLibcallImpl<STRTOUL>;
+def strtoull : RuntimeLibcallImpl<STRTOULL>;
+def strxfrm : RuntimeLibcallImpl<STRXFRM>;
+def system : RuntimeLibcallImpl<SYSTEM>;
+def times : RuntimeLibcallImpl<TIMES>;
+def tmpfile : RuntimeLibcallImpl<TMPFILE>;
+def tmpfile64 : RuntimeLibcallImpl<TMPFILE64>;
+def toascii : RuntimeLibcallImpl<TOASCII>;
+def uname : RuntimeLibcallImpl<UNAME>;
+def ungetc : RuntimeLibcallImpl<UNGETC>;
+def unlink : RuntimeLibcallImpl<UNLINK>;
+def unsetenv : RuntimeLibcallImpl<UNSETENV>;
+def utime : RuntimeLibcallImpl<UTIME>;
+def utimes : RuntimeLibcallImpl<UTIMES>;
+def valloc : RuntimeLibcallImpl<VALLOC>;
+def vec_calloc : RuntimeLibcallImpl<VEC_CALLOC>;
+def vec_free : RuntimeLibcallImpl<VEC_FREE>;
+def vec_malloc : RuntimeLibcallImpl<VEC_MALLOC>;
+def vec_realloc : RuntimeLibcallImpl<VEC_REALLOC>;
+def vfprintf : RuntimeLibcallImpl<VFPRINTF>;
+def vfscanf : RuntimeLibcallImpl<VFSCANF>;
+def vprintf : RuntimeLibcallImpl<VPRINTF>;
+def vscanf : RuntimeLibcallImpl<VSCANF>;
+def vsnprintf : RuntimeLibcallImpl<VSNPRINTF>;
+def vsprintf : RuntimeLibcallImpl<VSPRINTF>;
+def vsscanf : RuntimeLibcallImpl<VSSCANF>;
+def wcslen : RuntimeLibcallImpl<WCSLEN>;
+def write : RuntimeLibcallImpl<WRITE>;
+
+//--------------------------------------------------------------------
// compiler-rt/libgcc but 64-bit only, not available by default
//--------------------------------------------------------------------
@@ -1051,6 +1808,15 @@ def sincosf : RuntimeLibcallImpl<SINCOS_F32>;
def sincos : RuntimeLibcallImpl<SINCOS_F64>;
defm sincosl : LibmLongDoubleLibCall;
+// Exists in sun math library
+def sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
+def sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
+defm sincospil : LibmLongDoubleLibCall;
+
+// Exists on macOS
+def __sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
+def __sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
+
def bzero : RuntimeLibcallImpl<BZERO>;
def __bzero : RuntimeLibcallImpl<BZERO>;
@@ -1206,10 +1972,21 @@ defvar DefaultLibcallImpls32 = (add DefaultRuntimeLibcallImpls);
defvar DefaultLibcallImpls64 = (add DefaultRuntimeLibcallImpls,
Int128RTLibcalls);
-defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret),
+// TODO: Guessing sincospi added at same time as sincos_stret
+defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret,
+ __sincospif, __sincospi),
darwinHasSinCosStret>;
defvar DarwinExp10 = LibcallImpls<(add __exp10f, __exp10), darwinHasExp10>;
+defvar DarwinMemsetPattern = LibcallImpls<(add memset_pattern4,
+ memset_pattern8,
+ memset_pattern16),
+ darwinHasMemsetPattern>;
+
+defvar MacOSUnlockedIO = LibcallImpls<(add
+ getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked),
+ isMacOSX>;
+
defvar SecurityCheckCookieIfWinMSVC =
LibcallImpls<(add __security_check_cookie, __security_cookie),
isWindowsMSVCOrItaniumEnvironment>;
@@ -1367,7 +2144,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
AArch64LibcallImpls,
LibcallImpls<(add Int128RTLibcalls), isAArch64_ILP64>,
LibcallImpls<(add bzero), isOSDarwin>,
- DarwinExp10, DarwinSinCosStret,
+ DarwinExp10, DarwinSinCosStret, DarwinMemsetPattern,
+ MacOSUnlockedIO,
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
DefaultLibmExp10,
DefaultStackProtector,
@@ -1837,7 +2615,7 @@ def ARMSystemLibrary
WindowARMFPIntCasts,
SecurityCheckCookieIfWinMSVC,
AEABIDivRemCalls,
- DarwinSinCosStret, DarwinExp10,
+ DarwinSinCosStret, DarwinExp10, DarwinMemsetPattern,
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
DefaultLibmExp10,
@@ -2333,7 +3111,7 @@ defset list<RuntimeLibcallImpl> PPCRuntimeLibcalls = {
defset list<RuntimeLibcallImpl> PPC64AIXCallList = {
def ___memcmp64 : RuntimeLibcallImpl<MEMCMP>;
- def ___memmove64 : RuntimeLibcallImpl<MEMCPY>;
+ def ___memmove64 : RuntimeLibcallImpl<MEMMOVE>;
def ___memset64 : RuntimeLibcallImpl<MEMSET>;
def ___bzero64 : RuntimeLibcallImpl<BZERO>;
def ___strlen64 : RuntimeLibcallImpl<STRLEN>;
@@ -2380,6 +3158,10 @@ def PPCSystemLibrary
has__stack_smash_handler,
has___guard_local,
AvailableIf<__ssp_canary_word, isAIX>,
+ AvailableIf<vec_calloc, isAIX>,
+ AvailableIf<vec_malloc, isAIX>,
+ AvailableIf<vec_realloc, isAIX>,
+ AvailableIf<vec_free, isAIX>,
AvailableIf<__stack_chk_fail, isNotOSOpenBSD>,
AvailableIf<__stack_chk_guard, isNotOSAIXAndNotOSOpenBSD>)>;
@@ -2518,9 +3300,11 @@ defvar X86_F128_Libcalls = LibcallImpls<(add LibmF128Libcalls, LibmF128FiniteLib
defvar SinCosF32F64Libcalls = LibcallImpls<(add sincosf, sincos), hasSinCos_f32_f64>;
+defvar MemChkLibcalls = [__memcpy_chk, __memset_chk, __memmove_chk];
+
defvar X86CommonLibcalls =
- (add (sub WinDefaultLibcallImpls, WindowsDivRemMulLibcallOverrides),
- DarwinSinCosStret, DarwinExp10,
+ (add (sub WinDefaultLibcallImpls, WindowsDivRemMulLibcallOverrides, MemChkLibcalls),
+ DarwinSinCosStret, DarwinExp10, DarwinMemsetPattern, MacOSUnlockedIO,
X86_F128_Libcalls,
LibmHasSinCosF80, // FIXME: Depends on long double
SinCosF32F64Libcalls,
@@ -2535,7 +3319,8 @@ defvar X86CommonLibcalls =
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
// hack for one test relying on it.
__powitf2_f128,
- DefaultStackProtector
+ DefaultStackProtector,
+ LibcallImpls<(add MemChkLibcalls), isNotPS>
);
defvar Windows32DivRemMulCalls =
@@ -2568,6 +3353,7 @@ def XCoreSystemLibrary
(add DefaultRuntimeLibcallImpls,
exp10f, exp10, exp10l_f128,
__memcpy_4,
+ iprintf, siprintf, fiprintf,
LibcallImpls<(add LibmF128Libcalls, LibmF128FiniteLibcalls), isGNUEnvironment>
)>;
@@ -2676,6 +3462,7 @@ def SystemZZOSSystemLibrary
def emscripten_return_address : RuntimeLibcallImpl<RETURN_ADDRESS>;
def isWasm : RuntimeLibcallPredicate<"TT.isWasm()">;
+def isOSEmscripten : RuntimeLibcallPredicate<[{TT.isOSEmscripten()}]>;
// Define the emscripten name for return address helper.
// TODO: when implementing other Wasm backends, make this generic or only do
@@ -2687,6 +3474,9 @@ def WasmSystemLibrary
exp10f, exp10,
_Unwind_CallPersonality,
emscripten_return_address,
+ LibcallImpls<(add __small_printf,
+ __small_sprintf,
+ __small_fprintf), isOSEmscripten>,
__stack_chk_fail, __stack_chk_guard)>;
//===----------------------------------------------------------------------===//
@@ -2712,3 +3502,926 @@ def LegacyDefaultSystemLibrary
LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
DefaultStackProtector
)>;
+
+//===----------------------------------------------------------------------===//
+// Vector math libraries
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+// Accelerate framework functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> ACCELERATE_VECFUNCS = {
+ def vacosf : RuntimeLibcallImpl<ACOS_V4F32>;
+ def vacoshf : RuntimeLibcallImpl<ACOSH_V4F32>;
+ def vasinf : RuntimeLibcallImpl<ASIN_V4F32>;
+ def vasinhf : RuntimeLibcallImpl<ASINH_V4F32>;
+ def vatan2f : RuntimeLibcallImpl<ATAN2_V4F32>;
+ def vatanf : RuntimeLibcallImpl<ATAN_V4F32>;
+ def vatanhf : RuntimeLibcallImpl<ATANH_V4F32>;
+ def vceilf : RuntimeLibcallImpl<CEIL_V4F32>;
+ def vcosf : RuntimeLibcallImpl<COS_V4F32>;
+ def vcoshf : RuntimeLibcallImpl<COSH_V4F32>;
+ def vexpf : RuntimeLibcallImpl<EXP_V4F32>;
+ def vexpm1f : RuntimeLibcallImpl<EXPM1_V4F32>;
+ def vfabsf : RuntimeLibcallImpl<FABS_V4F32>;
+ def vfloorf : RuntimeLibcallImpl<FLOOR_V4F32>;
+ def vlog10f : RuntimeLibcallImpl<LOG10_V4F32>;
+ def vlog1pf : RuntimeLibcallImpl<LOG1P_V4F32>;
+ def vlogbf : RuntimeLibcallImpl<LOGB_V4F32>;
+ def vlogf : RuntimeLibcallImpl<LOG_V4F32>;
+ def vsinf : RuntimeLibcallImpl<SIN_V4F32>;
+ def vsinhf : RuntimeLibcallImpl<SINH_V4F32>;
+ def vsqrtf : RuntimeLibcallImpl<SQRT_V4F32>;
+ def vtanf : RuntimeLibcallImpl<TAN_V4F32>;
+ def vtanhf : RuntimeLibcallImpl<TANH_V4F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// Darwin_libsystem_m vector functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> DARWIN_LIBSYSTEM_M_VECFUNCS = {
+ def _simd_acos_d2 : RuntimeLibcallImpl<ACOS_V2F64>;
+ def _simd_acos_f4 : RuntimeLibcallImpl<ACOS_V4F32>;
+ def _simd_acosh_d2 : RuntimeLibcallImpl<ACOSH_V2F64>;
+ def _simd_acosh_f4 : RuntimeLibcallImpl<ACOSH_V4F32>;
+ def _simd_asin_d2 : RuntimeLibcallImpl<ASIN_V2F64>;
+ def _simd_asin_f4 : RuntimeLibcallImpl<ASIN_V4F32>;
+ def _simd_asinh_d2 : RuntimeLibcallImpl<ASINH_V2F64>;
+ def _simd_asinh_f4 : RuntimeLibcallImpl<ASINH_V4F32>;
+ def _simd_atan2_d2 : RuntimeLibcallImpl<ATAN2_V2F64>;
+ def _simd_atan2_f4 : RuntimeLibcallImpl<ATAN2_V4F32>;
+ def _simd_atan_d2 : RuntimeLibcallImpl<ATAN_V2F64>;
+ def _simd_atan_f4 : RuntimeLibcallImpl<ATAN_V4F32>;
+ def _simd_atanh_d2 : RuntimeLibcallImpl<ATANH_V2F64>;
+ def _simd_atanh_f4 : RuntimeLibcallImpl<ATANH_V4F32>;
+ def _simd_cbrt_d2 : RuntimeLibcallImpl<CBRT_V2F64>;
+ def _simd_cbrt_f4 : RuntimeLibcallImpl<CBRT_V4F32>;
+ def _simd_cos_d2 : RuntimeLibcallImpl<COS_V2F64>;
+ def _simd_cos_f4 : RuntimeLibcallImpl<COS_V4F32>;
+ def _simd_cosh_d2 : RuntimeLibcallImpl<COSH_V2F64>;
+ def _simd_cosh_f4 : RuntimeLibcallImpl<COSH_V4F32>;
+ def _simd_erf_d2 : RuntimeLibcallImpl<ERF_V2F64>;
+ def _simd_erf_f4 : RuntimeLibcallImpl<ERF_V4F32>;
+ def _simd_exp_d2 : RuntimeLibcallImpl<EXP_V2F64>;
+ def _simd_exp_f4 : RuntimeLibcallImpl<EXP_V4F32>;
+ def _simd_pow_d2 : RuntimeLibcallImpl<POW_V2F64>;
+ def _simd_pow_f4 : RuntimeLibcallImpl<POW_V4F32>;
+ def _simd_sin_d2 : RuntimeLibcallImpl<SIN_V2F64>;
+ def _simd_sin_f4 : RuntimeLibcallImpl<SIN_V4F32>;
+ def _simd_sinh_d2 : RuntimeLibcallImpl<SINH_V2F64>;
+ def _simd_sinh_f4 : RuntimeLibcallImpl<SINH_V4F32>;
+ def _simd_tan_d2 : RuntimeLibcallImpl<TAN_V2F64>;
+ def _simd_tan_f4 : RuntimeLibcallImpl<TAN_V4F32>;
+ def _simd_tanh_d2 : RuntimeLibcallImpl<TANH_V2F64>;
+ def _simd_tanh_f4 : RuntimeLibcallImpl<TANH_V4F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// GLIBC Vector Math library LIBMVEC functions
+//===----------------------------------------------------------------------===//
+
+defvar LIBMVECPrefix = "LIBMVEC_";
+
+class LibmvecLibcall<RuntimeLibcall P>
+ : RuntimeLibcallImpl<P, !substr(NAME, !size(LIBMVECPrefix))>;
+
+defset list<RuntimeLibcallImpl> LIBMVEC_X86_VECFUNCS = {
+ def LIBMVEC__ZGVbN2v___exp_finite : LibmvecLibcall<EXP_FINITE_V2F64>;
+ def LIBMVEC__ZGVbN2v___log_finite : LibmvecLibcall<LOG_FINITE_V2F64>;
+ def LIBMVEC__ZGVbN2v_cos : LibmvecLibcall<COS_V2F64>;
+ def LIBMVEC__ZGVbN2v_exp : LibmvecLibcall<EXP_V2F64>;
+ def LIBMVEC__ZGVbN2v_log : LibmvecLibcall<LOG_V2F64>;
+ def LIBMVEC__ZGVbN2v_sin : LibmvecLibcall<SIN_V2F64>;
+ def LIBMVEC__ZGVbN2v_tan : LibmvecLibcall<TAN_V2F64>;
+ def LIBMVEC__ZGVbN2vv___pow_finite : LibmvecLibcall<POW_FINITE_V2F64>;
+ def LIBMVEC__ZGVbN2vv_pow : LibmvecLibcall<POW_V2F64>;
+ def LIBMVEC__ZGVbN4v___expf_finite : LibmvecLibcall<EXP_FINITE_V4F64>;
+ def LIBMVEC__ZGVbN4v___logf_finite : LibmvecLibcall<LOG_FINITE_V4F64>;
+ def LIBMVEC__ZGVbN4v_cosf : LibmvecLibcall<COS_V4F32>;
+ def LIBMVEC__ZGVbN4v_expf : LibmvecLibcall<EXP_V4F32>;
+ def LIBMVEC__ZGVbN4v_logf : LibmvecLibcall<LOG_V4F32>;
+ def LIBMVEC__ZGVbN4v_sinf : LibmvecLibcall<SIN_V4F32>;
+ def LIBMVEC__ZGVbN4v_tanf : LibmvecLibcall<TAN_V4F32>;
+ def LIBMVEC__ZGVbN4vv___powf_finite : LibmvecLibcall<POW_FINITE_V4F64>;
+ def LIBMVEC__ZGVbN4vv_powf : LibmvecLibcall<POW_V4F32>;
+ def LIBMVEC__ZGVdN4v___exp_finite : LibmvecLibcall<EXP_FINITE_V4F64>;
+ def LIBMVEC__ZGVdN4v___log_finite : LibmvecLibcall<LOG_FINITE_V4F64>;
+ def LIBMVEC__ZGVdN4v_cos : LibmvecLibcall<COS_V4F64>;
+ def LIBMVEC__ZGVdN4v_exp : LibmvecLibcall<EXP_V4F64>;
+ def LIBMVEC__ZGVdN4v_log : LibmvecLibcall<LOG_V4F64>;
+ def LIBMVEC__ZGVdN4v_sin : LibmvecLibcall<SIN_V4F64>;
+ def LIBMVEC__ZGVdN4v_tan : LibmvecLibcall<TAN_V4F64>;
+ def LIBMVEC__ZGVdN4vv___pow_finite : LibmvecLibcall<POW_FINITE_V4F64>;
+ def LIBMVEC__ZGVdN4vv_pow : LibmvecLibcall<POW_V4F64>;
+ def LIBMVEC__ZGVdN8v___expf_finite : LibmvecLibcall<EXP_FINITE_V8F64>;
+ def LIBMVEC__ZGVdN8v___logf_finite : LibmvecLibcall<LOG_FINITE_V8F64>;
+ def LIBMVEC__ZGVdN8v_cosf : LibmvecLibcall<COS_V8F32>;
+ def LIBMVEC__ZGVdN8v_expf : LibmvecLibcall<EXP_V8F32>;
+ def LIBMVEC__ZGVdN8v_logf : LibmvecLibcall<LOG_V8F32>;
+ def LIBMVEC__ZGVdN8v_sinf : LibmvecLibcall<SIN_V8F32>;
+ def LIBMVEC__ZGVdN8v_tanf : LibmvecLibcall<TAN_V8F32>;
+ def LIBMVEC__ZGVdN8vv___powf_finite : LibmvecLibcall<POW_FINITE_V8F64>;
+ def LIBMVEC__ZGVdN8vv_powf : LibmvecLibcall<POW_V8F32>;
+}
+
+defset list<RuntimeLibcallImpl> LIBMVEC_AARCH64_VECFUNCS = {
+ def LIBMVEC__ZGVnN2v_acos : LibmvecLibcall<ACOS_V2F64>;
+ def LIBMVEC__ZGVnN2v_acosf : LibmvecLibcall<ACOS_V2F32>;
+ def LIBMVEC__ZGVnN2v_acosh : LibmvecLibcall<ACOSH_V2F64>;
+ def LIBMVEC__ZGVnN2v_acoshf : LibmvecLibcall<ACOSH_V2F32>;
+ def LIBMVEC__ZGVnN2v_asin : LibmvecLibcall<ASIN_V2F64>;
+ def LIBMVEC__ZGVnN2v_asinf : LibmvecLibcall<ASIN_V2F32>;
+ def LIBMVEC__ZGVnN2v_asinh : LibmvecLibcall<ASINH_V2F64>;
+ def LIBMVEC__ZGVnN2v_asinhf : LibmvecLibcall<ASINH_V2F32>;
+ def LIBMVEC__ZGVnN2v_atan : LibmvecLibcall<ATAN_V2F64>;
+ def LIBMVEC__ZGVnN2v_atanf : LibmvecLibcall<ATAN_V2F32>;
+ def LIBMVEC__ZGVnN2v_atanh : LibmvecLibcall<ATANH_V2F64>;
+ def LIBMVEC__ZGVnN2v_atanhf : LibmvecLibcall<ATANH_V2F32>;
+ def LIBMVEC__ZGVnN2v_cbrt : LibmvecLibcall<CBRT_V2F64>;
+ def LIBMVEC__ZGVnN2v_cbrtf : LibmvecLibcall<CBRT_V2F32>;
+ def LIBMVEC__ZGVnN2v_cos : LibmvecLibcall<COS_V2F64>;
+ def LIBMVEC__ZGVnN2v_cosf : LibmvecLibcall<COS_V2F32>;
+ def LIBMVEC__ZGVnN2v_cosh : LibmvecLibcall<COSH_V2F64>;
+ def LIBMVEC__ZGVnN2v_coshf : LibmvecLibcall<COSH_V2F32>;
+ def LIBMVEC__ZGVnN2v_erf : LibmvecLibcall<ERF_V2F64>;
+ def LIBMVEC__ZGVnN2v_erfc : LibmvecLibcall<ERFC_V2F64>;
+ def LIBMVEC__ZGVnN2v_erfcf : LibmvecLibcall<ERFC_V2F32>;
+ def LIBMVEC__ZGVnN2v_erff : LibmvecLibcall<ERF_V2F32>;
+ def LIBMVEC__ZGVnN2v_exp : LibmvecLibcall<EXP_V2F64>;
+ def LIBMVEC__ZGVnN2v_exp10 : LibmvecLibcall<EXP10_V2F64>;
+ def LIBMVEC__ZGVnN2v_exp10f : LibmvecLibcall<EXP10_V2F32>;
+ def LIBMVEC__ZGVnN2v_exp2 : LibmvecLibcall<EXP2_V2F64>;
+ def LIBMVEC__ZGVnN2v_exp2f : LibmvecLibcall<EXP2_V2F32>;
+ def LIBMVEC__ZGVnN2v_expf : LibmvecLibcall<EXP_V2F32>;
+ def LIBMVEC__ZGVnN2v_expm1 : LibmvecLibcall<EXPM1_V2F64>;
+ def LIBMVEC__ZGVnN2v_expm1f : LibmvecLibcall<EXPM1_V2F32>;
+ def LIBMVEC__ZGVnN2v_log : LibmvecLibcall<LOG_V2F64>;
+ def LIBMVEC__ZGVnN2v_log10 : LibmvecLibcall<LOG10_V2F64>;
+ def LIBMVEC__ZGVnN2v_log10f : LibmvecLibcall<LOG10_V2F32>;
+ def LIBMVEC__ZGVnN2v_log1p : LibmvecLibcall<LOG1P_V2F64>;
+ def LIBMVEC__ZGVnN2v_log1pf : LibmvecLibcall<LOG1P_V2F32>;
+ def LIBMVEC__ZGVnN2v_log2 : LibmvecLibcall<LOG2_V2F64>;
+ def LIBMVEC__ZGVnN2v_log2f : LibmvecLibcall<LOG2_V2F32>;
+ def LIBMVEC__ZGVnN2v_logf : LibmvecLibcall<LOG_V2F32>;
+ def LIBMVEC__ZGVnN2v_sin : LibmvecLibcall<SIN_V2F64>;
+ def LIBMVEC__ZGVnN2v_sinf : LibmvecLibcall<SIN_V2F32>;
+ def LIBMVEC__ZGVnN2v_sinh : LibmvecLibcall<SINH_V2F64>;
+ def LIBMVEC__ZGVnN2v_sinhf : LibmvecLibcall<SINH_V2F32>;
+ def LIBMVEC__ZGVnN2v_tan : LibmvecLibcall<TAN_V2F64>;
+ def LIBMVEC__ZGVnN2v_tanf : LibmvecLibcall<TAN_V2F32>;
+ def LIBMVEC__ZGVnN2v_tanh : LibmvecLibcall<TANH_V2F64>;
+ def LIBMVEC__ZGVnN2v_tanhf : LibmvecLibcall<TANH_V2F32>;
+ def LIBMVEC__ZGVnN2vv_atan2 : LibmvecLibcall<ATAN2_V2F64>;
+ def LIBMVEC__ZGVnN2vv_atan2f : LibmvecLibcall<ATAN2_V2F32>;
+ def LIBMVEC__ZGVnN2vv_hypot : LibmvecLibcall<HYPOT_V2F64>;
+ def LIBMVEC__ZGVnN2vv_hypotf : LibmvecLibcall<HYPOT_V2F32>;
+ def LIBMVEC__ZGVnN2vv_pow : LibmvecLibcall<POW_V2F64>;
+ def LIBMVEC__ZGVnN2vv_powf : LibmvecLibcall<POW_V2F32>;
+ def LIBMVEC__ZGVnN4v_acosf : LibmvecLibcall<ACOS_V4F32>;
+ def LIBMVEC__ZGVnN4v_acoshf : LibmvecLibcall<ACOSH_V4F32>;
+ def LIBMVEC__ZGVnN4v_asinf : LibmvecLibcall<ASIN_V4F32>;
+ def LIBMVEC__ZGVnN4v_asinhf : LibmvecLibcall<ASINH_V4F32>;
+ def LIBMVEC__ZGVnN4v_atanf : LibmvecLibcall<ATAN_V4F32>;
+ def LIBMVEC__ZGVnN4v_atanhf : LibmvecLibcall<ATANH_V4F32>;
+ def LIBMVEC__ZGVnN4v_cbrtf : LibmvecLibcall<CBRT_V4F32>;
+ def LIBMVEC__ZGVnN4v_cosf : LibmvecLibcall<COS_V4F32>;
+ def LIBMVEC__ZGVnN4v_coshf : LibmvecLibcall<COSH_V4F32>;
+ def LIBMVEC__ZGVnN4v_erfcf : LibmvecLibcall<ERFC_V4F32>;
+ def LIBMVEC__ZGVnN4v_erff : LibmvecLibcall<ERF_V4F32>;
+ def LIBMVEC__ZGVnN4v_exp10f : LibmvecLibcall<EXP10_V4F32>;
+ def LIBMVEC__ZGVnN4v_exp2f : LibmvecLibcall<EXP2_V4F32>;
+ def LIBMVEC__ZGVnN4v_expf : LibmvecLibcall<EXP_V4F32>;
+ def LIBMVEC__ZGVnN4v_expm1f : LibmvecLibcall<EXPM1_V4F32>;
+ def LIBMVEC__ZGVnN4v_log10f : LibmvecLibcall<LOG10_V4F32>;
+ def LIBMVEC__ZGVnN4v_log1pf : LibmvecLibcall<LOG1P_V4F32>;
+ def LIBMVEC__ZGVnN4v_log2f : LibmvecLibcall<LOG2_V4F32>;
+ def LIBMVEC__ZGVnN4v_logf : LibmvecLibcall<LOG_V4F32>;
+ def LIBMVEC__ZGVnN4v_sinf : LibmvecLibcall<SIN_V4F32>;
+ def LIBMVEC__ZGVnN4v_sinhf : LibmvecLibcall<SINH_V4F32>;
+ def LIBMVEC__ZGVnN4v_tanf : LibmvecLibcall<TAN_V4F32>;
+ def LIBMVEC__ZGVnN4v_tanhf : LibmvecLibcall<TANH_V4F32>;
+ def LIBMVEC__ZGVnN4vv_atan2f : LibmvecLibcall<ATAN2_V4F32>;
+ def LIBMVEC__ZGVnN4vv_hypotf : LibmvecLibcall<HYPOT_V4F32>;
+ def LIBMVEC__ZGVnN4vv_powf : LibmvecLibcall<POW_V4F32>;
+ def LIBMVEC__ZGVsMxv_acos : LibmvecLibcall<ACOS_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_acosf : LibmvecLibcall<ACOS_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_acosh : LibmvecLibcall<ACOSH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_acoshf : LibmvecLibcall<ACOSH_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_asin : LibmvecLibcall<ASIN_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_asinf : LibmvecLibcall<ASIN_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_asinh : LibmvecLibcall<ASINH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_asinhf : LibmvecLibcall<ASINH_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_atan : LibmvecLibcall<ATAN_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_atanf : LibmvecLibcall<ATAN_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_atanh : LibmvecLibcall<ATANH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_atanhf : LibmvecLibcall<ATANH_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_cbrt : LibmvecLibcall<CBRT_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_cbrtf : LibmvecLibcall<CBRT_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_cos : LibmvecLibcall<COS_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_cosf : LibmvecLibcall<COS_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_cosh : LibmvecLibcall<COSH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_coshf : LibmvecLibcall<COSH_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_erf : LibmvecLibcall<ERF_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_erfc : LibmvecLibcall<ERFC_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_erfcf : LibmvecLibcall<ERFC_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_erff : LibmvecLibcall<ERF_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_exp : LibmvecLibcall<EXP_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_exp10 : LibmvecLibcall<EXP10_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_exp10f : LibmvecLibcall<EXP10_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_exp2 : LibmvecLibcall<EXP2_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_exp2f : LibmvecLibcall<EXP2_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_expf : LibmvecLibcall<EXP_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_expm1 : LibmvecLibcall<EXPM1_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_expm1f : LibmvecLibcall<EXPM1_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_log : LibmvecLibcall<LOG_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_log10 : LibmvecLibcall<LOG10_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_log10f : LibmvecLibcall<LOG10_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_log1p : LibmvecLibcall<LOG1P_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_log1pf : LibmvecLibcall<LOG1P_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_log2 : LibmvecLibcall<LOG2_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_log2f : LibmvecLibcall<LOG2_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_logf : LibmvecLibcall<LOG_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_sin : LibmvecLibcall<SIN_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_sinf : LibmvecLibcall<SIN_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_sinh : LibmvecLibcall<SINH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_sinhf : LibmvecLibcall<SINH_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_tan : LibmvecLibcall<TAN_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_tanf : LibmvecLibcall<TAN_NXV4F32>;
+ def LIBMVEC__ZGVsMxv_tanh : LibmvecLibcall<TANH_NXV2F64>;
+ def LIBMVEC__ZGVsMxv_tanhf : LibmvecLibcall<TANH_NXV4F32>;
+ def LIBMVEC__ZGVsMxvv_atan2 : LibmvecLibcall<ATAN2_NXV2F64>;
+ def LIBMVEC__ZGVsMxvv_atan2f : LibmvecLibcall<ATAN2_NXV4F32>;
+ def LIBMVEC__ZGVsMxvv_hypot : LibmvecLibcall<HYPOT_NXV2F64>;
+ def LIBMVEC__ZGVsMxvv_hypotf : LibmvecLibcall<HYPOT_NXV4F32>;
+ def LIBMVEC__ZGVsMxvv_pow : LibmvecLibcall<POW_NXV2F64>;
+ def LIBMVEC__ZGVsMxvv_powf : LibmvecLibcall<POW_NXV4F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// IBM MASS vector library (MASSV) functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> MASSV_VECFUNCS = {
+ def __acosd2 : RuntimeLibcallImpl<ACOS_V2F64>;
+ def __acosf4 : RuntimeLibcallImpl<ACOS_V4F32>;
+ def __acoshd2 : RuntimeLibcallImpl<ACOSH_V2F64>;
+ def __acoshf4 : RuntimeLibcallImpl<ACOSH_V4F32>;
+ def __asind2 : RuntimeLibcallImpl<ASIN_V2F64>;
+ def __asinf4 : RuntimeLibcallImpl<ASIN_V4F32>;
+ def __asinhd2 : RuntimeLibcallImpl<ASINH_V2F64>;
+ def __asinhf4 : RuntimeLibcallImpl<ASINH_V4F32>;
+ def __atan2d2 : RuntimeLibcallImpl<ATAN2_V2F64>;
+ def __atan2f4 : RuntimeLibcallImpl<ATAN2_V4F32>;
+ def __atand2 : RuntimeLibcallImpl<ATAN_V2F64>;
+ def __atanf4 : RuntimeLibcallImpl<ATAN_V4F32>;
+ def __atanhd2 : RuntimeLibcallImpl<ATANH_V2F64>;
+ def __atanhf4 : RuntimeLibcallImpl<ATANH_V4F32>;
+ def __cbrtd2 : RuntimeLibcallImpl<CBRT_V2F64>;
+ def __cbrtf4 : RuntimeLibcallImpl<CBRT_V4F32>;
+ def __cosd2 : RuntimeLibcallImpl<COS_V2F64>;
+ def __cosf4 : RuntimeLibcallImpl<COS_V4F32>;
+ def __coshd2 : RuntimeLibcallImpl<COSH_V2F64>;
+ def __coshf4 : RuntimeLibcallImpl<COSH_V4F32>;
+ def __exp2d2 : RuntimeLibcallImpl<EXP2_V2F64>;
+ def __exp2f4 : RuntimeLibcallImpl<EXP2_V4F32>;
+ def __expd2 : RuntimeLibcallImpl<EXP_V2F64>;
+ def __expf4 : RuntimeLibcallImpl<EXP_V4F32>;
+ def __expm1d2 : RuntimeLibcallImpl<EXPM1_V2F64>;
+ def __expm1f4 : RuntimeLibcallImpl<EXPM1_V4F32>;
+ def __log10d2 : RuntimeLibcallImpl<LOG10_V2F64>;
+ def __log10f4 : RuntimeLibcallImpl<LOG10_V4F32>;
+ def __log1pd2 : RuntimeLibcallImpl<LOG1P_V2F64>;
+ def __log1pf4 : RuntimeLibcallImpl<LOG1P_V4F32>;
+ def __log2d2 : RuntimeLibcallImpl<LOG2_V2F64>;
+ def __log2f4 : RuntimeLibcallImpl<LOG2_V4F32>;
+ def __logd2 : RuntimeLibcallImpl<LOG_V2F64>;
+ def __logf4 : RuntimeLibcallImpl<LOG_V4F32>;
+ def __powd2 : RuntimeLibcallImpl<POW_V2F64>;
+ def __powf4 : RuntimeLibcallImpl<POW_V4F32>;
+ def __sind2 : RuntimeLibcallImpl<SIN_V2F64>;
+ def __sinf4 : RuntimeLibcallImpl<SIN_V4F32>;
+ def __sinhd2 : RuntimeLibcallImpl<SINH_V2F64>;
+ def __sinhf4 : RuntimeLibcallImpl<SINH_V4F32>;
+ def __tand2 : RuntimeLibcallImpl<TAN_V2F64>;
+ def __tanf4 : RuntimeLibcallImpl<TAN_V4F32>;
+ def __tanhd2 : RuntimeLibcallImpl<TANH_V2F64>;
+ def __tanhf4 : RuntimeLibcallImpl<TANH_V4F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// Intel SVML library functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> SVML_VECFUNCS = {
+ def __svml_cos2 : RuntimeLibcallImpl<COS_V2F64>;
+ def __svml_cos4 : RuntimeLibcallImpl<COS_V4F64>;
+ def __svml_cos8 : RuntimeLibcallImpl<COS_V8F64>;
+ def __svml_cosf16 : RuntimeLibcallImpl<COS_V16F32>;
+ def __svml_cosf4 : RuntimeLibcallImpl<COS_V4F32>;
+ def __svml_cosf8 : RuntimeLibcallImpl<COS_V8F32>;
+ def __svml_exp2 : RuntimeLibcallImpl<EXP_V2F64>;
+ def __svml_exp22 : RuntimeLibcallImpl<EXP2_V2F64>;
+ def __svml_exp24 : RuntimeLibcallImpl<EXP2_V4F64>;
+ def __svml_exp28 : RuntimeLibcallImpl<EXP2_V8F64>;
+ def __svml_exp2f16 : RuntimeLibcallImpl<EXP2_V16F32>;
+ def __svml_exp2f4 : RuntimeLibcallImpl<EXP2_V4F32>;
+ def __svml_exp2f8 : RuntimeLibcallImpl<EXP2_V8F32>;
+ def __svml_exp4 : RuntimeLibcallImpl<EXP_V4F64>;
+ def __svml_exp8 : RuntimeLibcallImpl<EXP_V8F64>;
+ def __svml_expf16 : RuntimeLibcallImpl<EXP_V16F32>;
+ def __svml_expf4 : RuntimeLibcallImpl<EXP_V4F32>;
+ def __svml_expf8 : RuntimeLibcallImpl<EXP_V8F32>;
+ def __svml_log102 : RuntimeLibcallImpl<LOG10_V2F64>;
+ def __svml_log104 : RuntimeLibcallImpl<LOG10_V4F64>;
+ def __svml_log108 : RuntimeLibcallImpl<LOG10_V8F64>;
+ def __svml_log10f16 : RuntimeLibcallImpl<LOG10_V16F32>;
+ def __svml_log10f4 : RuntimeLibcallImpl<LOG10_V4F32>;
+ def __svml_log10f8 : RuntimeLibcallImpl<LOG10_V8F32>;
+ def __svml_log2 : RuntimeLibcallImpl<LOG_V2F64>;
+ def __svml_log22 : RuntimeLibcallImpl<LOG2_V2F64>;
+ def __svml_log24 : RuntimeLibcallImpl<LOG2_V4F64>;
+ def __svml_log28 : RuntimeLibcallImpl<LOG2_V8F64>;
+ def __svml_log2f16 : RuntimeLibcallImpl<LOG2_V16F32>;
+ def __svml_log2f4 : RuntimeLibcallImpl<LOG2_V4F32>;
+ def __svml_log2f8 : RuntimeLibcallImpl<LOG2_V8F32>;
+ def __svml_log4 : RuntimeLibcallImpl<LOG_V4F64>;
+ def __svml_log8 : RuntimeLibcallImpl<LOG_V8F64>;
+ def __svml_logf16 : RuntimeLibcallImpl<LOG_V16F32>;
+ def __svml_logf4 : RuntimeLibcallImpl<LOG_V4F32>;
+ def __svml_logf8 : RuntimeLibcallImpl<LOG_V8F32>;
+ def __svml_pow2 : RuntimeLibcallImpl<POW_V2F64>;
+ def __svml_pow4 : RuntimeLibcallImpl<POW_V4F64>;
+ def __svml_pow8 : RuntimeLibcallImpl<POW_V8F64>;
+ def __svml_powf16 : RuntimeLibcallImpl<POW_V16F32>;
+ def __svml_powf4 : RuntimeLibcallImpl<POW_V4F32>;
+ def __svml_powf8 : RuntimeLibcallImpl<POW_V8F32>;
+ def __svml_sin2 : RuntimeLibcallImpl<SIN_V2F64>;
+ def __svml_sin4 : RuntimeLibcallImpl<SIN_V4F64>;
+ def __svml_sin8 : RuntimeLibcallImpl<SIN_V8F64>;
+ def __svml_sinf16 : RuntimeLibcallImpl<SIN_V16F32>;
+ def __svml_sinf4 : RuntimeLibcallImpl<SIN_V4F32>;
+ def __svml_sinf8 : RuntimeLibcallImpl<SIN_V8F32>;
+ def __svml_sqrt2 : RuntimeLibcallImpl<SQRT_V2F64>;
+ def __svml_sqrt4 : RuntimeLibcallImpl<SQRT_V4F64>;
+ def __svml_sqrt8 : RuntimeLibcallImpl<SQRT_V8F64>;
+ def __svml_sqrtf16 : RuntimeLibcallImpl<SQRT_V16F32>;
+ def __svml_sqrtf4 : RuntimeLibcallImpl<SQRT_V4F32>;
+ def __svml_sqrtf8 : RuntimeLibcallImpl<SQRT_V8F32>;
+ def __svml_tan2 : RuntimeLibcallImpl<TAN_V2F64>;
+ def __svml_tan4 : RuntimeLibcallImpl<TAN_V4F64>;
+ def __svml_tan8 : RuntimeLibcallImpl<TAN_V8F64>;
+ def __svml_tanf16 : RuntimeLibcallImpl<TAN_V16F32>;
+ def __svml_tanf4 : RuntimeLibcallImpl<TAN_V4F32>;
+ def __svml_tanf8 : RuntimeLibcallImpl<TAN_V8F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// SIMD Library for Evaluating Elementary Functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> SLEEFGNUABI_VF2_VECFUNCS = {
+ def _ZGVnN2v_acos : RuntimeLibcallImpl<ACOS_V2F64>;
+ def _ZGVnN2v_acosh : RuntimeLibcallImpl<ACOSH_V2F64>;
+ def _ZGVnN2v_asin : RuntimeLibcallImpl<ASIN_V2F64>;
+ def _ZGVnN2v_asinh : RuntimeLibcallImpl<ASINH_V2F64>;
+ def _ZGVnN2v_atan : RuntimeLibcallImpl<ATAN_V2F64>;
+ def _ZGVnN2v_atanh : RuntimeLibcallImpl<ATANH_V2F64>;
+ def _ZGVnN2v_cbrt : RuntimeLibcallImpl<CBRT_V2F64>;
+ def _ZGVnN2v_cos : RuntimeLibcallImpl<COS_V2F64>;
+ def _ZGVnN2v_cosh : RuntimeLibcallImpl<COSH_V2F64>;
+ def _ZGVnN2v_cospi : RuntimeLibcallImpl<COSPI_V2F64>;
+ def _ZGVnN2v_erf : RuntimeLibcallImpl<ERF_V2F64>;
+ def _ZGVnN2v_erfc : RuntimeLibcallImpl<ERFC_V2F64>;
+ def _ZGVnN2v_exp : RuntimeLibcallImpl<EXP_V2F64>;
+ def _ZGVnN2v_exp10 : RuntimeLibcallImpl<EXP10_V2F64>;
+ def _ZGVnN2v_exp2 : RuntimeLibcallImpl<EXP2_V2F64>;
+ def _ZGVnN2v_expm1 : RuntimeLibcallImpl<EXPM1_V2F64>;
+ def _ZGVnN2v_ilogb : RuntimeLibcallImpl<ILOGB_V2F64>;
+ def _ZGVnN2v_lgamma : RuntimeLibcallImpl<LGAMMA_V2F64>;
+ def _ZGVnN2v_log : RuntimeLibcallImpl<LOG_V2F64>;
+ def _ZGVnN2v_log10 : RuntimeLibcallImpl<LOG10_V2F64>;
+ def _ZGVnN2v_log1p : RuntimeLibcallImpl<LOG1P_V2F64>;
+ def _ZGVnN2v_log2 : RuntimeLibcallImpl<LOG2_V2F64>;
+ def _ZGVnN2v_sin : RuntimeLibcallImpl<SIN_V2F64>;
+ def _ZGVnN2v_sinh : RuntimeLibcallImpl<SINH_V2F64>;
+ def _ZGVnN2v_sinpi : RuntimeLibcallImpl<SINPI_V2F64>;
+ def _ZGVnN2v_sqrt : RuntimeLibcallImpl<SQRT_V2F64>;
+ def _ZGVnN2v_tan : RuntimeLibcallImpl<TAN_V2F64>;
+ def _ZGVnN2v_tanh : RuntimeLibcallImpl<TANH_V2F64>;
+ def _ZGVnN2v_tgamma : RuntimeLibcallImpl<TGAMMA_V2F64>;
+ def _ZGVnN2vl8_modf : RuntimeLibcallImpl<MODF_V2F64>;
+ def _ZGVnN2vl8l8_sincos : RuntimeLibcallImpl<SINCOS_V2F64>;
+ def _ZGVnN2vl8l8_sincospi : RuntimeLibcallImpl<SINCOSPI_V2F64>;
+ def _ZGVnN2vv_atan2 : RuntimeLibcallImpl<ATAN2_V2F64>;
+ def _ZGVnN2vv_copysign : RuntimeLibcallImpl<COPYSIGN_V2F64>;
+ def _ZGVnN2vv_fdim : RuntimeLibcallImpl<FDIM_V2F64>;
+ def _ZGVnN2vv_fmax : RuntimeLibcallImpl<FMAX_V2F64>;
+ def _ZGVnN2vv_fmin : RuntimeLibcallImpl<FMIN_V2F64>;
+ def _ZGVnN2vv_fmod : RuntimeLibcallImpl<FMOD_V2F64>;
+ def _ZGVnN2vv_hypot : RuntimeLibcallImpl<HYPOT_V2F64>;
+ def _ZGVnN2vv_ldexp : RuntimeLibcallImpl<LDEXP_V2F64>;
+ def _ZGVnN2vv_nextafter : RuntimeLibcallImpl<NEXTAFTER_V2F64>;
+ def _ZGVnN2vv_pow : RuntimeLibcallImpl<POW_V2F64>;
+ def _ZGVnN2vvv_fma : RuntimeLibcallImpl<FMA_V2F64>;
+}
+
+defset list<RuntimeLibcallImpl> SLEEFGNUABI_VF4_VECFUNCS = {
+ def _ZGVnN4v_acosf : RuntimeLibcallImpl<ACOS_V4F32>;
+ def _ZGVnN4v_acoshf : RuntimeLibcallImpl<ACOSH_V4F32>;
+ def _ZGVnN4v_asinf : RuntimeLibcallImpl<ASIN_V4F32>;
+ def _ZGVnN4v_asinhf : RuntimeLibcallImpl<ASINH_V4F32>;
+ def _ZGVnN4v_atanf : RuntimeLibcallImpl<ATAN_V4F32>;
+ def _ZGVnN4v_atanhf : RuntimeLibcallImpl<ATANH_V4F32>;
+ def _ZGVnN4v_cbrtf : RuntimeLibcallImpl<CBRT_V4F32>;
+ def _ZGVnN4v_cosf : RuntimeLibcallImpl<COS_V4F32>;
+ def _ZGVnN4v_coshf : RuntimeLibcallImpl<COSH_V4F32>;
+ def _ZGVnN4v_cospif : RuntimeLibcallImpl<COSPI_V4F32>;
+ def _ZGVnN4v_erfcf : RuntimeLibcallImpl<ERFC_V4F32>;
+ def _ZGVnN4v_erff : RuntimeLibcallImpl<ERF_V4F32>;
+ def _ZGVnN4v_exp10f : RuntimeLibcallImpl<EXP10_V4F32>;
+ def _ZGVnN4v_exp2f : RuntimeLibcallImpl<EXP2_V4F32>;
+ def _ZGVnN4v_expf : RuntimeLibcallImpl<EXP_V4F32>;
+ def _ZGVnN4v_expm1f : RuntimeLibcallImpl<EXPM1_V4F32>;
+ def _ZGVnN4v_ilogbf : RuntimeLibcallImpl<ILOGB_V4F32>;
+ def _ZGVnN4v_lgammaf : RuntimeLibcallImpl<LGAMMA_V4F32>;
+ def _ZGVnN4v_log10f : RuntimeLibcallImpl<LOG10_V4F32>;
+ def _ZGVnN4v_log1pf : RuntimeLibcallImpl<LOG1P_V4F32>;
+ def _ZGVnN4v_log2f : RuntimeLibcallImpl<LOG2_V4F32>;
+ def _ZGVnN4v_logf : RuntimeLibcallImpl<LOG_V4F32>;
+ def _ZGVnN4v_sinf : RuntimeLibcallImpl<SIN_V4F32>;
+ def _ZGVnN4v_sinhf : RuntimeLibcallImpl<SINH_V4F32>;
+ def _ZGVnN4v_sinpif : RuntimeLibcallImpl<SINPI_V4F32>;
+ def _ZGVnN4v_sqrtf : RuntimeLibcallImpl<SQRT_V4F32>;
+ def _ZGVnN4v_tanf : RuntimeLibcallImpl<TAN_V4F32>;
+ def _ZGVnN4v_tanhf : RuntimeLibcallImpl<TANH_V4F32>;
+ def _ZGVnN4v_tgammaf : RuntimeLibcallImpl<TGAMMA_V4F32>;
+ def _ZGVnN4vl4_modff : RuntimeLibcallImpl<MODF_V4F32>;
+ def _ZGVnN4vl4l4_sincosf : RuntimeLibcallImpl<SINCOS_V4F32>;
+ def _ZGVnN4vl4l4_sincospif : RuntimeLibcallImpl<SINCOSPI_V4F32>;
+ def _ZGVnN4vv_atan2f : RuntimeLibcallImpl<ATAN2_V4F32>;
+ def _ZGVnN4vv_copysignf : RuntimeLibcallImpl<COPYSIGN_V4F32>;
+ def _ZGVnN4vv_fdimf : RuntimeLibcallImpl<FDIM_V4F32>;
+ def _ZGVnN4vv_fmaxf : RuntimeLibcallImpl<FMAX_V4F32>;
+ def _ZGVnN4vv_fminf : RuntimeLibcallImpl<FMIN_V4F32>;
+ def _ZGVnN4vv_fmodf : RuntimeLibcallImpl<FMOD_V4F32>;
+ def _ZGVnN4vv_hypotf : RuntimeLibcallImpl<HYPOT_V4F32>;
+ def _ZGVnN4vv_ldexpf : RuntimeLibcallImpl<LDEXP_V4F32>;
+ def _ZGVnN4vv_nextafterf : RuntimeLibcallImpl<NEXTAFTER_V4F32>;
+ def _ZGVnN4vv_powf : RuntimeLibcallImpl<POW_V4F32>;
+ def _ZGVnN4vvv_fmaf : RuntimeLibcallImpl<FMA_V4F32>;
+}
+
+defset list<RuntimeLibcallImpl> SLEEFGNUABI_SCALABLE_VECFUNCS = {
+ def _ZGVsMxv_acos : RuntimeLibcallImpl<ACOS_NXV2F64>;
+ def _ZGVsMxv_acosf : RuntimeLibcallImpl<ACOS_NXV4F32>;
+ def _ZGVsMxv_acosh : RuntimeLibcallImpl<ACOSH_NXV2F64>;
+ def _ZGVsMxv_acoshf : RuntimeLibcallImpl<ACOSH_NXV4F32>;
+ def _ZGVsMxv_asin : RuntimeLibcallImpl<ASIN_NXV2F64>;
+ def _ZGVsMxv_asinf : RuntimeLibcallImpl<ASIN_NXV4F32>;
+ def _ZGVsMxv_asinh : RuntimeLibcallImpl<ASINH_NXV2F64>;
+ def _ZGVsMxv_asinhf : RuntimeLibcallImpl<ASINH_NXV4F32>;
+ def _ZGVsMxv_atan : RuntimeLibcallImpl<ATAN_NXV2F64>;
+ def _ZGVsMxv_atanf : RuntimeLibcallImpl<ATAN_NXV4F32>;
+ def _ZGVsMxv_atanh : RuntimeLibcallImpl<ATANH_NXV2F64>;
+ def _ZGVsMxv_atanhf : RuntimeLibcallImpl<ATANH_NXV4F32>;
+ def _ZGVsMxv_cbrt : RuntimeLibcallImpl<CBRT_NXV2F64>;
+ def _ZGVsMxv_cbrtf : RuntimeLibcallImpl<CBRT_NXV4F32>;
+ def _ZGVsMxv_cos : RuntimeLibcallImpl<COS_NXV2F64>;
+ def _ZGVsMxv_cosf : RuntimeLibcallImpl<COS_NXV4F32>;
+ def _ZGVsMxv_cosh : RuntimeLibcallImpl<COSH_NXV2F64>;
+ def _ZGVsMxv_coshf : RuntimeLibcallImpl<COSH_NXV4F32>;
+ def _ZGVsMxv_cospi : RuntimeLibcallImpl<COSPI_NXV2F64>;
+ def _ZGVsMxv_cospif : RuntimeLibcallImpl<COSPI_NXV4F32>;
+ def _ZGVsMxv_erf : RuntimeLibcallImpl<ERF_NXV2F64>;
+ def _ZGVsMxv_erfc : RuntimeLibcallImpl<ERFC_NXV2F64>;
+ def _ZGVsMxv_erfcf : RuntimeLibcallImpl<ERFC_NXV4F32>;
+ def _ZGVsMxv_erff : RuntimeLibcallImpl<ERF_NXV4F32>;
+ def _ZGVsMxv_exp : RuntimeLibcallImpl<EXP_NXV2F64>;
+ def _ZGVsMxv_exp10 : RuntimeLibcallImpl<EXP10_NXV2F64>;
+ def _ZGVsMxv_exp10f : RuntimeLibcallImpl<EXP10_NXV4F32>;
+ def _ZGVsMxv_exp2 : RuntimeLibcallImpl<EXP2_NXV2F64>;
+ def _ZGVsMxv_exp2f : RuntimeLibcallImpl<EXP2_NXV4F32>;
+ def _ZGVsMxv_expf : RuntimeLibcallImpl<EXP_NXV4F32>;
+ def _ZGVsMxv_expm1 : RuntimeLibcallImpl<EXPM1_NXV2F64>;
+ def _ZGVsMxv_expm1f : RuntimeLibcallImpl<EXPM1_NXV4F32>;
+ def _ZGVsMxv_ilogb : RuntimeLibcallImpl<ILOGB_NXV2F64>;
+ def _ZGVsMxv_ilogbf : RuntimeLibcallImpl<ILOGB_NXV4F32>;
+ def _ZGVsMxv_lgamma : RuntimeLibcallImpl<LGAMMA_NXV2F64>;
+ def _ZGVsMxv_lgammaf : RuntimeLibcallImpl<LGAMMA_NXV4F32>;
+ def _ZGVsMxv_log : RuntimeLibcallImpl<LOG_NXV2F64>;
+ def _ZGVsMxv_log10 : RuntimeLibcallImpl<LOG10_NXV2F64>;
+ def _ZGVsMxv_log10f : RuntimeLibcallImpl<LOG10_NXV4F32>;
+ def _ZGVsMxv_log1p : RuntimeLibcallImpl<LOG1P_NXV2F64>;
+ def _ZGVsMxv_log1pf : RuntimeLibcallImpl<LOG1P_NXV4F32>;
+ def _ZGVsMxv_log2 : RuntimeLibcallImpl<LOG2_NXV2F64>;
+ def _ZGVsMxv_log2f : RuntimeLibcallImpl<LOG2_NXV4F32>;
+ def _ZGVsMxv_logf : RuntimeLibcallImpl<LOG_NXV4F32>;
+ def _ZGVsMxv_sin : RuntimeLibcallImpl<SIN_NXV2F64>;
+ def _ZGVsMxv_sinf : RuntimeLibcallImpl<SIN_NXV4F32>;
+ def _ZGVsMxv_sinh : RuntimeLibcallImpl<SINH_NXV2F64>;
+ def _ZGVsMxv_sinhf : RuntimeLibcallImpl<SINH_NXV4F32>;
+ def _ZGVsMxv_sinpi : RuntimeLibcallImpl<SINPI_NXV2F64>;
+ def _ZGVsMxv_sinpif : RuntimeLibcallImpl<SINPI_NXV4F32>;
+ def _ZGVsMxv_sqrt : RuntimeLibcallImpl<SQRT_NXV2F64>;
+ def _ZGVsMxv_sqrtf : RuntimeLibcallImpl<SQRT_NXV4F32>;
+ def _ZGVsMxv_tan : RuntimeLibcallImpl<TAN_NXV2F64>;
+ def _ZGVsMxv_tanf : RuntimeLibcallImpl<TAN_NXV4F32>;
+ def _ZGVsMxv_tanh : RuntimeLibcallImpl<TANH_NXV2F64>;
+ def _ZGVsMxv_tanhf : RuntimeLibcallImpl<TANH_NXV4F32>;
+ def _ZGVsMxv_tgamma : RuntimeLibcallImpl<TGAMMA_NXV2F64>;
+ def _ZGVsMxv_tgammaf : RuntimeLibcallImpl<TGAMMA_NXV4F32>;
+ def _ZGVsMxvv_atan2 : RuntimeLibcallImpl<ATAN2_NXV2F64>;
+ def _ZGVsMxvv_atan2f : RuntimeLibcallImpl<ATAN2_NXV4F32>;
+ def _ZGVsMxvv_copysign : RuntimeLibcallImpl<COPYSIGN_NXV2F64>;
+ def _ZGVsMxvv_copysignf : RuntimeLibcallImpl<COPYSIGN_NXV4F32>;
+ def _ZGVsMxvv_fdim : RuntimeLibcallImpl<FDIM_NXV2F64>;
+ def _ZGVsMxvv_fdimf : RuntimeLibcallImpl<FDIM_NXV4F32>;
+ def _ZGVsMxvv_fmax : RuntimeLibcallImpl<FMAX_NXV2F64>;
+ def _ZGVsMxvv_fmaxf : RuntimeLibcallImpl<FMAX_NXV4F32>;
+ def _ZGVsMxvv_fmin : RuntimeLibcallImpl<FMIN_NXV2F64>;
+ def _ZGVsMxvv_fminf : RuntimeLibcallImpl<FMIN_NXV4F32>;
+ def _ZGVsMxvv_fmod : RuntimeLibcallImpl<FMOD_NXV2F64>;
+ def _ZGVsMxvv_fmodf : RuntimeLibcallImpl<FMOD_NXV4F32>;
+ def _ZGVsMxvv_hypot : RuntimeLibcallImpl<HYPOT_NXV2F64>;
+ def _ZGVsMxvv_hypotf : RuntimeLibcallImpl<HYPOT_NXV4F32>;
+ def _ZGVsMxvv_ldexp : RuntimeLibcallImpl<LDEXP_NXV2F64>;
+ def _ZGVsMxvv_ldexpf : RuntimeLibcallImpl<LDEXP_NXV4F32>;
+ def _ZGVsMxvv_nextafter : RuntimeLibcallImpl<NEXTAFTER_NXV2F64>;
+ def _ZGVsMxvv_nextafterf : RuntimeLibcallImpl<NEXTAFTER_NXV4F32>;
+ def _ZGVsMxvv_pow : RuntimeLibcallImpl<POW_NXV2F64>;
+ def _ZGVsMxvv_powf : RuntimeLibcallImpl<POW_NXV4F32>;
+ def _ZGVsMxvvv_fma : RuntimeLibcallImpl<FMA_NXV2F64>;
+ def _ZGVsMxvvv_fmaf : RuntimeLibcallImpl<FMA_NXV4F32>;
+ def _ZGVsNxvl8_modf : RuntimeLibcallImpl<MODF_NXV2F64>;
+ def _ZGVsNxvl4_modff : RuntimeLibcallImpl<MODF_NXV4F32>;
+ def _ZGVsNxvl4l4_sincosf : RuntimeLibcallImpl<SINCOS_NXV4F32>;
+ def _ZGVsNxvl4l4_sincospif : RuntimeLibcallImpl<SINCOSPI_NXV4F32>;
+ def _ZGVsNxvl8l8_sincos : RuntimeLibcallImpl<SINCOS_NXV2F64>;
+ def _ZGVsNxvl8l8_sincospi : RuntimeLibcallImpl<SINCOSPI_NXV2F64>;
+}
+
+defset list<RuntimeLibcallImpl> SLEEFGNUABI_SCALABLE_VECFUNCS_RISCV = {
+ def Sleef_acosdx_u10rvvm2 : RuntimeLibcallImpl<ACOS_NXV2F64>;
+ def Sleef_acosfx_u10rvvm2 : RuntimeLibcallImpl<ACOS_NXV4F32>;
+ def Sleef_acoshdx_u10rvvm2 : RuntimeLibcallImpl<ACOSH_NXV2F64>;
+ def Sleef_acoshfx_u10rvvm2 : RuntimeLibcallImpl<ACOSH_NXV4F32>;
+ def Sleef_asindx_u10rvvm2 : RuntimeLibcallImpl<ASIN_NXV2F64>;
+ def Sleef_asinfx_u10rvvm2 : RuntimeLibcallImpl<ASIN_NXV4F32>;
+ def Sleef_asinhdx_u10rvvm2 : RuntimeLibcallImpl<ASINH_NXV2F64>;
+ def Sleef_asinhfx_u10rvvm2 : RuntimeLibcallImpl<ASINH_NXV4F32>;
+ def Sleef_atan2dx_u10rvvm2 : RuntimeLibcallImpl<ATAN2_NXV2F64>;
+ def Sleef_atan2fx_u10rvvm2 : RuntimeLibcallImpl<ATAN2_NXV4F32>;
+ def Sleef_atandx_u10rvvm2 : RuntimeLibcallImpl<ATAN_NXV2F64>;
+ def Sleef_atanfx_u10rvvm2 : RuntimeLibcallImpl<ATAN_NXV4F32>;
+ def Sleef_atanhdx_u10rvvm2 : RuntimeLibcallImpl<ATANH_NXV2F64>;
+ def Sleef_atanhfx_u10rvvm2 : RuntimeLibcallImpl<ATANH_NXV4F32>;
+ def Sleef_cbrtdx_u10rvvm2 : RuntimeLibcallImpl<CBRT_NXV2F64>;
+ def Sleef_cbrtfx_u10rvvm2 : RuntimeLibcallImpl<CBRT_NXV4F32>;
+ def Sleef_copysigndx_rvvm2 : RuntimeLibcallImpl<COPYSIGN_NXV2F64>;
+ def Sleef_copysignfx_rvvm2 : RuntimeLibcallImpl<COPYSIGN_NXV4F32>;
+ def Sleef_cosdx_u10rvvm2 : RuntimeLibcallImpl<COS_NXV2F64>;
+ def Sleef_cosfx_u10rvvm2 : RuntimeLibcallImpl<COS_NXV4F32>;
+ def Sleef_coshdx_u10rvvm2 : RuntimeLibcallImpl<COSH_NXV2F64>;
+ def Sleef_coshfx_u10rvvm2 : RuntimeLibcallImpl<COSH_NXV4F32>;
+ def Sleef_cospidx_u05rvvm2 : RuntimeLibcallImpl<COSPI_NXV2F64>;
+ def Sleef_cospifx_u05rvvm2 : RuntimeLibcallImpl<COSPI_NXV4F32>;
+ def Sleef_erfcdx_u15rvvm2 : RuntimeLibcallImpl<ERFC_NXV2F64>;
+ def Sleef_erfcfx_u15rvvm2 : RuntimeLibcallImpl<ERFC_NXV4F32>;
+ def Sleef_erfdx_u10rvvm2 : RuntimeLibcallImpl<ERF_NXV2F64>;
+ def Sleef_erffx_u10rvvm2 : RuntimeLibcallImpl<ERF_NXV4F32>;
+ def Sleef_exp10dx_u10rvvm2 : RuntimeLibcallImpl<EXP10_NXV2F64>;
+ def Sleef_exp10fx_u10rvvm2 : RuntimeLibcallImpl<EXP10_NXV4F32>;
+ def Sleef_exp2dx_u10rvvm2 : RuntimeLibcallImpl<EXP2_NXV2F64>;
+ def Sleef_exp2fx_u10rvvm2 : RuntimeLibcallImpl<EXP2_NXV4F32>;
+ def Sleef_expdx_u10rvvm2 : RuntimeLibcallImpl<EXP_NXV2F64>;
+ def Sleef_expfx_u10rvvm2 : RuntimeLibcallImpl<EXP_NXV4F32>;
+ def Sleef_expm1dx_u10rvvm2 : RuntimeLibcallImpl<EXPM1_NXV2F64>;
+ def Sleef_expm1fx_u10rvvm2 : RuntimeLibcallImpl<EXPM1_NXV4F32>;
+ def Sleef_fdimdx_rvvm2 : RuntimeLibcallImpl<FDIM_NXV2F64>;
+ def Sleef_fdimfx_rvvm2 : RuntimeLibcallImpl<FDIM_NXV4F32>;
+ def Sleef_fmadx_rvvm2 : RuntimeLibcallImpl<FMA_NXV2F64>;
+ def Sleef_fmafx_rvvm2 : RuntimeLibcallImpl<FMA_NXV4F32>;
+ def Sleef_fmaxdx_rvvm2 : RuntimeLibcallImpl<FMAX_NXV2F64>;
+ def Sleef_fmaxfx_rvvm2 : RuntimeLibcallImpl<FMAX_NXV4F32>;
+ def Sleef_fmindx_u10rvvm2 : RuntimeLibcallImpl<FMIN_NXV2F64>;
+ def Sleef_fminfx_u10rvvm2 : RuntimeLibcallImpl<FMIN_NXV4F32>;
+ def Sleef_fmoddx_rvvm2 : RuntimeLibcallImpl<FMOD_NXV2F64>;
+ def Sleef_fmodfx_rvvm2 : RuntimeLibcallImpl<FMOD_NXV4F32>;
+ def Sleef_hypotdx_u05rvvm2 : RuntimeLibcallImpl<HYPOT_NXV2F64>;
+ def Sleef_hypotfx_u05rvvm2 : RuntimeLibcallImpl<HYPOT_NXV4F32>;
+ def Sleef_ilogbdx_rvvm2 : RuntimeLibcallImpl<ILOGB_NXV2F64>;
+ def Sleef_ilogbfx_rvvm2 : RuntimeLibcallImpl<ILOGB_NXV4F32>;
+ def Sleef_ldexpdx_rvvm2 : RuntimeLibcallImpl<LDEXP_NXV2F64>;
+ def Sleef_ldexpfx_rvvm2 : RuntimeLibcallImpl<LDEXP_NXV4F32>;
+ def Sleef_lgammadx_u10rvvm2 : RuntimeLibcallImpl<LGAMMA_NXV2F64>;
+ def Sleef_lgammafx_u10rvvm2 : RuntimeLibcallImpl<LGAMMA_NXV4F32>;
+ def Sleef_log10dx_u10rvvm2 : RuntimeLibcallImpl<LOG10_NXV2F64>;
+ def Sleef_log10fx_u10rvvm2 : RuntimeLibcallImpl<LOG10_NXV4F32>;
+ def Sleef_log1pdx_u10rvvm2 : RuntimeLibcallImpl<LOG1P_NXV2F64>;
+ def Sleef_log1pfx_u10rvvm2 : RuntimeLibcallImpl<LOG1P_NXV4F32>;
+ def Sleef_log2dx_u10rvvm2 : RuntimeLibcallImpl<LOG2_NXV2F64>;
+ def Sleef_log2fx_u10rvvm2 : RuntimeLibcallImpl<LOG2_NXV4F32>;
+ def Sleef_logdx_u10rvvm2 : RuntimeLibcallImpl<LOG_NXV2F64>;
+ def Sleef_logfx_u10rvvm2 : RuntimeLibcallImpl<LOG_NXV4F32>;
+ def Sleef_modfdx_rvvm2 : RuntimeLibcallImpl<MODF_NXV2F64>;
+ def Sleef_modffx_rvvm2 : RuntimeLibcallImpl<MODF_NXV4F32>;
+ def Sleef_nextafterdx_rvvm2 : RuntimeLibcallImpl<NEXTAFTER_NXV2F64>;
+ def Sleef_nextafterfx_rvvm2 : RuntimeLibcallImpl<NEXTAFTER_NXV4F32>;
+ def Sleef_powdx_u10rvvm2 : RuntimeLibcallImpl<POW_NXV2F64>;
+ def Sleef_powfx_u10rvvm2 : RuntimeLibcallImpl<POW_NXV4F32>;
+ def Sleef_sincosdx_u10rvvm2 : RuntimeLibcallImpl<SINCOS_NXV2F64>;
+ def Sleef_sincosfx_u10rvvm2 : RuntimeLibcallImpl<SINCOS_NXV4F32>;
+ def Sleef_sincospidx_u10rvvm2 : RuntimeLibcallImpl<SINCOSPI_NXV2F64>;
+ def Sleef_sincospifx_u10rvvm2 : RuntimeLibcallImpl<SINCOSPI_NXV4F32>;
+ def Sleef_sindx_u10rvvm2 : RuntimeLibcallImpl<SIN_NXV2F64>;
+ def Sleef_sinfx_u10rvvm2 : RuntimeLibcallImpl<SIN_NXV4F32>;
+ def Sleef_sinhdx_u10rvvm2 : RuntimeLibcallImpl<SINH_NXV2F64>;
+ def Sleef_sinhfx_u10rvvm2 : RuntimeLibcallImpl<SINH_NXV4F32>;
+ def Sleef_sinpidx_u05rvvm2 : RuntimeLibcallImpl<SINPI_NXV2F64>;
+ def Sleef_sinpifx_u05rvvm2 : RuntimeLibcallImpl<SINPI_NXV4F32>;
+ def Sleef_sqrtdx_u05rvvm2 : RuntimeLibcallImpl<SQRT_NXV2F64>;
+ def Sleef_sqrtfx_u05rvvm2 : RuntimeLibcallImpl<SQRT_NXV4F32>;
+ def Sleef_tandx_u10rvvm2 : RuntimeLibcallImpl<TAN_NXV2F64>;
+ def Sleef_tanfx_u10rvvm2 : RuntimeLibcallImpl<TAN_NXV4F32>;
+ def Sleef_tanhdx_u10rvvm2 : RuntimeLibcallImpl<TANH_NXV2F64>;
+ def Sleef_tanhfx_u10rvvm2 : RuntimeLibcallImpl<TANH_NXV4F32>;
+ def Sleef_tgammadx_u10rvvm2 : RuntimeLibcallImpl<TGAMMA_NXV2F64>;
+ def Sleef_tgammafx_u10rvvm2 : RuntimeLibcallImpl<TGAMMA_NXV4F32>;
+}
+
+//===----------------------------------------------------------------------===//
+// Arm Performance Libraries (ARMPL) functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> ARMPL_VECFUNCS = {
+ def armpl_svacos_f32_x : RuntimeLibcallImpl<ACOS_NXV4F32>;
+ def armpl_svacos_f64_x : RuntimeLibcallImpl<ACOS_NXV2F64>;
+ def armpl_svacosh_f32_x : RuntimeLibcallImpl<ACOSH_NXV4F32>;
+ def armpl_svacosh_f64_x : RuntimeLibcallImpl<ACOSH_NXV2F64>;
+ def armpl_svasin_f32_x : RuntimeLibcallImpl<ASIN_NXV4F32>;
+ def armpl_svasin_f64_x : RuntimeLibcallImpl<ASIN_NXV2F64>;
+ def armpl_svasinh_f32_x : RuntimeLibcallImpl<ASINH_NXV4F32>;
+ def armpl_svasinh_f64_x : RuntimeLibcallImpl<ASINH_NXV2F64>;
+ def armpl_svatan2_f32_x : RuntimeLibcallImpl<ATAN2_NXV4F32>;
+ def armpl_svatan2_f64_x : RuntimeLibcallImpl<ATAN2_NXV2F64>;
+ def armpl_svatan_f32_x : RuntimeLibcallImpl<ATAN_NXV4F32>;
+ def armpl_svatan_f64_x : RuntimeLibcallImpl<ATAN_NXV2F64>;
+ def armpl_svatanh_f32_x : RuntimeLibcallImpl<ATANH_NXV4F32>;
+ def armpl_svatanh_f64_x : RuntimeLibcallImpl<ATANH_NXV2F64>;
+ def armpl_svcbrt_f32_x : RuntimeLibcallImpl<CBRT_NXV4F32>;
+ def armpl_svcbrt_f64_x : RuntimeLibcallImpl<CBRT_NXV2F64>;
+ def armpl_svcopysign_f32_x : RuntimeLibcallImpl<COPYSIGN_NXV4F32>;
+ def armpl_svcopysign_f64_x : RuntimeLibcallImpl<COPYSIGN_NXV2F64>;
+ def armpl_svcos_f32_x : RuntimeLibcallImpl<COS_NXV4F32>;
+ def armpl_svcos_f64_x : RuntimeLibcallImpl<COS_NXV2F64>;
+ def armpl_svcosh_f32_x : RuntimeLibcallImpl<COSH_NXV4F32>;
+ def armpl_svcosh_f64_x : RuntimeLibcallImpl<COSH_NXV2F64>;
+ def armpl_svcospi_f32_x : RuntimeLibcallImpl<COSPI_NXV4F32>;
+ def armpl_svcospi_f64_x : RuntimeLibcallImpl<COSPI_NXV2F64>;
+ def armpl_sverf_f32_x : RuntimeLibcallImpl<ERF_NXV4F32>;
+ def armpl_sverf_f64_x : RuntimeLibcallImpl<ERF_NXV2F64>;
+ def armpl_sverfc_f32_x : RuntimeLibcallImpl<ERFC_NXV4F32>;
+ def armpl_sverfc_f64_x : RuntimeLibcallImpl<ERFC_NXV2F64>;
+ def armpl_svexp10_f32_x : RuntimeLibcallImpl<EXP10_NXV4F32>;
+ def armpl_svexp10_f64_x : RuntimeLibcallImpl<EXP10_NXV2F64>;
+ def armpl_svexp2_f32_x : RuntimeLibcallImpl<EXP2_NXV4F32>;
+ def armpl_svexp2_f64_x : RuntimeLibcallImpl<EXP2_NXV2F64>;
+ def armpl_svexp_f32_x : RuntimeLibcallImpl<EXP_NXV4F32>;
+ def armpl_svexp_f64_x : RuntimeLibcallImpl<EXP_NXV2F64>;
+ def armpl_svexpm1_f32_x : RuntimeLibcallImpl<EXPM1_NXV4F32>;
+ def armpl_svexpm1_f64_x : RuntimeLibcallImpl<EXPM1_NXV2F64>;
+ def armpl_svfdim_f32_x : RuntimeLibcallImpl<FDIM_NXV4F32>;
+ def armpl_svfdim_f64_x : RuntimeLibcallImpl<FDIM_NXV2F64>;
+ def armpl_svfma_f32_x : RuntimeLibcallImpl<FMA_NXV4F32>;
+ def armpl_svfma_f64_x : RuntimeLibcallImpl<FMA_NXV2F64>;
+ def armpl_svfmax_f32_x : RuntimeLibcallImpl<FMAX_NXV4F32>;
+ def armpl_svfmax_f64_x : RuntimeLibcallImpl<FMAX_NXV2F64>;
+ def armpl_svfmin_f32_x : RuntimeLibcallImpl<FMIN_NXV4F32>;
+ def armpl_svfmin_f64_x : RuntimeLibcallImpl<FMIN_NXV2F64>;
+ def armpl_svfmod_f32_x : RuntimeLibcallImpl<FMOD_NXV4F32>;
+ def armpl_svfmod_f64_x : RuntimeLibcallImpl<FMOD_NXV2F64>;
+ def armpl_svhypot_f32_x : RuntimeLibcallImpl<HYPOT_NXV4F32>;
+ def armpl_svhypot_f64_x : RuntimeLibcallImpl<HYPOT_NXV2F64>;
+ def armpl_svilogb_f32_x : RuntimeLibcallImpl<ILOGB_NXV4F32>;
+ def armpl_svilogb_f64_x : RuntimeLibcallImpl<ILOGB_NXV2F64>;
+ def armpl_svldexp_f32_x : RuntimeLibcallImpl<LDEXP_NXV4F32>;
+ def armpl_svldexp_f64_x : RuntimeLibcallImpl<LDEXP_NXV2F64>;
+ def armpl_svlgamma_f32_x : RuntimeLibcallImpl<LGAMMA_NXV4F32>;
+ def armpl_svlgamma_f64_x : RuntimeLibcallImpl<LGAMMA_NXV2F64>;
+ def armpl_svlog10_f32_x : RuntimeLibcallImpl<LOG10_NXV4F32>;
+ def armpl_svlog10_f64_x : RuntimeLibcallImpl<LOG10_NXV2F64>;
+ def armpl_svlog1p_f32_x : RuntimeLibcallImpl<LOG1P_NXV4F32>;
+ def armpl_svlog1p_f64_x : RuntimeLibcallImpl<LOG1P_NXV2F64>;
+ def armpl_svlog2_f32_x : RuntimeLibcallImpl<LOG2_NXV4F32>;
+ def armpl_svlog2_f64_x : RuntimeLibcallImpl<LOG2_NXV2F64>;
+ def armpl_svlog_f32_x : RuntimeLibcallImpl<LOG_NXV4F32>;
+ def armpl_svlog_f64_x : RuntimeLibcallImpl<LOG_NXV2F64>;
+ def armpl_svmodf_f32_x : RuntimeLibcallImpl<MODF_NXV4F32>;
+ def armpl_svmodf_f64_x : RuntimeLibcallImpl<MODF_NXV2F64>;
+ def armpl_svnextafter_f32_x : RuntimeLibcallImpl<NEXTAFTER_NXV4F32>;
+ def armpl_svnextafter_f64_x : RuntimeLibcallImpl<NEXTAFTER_NXV2F64>;
+ def armpl_svpow_f32_x : RuntimeLibcallImpl<POW_NXV4F32>;
+ def armpl_svpow_f64_x : RuntimeLibcallImpl<POW_NXV2F64>;
+ def armpl_svsin_f32_x : RuntimeLibcallImpl<SIN_NXV4F32>;
+ def armpl_svsin_f64_x : RuntimeLibcallImpl<SIN_NXV2F64>;
+ def armpl_svsincos_f32_x : RuntimeLibcallImpl<SINCOS_NXV4F32>;
+ def armpl_svsincos_f64_x : RuntimeLibcallImpl<SINCOS_NXV2F64>;
+ def armpl_svsincospi_f32_x : RuntimeLibcallImpl<SINCOSPI_NXV4F32>;
+ def armpl_svsincospi_f64_x : RuntimeLibcallImpl<SINCOSPI_NXV2F64>;
+ def armpl_svsinh_f32_x : RuntimeLibcallImpl<SINH_NXV4F32>;
+ def armpl_svsinh_f64_x : RuntimeLibcallImpl<SINH_NXV2F64>;
+ def armpl_svsinpi_f32_x : RuntimeLibcallImpl<SINPI_NXV4F32>;
+ def armpl_svsinpi_f64_x : RuntimeLibcallImpl<SINPI_NXV2F64>;
+ def armpl_svsqrt_f32_x : RuntimeLibcallImpl<SQRT_NXV4F32>;
+ def armpl_svsqrt_f64_x : RuntimeLibcallImpl<SQRT_NXV2F64>;
+ def armpl_svtan_f32_x : RuntimeLibcallImpl<TAN_NXV4F32>;
+ def armpl_svtan_f64_x : RuntimeLibcallImpl<TAN_NXV2F64>;
+ def armpl_svtanh_f32_x : RuntimeLibcallImpl<TANH_NXV4F32>;
+ def armpl_svtanh_f64_x : RuntimeLibcallImpl<TANH_NXV2F64>;
+ def armpl_svtgamma_f32_x : RuntimeLibcallImpl<TGAMMA_NXV4F32>;
+ def armpl_svtgamma_f64_x : RuntimeLibcallImpl<TGAMMA_NXV2F64>;
+ def armpl_vacoshq_f32 : RuntimeLibcallImpl<ACOSH_V4F32>;
+ def armpl_vacoshq_f64 : RuntimeLibcallImpl<ACOSH_V2F64>;
+ def armpl_vacosq_f32 : RuntimeLibcallImpl<ACOS_V4F32>;
+ def armpl_vacosq_f64 : RuntimeLibcallImpl<ACOS_V2F64>;
+ def armpl_vasinhq_f32 : RuntimeLibcallImpl<ASINH_V4F32>;
+ def armpl_vasinhq_f64 : RuntimeLibcallImpl<ASINH_V2F64>;
+ def armpl_vasinq_f32 : RuntimeLibcallImpl<ASIN_V4F32>;
+ def armpl_vasinq_f64 : RuntimeLibcallImpl<ASIN_V2F64>;
+ def armpl_vatan2q_f32 : RuntimeLibcallImpl<ATAN2_V4F32>;
+ def armpl_vatan2q_f64 : RuntimeLibcallImpl<ATAN2_V2F64>;
+ def armpl_vatanhq_f32 : RuntimeLibcallImpl<ATANH_V4F32>;
+ def armpl_vatanhq_f64 : RuntimeLibcallImpl<ATANH_V2F64>;
+ def armpl_vatanq_f32 : RuntimeLibcallImpl<ATAN_V4F32>;
+ def armpl_vatanq_f64 : RuntimeLibcallImpl<ATAN_V2F64>;
+ def armpl_vcbrtq_f32 : RuntimeLibcallImpl<CBRT_V4F32>;
+ def armpl_vcbrtq_f64 : RuntimeLibcallImpl<CBRT_V2F64>;
+ def armpl_vcopysignq_f32 : RuntimeLibcallImpl<COPYSIGN_V4F32>;
+ def armpl_vcopysignq_f64 : RuntimeLibcallImpl<COPYSIGN_V2F64>;
+ def armpl_vcoshq_f32 : RuntimeLibcallImpl<COSH_V4F32>;
+ def armpl_vcoshq_f64 : RuntimeLibcallImpl<COSH_V2F64>;
+ def armpl_vcospiq_f32 : RuntimeLibcallImpl<COSPI_V4F32>;
+ def armpl_vcospiq_f64 : RuntimeLibcallImpl<COSPI_V2F64>;
+ def armpl_vcosq_f32 : RuntimeLibcallImpl<COS_V4F32>;
+ def armpl_vcosq_f64 : RuntimeLibcallImpl<COS_V2F64>;
+ def armpl_verfcq_f32 : RuntimeLibcallImpl<ERFC_V4F32>;
+ def armpl_verfcq_f64 : RuntimeLibcallImpl<ERFC_V2F64>;
+ def armpl_verfq_f32 : RuntimeLibcallImpl<ERF_V4F32>;
+ def armpl_verfq_f64 : RuntimeLibcallImpl<ERF_V2F64>;
+ def armpl_vexp10q_f32 : RuntimeLibcallImpl<EXP10_V4F32>;
+ def armpl_vexp10q_f64 : RuntimeLibcallImpl<EXP10_V2F64>;
+ def armpl_vexp2q_f32 : RuntimeLibcallImpl<EXP2_V4F32>;
+ def armpl_vexp2q_f64 : RuntimeLibcallImpl<EXP2_V2F64>;
+ def armpl_vexpm1q_f32 : RuntimeLibcallImpl<EXPM1_V4F32>;
+ def armpl_vexpm1q_f64 : RuntimeLibcallImpl<EXPM1_V2F64>;
+ def armpl_vexpq_f32 : RuntimeLibcallImpl<EXP_V4F32>;
+ def armpl_vexpq_f64 : RuntimeLibcallImpl<EXP_V2F64>;
+ def armpl_vfdimq_f32 : RuntimeLibcallImpl<FDIM_V4F32>;
+ def armpl_vfdimq_f64 : RuntimeLibcallImpl<FDIM_V2F64>;
+ def armpl_vfmaq_f32 : RuntimeLibcallImpl<FMA_V4F32>;
+ def armpl_vfmaq_f64 : RuntimeLibcallImpl<FMA_V2F64>;
+ def armpl_vfmaxq_f32 : RuntimeLibcallImpl<FMAX_V4F32>;
+ def armpl_vfmaxq_f64 : RuntimeLibcallImpl<FMAX_V2F64>;
+ def armpl_vfminq_f32 : RuntimeLibcallImpl<FMIN_V4F32>;
+ def armpl_vfminq_f64 : RuntimeLibcallImpl<FMIN_V2F64>;
+ def armpl_vfmodq_f32 : RuntimeLibcallImpl<FMOD_V4F32>;
+ def armpl_vfmodq_f64 : RuntimeLibcallImpl<FMOD_V2F64>;
+ def armpl_vhypotq_f32 : RuntimeLibcallImpl<HYPOT_V4F32>;
+ def armpl_vhypotq_f64 : RuntimeLibcallImpl<HYPOT_V2F64>;
+ def armpl_vilogbq_f32 : RuntimeLibcallImpl<ILOGB_V4F32>;
+ def armpl_vilogbq_f64 : RuntimeLibcallImpl<ILOGB_V2F64>;
+ def armpl_vldexpq_f32 : RuntimeLibcallImpl<LDEXP_V4F32>;
+ def armpl_vldexpq_f64 : RuntimeLibcallImpl<LDEXP_V2F64>;
+ def armpl_vlgammaq_f32 : RuntimeLibcallImpl<LGAMMA_V4F32>;
+ def armpl_vlgammaq_f64 : RuntimeLibcallImpl<LGAMMA_V2F64>;
+ def armpl_vlog10q_f32 : RuntimeLibcallImpl<LOG10_V4F32>;
+ def armpl_vlog10q_f64 : RuntimeLibcallImpl<LOG10_V2F64>;
+ def armpl_vlog1pq_f32 : RuntimeLibcallImpl<LOG1P_V4F32>;
+ def armpl_vlog1pq_f64 : RuntimeLibcallImpl<LOG1P_V2F64>;
+ def armpl_vlog2q_f32 : RuntimeLibcallImpl<LOG2_V4F32>;
+ def armpl_vlog2q_f64 : RuntimeLibcallImpl<LOG2_V2F64>;
+ def armpl_vlogq_f32 : RuntimeLibcallImpl<LOG_V4F32>;
+ def armpl_vlogq_f64 : RuntimeLibcallImpl<LOG_V2F64>;
+ def armpl_vmodfq_f32 : RuntimeLibcallImpl<MODF_V4F32>;
+ def armpl_vmodfq_f64 : RuntimeLibcallImpl<MODF_V2F64>;
+ def armpl_vnextafterq_f32 : RuntimeLibcallImpl<NEXTAFTER_V4F32>;
+ def armpl_vnextafterq_f64 : RuntimeLibcallImpl<NEXTAFTER_V2F64>;
+ def armpl_vpowq_f32 : RuntimeLibcallImpl<POW_V4F32>;
+ def armpl_vpowq_f64 : RuntimeLibcallImpl<POW_V2F64>;
+ def armpl_vsincospiq_f32 : RuntimeLibcallImpl<SINCOSPI_V4F32>;
+ def armpl_vsincospiq_f64 : RuntimeLibcallImpl<SINCOSPI_V2F64>;
+ def armpl_vsincosq_f32 : RuntimeLibcallImpl<SINCOS_V4F32>;
+ def armpl_vsincosq_f64 : RuntimeLibcallImpl<SINCOS_V2F64>;
+ def armpl_vsinhq_f32 : RuntimeLibcallImpl<SINH_V4F32>;
+ def armpl_vsinhq_f64 : RuntimeLibcallImpl<SINH_V2F64>;
+ def armpl_vsinpiq_f32 : RuntimeLibcallImpl<SINPI_V4F32>;
+ def armpl_vsinpiq_f64 : RuntimeLibcallImpl<SINPI_V2F64>;
+ def armpl_vsinq_f32 : RuntimeLibcallImpl<SIN_V4F32>;
+ def armpl_vsinq_f64 : RuntimeLibcallImpl<SIN_V2F64>;
+ def armpl_vsqrtq_f32 : RuntimeLibcallImpl<SQRT_V4F32>;
+ def armpl_vsqrtq_f64 : RuntimeLibcallImpl<SQRT_V2F64>;
+ def armpl_vtanhq_f32 : RuntimeLibcallImpl<TANH_V4F32>;
+ def armpl_vtanhq_f64 : RuntimeLibcallImpl<TANH_V2F64>;
+ def armpl_vtanq_f32 : RuntimeLibcallImpl<TAN_V4F32>;
+ def armpl_vtanq_f64 : RuntimeLibcallImpl<TAN_V2F64>;
+ def armpl_vtgammaq_f32 : RuntimeLibcallImpl<TGAMMA_V4F32>;
+ def armpl_vtgammaq_f64 : RuntimeLibcallImpl<TGAMMA_V2F64>;
+}
+
+//===----------------------------------------------------------------------===//
+// AMD vector math library (AMDLIBM) functions
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> AMDLIBM_VECFUNCS = {
+ def amd_vrd2_atan : RuntimeLibcallImpl<ATAN_V2F64>;
+ def amd_vrd2_cbrt : RuntimeLibcallImpl<CBRT_V2F64>;
+ def amd_vrd2_cos : RuntimeLibcallImpl<COS_V2F64>;
+ def amd_vrd2_erf : RuntimeLibcallImpl<ERF_V2F64>;
+ def amd_vrd2_exp : RuntimeLibcallImpl<EXP_V2F64>;
+ def amd_vrd2_exp10 : RuntimeLibcallImpl<EXP10_V2F64>;
+ def amd_vrd2_exp2 : RuntimeLibcallImpl<EXP2_V2F64>;
+ def amd_vrd2_expm1 : RuntimeLibcallImpl<EXPM1_V2F64>;
+ def amd_vrd2_log : RuntimeLibcallImpl<LOG_V2F64>;
+ def amd_vrd2_log10 : RuntimeLibcallImpl<LOG10_V2F64>;
+ def amd_vrd2_log1p : RuntimeLibcallImpl<LOG1P_V2F64>;
+ def amd_vrd2_log2 : RuntimeLibcallImpl<LOG2_V2F64>;
+ def amd_vrd2_pow : RuntimeLibcallImpl<POW_V2F64>;
+ def amd_vrd2_sin : RuntimeLibcallImpl<SIN_V2F64>;
+ def amd_vrd2_tan : RuntimeLibcallImpl<TAN_V2F64>;
+ def amd_vrd4_atan : RuntimeLibcallImpl<ATAN_V4F64>;
+ def amd_vrd4_cos : RuntimeLibcallImpl<COS_V4F64>;
+ def amd_vrd4_erf : RuntimeLibcallImpl<ERF_V4F32>;
+ def amd_vrd4_exp : RuntimeLibcallImpl<EXP_V4F64>;
+ def amd_vrd4_exp2 : RuntimeLibcallImpl<EXP2_V4F64>;
+ def amd_vrd4_log : RuntimeLibcallImpl<LOG_V4F64>;
+ def amd_vrd4_log2 : RuntimeLibcallImpl<LOG2_V4F64>;
+ def amd_vrd4_pow : RuntimeLibcallImpl<POW_V4F64>;
+ def amd_vrd4_sin : RuntimeLibcallImpl<SIN_V4F64>;
+ def amd_vrd4_sincos : RuntimeLibcallImpl<SINCOS_V4F64>;
+ def amd_vrd4_tan : RuntimeLibcallImpl<TAN_V4F64>;
+ def amd_vrd8_asin : RuntimeLibcallImpl<ASIN_V8F64>;
+ def amd_vrd8_atan : RuntimeLibcallImpl<ATAN_V8F64>;
+ def amd_vrd8_cos : RuntimeLibcallImpl<COS_V8F64>;
+ def amd_vrd8_erf : RuntimeLibcallImpl<ERF_V8F32>;
+ def amd_vrd8_exp : RuntimeLibcallImpl<EXP_V8F64>;
+ def amd_vrd8_exp2 : RuntimeLibcallImpl<EXP2_V8F64>;
+ def amd_vrd8_log : RuntimeLibcallImpl<LOG_V8F64>;
+ def amd_vrd8_log2 : RuntimeLibcallImpl<LOG2_V8F64>;
+ def amd_vrd8_pow : RuntimeLibcallImpl<POW_V8F64>;
+ def amd_vrd8_sin : RuntimeLibcallImpl<SIN_V8F64>;
+ def amd_vrd8_sincos : RuntimeLibcallImpl<SINCOS_V8F64>;
+ def amd_vrd8_tan : RuntimeLibcallImpl<TAN_V8F64>;
+ def amd_vrs16_acosf : RuntimeLibcallImpl<ACOS_V16F32>;
+ def amd_vrs16_asinf : RuntimeLibcallImpl<ASIN_V16F32>;
+ def amd_vrs16_atanf : RuntimeLibcallImpl<ATAN_V16F32>;
+ def amd_vrs16_cosf : RuntimeLibcallImpl<COS_V16F32>;
+ def amd_vrs16_erff : RuntimeLibcallImpl<ERF_V16F32>;
+ def amd_vrs16_exp2f : RuntimeLibcallImpl<EXP2_V16F32>;
+ def amd_vrs16_expf : RuntimeLibcallImpl<EXP_V16F32>;
+ def amd_vrs16_log10f : RuntimeLibcallImpl<LOG10_V16F32>;
+ def amd_vrs16_log2f : RuntimeLibcallImpl<LOG2_V16F32>;
+ def amd_vrs16_logf : RuntimeLibcallImpl<LOG_V16F32>;
+ def amd_vrs16_powf : RuntimeLibcallImpl<POW_V16F32>;
+ def amd_vrs16_sincosf : RuntimeLibcallImpl<SINCOS_V16F32>;
+ def amd_vrs16_sinf : RuntimeLibcallImpl<SIN_V16F32>;
+ def amd_vrs16_tanf : RuntimeLibcallImpl<TAN_V16F32>;
+ def amd_vrs16_tanhf : RuntimeLibcallImpl<TANH_V16F32>;
+ def amd_vrs4_acosf : RuntimeLibcallImpl<ACOS_V4F32>;
+ def amd_vrs4_asinf : RuntimeLibcallImpl<ASIN_V4F32>;
+ def amd_vrs4_atanf : RuntimeLibcallImpl<ATAN_V4F32>;
+ def amd_vrs4_cbrtf : RuntimeLibcallImpl<CBRT_V4F32>;
+ def amd_vrs4_cosf : RuntimeLibcallImpl<COS_V4F32>;
+ def amd_vrs4_coshf : RuntimeLibcallImpl<COSH_V4F32>;
+ def amd_vrs4_erff : RuntimeLibcallImpl<ERF_V4F32>;
+ def amd_vrs4_exp10f : RuntimeLibcallImpl<EXP10_V4F32>;
+ def amd_vrs4_exp2f : RuntimeLibcallImpl<EXP2_V4F32>;
+ def amd_vrs4_expf : RuntimeLibcallImpl<EXP_V4F32>;
+ def amd_vrs4_expm1f : RuntimeLibcallImpl<EXPM1_V4F32>;
+ def amd_vrs4_log10f : RuntimeLibcallImpl<LOG10_V4F32>;
+ def amd_vrs4_log1pf : RuntimeLibcallImpl<LOG1P_V4F32>;
+ def amd_vrs4_log2f : RuntimeLibcallImpl<LOG2_V4F32>;
+ def amd_vrs4_logf : RuntimeLibcallImpl<LOG_V4F32>;
+ def amd_vrs4_powf : RuntimeLibcallImpl<POW_V4F32>;
+ def amd_vrs4_sincosf : RuntimeLibcallImpl<SINCOS_V4F32>;
+ def amd_vrs4_sinf : RuntimeLibcallImpl<SIN_V4F32>;
+ def amd_vrs4_tanf : RuntimeLibcallImpl<TAN_V4F32>;
+ def amd_vrs4_tanhf : RuntimeLibcallImpl<TANH_V4F32>;
+ def amd_vrs8_acosf : RuntimeLibcallImpl<ACOS_V8F32>;
+ def amd_vrs8_asinf : RuntimeLibcallImpl<ASIN_V8F32>;
+ def amd_vrs8_atanf : RuntimeLibcallImpl<ATAN_V8F32>;
+ def amd_vrs8_cosf : RuntimeLibcallImpl<COS_V8F32>;
+ def amd_vrs8_coshf : RuntimeLibcallImpl<COSH_V8F32>;
+ def amd_vrs8_erff : RuntimeLibcallImpl<ERF_V8F32>;
+ def amd_vrs8_exp2f : RuntimeLibcallImpl<EXP2_V8F32>;
+ def amd_vrs8_expf : RuntimeLibcallImpl<EXP_V8F32>;
+ def amd_vrs8_log10f : RuntimeLibcallImpl<LOG10_V8F32>;
+ def amd_vrs8_log2f : RuntimeLibcallImpl<LOG2_V8F32>;
+ def amd_vrs8_logf : RuntimeLibcallImpl<LOG_V8F32>;
+ def amd_vrs8_powf : RuntimeLibcallImpl<POW_V8F32>;
+ def amd_vrs8_sincosf : RuntimeLibcallImpl<SINCOS_V8F32>;
+ def amd_vrs8_sinf : RuntimeLibcallImpl<SIN_V8F32>;
+ def amd_vrs8_tanf : RuntimeLibcallImpl<TAN_V8F32>;
+ def amd_vrs8_tanhf : RuntimeLibcallImpl<TANH_V8F32>;
+}