RuntimeLibcalls.h revision 9bed0f58eb7f5e9e22d062f3880a5fabfdd0dfdd
1495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===-- CodeGen/RuntimeLibcall.h - Runtime Library Calls --------*- C++ -*-===// 2495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// 3495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// The LLVM Compiler Infrastructure 4495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// This file is distributed under the University of Illinois Open Source 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// License. See LICENSE.TXT for details. 7495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// 8495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===----------------------------------------------------------------------===// 9495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// 10495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// This file defines the enum representing the list of runtime library calls 11495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// the backend may emit during code generation. 12495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// 13495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===----------------------------------------------------------------------===// 14495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 15495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#ifndef LLVM_CODEGEN_RUNTIMELIBCALLS_H 16495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#define LLVM_CODEGEN_RUNTIMELIBCALLS_H 17495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 18495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Chengnamespace llvm { 19495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Chengnamespace RTLIB { 20495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng /// RTLIB::Libcall enum - This enum defines all of the runtime library calls 21161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen /// the backend can emit. The various long double types cannot be merged, 22161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen /// because 80-bit library functions use "xf" and 128-bit use "tf". 23fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen /// 24fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen /// When adding PPCF128 functions here, note that their names generally need 25fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen /// to be overridden for Darwin with the xxx$LDBL128 form. See 26fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen /// PPCISelLowering.cpp. 27495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng /// 28495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng enum Libcall { 29495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // Integer 30495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SHL_I32, 31495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SHL_I64, 32dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands SHL_I128, 33495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SRL_I32, 34495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SRL_I64, 35dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands SRL_I128, 36495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SRA_I32, 37495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SRA_I64, 38dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands SRA_I128, 39495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng MUL_I32, 40495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng MUL_I64, 415ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands MUL_I128, 42495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SDIV_I32, 43495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SDIV_I64, 445ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands SDIV_I128, 45495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UDIV_I32, 46495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UDIV_I64, 475ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands UDIV_I128, 48495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SREM_I32, 49495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SREM_I64, 505ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands SREM_I128, 51495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UREM_I32, 52495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UREM_I64, 535ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands UREM_I128, 54495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng NEG_I32, 55495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng NEG_I64, 56495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 57495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // FLOATING POINT 58495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng ADD_F32, 59495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng ADD_F64, 60007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands ADD_F80, 61161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen ADD_PPCF128, 62495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SUB_F32, 63495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SUB_F64, 64007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands SUB_F80, 65161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SUB_PPCF128, 66495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng MUL_F32, 67495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng MUL_F64, 68007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands MUL_F80, 69161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen MUL_PPCF128, 70495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng DIV_F32, 71495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng DIV_F64, 72007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands DIV_F80, 73161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen DIV_PPCF128, 74495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng REM_F32, 75495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng REM_F64, 76007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands REM_F80, 77161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen REM_PPCF128, 78495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng POWI_F32, 79495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng POWI_F64, 80161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen POWI_F80, 81161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen POWI_PPCF128, 82495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SQRT_F32, 83495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SQRT_F64, 84161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SQRT_F80, 85161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SQRT_PPCF128, 86495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SIN_F32, 87495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SIN_F64, 88007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands SIN_F80, 89007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands SIN_PPCF128, 90495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng COS_F32, 91495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng COS_F64, 92007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands COS_F80, 93007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands COS_PPCF128, 94e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman POW_F32, 95e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman POW_F64, 96e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman POW_F80, 97e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman POW_PPCF128, 98495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 99495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // CONVERSION 100495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPEXT_F32_F64, 101495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPROUND_F64_F32, 102495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F32_I32, 103495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F32_I64, 104a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F32_I128, 105495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F64_I32, 106495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F64_I64, 107a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F64_I128, 108be1ad4de2900451626c8d4ace07b9ea16099ea1dDuncan Sands FPTOSINT_F80_I32, 109161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOSINT_F80_I64, 110a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F80_I128, 111041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands FPTOSINT_PPCF128_I32, 112161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOSINT_PPCF128_I64, 113a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_PPCF128_I128, 114495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F32_I32, 115495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F32_I64, 116a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F32_I128, 117495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F64_I32, 118495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F64_I64, 119a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F64_I128, 120161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_F80_I32, 121161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_F80_I64, 122a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F80_I128, 123041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands FPTOUINT_PPCF128_I32, 124161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_PPCF128_I64, 125a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_PPCF128_I128, 126495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I32_F32, 127495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I32_F64, 1289bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands SINTTOFP_I32_F80, 1299bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands SINTTOFP_I32_PPCF128, 130495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I64_F32, 131495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I64_F64, 132161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SINTTOFP_I64_F80, 133161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SINTTOFP_I64_PPCF128, 134d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F32, 135d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F64, 136d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F80, 137d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_PPCF128, 138495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I32_F32, 139495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I32_F64, 140495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I64_F32, 141495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I64_F64, 142495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 143495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // COMPARISON 144495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OEQ_F32, 145495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OEQ_F64, 146495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNE_F32, 147495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNE_F64, 148495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGE_F32, 149495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGE_F64, 150495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLT_F32, 151495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLT_F64, 152495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLE_F32, 153495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLE_F64, 154495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGT_F32, 155495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGT_F64, 156495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UO_F32, 157495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UO_F64, 158991d3616c8383688f1acf443cc698edef850da4dEvan Cheng O_F32, 159991d3616c8383688f1acf443cc698edef850da4dEvan Cheng O_F64, 160495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 161495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNKNOWN_LIBCALL 162495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng }; 163495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng} 164495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng} 165495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 166495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#endif 167