16void RuntimeLibcallsInfo::initLibcalls(
const Triple &TT) {
17 std::fill(std::begin(LibcallRoutineNames), std::end(LibcallRoutineNames),
20#define HANDLE_LIBCALL(code, name) setLibcallName(RTLIB::code, name);
21#include "llvm/IR/RuntimeLibcalls.def"
25 for (
int LC = 0; LC < RTLIB::UNKNOWN_LIBCALL; ++LC)
108 if (
TT.isOSDarwin()) {
116 switch (
TT.getArch()) {
119 if (
TT.isMacOSX() && !
TT.isMacOSXVersionLT(10, 6))
130 if (darwinHasSinCos(TT)) {
133 if (
TT.isWatchABI()) {
141 switch (
TT.getOS()) {
143 if (
TT.isMacOSXVersionLT(10, 9)) {
152 if (
TT.isOSVersionLT(7, 0)) {
177 if (
TT.isGNUEnvironment() ||
TT.isOSFuchsia() ||
178 (
TT.isAndroid() && !
TT.isAndroidVersionLT(9))) {
191 if (
TT.isOSOpenBSD()) {
195 if (
TT.isOSWindows() && !
TT.isOSCygMing()) {
207 if (
TT.isAArch64()) {
208 if (
TT.isOSMSVCRT()) {
217 for (
int I = 0;
I < RTLIB::UNKNOWN_LIBCALL; ++
I) {
218 if (I < RTLIB::ATOMIC_LOAD || I > RTLIB::ATOMIC_FETCH_NAND_16)
225 for (
int I = 0;
I < RTLIB::UNKNOWN_LIBCALL; ++
I)
226 if (I < RTLIB::ATOMIC_LOAD || I > RTLIB::ATOMIC_FETCH_NAND_16)
230 if (
TT.isARM() ||
TT.isThumb()) {
239 if (
TT.isOSMSVCRT()) {
271 if (
TT.isLoongArch()) {
272 if (!
TT.isLoongArch64()) {
304 if (
TT.isRISCV32()) {
314 if (!
TT.isSPARC64()) {
325 if (
TT.isSystemZ()) {
345 if (
TT.isOSMSVCRT()) {
Triple - Helper class for working with autoconf configuration names.
@ ARM_AAPCS_VFP
Same as ARM_AAPCS, but uses hard floating point ABI.
@ C
The default llvm calling convention, compatible with C.
Libcall
RTLIB::Libcall enum - This enum defines all of the runtime library calls the backend can emit.
This is an optimization pass for GlobalISel generic memory operations.
void setLibcallName(RTLIB::Libcall Call, const char *Name)
Rename the default libcall routine name for the specified libcall.
void setLibcallCallingConv(RTLIB::Libcall Call, CallingConv::ID CC)
Set the CallingConv that should be used for the specified libcall.