14#ifndef LLVM_IR_RUNTIME_LIBCALLS_H
15#define LLVM_IR_RUNTIME_LIBCALLS_H
34#define HANDLE_LIBCALL(code, name) code,
35#include "llvm/IR/RuntimeLibcalls.def"
47 LibcallRoutineNames[Call] =
Name;
51 for (
auto Call : Calls)
57 return LibcallRoutineNames[Call];
62 LibcallCallingConvs[Call] =
CC;
67 return LibcallCallingConvs[Call];
72 LibcallRoutineNames + RTLIB::UNKNOWN_LIBCALL);
77 const char *LibcallRoutineNames[RTLIB::UNKNOWN_LIBCALL + 1];
82 static bool darwinHasSinCos(
const Triple &TT) {
83 assert(TT.isOSDarwin() &&
"should be called with darwin triple");
89 return !TT.isMacOSXVersionLT(10, 9) && TT.isArch64Bit();
92 return !TT.isOSVersionLT(7, 0);
99 void initLibcalls(
const Triple &TT);
Atomic ordering constants.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Triple - Helper class for working with autoconf configuration names.
A range adaptor for a pair of iterators.
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.
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
A simple container for information about the supported runtime calls.
void setLibcallName(RTLIB::Libcall Call, const char *Name)
Rename the default libcall routine name for the specified libcall.
RuntimeLibcallsInfo(const Triple &TT)
const char * getLibcallName(RTLIB::Libcall Call) const
Get the 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.
CallingConv::ID getLibcallCallingConv(RTLIB::Libcall Call) const
Get the CallingConv that should be used for the specified libcall.
void setLibcallName(ArrayRef< RTLIB::Libcall > Calls, const char *Name)
iterator_range< const char ** > getLibcallNames()