WebAssemblyRuntimeLibcallSignatures.cpp revision 320970
1// CodeGen/RuntimeLibcallSignatures.cpp - R.T. Lib. Call Signatures -*- C++ -*-- 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// 10/// \file 11/// \brief This file contains signature information for runtime libcalls. 12/// 13/// CodeGen uses external symbols, which it refers to by name. The WebAssembly 14/// target needs type information for all functions. This file contains a big 15/// table providing type signatures for all runtime library functions that LLVM 16/// uses. 17/// 18/// This is currently a fairly heavy-handed solution. 19/// 20//===----------------------------------------------------------------------===// 21 22#include "WebAssemblyRuntimeLibcallSignatures.h" 23#include "WebAssemblySubtarget.h" 24#include "llvm/CodeGen/RuntimeLibcalls.h" 25 26using namespace llvm; 27 28namespace { 29 30enum RuntimeLibcallSignature { 31 func, 32 f32_func_f32, 33 f32_func_f64, 34 f32_func_i32, 35 f32_func_i64, 36 f32_func_i16, 37 f64_func_f32, 38 f64_func_f64, 39 f64_func_i32, 40 f64_func_i64, 41 i32_func_f32, 42 i32_func_f64, 43 i32_func_i32, 44 i64_func_f32, 45 i64_func_f64, 46 i64_func_i64, 47 f32_func_f32_f32, 48 f32_func_f32_i32, 49 f32_func_i64_i64, 50 f64_func_f64_f64, 51 f64_func_f64_i32, 52 f64_func_i64_i64, 53 i16_func_f32, 54 i8_func_i8_i8, 55 func_f32_iPTR_iPTR, 56 func_f64_iPTR_iPTR, 57 i16_func_i16_i16, 58 i32_func_f32_f32, 59 i32_func_f64_f64, 60 i32_func_i32_i32, 61 i64_func_i64_i64, 62 i64_i64_func_f32, 63 i64_i64_func_f64, 64 i16_i16_func_i16_i16, 65 i32_i32_func_i32_i32, 66 i64_i64_func_i64_i64, 67 i64_i64_func_i64_i64_i64_i64, 68 i64_i64_i64_i64_func_i64_i64_i64_i64, 69 i64_i64_func_i64_i64_i32, 70 iPTR_func_iPTR_i32_iPTR, 71 iPTR_func_iPTR_iPTR_iPTR, 72 f32_func_f32_f32_f32, 73 f64_func_f64_f64_f64, 74 func_i64_i64_iPTR_iPTR, 75 func_iPTR_f32, 76 func_iPTR_f64, 77 func_iPTR_i32, 78 func_iPTR_i64, 79 func_iPTR_i64_i64, 80 func_iPTR_i64_i64_i64_i64, 81 func_iPTR_i64_i64_i64_i64_i64_i64, 82 i32_func_i64_i64, 83 i32_func_i64_i64_i64_i64, 84 unsupported 85}; 86 87} // end anonymous namespace 88 89static const RuntimeLibcallSignature 90RuntimeLibcallSignatures[RTLIB::UNKNOWN_LIBCALL] = { 91// Integer 92/* SHL_I16 */ i16_func_i16_i16, 93/* SHL_I32 */ i32_func_i32_i32, 94/* SHL_I64 */ i64_func_i64_i64, 95/* SHL_I128 */ i64_i64_func_i64_i64_i32, 96/* SRL_I16 */ i16_func_i16_i16, 97/* SRL_I32 */ i32_func_i32_i32, 98/* SRL_I64 */ i64_func_i64_i64, 99/* SRL_I128 */ i64_i64_func_i64_i64_i32, 100/* SRA_I16 */ i16_func_i16_i16, 101/* SRA_I32 */ i32_func_i32_i32, 102/* SRA_I64 */ i64_func_i64_i64, 103/* SRA_I128 */ i64_i64_func_i64_i64_i32, 104/* MUL_I8 */ i8_func_i8_i8, 105/* MUL_I16 */ i16_func_i16_i16, 106/* MUL_I32 */ i32_func_i32_i32, 107/* MUL_I64 */ i64_func_i64_i64, 108/* MUL_I128 */ i64_i64_func_i64_i64_i64_i64, 109/* MULO_I32 */ i32_func_i32_i32, 110/* MULO_I64 */ i64_func_i64_i64, 111/* MULO_I128 */ i64_i64_func_i64_i64_i64_i64, 112/* SDIV_I8 */ i8_func_i8_i8, 113/* SDIV_I16 */ i16_func_i16_i16, 114/* SDIV_I32 */ i32_func_i32_i32, 115/* SDIV_I64 */ i64_func_i64_i64, 116/* SDIV_I128 */ i64_i64_func_i64_i64_i64_i64, 117/* UDIV_I8 */ i8_func_i8_i8, 118/* UDIV_I16 */ i16_func_i16_i16, 119/* UDIV_I32 */ i32_func_i32_i32, 120/* UDIV_I64 */ i64_func_i64_i64, 121/* UDIV_I128 */ i64_i64_func_i64_i64_i64_i64, 122/* SREM_I8 */ i8_func_i8_i8, 123/* SREM_I16 */ i16_func_i16_i16, 124/* SREM_I32 */ i32_func_i32_i32, 125/* SREM_I64 */ i64_func_i64_i64, 126/* SREM_I128 */ i64_i64_func_i64_i64_i64_i64, 127/* UREM_I8 */ i8_func_i8_i8, 128/* UREM_I16 */ i16_func_i16_i16, 129/* UREM_I32 */ i32_func_i32_i32, 130/* UREM_I64 */ i64_func_i64_i64, 131/* UREM_I128 */ i64_i64_func_i64_i64_i64_i64, 132/* SDIVREM_I8 */ i8_func_i8_i8, 133/* SDIVREM_I16 */ i16_i16_func_i16_i16, 134/* SDIVREM_I32 */ i32_i32_func_i32_i32, 135/* SDIVREM_I64 */ i64_func_i64_i64, 136/* SDIVREM_I128 */ i64_i64_i64_i64_func_i64_i64_i64_i64, 137/* UDIVREM_I8 */ i8_func_i8_i8, 138/* UDIVREM_I16 */ i16_i16_func_i16_i16, 139/* UDIVREM_I32 */ i32_i32_func_i32_i32, 140/* UDIVREM_I64 */ i64_i64_func_i64_i64, 141/* UDIVREM_I128 */ i64_i64_i64_i64_func_i64_i64_i64_i64, 142/* NEG_I32 */ i32_func_i32, 143/* NEG_I64 */ i64_func_i64, 144 145// FLOATING POINT 146/* ADD_F32 */ f32_func_f32_f32, 147/* ADD_F64 */ f64_func_f64_f64, 148/* ADD_F80 */ unsupported, 149/* ADD_F128 */ func_iPTR_i64_i64_i64_i64, 150/* ADD_PPCF128 */ unsupported, 151/* SUB_F32 */ f32_func_f32_f32, 152/* SUB_F64 */ f64_func_f64_f64, 153/* SUB_F80 */ unsupported, 154/* SUB_F128 */ func_iPTR_i64_i64_i64_i64, 155/* SUB_PPCF128 */ unsupported, 156/* MUL_F32 */ f32_func_f32_f32, 157/* MUL_F64 */ f64_func_f64_f64, 158/* MUL_F80 */ unsupported, 159/* MUL_F128 */ func_iPTR_i64_i64_i64_i64, 160/* MUL_PPCF128 */ unsupported, 161/* DIV_F32 */ f32_func_f32_f32, 162/* DIV_F64 */ f64_func_f64_f64, 163/* DIV_F80 */ unsupported, 164/* DIV_F128 */ func_iPTR_i64_i64_i64_i64, 165/* DIV_PPCF128 */ unsupported, 166/* REM_F32 */ f32_func_f32_f32, 167/* REM_F64 */ f64_func_f64_f64, 168/* REM_F80 */ unsupported, 169/* REM_F128 */ func_iPTR_i64_i64_i64_i64, 170/* REM_PPCF128 */ unsupported, 171/* FMA_F32 */ f32_func_f32_f32_f32, 172/* FMA_F64 */ f64_func_f64_f64_f64, 173/* FMA_F80 */ unsupported, 174/* FMA_F128 */ func_iPTR_i64_i64_i64_i64_i64_i64, 175/* FMA_PPCF128 */ unsupported, 176/* POWI_F32 */ f32_func_f32_i32, 177/* POWI_F64 */ f64_func_f64_i32, 178/* POWI_F80 */ unsupported, 179/* POWI_F128 */ func_iPTR_i64_i64_i64_i64, 180/* POWI_PPCF128 */ unsupported, 181/* SQRT_F32 */ f32_func_f32, 182/* SQRT_F64 */ f64_func_f64, 183/* SQRT_F80 */ unsupported, 184/* SQRT_F128 */ func_iPTR_i64_i64, 185/* SQRT_PPCF128 */ unsupported, 186/* LOG_F32 */ f32_func_f32, 187/* LOG_F64 */ f64_func_f64, 188/* LOG_F80 */ unsupported, 189/* LOG_F128 */ func_iPTR_i64_i64, 190/* LOG_PPCF128 */ unsupported, 191/* LOG2_F32 */ f32_func_f32, 192/* LOG2_F64 */ f64_func_f64, 193/* LOG2_F80 */ unsupported, 194/* LOG2_F128 */ func_iPTR_i64_i64, 195/* LOG2_PPCF128 */ unsupported, 196/* LOG10_F32 */ f32_func_f32, 197/* LOG10_F64 */ f64_func_f64, 198/* LOG10_F80 */ unsupported, 199/* LOG10_F128 */ func_iPTR_i64_i64, 200/* LOG10_PPCF128 */ unsupported, 201/* EXP_F32 */ f32_func_f32, 202/* EXP_F64 */ f64_func_f64, 203/* EXP_F80 */ unsupported, 204/* EXP_F128 */ func_iPTR_i64_i64, 205/* EXP_PPCF128 */ unsupported, 206/* EXP2_F32 */ f32_func_f32, 207/* EXP2_F64 */ f64_func_f64, 208/* EXP2_F80 */ unsupported, 209/* EXP2_F128 */ func_iPTR_i64_i64, 210/* EXP2_PPCF128 */ unsupported, 211/* SIN_F32 */ f32_func_f32, 212/* SIN_F64 */ f64_func_f64, 213/* SIN_F80 */ unsupported, 214/* SIN_F128 */ func_iPTR_i64_i64, 215/* SIN_PPCF128 */ unsupported, 216/* COS_F32 */ f32_func_f32, 217/* COS_F64 */ f64_func_f64, 218/* COS_F80 */ unsupported, 219/* COS_F128 */ func_iPTR_i64_i64, 220/* COS_PPCF128 */ unsupported, 221/* SINCOS_F32 */ func_f32_iPTR_iPTR, 222/* SINCOS_F64 */ func_f64_iPTR_iPTR, 223/* SINCOS_F80 */ unsupported, 224/* SINCOS_F128 */ func_i64_i64_iPTR_iPTR, 225/* SINCOS_PPCF128 */ unsupported, 226/* POW_F32 */ f32_func_f32_f32, 227/* POW_F64 */ f64_func_f64_f64, 228/* POW_F80 */ unsupported, 229/* POW_F128 */ func_iPTR_i64_i64_i64_i64, 230/* POW_PPCF128 */ unsupported, 231/* CEIL_F32 */ f32_func_f32, 232/* CEIL_F64 */ f64_func_f64, 233/* CEIL_F80 */ unsupported, 234/* CEIL_F128 */ func_iPTR_i64_i64, 235/* CEIL_PPCF128 */ unsupported, 236/* TRUNC_F32 */ f32_func_f32, 237/* TRUNC_F64 */ f64_func_f64, 238/* TRUNC_F80 */ unsupported, 239/* TRUNC_F128 */ func_iPTR_i64_i64, 240/* TRUNC_PPCF128 */ unsupported, 241/* RINT_F32 */ f32_func_f32, 242/* RINT_F64 */ f64_func_f64, 243/* RINT_F80 */ unsupported, 244/* RINT_F128 */ func_iPTR_i64_i64, 245/* RINT_PPCF128 */ unsupported, 246/* NEARBYINT_F32 */ f32_func_f32, 247/* NEARBYINT_F64 */ f64_func_f64, 248/* NEARBYINT_F80 */ unsupported, 249/* NEARBYINT_F128 */ func_iPTR_i64_i64, 250/* NEARBYINT_PPCF128 */ unsupported, 251/* ROUND_F32 */ f32_func_f32, 252/* ROUND_F64 */ f64_func_f64, 253/* ROUND_F80 */ unsupported, 254/* ROUND_F128 */ func_iPTR_i64_i64, 255/* ROUND_PPCF128 */ unsupported, 256/* FLOOR_F32 */ f32_func_f32, 257/* FLOOR_F64 */ f64_func_f64, 258/* FLOOR_F80 */ unsupported, 259/* FLOOR_F128 */ func_iPTR_i64_i64, 260/* FLOOR_PPCF128 */ unsupported, 261/* COPYSIGN_F32 */ f32_func_f32_f32, 262/* COPYSIGN_F64 */ f64_func_f64_f64, 263/* COPYSIGN_F80 */ unsupported, 264/* COPYSIGN_F128 */ func_iPTR_i64_i64_i64_i64, 265/* COPYSIGN_PPCF128 */ unsupported, 266/* FMIN_F32 */ f32_func_f32_f32, 267/* FMIN_F64 */ f64_func_f64_f64, 268/* FMIN_F80 */ unsupported, 269/* FMIN_F128 */ func_iPTR_i64_i64_i64_i64, 270/* FMIN_PPCF128 */ unsupported, 271/* FMAX_F32 */ f32_func_f32_f32, 272/* FMAX_F64 */ f64_func_f64_f64, 273/* FMAX_F80 */ unsupported, 274/* FMAX_F128 */ func_iPTR_i64_i64_i64_i64, 275/* FMAX_PPCF128 */ unsupported, 276 277// CONVERSION 278/* FPEXT_F32_PPCF128 */ unsupported, 279/* FPEXT_F64_PPCF128 */ unsupported, 280/* FPEXT_F64_F128 */ func_iPTR_f64, 281/* FPEXT_F32_F128 */ func_iPTR_f32, 282/* FPEXT_F32_F64 */ f64_func_f32, 283/* FPEXT_F16_F32 */ f32_func_i16, 284/* FPROUND_F32_F16 */ i16_func_f32, 285/* FPROUND_F64_F16 */ unsupported, 286/* FPROUND_F80_F16 */ unsupported, 287/* FPROUND_F128_F16 */ unsupported, 288/* FPROUND_PPCF128_F16 */ unsupported, 289/* FPROUND_F64_F32 */ f32_func_f64, 290/* FPROUND_F80_F32 */ unsupported, 291/* FPROUND_F128_F32 */ f32_func_i64_i64, 292/* FPROUND_PPCF128_F32 */ unsupported, 293/* FPROUND_F80_F64 */ unsupported, 294/* FPROUND_F128_F64 */ f64_func_i64_i64, 295/* FPROUND_PPCF128_F64 */ unsupported, 296/* FPTOSINT_F32_I32 */ i32_func_f32, 297/* FPTOSINT_F32_I64 */ i64_func_f32, 298/* FPTOSINT_F32_I128 */ i64_i64_func_f32, 299/* FPTOSINT_F64_I32 */ i32_func_f64, 300/* FPTOSINT_F64_I64 */ i64_func_f64, 301/* FPTOSINT_F64_I128 */ i64_i64_func_f64, 302/* FPTOSINT_F80_I32 */ unsupported, 303/* FPTOSINT_F80_I64 */ unsupported, 304/* FPTOSINT_F80_I128 */ unsupported, 305/* FPTOSINT_F128_I32 */ i32_func_i64_i64, 306/* FPTOSINT_F128_I64 */ i64_func_i64_i64, 307/* FPTOSINT_F128_I128 */ i64_i64_func_i64_i64, 308/* FPTOSINT_PPCF128_I32 */ unsupported, 309/* FPTOSINT_PPCF128_I64 */ unsupported, 310/* FPTOSINT_PPCF128_I128 */ unsupported, 311/* FPTOUINT_F32_I32 */ i32_func_f32, 312/* FPTOUINT_F32_I64 */ i64_func_f32, 313/* FPTOUINT_F32_I128 */ i64_i64_func_f32, 314/* FPTOUINT_F64_I32 */ i32_func_f64, 315/* FPTOUINT_F64_I64 */ i64_func_f64, 316/* FPTOUINT_F64_I128 */ i64_i64_func_f64, 317/* FPTOUINT_F80_I32 */ unsupported, 318/* FPTOUINT_F80_I64 */ unsupported, 319/* FPTOUINT_F80_I128 */ unsupported, 320/* FPTOUINT_F128_I32 */ i32_func_i64_i64, 321/* FPTOUINT_F128_I64 */ i64_func_i64_i64, 322/* FPTOUINT_F128_I128 */ i64_i64_func_i64_i64, 323/* FPTOUINT_PPCF128_I32 */ unsupported, 324/* FPTOUINT_PPCF128_I64 */ unsupported, 325/* FPTOUINT_PPCF128_I128 */ unsupported, 326/* SINTTOFP_I32_F32 */ f32_func_i32, 327/* SINTTOFP_I32_F64 */ f64_func_i32, 328/* SINTTOFP_I32_F80 */ unsupported, 329/* SINTTOFP_I32_F128 */ func_iPTR_i32, 330/* SINTTOFP_I32_PPCF128 */ unsupported, 331/* SINTTOFP_I64_F32 */ f32_func_i64, 332/* SINTTOFP_I64_F64 */ f64_func_i64, 333/* SINTTOFP_I64_F80 */ unsupported, 334/* SINTTOFP_I64_F128 */ func_iPTR_i64, 335/* SINTTOFP_I64_PPCF128 */ unsupported, 336/* SINTTOFP_I128_F32 */ f32_func_i64_i64, 337/* SINTTOFP_I128_F64 */ f64_func_i64_i64, 338/* SINTTOFP_I128_F80 */ unsupported, 339/* SINTTOFP_I128_F128 */ func_iPTR_i64_i64, 340/* SINTTOFP_I128_PPCF128 */ unsupported, 341/* UINTTOFP_I32_F32 */ f32_func_i32, 342/* UINTTOFP_I32_F64 */ f64_func_i64, 343/* UINTTOFP_I32_F80 */ unsupported, 344/* UINTTOFP_I32_F128 */ func_iPTR_i32, 345/* UINTTOFP_I32_PPCF128 */ unsupported, 346/* UINTTOFP_I64_F32 */ f32_func_i64, 347/* UINTTOFP_I64_F64 */ f64_func_i64, 348/* UINTTOFP_I64_F80 */ unsupported, 349/* UINTTOFP_I64_F128 */ func_iPTR_i64, 350/* UINTTOFP_I64_PPCF128 */ unsupported, 351/* UINTTOFP_I128_F32 */ f32_func_i64_i64, 352/* UINTTOFP_I128_F64 */ f64_func_i64_i64, 353/* UINTTOFP_I128_F80 */ unsupported, 354/* UINTTOFP_I128_F128 */ func_iPTR_i64_i64, 355/* UINTTOFP_I128_PPCF128 */ unsupported, 356 357// COMPARISON 358/* OEQ_F32 */ i32_func_f32_f32, 359/* OEQ_F64 */ i32_func_f64_f64, 360/* OEQ_F128 */ i32_func_i64_i64_i64_i64, 361/* OEQ_PPCF128 */ unsupported, 362/* UNE_F32 */ i32_func_f32_f32, 363/* UNE_F64 */ i32_func_f64_f64, 364/* UNE_F128 */ i32_func_i64_i64_i64_i64, 365/* UNE_PPCF128 */ unsupported, 366/* OGE_F32 */ i32_func_f32_f32, 367/* OGE_F64 */ i32_func_f64_f64, 368/* OGE_F128 */ i32_func_i64_i64_i64_i64, 369/* OGE_PPCF128 */ unsupported, 370/* OLT_F32 */ i32_func_f32_f32, 371/* OLT_F64 */ i32_func_f64_f64, 372/* OLT_F128 */ i32_func_i64_i64_i64_i64, 373/* OLT_PPCF128 */ unsupported, 374/* OLE_F32 */ i32_func_f32_f32, 375/* OLE_F64 */ i32_func_f64_f64, 376/* OLE_F128 */ i32_func_i64_i64_i64_i64, 377/* OLE_PPCF128 */ unsupported, 378/* OGT_F32 */ i32_func_f32_f32, 379/* OGT_F64 */ i32_func_f64_f64, 380/* OGT_F128 */ i32_func_i64_i64_i64_i64, 381/* OGT_PPCF128 */ unsupported, 382/* UO_F32 */ i32_func_f32_f32, 383/* UO_F64 */ i32_func_f64_f64, 384/* UO_F128 */ i32_func_i64_i64_i64_i64, 385/* UO_PPCF128 */ unsupported, 386/* O_F32 */ i32_func_f32_f32, 387/* O_F64 */ i32_func_f64_f64, 388/* O_F128 */ i32_func_i64_i64_i64_i64, 389/* O_PPCF128 */ unsupported, 390 391// MEMORY 392/* MEMCPY */ iPTR_func_iPTR_iPTR_iPTR, 393/* MEMSET */ iPTR_func_iPTR_i32_iPTR, 394/* MEMMOVE */ iPTR_func_iPTR_iPTR_iPTR, 395 396// ELEMENT-WISE ATOMIC MEMORY 397/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_1 */ unsupported, 398/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_2 */ unsupported, 399/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_4 */ unsupported, 400/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_8 */ unsupported, 401/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_16 */ unsupported, 402/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_1 */ unsupported, 403/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_2 */ unsupported, 404/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_4 */ unsupported, 405/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_8 */ unsupported, 406/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_16 */ unsupported, 407 408/* MEMSET_ELEMENT_UNORDERED_ATOMIC_1 */ unsupported, 409/* MEMSET_ELEMENT_UNORDERED_ATOMIC_2 */ unsupported, 410/* MEMSET_ELEMENT_UNORDERED_ATOMIC_4 */ unsupported, 411/* MEMSET_ELEMENT_UNORDERED_ATOMIC_8 */ unsupported, 412/* MEMSET_ELEMENT_UNORDERED_ATOMIC_16 */ unsupported, 413 414// EXCEPTION HANDLING 415/* UNWIND_RESUME */ unsupported, 416 417// Note: there's two sets of atomics libcalls; see 418// <http://llvm.org/docs/Atomics.html> for more info on the 419// difference between them. 420 421// Atomic '__sync_*' libcalls. 422/* SYNC_VAL_COMPARE_AND_SWAP_1 */ unsupported, 423/* SYNC_VAL_COMPARE_AND_SWAP_2 */ unsupported, 424/* SYNC_VAL_COMPARE_AND_SWAP_4 */ unsupported, 425/* SYNC_VAL_COMPARE_AND_SWAP_8 */ unsupported, 426/* SYNC_VAL_COMPARE_AND_SWAP_16 */ unsupported, 427/* SYNC_LOCK_TEST_AND_SET_1 */ unsupported, 428/* SYNC_LOCK_TEST_AND_SET_2 */ unsupported, 429/* SYNC_LOCK_TEST_AND_SET_4 */ unsupported, 430/* SYNC_LOCK_TEST_AND_SET_8 */ unsupported, 431/* SYNC_LOCK_TEST_AND_SET_16 */ unsupported, 432/* SYNC_FETCH_AND_ADD_1 */ unsupported, 433/* SYNC_FETCH_AND_ADD_2 */ unsupported, 434/* SYNC_FETCH_AND_ADD_4 */ unsupported, 435/* SYNC_FETCH_AND_ADD_8 */ unsupported, 436/* SYNC_FETCH_AND_ADD_16 */ unsupported, 437/* SYNC_FETCH_AND_SUB_1 */ unsupported, 438/* SYNC_FETCH_AND_SUB_2 */ unsupported, 439/* SYNC_FETCH_AND_SUB_4 */ unsupported, 440/* SYNC_FETCH_AND_SUB_8 */ unsupported, 441/* SYNC_FETCH_AND_SUB_16 */ unsupported, 442/* SYNC_FETCH_AND_AND_1 */ unsupported, 443/* SYNC_FETCH_AND_AND_2 */ unsupported, 444/* SYNC_FETCH_AND_AND_4 */ unsupported, 445/* SYNC_FETCH_AND_AND_8 */ unsupported, 446/* SYNC_FETCH_AND_AND_16 */ unsupported, 447/* SYNC_FETCH_AND_OR_1 */ unsupported, 448/* SYNC_FETCH_AND_OR_2 */ unsupported, 449/* SYNC_FETCH_AND_OR_4 */ unsupported, 450/* SYNC_FETCH_AND_OR_8 */ unsupported, 451/* SYNC_FETCH_AND_OR_16 */ unsupported, 452/* SYNC_FETCH_AND_XOR_1 */ unsupported, 453/* SYNC_FETCH_AND_XOR_2 */ unsupported, 454/* SYNC_FETCH_AND_XOR_4 */ unsupported, 455/* SYNC_FETCH_AND_XOR_8 */ unsupported, 456/* SYNC_FETCH_AND_XOR_16 */ unsupported, 457/* SYNC_FETCH_AND_NAND_1 */ unsupported, 458/* SYNC_FETCH_AND_NAND_2 */ unsupported, 459/* SYNC_FETCH_AND_NAND_4 */ unsupported, 460/* SYNC_FETCH_AND_NAND_8 */ unsupported, 461/* SYNC_FETCH_AND_NAND_16 */ unsupported, 462/* SYNC_FETCH_AND_MAX_1 */ unsupported, 463/* SYNC_FETCH_AND_MAX_2 */ unsupported, 464/* SYNC_FETCH_AND_MAX_4 */ unsupported, 465/* SYNC_FETCH_AND_MAX_8 */ unsupported, 466/* SYNC_FETCH_AND_MAX_16 */ unsupported, 467/* SYNC_FETCH_AND_UMAX_1 */ unsupported, 468/* SYNC_FETCH_AND_UMAX_2 */ unsupported, 469/* SYNC_FETCH_AND_UMAX_4 */ unsupported, 470/* SYNC_FETCH_AND_UMAX_8 */ unsupported, 471/* SYNC_FETCH_AND_UMAX_16 */ unsupported, 472/* SYNC_FETCH_AND_MIN_1 */ unsupported, 473/* SYNC_FETCH_AND_MIN_2 */ unsupported, 474/* SYNC_FETCH_AND_MIN_4 */ unsupported, 475/* SYNC_FETCH_AND_MIN_8 */ unsupported, 476/* SYNC_FETCH_AND_MIN_16 */ unsupported, 477/* SYNC_FETCH_AND_UMIN_1 */ unsupported, 478/* SYNC_FETCH_AND_UMIN_2 */ unsupported, 479/* SYNC_FETCH_AND_UMIN_4 */ unsupported, 480/* SYNC_FETCH_AND_UMIN_8 */ unsupported, 481/* SYNC_FETCH_AND_UMIN_16 */ unsupported, 482 483// Atomic '__atomic_*' libcalls. 484/* ATOMIC_LOAD */ unsupported, 485/* ATOMIC_LOAD_1 */ unsupported, 486/* ATOMIC_LOAD_2 */ unsupported, 487/* ATOMIC_LOAD_4 */ unsupported, 488/* ATOMIC_LOAD_8 */ unsupported, 489/* ATOMIC_LOAD_16 */ unsupported, 490 491/* ATOMIC_STORE */ unsupported, 492/* ATOMIC_STORE_1 */ unsupported, 493/* ATOMIC_STORE_2 */ unsupported, 494/* ATOMIC_STORE_4 */ unsupported, 495/* ATOMIC_STORE_8 */ unsupported, 496/* ATOMIC_STORE_16 */ unsupported, 497 498/* ATOMIC_EXCHANGE */ unsupported, 499/* ATOMIC_EXCHANGE_1 */ unsupported, 500/* ATOMIC_EXCHANGE_2 */ unsupported, 501/* ATOMIC_EXCHANGE_4 */ unsupported, 502/* ATOMIC_EXCHANGE_8 */ unsupported, 503/* ATOMIC_EXCHANGE_16 */ unsupported, 504 505/* ATOMIC_COMPARE_EXCHANGE */ unsupported, 506/* ATOMIC_COMPARE_EXCHANGE_1 */ unsupported, 507/* ATOMIC_COMPARE_EXCHANGE_2 */ unsupported, 508/* ATOMIC_COMPARE_EXCHANGE_4 */ unsupported, 509/* ATOMIC_COMPARE_EXCHANGE_8 */ unsupported, 510/* ATOMIC_COMPARE_EXCHANGE_16 */ unsupported, 511 512/* ATOMIC_FETCH_ADD_1 */ unsupported, 513/* ATOMIC_FETCH_ADD_2 */ unsupported, 514/* ATOMIC_FETCH_ADD_4 */ unsupported, 515/* ATOMIC_FETCH_ADD_8 */ unsupported, 516/* ATOMIC_FETCH_ADD_16 */ unsupported, 517 518/* ATOMIC_FETCH_SUB_1 */ unsupported, 519/* ATOMIC_FETCH_SUB_2 */ unsupported, 520/* ATOMIC_FETCH_SUB_4 */ unsupported, 521/* ATOMIC_FETCH_SUB_8 */ unsupported, 522/* ATOMIC_FETCH_SUB_16 */ unsupported, 523 524/* ATOMIC_FETCH_AND_1 */ unsupported, 525/* ATOMIC_FETCH_AND_2 */ unsupported, 526/* ATOMIC_FETCH_AND_4 */ unsupported, 527/* ATOMIC_FETCH_AND_8 */ unsupported, 528/* ATOMIC_FETCH_AND_16 */ unsupported, 529 530/* ATOMIC_FETCH_OR_1 */ unsupported, 531/* ATOMIC_FETCH_OR_2 */ unsupported, 532/* ATOMIC_FETCH_OR_4 */ unsupported, 533/* ATOMIC_FETCH_OR_8 */ unsupported, 534/* ATOMIC_FETCH_OR_16 */ unsupported, 535 536/* ATOMIC_FETCH_XOR_1 */ unsupported, 537/* ATOMIC_FETCH_XOR_2 */ unsupported, 538/* ATOMIC_FETCH_XOR_4 */ unsupported, 539/* ATOMIC_FETCH_XOR_8 */ unsupported, 540/* ATOMIC_FETCH_XOR_16 */ unsupported, 541 542/* ATOMIC_FETCH_NAND_1 */ unsupported, 543/* ATOMIC_FETCH_NAND_2 */ unsupported, 544/* ATOMIC_FETCH_NAND_4 */ unsupported, 545/* ATOMIC_FETCH_NAND_8 */ unsupported, 546/* ATOMIC_FETCH_NAND_16 */ unsupported, 547 548// Stack Protector Fail. 549/* STACKPROTECTOR_CHECK_FAIL */ func, 550 551// Deoptimization. 552/* DEOPTIMIZE */ unsupported, 553 554}; 555 556static const char * 557RuntimeLibcallNames[RTLIB::UNKNOWN_LIBCALL] = { 558/* SHL_I16 */ "__ashlhi3", 559/* SHL_I32 */ "__ashlsi3", 560/* SHL_I64 */ "__ashldi3", 561/* SHL_I128 */ "__ashlti3", 562/* SRL_I16 */ "__lshrhi3", 563/* SRL_I32 */ "__lshrsi3", 564/* SRL_I64 */ "__lshrdi3", 565/* SRL_I128 */ "__lshrti3", 566/* SRA_I16 */ "__ashrhi3", 567/* SRA_I32 */ "__ashrsi3", 568/* SRA_I64 */ "__ashrdi3", 569/* SRA_I128 */ "__ashrti3", 570/* MUL_I8 */ "__mulqi3", 571/* MUL_I16 */ "__mulhi3", 572/* MUL_I32 */ "__mulsi3", 573/* MUL_I64 */ "__muldi3", 574/* MUL_I128 */ "__multi3", 575/* MULO_I32 */ "__mulosi4", 576/* MULO_I64 */ "__mulodi4", 577/* MULO_I128 */ "__muloti4", 578/* SDIV_I8 */ "__divqi3", 579/* SDIV_I16 */ "__divhi3", 580/* SDIV_I32 */ "__divsi3", 581/* SDIV_I64 */ "__divdi3", 582/* SDIV_I128 */ "__divti3", 583/* UDIV_I8 */ "__udivqi3", 584/* UDIV_I16 */ "__udivhi3", 585/* UDIV_I32 */ "__udivsi3", 586/* UDIV_I64 */ "__udivdi3", 587/* UDIV_I128 */ "__udivti3", 588/* SREM_I8 */ "__modqi3", 589/* SREM_I16 */ "__modhi3", 590/* SREM_I32 */ "__modsi3", 591/* SREM_I64 */ "__moddi3", 592/* SREM_I128 */ "__modti3", 593/* UREM_I8 */ "__umodqi3", 594/* UREM_I16 */ "__umodhi3", 595/* UREM_I32 */ "__umodsi3", 596/* UREM_I64 */ "__umoddi3", 597/* UREM_I128 */ "__umodti3", 598/* SDIVREM_I8 */ nullptr, 599/* SDIVREM_I16 */ nullptr, 600/* SDIVREM_I32 */ nullptr, 601/* SDIVREM_I64 */ nullptr, 602/* SDIVREM_I128 */ nullptr, 603/* UDIVREM_I8 */ nullptr, 604/* UDIVREM_I16 */ nullptr, 605/* UDIVREM_I32 */ nullptr, 606/* UDIVREM_I64 */ nullptr, 607/* UDIVREM_I128 */ nullptr, 608/* NEG_I32 */ "__negsi2", 609/* NEG_I64 */ "__negdi2", 610/* ADD_F32 */ "__addsf3", 611/* ADD_F64 */ "__adddf3", 612/* ADD_F80 */ nullptr, 613/* ADD_F128 */ "__addtf3", 614/* ADD_PPCF128 */ nullptr, 615/* SUB_F32 */ "__subsf3", 616/* SUB_F64 */ "__subdf3", 617/* SUB_F80 */ nullptr, 618/* SUB_F128 */ "__subtf3", 619/* SUB_PPCF128 */ nullptr, 620/* MUL_F32 */ "__mulsf3", 621/* MUL_F64 */ "__muldf3", 622/* MUL_F80 */ nullptr, 623/* MUL_F128 */ "__multf3", 624/* MUL_PPCF128 */ nullptr, 625/* DIV_F32 */ "__divsf3", 626/* DIV_F64 */ "__divdf3", 627/* DIV_F80 */ nullptr, 628/* DIV_F128 */ "__divtf3", 629/* DIV_PPCF128 */ nullptr, 630/* REM_F32 */ "fmodf", 631/* REM_F64 */ "fmod", 632/* REM_F80 */ nullptr, 633/* REM_F128 */ "fmodl", 634/* REM_PPCF128 */ nullptr, 635/* FMA_F32 */ "fmaf", 636/* FMA_F64 */ "fma", 637/* FMA_F80 */ nullptr, 638/* FMA_F128 */ "fmal", 639/* FMA_PPCF128 */ nullptr, 640/* POWI_F32 */ "__powisf2", 641/* POWI_F64 */ "__powidf2", 642/* POWI_F80 */ nullptr, 643/* POWI_F128 */ "__powitf2", 644/* POWI_PPCF128 */ nullptr, 645/* SQRT_F32 */ "sqrtf", 646/* SQRT_F64 */ "sqrt", 647/* SQRT_F80 */ nullptr, 648/* SQRT_F128 */ "sqrtl", 649/* SQRT_PPCF128 */ nullptr, 650/* LOG_F32 */ "logf", 651/* LOG_F64 */ "log", 652/* LOG_F80 */ nullptr, 653/* LOG_F128 */ "logl", 654/* LOG_PPCF128 */ nullptr, 655/* LOG2_F32 */ "log2f", 656/* LOG2_F64 */ "log2", 657/* LOG2_F80 */ nullptr, 658/* LOG2_F128 */ "log2l", 659/* LOG2_PPCF128 */ nullptr, 660/* LOG10_F32 */ "log10f", 661/* LOG10_F64 */ "log10", 662/* LOG10_F80 */ nullptr, 663/* LOG10_F128 */ "log10l", 664/* LOG10_PPCF128 */ nullptr, 665/* EXP_F32 */ "expf", 666/* EXP_F64 */ "exp", 667/* EXP_F80 */ nullptr, 668/* EXP_F128 */ "expl", 669/* EXP_PPCF128 */ nullptr, 670/* EXP2_F32 */ "exp2f", 671/* EXP2_F64 */ "exp2", 672/* EXP2_F80 */ nullptr, 673/* EXP2_F128 */ "exp2l", 674/* EXP2_PPCF128 */ nullptr, 675/* SIN_F32 */ "sinf", 676/* SIN_F64 */ "sin", 677/* SIN_F80 */ nullptr, 678/* SIN_F128 */ "sinl", 679/* SIN_PPCF128 */ nullptr, 680/* COS_F32 */ "cosf", 681/* COS_F64 */ "cos", 682/* COS_F80 */ nullptr, 683/* COS_F128 */ "cosl", 684/* COS_PPCF128 */ nullptr, 685/* SINCOS_F32 */ "sincosf", 686/* SINCOS_F64 */ "sincos", 687/* SINCOS_F80 */ nullptr, 688/* SINCOS_F128 */ "sincosl", 689/* SINCOS_PPCF128 */ nullptr, 690/* POW_F32 */ "powf", 691/* POW_F64 */ "pow", 692/* POW_F80 */ nullptr, 693/* POW_F128 */ "powl", 694/* POW_PPCF128 */ nullptr, 695/* CEIL_F32 */ "ceilf", 696/* CEIL_F64 */ "ceil", 697/* CEIL_F80 */ nullptr, 698/* CEIL_F128 */ "ceill", 699/* CEIL_PPCF128 */ nullptr, 700/* TRUNC_F32 */ "truncf", 701/* TRUNC_F64 */ "trunc", 702/* TRUNC_F80 */ nullptr, 703/* TRUNC_F128 */ "truncl", 704/* TRUNC_PPCF128 */ nullptr, 705/* RINT_F32 */ "rintf", 706/* RINT_F64 */ "rint", 707/* RINT_F80 */ nullptr, 708/* RINT_F128 */ "rintl", 709/* RINT_PPCF128 */ nullptr, 710/* NEARBYINT_F32 */ "nearbyintf", 711/* NEARBYINT_F64 */ "nearbyint", 712/* NEARBYINT_F80 */ nullptr, 713/* NEARBYINT_F128 */ "nearbyintl", 714/* NEARBYINT_PPCF128 */ nullptr, 715/* ROUND_F32 */ "roundf", 716/* ROUND_F64 */ "round", 717/* ROUND_F80 */ nullptr, 718/* ROUND_F128 */ "roundl", 719/* ROUND_PPCF128 */ nullptr, 720/* FLOOR_F32 */ "floorf", 721/* FLOOR_F64 */ "floor", 722/* FLOOR_F80 */ nullptr, 723/* FLOOR_F128 */ "floorl", 724/* FLOOR_PPCF128 */ nullptr, 725/* COPYSIGN_F32 */ "copysignf", 726/* COPYSIGN_F64 */ "copysign", 727/* COPYSIGN_F80 */ nullptr, 728/* COPYSIGN_F128 */ "copysignl", 729/* COPYSIGN_PPCF128 */ nullptr, 730/* FMIN_F32 */ "fminf", 731/* FMIN_F64 */ "fmin", 732/* FMIN_F80 */ nullptr, 733/* FMIN_F128 */ "fminl", 734/* FMIN_PPCF128 */ nullptr, 735/* FMAX_F32 */ "fmaxf", 736/* FMAX_F64 */ "fmax", 737/* FMAX_F80 */ nullptr, 738/* FMAX_F128 */ "fmaxl", 739/* FMAX_PPCF128 */ nullptr, 740/* FPEXT_F32_PPCF128 */ nullptr, 741/* FPEXT_F64_PPCF128 */ nullptr, 742/* FPEXT_F64_F128 */ "__extenddftf2", 743/* FPEXT_F32_F128 */ "__extendsftf2", 744/* FPEXT_F32_F64 */ "__extendsfdf2", 745/* FPEXT_F16_F32 */ "__gnu_h2f_ieee", 746/* FPROUND_F32_F16 */ "__gnu_f2h_ieee", 747/* FPROUND_F64_F16 */ nullptr, 748/* FPROUND_F80_F16 */ nullptr, 749/* FPROUND_F128_F16 */ nullptr, 750/* FPROUND_PPCF128_F16 */ nullptr, 751/* FPROUND_F64_F32 */ "__truncdfsf2", 752/* FPROUND_F80_F32 */ "__truncxfsf2", 753/* FPROUND_F128_F32 */ "__trunctfsf2", 754/* FPROUND_PPCF128_F32 */ nullptr, 755/* FPROUND_F80_F64 */ "__truncxfdf2", 756/* FPROUND_F128_F64 */ "__trunctfdf2", 757/* FPROUND_PPCF128_F64 */ nullptr, 758/* FPTOSINT_F32_I32 */ "__fixsfsi", 759/* FPTOSINT_F32_I64 */ "__fixsfdi", 760/* FPTOSINT_F32_I128 */ "__fixsfti", 761/* FPTOSINT_F64_I32 */ "__fixdfsi", 762/* FPTOSINT_F64_I64 */ "__fixdfdi", 763/* FPTOSINT_F64_I128 */ "__fixdfti", 764/* FPTOSINT_F80_I32 */ "__fixxfsi", 765/* FPTOSINT_F80_I64 */ "__fixxfdi", 766/* FPTOSINT_F80_I128 */ "__fixxfti", 767/* FPTOSINT_F128_I32 */ "__fixtfsi", 768/* FPTOSINT_F128_I64 */ "__fixtfdi", 769/* FPTOSINT_F128_I128 */ "__fixtfti", 770/* FPTOSINT_PPCF128_I32 */ nullptr, 771/* FPTOSINT_PPCF128_I64 */ nullptr, 772/* FPTOSINT_PPCF128_I128 */ nullptr, 773/* FPTOUINT_F32_I32 */ "__fixunssfsi", 774/* FPTOUINT_F32_I64 */ "__fixunssfdi", 775/* FPTOUINT_F32_I128 */ "__fixunssfti", 776/* FPTOUINT_F64_I32 */ "__fixunsdfsi", 777/* FPTOUINT_F64_I64 */ "__fixunsdfdi", 778/* FPTOUINT_F64_I128 */ "__fixunsdfti", 779/* FPTOUINT_F80_I32 */ "__fixunsxfsi", 780/* FPTOUINT_F80_I64 */ "__fixunsxfdi", 781/* FPTOUINT_F80_I128 */ "__fixunsxfti", 782/* FPTOUINT_F128_I32 */ "__fixunstfsi", 783/* FPTOUINT_F128_I64 */ "__fixunstfdi", 784/* FPTOUINT_F128_I128 */ "__fixunstfti", 785/* FPTOUINT_PPCF128_I32 */ nullptr, 786/* FPTOUINT_PPCF128_I64 */ nullptr, 787/* FPTOUINT_PPCF128_I128 */ nullptr, 788/* SINTTOFP_I32_F32 */ "__floatsisf", 789/* SINTTOFP_I32_F64 */ "__floatsidf", 790/* SINTTOFP_I32_F80 */ nullptr, 791/* SINTTOFP_I32_F128 */ "__floatsitf", 792/* SINTTOFP_I32_PPCF128 */ nullptr, 793/* SINTTOFP_I64_F32 */ "__floatdisf", 794/* SINTTOFP_I64_F64 */ "__floatdidf", 795/* SINTTOFP_I64_F80 */ nullptr, 796/* SINTTOFP_I64_F128 */ "__floatditf", 797/* SINTTOFP_I64_PPCF128 */ nullptr, 798/* SINTTOFP_I128_F32 */ "__floattisf", 799/* SINTTOFP_I128_F64 */ "__floattidf", 800/* SINTTOFP_I128_F80 */ nullptr, 801/* SINTTOFP_I128_F128 */ "__floattitf", 802/* SINTTOFP_I128_PPCF128 */ nullptr, 803/* UINTTOFP_I32_F32 */ "__floatunsisf", 804/* UINTTOFP_I32_F64 */ "__floatunsidf", 805/* UINTTOFP_I32_F80 */ nullptr, 806/* UINTTOFP_I32_F128 */ "__floatunsitf", 807/* UINTTOFP_I32_PPCF128 */ nullptr, 808/* UINTTOFP_I64_F32 */ "__floatundisf", 809/* UINTTOFP_I64_F64 */ "__floatundidf", 810/* UINTTOFP_I64_F80 */ nullptr, 811/* UINTTOFP_I64_F128 */ "__floatunditf", 812/* UINTTOFP_I64_PPCF128 */ nullptr, 813/* UINTTOFP_I128_F32 */ "__floatuntisf", 814/* UINTTOFP_I128_F64 */ "__floatuntidf", 815/* UINTTOFP_I128_F80 */ nullptr, 816/* UINTTOFP_I128_F128 */ "__floatuntitf", 817/* UINTTOFP_I128_PPCF128 */ nullptr, 818/* OEQ_F32 */ "__eqsf2", 819/* OEQ_F64 */ "__eqdf2", 820/* OEQ_F128 */ "__eqtf2", 821/* OEQ_PPCF128 */ nullptr, 822/* UNE_F32 */ "__nesf2", 823/* UNE_F64 */ "__nedf2", 824/* UNE_F128 */ "__netf2", 825/* UNE_PPCF128 */ nullptr, 826/* OGE_F32 */ "__gesf2", 827/* OGE_F64 */ "__gedf2", 828/* OGE_F128 */ "__getf2", 829/* OGE_PPCF128 */ nullptr, 830/* OLT_F32 */ "__ltsf2", 831/* OLT_F64 */ "__ltdf2", 832/* OLT_F128 */ "__lttf2", 833/* OLT_PPCF128 */ nullptr, 834/* OLE_F32 */ "__lesf2", 835/* OLE_F64 */ "__ledf2", 836/* OLE_F128 */ "__letf2", 837/* OLE_PPCF128 */ nullptr, 838/* OGT_F32 */ "__gtsf2", 839/* OGT_F64 */ "__gtdf2", 840/* OGT_F128 */ "__gttf2", 841/* OGT_PPCF128 */ nullptr, 842/* UO_F32 */ "__unordsf2", 843/* UO_F64 */ "__unorddf2", 844/* UO_F128 */ "__unordtf2", 845/* UO_PPCF128 */ nullptr, 846/* O_F32 */ "__unordsf2", 847/* O_F64 */ "__unorddf2", 848/* O_F128 */ "__unordtf2", 849/* O_PPCF128 */ nullptr, 850/* MEMCPY */ "memcpy", 851/* MEMMOVE */ "memset", 852/* MEMSET */ "memmove", 853/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_1 */ nullptr, 854/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_2 */ nullptr, 855/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_4 */ nullptr, 856/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_8 */ nullptr, 857/* MEMCPY_ELEMENT_UNORDERED_ATOMIC_16 */ nullptr, 858/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_1 */ nullptr, 859/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_2 */ nullptr, 860/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_4 */ nullptr, 861/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_8 */ nullptr, 862/* MEMMOVE_ELEMENT_UNORDERED_ATOMIC_16 */ nullptr, 863/* MEMSET_ELEMENT_UNORDERED_ATOMIC_1 */ nullptr, 864/* MEMSET_ELEMENT_UNORDERED_ATOMIC_2 */ nullptr, 865/* MEMSET_ELEMENT_UNORDERED_ATOMIC_4 */ nullptr, 866/* MEMSET_ELEMENT_UNORDERED_ATOMIC_8 */ nullptr, 867/* MEMSET_ELEMENT_UNORDERED_ATOMIC_16 */ nullptr, 868/* UNWIND_RESUME */ "_Unwind_Resume", 869/* SYNC_VAL_COMPARE_AND_SWAP_1 */ "__sync_val_compare_and_swap_1", 870/* SYNC_VAL_COMPARE_AND_SWAP_2 */ "__sync_val_compare_and_swap_2", 871/* SYNC_VAL_COMPARE_AND_SWAP_4 */ "__sync_val_compare_and_swap_4", 872/* SYNC_VAL_COMPARE_AND_SWAP_8 */ "__sync_val_compare_and_swap_8", 873/* SYNC_VAL_COMPARE_AND_SWAP_16 */ "__sync_val_compare_and_swap_16", 874/* SYNC_LOCK_TEST_AND_SET_1 */ "__sync_lock_test_and_set_1", 875/* SYNC_LOCK_TEST_AND_SET_2 */ "__sync_lock_test_and_set_2", 876/* SYNC_LOCK_TEST_AND_SET_4 */ "__sync_lock_test_and_set_4", 877/* SYNC_LOCK_TEST_AND_SET_8 */ "__sync_lock_test_and_set_8", 878/* SYNC_LOCK_TEST_AND_SET_16 */ "__sync_lock_test_and_set_16", 879/* SYNC_FETCH_AND_ADD_1 */ "__sync_fetch_and_add_1", 880/* SYNC_FETCH_AND_ADD_2 */ "__sync_fetch_and_add_2", 881/* SYNC_FETCH_AND_ADD_4 */ "__sync_fetch_and_add_4", 882/* SYNC_FETCH_AND_ADD_8 */ "__sync_fetch_and_add_8", 883/* SYNC_FETCH_AND_ADD_16 */ "__sync_fetch_and_add_16", 884/* SYNC_FETCH_AND_SUB_1 */ "__sync_fetch_and_sub_1", 885/* SYNC_FETCH_AND_SUB_2 */ "__sync_fetch_and_sub_2", 886/* SYNC_FETCH_AND_SUB_4 */ "__sync_fetch_and_sub_4", 887/* SYNC_FETCH_AND_SUB_8 */ "__sync_fetch_and_sub_8", 888/* SYNC_FETCH_AND_SUB_16 */ "__sync_fetch_and_sub_16", 889/* SYNC_FETCH_AND_AND_1 */ "__sync_fetch_and_and_1", 890/* SYNC_FETCH_AND_AND_2 */ "__sync_fetch_and_and_2", 891/* SYNC_FETCH_AND_AND_4 */ "__sync_fetch_and_and_4", 892/* SYNC_FETCH_AND_AND_8 */ "__sync_fetch_and_and_8", 893/* SYNC_FETCH_AND_AND_16 */ "__sync_fetch_and_and_16", 894/* SYNC_FETCH_AND_OR_1 */ "__sync_fetch_and_or_1", 895/* SYNC_FETCH_AND_OR_2 */ "__sync_fetch_and_or_2", 896/* SYNC_FETCH_AND_OR_4 */ "__sync_fetch_and_or_4", 897/* SYNC_FETCH_AND_OR_8 */ "__sync_fetch_and_or_8", 898/* SYNC_FETCH_AND_OR_16 */ "__sync_fetch_and_or_16", 899/* SYNC_FETCH_AND_XOR_1 */ "__sync_fetch_and_xor_1", 900/* SYNC_FETCH_AND_XOR_2 */ "__sync_fetch_and_xor_2", 901/* SYNC_FETCH_AND_XOR_4 */ "__sync_fetch_and_xor_4", 902/* SYNC_FETCH_AND_XOR_8 */ "__sync_fetch_and_xor_8", 903/* SYNC_FETCH_AND_XOR_16 */ "__sync_fetch_and_xor_16", 904/* SYNC_FETCH_AND_NAND_1 */ "__sync_fetch_and_nand_1", 905/* SYNC_FETCH_AND_NAND_2 */ "__sync_fetch_and_nand_2", 906/* SYNC_FETCH_AND_NAND_4 */ "__sync_fetch_and_nand_4", 907/* SYNC_FETCH_AND_NAND_8 */ "__sync_fetch_and_nand_8", 908/* SYNC_FETCH_AND_NAND_16 */ "__sync_fetch_and_nand_16", 909/* SYNC_FETCH_AND_MAX_1 */ "__sync_fetch_and_max_1", 910/* SYNC_FETCH_AND_MAX_2 */ "__sync_fetch_and_max_2", 911/* SYNC_FETCH_AND_MAX_4 */ "__sync_fetch_and_max_4", 912/* SYNC_FETCH_AND_MAX_8 */ "__sync_fetch_and_max_8", 913/* SYNC_FETCH_AND_MAX_16 */ "__sync_fetch_and_max_16", 914/* SYNC_FETCH_AND_UMAX_1 */ "__sync_fetch_and_umax_1", 915/* SYNC_FETCH_AND_UMAX_2 */ "__sync_fetch_and_umax_2", 916/* SYNC_FETCH_AND_UMAX_4 */ "__sync_fetch_and_umax_4", 917/* SYNC_FETCH_AND_UMAX_8 */ "__sync_fetch_and_umax_8", 918/* SYNC_FETCH_AND_UMAX_16 */ "__sync_fetch_and_umax_16", 919/* SYNC_FETCH_AND_MIN_1 */ "__sync_fetch_and_min_1", 920/* SYNC_FETCH_AND_MIN_2 */ "__sync_fetch_and_min_2", 921/* SYNC_FETCH_AND_MIN_4 */ "__sync_fetch_and_min_4", 922/* SYNC_FETCH_AND_MIN_8 */ "__sync_fetch_and_min_8", 923/* SYNC_FETCH_AND_MIN_16 */ "__sync_fetch_and_min_16", 924/* SYNC_FETCH_AND_UMIN_1 */ "__sync_fetch_and_umin_1", 925/* SYNC_FETCH_AND_UMIN_2 */ "__sync_fetch_and_umin_2", 926/* SYNC_FETCH_AND_UMIN_4 */ "__sync_fetch_and_umin_4", 927/* SYNC_FETCH_AND_UMIN_8 */ "__sync_fetch_and_umin_8", 928/* SYNC_FETCH_AND_UMIN_16 */ "__sync_fetch_and_umin_16", 929 930/* ATOMIC_LOAD */ "__atomic_load", 931/* ATOMIC_LOAD_1 */ "__atomic_load_1", 932/* ATOMIC_LOAD_2 */ "__atomic_load_2", 933/* ATOMIC_LOAD_4 */ "__atomic_load_4", 934/* ATOMIC_LOAD_8 */ "__atomic_load_8", 935/* ATOMIC_LOAD_16 */ "__atomic_load_16", 936 937/* ATOMIC_STORE */ "__atomic_store", 938/* ATOMIC_STORE_1 */ "__atomic_store_1", 939/* ATOMIC_STORE_2 */ "__atomic_store_2", 940/* ATOMIC_STORE_4 */ "__atomic_store_4", 941/* ATOMIC_STORE_8 */ "__atomic_store_8", 942/* ATOMIC_STORE_16 */ "__atomic_store_16", 943 944/* ATOMIC_EXCHANGE */ "__atomic_exchange", 945/* ATOMIC_EXCHANGE_1 */ "__atomic_exchange_1", 946/* ATOMIC_EXCHANGE_2 */ "__atomic_exchange_2", 947/* ATOMIC_EXCHANGE_4 */ "__atomic_exchange_4", 948/* ATOMIC_EXCHANGE_8 */ "__atomic_exchange_8", 949/* ATOMIC_EXCHANGE_16 */ "__atomic_exchange_16", 950 951/* ATOMIC_COMPARE_EXCHANGE */ "__atomic_compare_exchange", 952/* ATOMIC_COMPARE_EXCHANGE_1 */ "__atomic_compare_exchange_1", 953/* ATOMIC_COMPARE_EXCHANGE_2 */ "__atomic_compare_exchange_2", 954/* ATOMIC_COMPARE_EXCHANGE_4 */ "__atomic_compare_exchange_4", 955/* ATOMIC_COMPARE_EXCHANGE_8 */ "__atomic_compare_exchange_8", 956/* ATOMIC_COMPARE_EXCHANGE_16 */ "__atomic_compare_exchange_16", 957 958/* ATOMIC_FETCH_ADD_1 */ "__atomic_fetch_add_1", 959/* ATOMIC_FETCH_ADD_2 */ "__atomic_fetch_add_2", 960/* ATOMIC_FETCH_ADD_4 */ "__atomic_fetch_add_4", 961/* ATOMIC_FETCH_ADD_8 */ "__atomic_fetch_add_8", 962/* ATOMIC_FETCH_ADD_16 */ "__atomic_fetch_add_16", 963/* ATOMIC_FETCH_SUB_1 */ "__atomic_fetch_sub_1", 964/* ATOMIC_FETCH_SUB_2 */ "__atomic_fetch_sub_2", 965/* ATOMIC_FETCH_SUB_4 */ "__atomic_fetch_sub_4", 966/* ATOMIC_FETCH_SUB_8 */ "__atomic_fetch_sub_8", 967/* ATOMIC_FETCH_SUB_16 */ "__atomic_fetch_sub_16", 968/* ATOMIC_FETCH_AND_1 */ "__atomic_fetch_and_1", 969/* ATOMIC_FETCH_AND_2 */ "__atomic_fetch_and_2", 970/* ATOMIC_FETCH_AND_4 */ "__atomic_fetch_and_4", 971/* ATOMIC_FETCH_AND_8 */ "__atomic_fetch_and_8", 972/* ATOMIC_FETCH_AND_16 */ "__atomic_fetch_and_16", 973/* ATOMIC_FETCH_OR_1 */ "__atomic_fetch_or_1", 974/* ATOMIC_FETCH_OR_2 */ "__atomic_fetch_or_2", 975/* ATOMIC_FETCH_OR_4 */ "__atomic_fetch_or_4", 976/* ATOMIC_FETCH_OR_8 */ "__atomic_fetch_or_8", 977/* ATOMIC_FETCH_OR_16 */ "__atomic_fetch_or_16", 978/* ATOMIC_FETCH_XOR_1 */ "__atomic_fetch_xor_1", 979/* ATOMIC_FETCH_XOR_2 */ "__atomic_fetch_xor_2", 980/* ATOMIC_FETCH_XOR_4 */ "__atomic_fetch_xor_4", 981/* ATOMIC_FETCH_XOR_8 */ "__atomic_fetch_xor_8", 982/* ATOMIC_FETCH_XOR_16 */ "__atomic_fetch_xor_16", 983/* ATOMIC_FETCH_NAND_1 */ "__atomic_fetch_nand_1", 984/* ATOMIC_FETCH_NAND_2 */ "__atomic_fetch_nand_2", 985/* ATOMIC_FETCH_NAND_4 */ "__atomic_fetch_nand_4", 986/* ATOMIC_FETCH_NAND_8 */ "__atomic_fetch_nand_8", 987/* ATOMIC_FETCH_NAND_16 */ "__atomic_fetch_nand_16", 988 989/* STACKPROTECTOR_CHECK_FAIL */ "__stack_chk_fail", 990 991/* DEOPTIMIZE */ "__llvm_deoptimize", 992}; 993 994void llvm::GetSignature(const WebAssemblySubtarget &Subtarget, 995 RTLIB::Libcall LC, SmallVectorImpl<wasm::ValType> &Rets, 996 SmallVectorImpl<wasm::ValType> &Params) { 997 assert(Rets.empty()); 998 assert(Params.empty()); 999 1000 WebAssembly::ExprType iPTR = Subtarget.hasAddr64() ? 1001 WebAssembly::ExprType::I64 : 1002 WebAssembly::ExprType::I32; 1003 1004 switch (RuntimeLibcallSignatures[LC]) { 1005 case func: 1006 break; 1007 case f32_func_f32: 1008 Rets.push_back(wasm::ValType::F32); 1009 Params.push_back(wasm::ValType::F32); 1010 break; 1011 case f32_func_f64: 1012 Rets.push_back(wasm::ValType::F32); 1013 Params.push_back(wasm::ValType::F64); 1014 break; 1015 case f32_func_i32: 1016 Rets.push_back(wasm::ValType::F32); 1017 Params.push_back(wasm::ValType::I32); 1018 break; 1019 case f32_func_i64: 1020 Rets.push_back(wasm::ValType::F32); 1021 Params.push_back(wasm::ValType::I64); 1022 break; 1023 case f32_func_i16: 1024 Rets.push_back(wasm::ValType::F32); 1025 Params.push_back(wasm::ValType::I32); 1026 break; 1027 case f64_func_f32: 1028 Rets.push_back(wasm::ValType::F64); 1029 Params.push_back(wasm::ValType::F32); 1030 break; 1031 case f64_func_f64: 1032 Rets.push_back(wasm::ValType::F64); 1033 Params.push_back(wasm::ValType::F64); 1034 break; 1035 case f64_func_i32: 1036 Rets.push_back(wasm::ValType::F64); 1037 Params.push_back(wasm::ValType::I32); 1038 break; 1039 case f64_func_i64: 1040 Rets.push_back(wasm::ValType::F64); 1041 Params.push_back(wasm::ValType::I64); 1042 break; 1043 case i32_func_f32: 1044 Rets.push_back(wasm::ValType::I32); 1045 Params.push_back(wasm::ValType::F32); 1046 break; 1047 case i32_func_f64: 1048 Rets.push_back(wasm::ValType::I32); 1049 Params.push_back(wasm::ValType::F64); 1050 break; 1051 case i32_func_i32: 1052 Rets.push_back(wasm::ValType::I32); 1053 Params.push_back(wasm::ValType::I32); 1054 break; 1055 case i64_func_f32: 1056 Rets.push_back(wasm::ValType::I64); 1057 Params.push_back(wasm::ValType::F32); 1058 break; 1059 case i64_func_f64: 1060 Rets.push_back(wasm::ValType::I64); 1061 Params.push_back(wasm::ValType::F64); 1062 break; 1063 case i64_func_i64: 1064 Rets.push_back(wasm::ValType::I64); 1065 Params.push_back(wasm::ValType::I64); 1066 break; 1067 case f32_func_f32_f32: 1068 Rets.push_back(wasm::ValType::F32); 1069 Params.push_back(wasm::ValType::F32); 1070 Params.push_back(wasm::ValType::F32); 1071 break; 1072 case f32_func_f32_i32: 1073 Rets.push_back(wasm::ValType::F32); 1074 Params.push_back(wasm::ValType::F32); 1075 Params.push_back(wasm::ValType::I32); 1076 break; 1077 case f32_func_i64_i64: 1078 Rets.push_back(wasm::ValType::F32); 1079 Params.push_back(wasm::ValType::I64); 1080 Params.push_back(wasm::ValType::I64); 1081 break; 1082 case f64_func_f64_f64: 1083 Rets.push_back(wasm::ValType::F64); 1084 Params.push_back(wasm::ValType::F64); 1085 Params.push_back(wasm::ValType::F64); 1086 break; 1087 case f64_func_f64_i32: 1088 Rets.push_back(wasm::ValType::F64); 1089 Params.push_back(wasm::ValType::F64); 1090 Params.push_back(wasm::ValType::I32); 1091 break; 1092 case f64_func_i64_i64: 1093 Rets.push_back(wasm::ValType::F64); 1094 Params.push_back(wasm::ValType::I64); 1095 Params.push_back(wasm::ValType::I64); 1096 break; 1097 case i16_func_f32: 1098 Rets.push_back(wasm::ValType::I32); 1099 Params.push_back(wasm::ValType::F32); 1100 break; 1101 case i8_func_i8_i8: 1102 Rets.push_back(wasm::ValType::I32); 1103 Params.push_back(wasm::ValType::I32); 1104 Params.push_back(wasm::ValType::I32); 1105 break; 1106 case func_f32_iPTR_iPTR: 1107 Params.push_back(wasm::ValType::F32); 1108 Params.push_back(wasm::ValType(iPTR)); 1109 Params.push_back(wasm::ValType(iPTR)); 1110 break; 1111 case func_f64_iPTR_iPTR: 1112 Params.push_back(wasm::ValType::F64); 1113 Params.push_back(wasm::ValType(iPTR)); 1114 Params.push_back(wasm::ValType(iPTR)); 1115 break; 1116 case i16_func_i16_i16: 1117 Rets.push_back(wasm::ValType::I32); 1118 Params.push_back(wasm::ValType::I32); 1119 Params.push_back(wasm::ValType::I32); 1120 break; 1121 case i32_func_f32_f32: 1122 Rets.push_back(wasm::ValType::I32); 1123 Params.push_back(wasm::ValType::F32); 1124 Params.push_back(wasm::ValType::F32); 1125 break; 1126 case i32_func_f64_f64: 1127 Rets.push_back(wasm::ValType::I32); 1128 Params.push_back(wasm::ValType::F64); 1129 Params.push_back(wasm::ValType::F64); 1130 break; 1131 case i32_func_i32_i32: 1132 Rets.push_back(wasm::ValType::I32); 1133 Params.push_back(wasm::ValType::I32); 1134 Params.push_back(wasm::ValType::I32); 1135 break; 1136 case i64_func_i64_i64: 1137 Rets.push_back(wasm::ValType::I64); 1138 Params.push_back(wasm::ValType::I64); 1139 Params.push_back(wasm::ValType::I64); 1140 break; 1141 case i64_i64_func_f32: 1142#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1143 Rets.push_back(wasm::ValType::I64); 1144 Rets.push_back(wasm::ValType::I64); 1145#else 1146 Params.push_back(wasm::ValType(iPTR)); 1147#endif 1148 Params.push_back(wasm::ValType::F32); 1149 break; 1150 case i64_i64_func_f64: 1151#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1152 Rets.push_back(wasm::ValType::I64); 1153 Rets.push_back(wasm::ValType::I64); 1154#else 1155 Params.push_back(wasm::ValType(iPTR)); 1156#endif 1157 Params.push_back(wasm::ValType::F64); 1158 break; 1159 case i16_i16_func_i16_i16: 1160#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1161 Rets.push_back(wasm::ValType::I32); 1162 Rets.push_back(wasm::ValType::I32); 1163#else 1164 Params.push_back(wasm::ValType(iPTR)); 1165#endif 1166 Params.push_back(wasm::ValType::I32); 1167 Params.push_back(wasm::ValType::I32); 1168 break; 1169 case i32_i32_func_i32_i32: 1170#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1171 Rets.push_back(wasm::ValType::I32); 1172 Rets.push_back(wasm::ValType::I32); 1173#else 1174 Params.push_back(wasm::ValType(iPTR)); 1175#endif 1176 Params.push_back(wasm::ValType::I32); 1177 Params.push_back(wasm::ValType::I32); 1178 break; 1179 case i64_i64_func_i64_i64: 1180#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1181 Rets.push_back(wasm::ValType::I64); 1182 Rets.push_back(wasm::ValType::I64); 1183#else 1184 Params.push_back(wasm::ValType(iPTR)); 1185#endif 1186 Params.push_back(wasm::ValType::I64); 1187 Params.push_back(wasm::ValType::I64); 1188 break; 1189 case i64_i64_func_i64_i64_i64_i64: 1190#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1191 Rets.push_back(wasm::ValType::I64); 1192 Rets.push_back(wasm::ValType::I64); 1193#else 1194 Params.push_back(wasm::ValType(iPTR)); 1195#endif 1196 Params.push_back(wasm::ValType::I64); 1197 Params.push_back(wasm::ValType::I64); 1198 Params.push_back(wasm::ValType::I64); 1199 Params.push_back(wasm::ValType::I64); 1200 break; 1201 case i64_i64_i64_i64_func_i64_i64_i64_i64: 1202#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1203 Rets.push_back(wasm::ValType::I64); 1204 Rets.push_back(wasm::ValType::I64); 1205 Rets.push_back(wasm::ValType::I64); 1206 Rets.push_back(wasm::ValType::I64); 1207#else 1208 Params.push_back(wasm::ValType(iPTR)); 1209#endif 1210 Params.push_back(wasm::ValType::I64); 1211 Params.push_back(wasm::ValType::I64); 1212 Params.push_back(wasm::ValType::I64); 1213 Params.push_back(wasm::ValType::I64); 1214 break; 1215 case i64_i64_func_i64_i64_i32: 1216#if 0 // TODO: Enable this when wasm gets multiple-return-value support. 1217 Rets.push_back(wasm::ValType::I64); 1218 Rets.push_back(wasm::ValType::I64); 1219 Rets.push_back(wasm::ValType::I64); 1220 Rets.push_back(wasm::ValType::I64); 1221#else 1222 Params.push_back(wasm::ValType(iPTR)); 1223#endif 1224 Params.push_back(wasm::ValType::I64); 1225 Params.push_back(wasm::ValType::I64); 1226 Params.push_back(wasm::ValType::I32); 1227 break; 1228 case iPTR_func_iPTR_i32_iPTR: 1229 Rets.push_back(wasm::ValType(iPTR)); 1230 Params.push_back(wasm::ValType(iPTR)); 1231 Params.push_back(wasm::ValType::I32); 1232 Params.push_back(wasm::ValType(iPTR)); 1233 break; 1234 case iPTR_func_iPTR_iPTR_iPTR: 1235 Rets.push_back(wasm::ValType(iPTR)); 1236 Params.push_back(wasm::ValType(iPTR)); 1237 Params.push_back(wasm::ValType(iPTR)); 1238 Params.push_back(wasm::ValType(iPTR)); 1239 break; 1240 case f32_func_f32_f32_f32: 1241 Rets.push_back(wasm::ValType::F32); 1242 Params.push_back(wasm::ValType::F32); 1243 Params.push_back(wasm::ValType::F32); 1244 Params.push_back(wasm::ValType::F32); 1245 break; 1246 case f64_func_f64_f64_f64: 1247 Rets.push_back(wasm::ValType::F64); 1248 Params.push_back(wasm::ValType::F64); 1249 Params.push_back(wasm::ValType::F64); 1250 Params.push_back(wasm::ValType::F64); 1251 break; 1252 case func_i64_i64_iPTR_iPTR: 1253 Params.push_back(wasm::ValType::I64); 1254 Params.push_back(wasm::ValType::I64); 1255 Params.push_back(wasm::ValType(iPTR)); 1256 Params.push_back(wasm::ValType(iPTR)); 1257 break; 1258 case func_iPTR_f32: 1259 Params.push_back(wasm::ValType(iPTR)); 1260 Params.push_back(wasm::ValType::F32); 1261 break; 1262 case func_iPTR_f64: 1263 Params.push_back(wasm::ValType(iPTR)); 1264 Params.push_back(wasm::ValType::F64); 1265 break; 1266 case func_iPTR_i32: 1267 Params.push_back(wasm::ValType(iPTR)); 1268 Params.push_back(wasm::ValType::I32); 1269 break; 1270 case func_iPTR_i64: 1271 Params.push_back(wasm::ValType(iPTR)); 1272 Params.push_back(wasm::ValType::I64); 1273 break; 1274 case func_iPTR_i64_i64: 1275 Params.push_back(wasm::ValType(iPTR)); 1276 Params.push_back(wasm::ValType::I64); 1277 Params.push_back(wasm::ValType::I64); 1278 break; 1279 case func_iPTR_i64_i64_i64_i64: 1280 Params.push_back(wasm::ValType(iPTR)); 1281 Params.push_back(wasm::ValType::I64); 1282 Params.push_back(wasm::ValType::I64); 1283 Params.push_back(wasm::ValType::I64); 1284 Params.push_back(wasm::ValType::I64); 1285 break; 1286 case func_iPTR_i64_i64_i64_i64_i64_i64: 1287 Params.push_back(wasm::ValType(iPTR)); 1288 Params.push_back(wasm::ValType::I64); 1289 Params.push_back(wasm::ValType::I64); 1290 Params.push_back(wasm::ValType::I64); 1291 Params.push_back(wasm::ValType::I64); 1292 Params.push_back(wasm::ValType::I64); 1293 Params.push_back(wasm::ValType::I64); 1294 break; 1295 case i32_func_i64_i64: 1296 Rets.push_back(wasm::ValType::I32); 1297 Params.push_back(wasm::ValType::I64); 1298 Params.push_back(wasm::ValType::I64); 1299 break; 1300 case i32_func_i64_i64_i64_i64: 1301 Rets.push_back(wasm::ValType::I32); 1302 Params.push_back(wasm::ValType::I64); 1303 Params.push_back(wasm::ValType::I64); 1304 Params.push_back(wasm::ValType::I64); 1305 Params.push_back(wasm::ValType::I64); 1306 break; 1307 case unsupported: 1308 llvm_unreachable("unsupported runtime library signature"); 1309 } 1310} 1311 1312void llvm::GetSignature(const WebAssemblySubtarget &Subtarget, const char *Name, 1313 SmallVectorImpl<wasm::ValType> &Rets, 1314 SmallVectorImpl<wasm::ValType> &Params) { 1315 assert(strcmp(RuntimeLibcallNames[RTLIB::DEOPTIMIZE], "__llvm_deoptimize") == 1316 0); 1317 1318 for (size_t i = 0, e = RTLIB::UNKNOWN_LIBCALL; i < e; ++i) 1319 if (RuntimeLibcallNames[i] && strcmp(RuntimeLibcallNames[i], Name) == 0) 1320 return GetSignature(Subtarget, RTLIB::Libcall(i), Rets, Params); 1321 1322 llvm_unreachable("unexpected runtime library name"); 1323} 1324