18 const char *
const LibCalls[] = {
19 "__addtf3",
"__divtf3",
"__eqtf2",
"__extenddftf2",
20 "__extendsftf2",
"__fixtfdi",
"__fixtfsi",
"__fixtfti",
21 "__fixunstfdi",
"__fixunstfsi",
"__fixunstfti",
"__floatditf",
22 "__floatsitf",
"__floattitf",
"__floatunditf",
"__floatunsitf",
23 "__floatuntitf",
"__getf2",
"__gttf2",
"__letf2",
24 "__lttf2",
"__multf3",
"__netf2",
"__powitf2",
25 "__subtf3",
"__trunctfdf2",
"__trunctfsf2",
"__unordtf2",
26 "ceill",
"copysignl",
"cosl",
"exp2l",
27 "expl",
"floorl",
"fmal",
"fmaxl",
28 "fmodl",
"log10l",
"log2l",
"logl",
29 "nearbyintl",
"powl",
"rintl",
"roundl",
30 "sinl",
"sqrtl",
"truncl"};
33 auto Comp = [](
const char *S1,
const char *S2) {
return strcmp(S1, S2) < 0; };
76 dyn_cast<const GlobalAddressSDNode>(Callee)) {
78 Function *
F =
G->getGlobal()->getParent()->getFunction(Sym);
84 return SpecialCallingConv;
87 void MipsCCState::PreAnalyzeCallResultForF128(
89 const Type *RetTy,
const char *Call) {
90 for (
unsigned i = 0; i < Ins.
size(); ++i) {
99 void MipsCCState::PreAnalyzeReturnForF128(
102 for (
unsigned i = 0; i < Outs.
size(); ++i) {
112 void MipsCCState::PreAnalyzeCallResultForVectorFloat(
114 for (
unsigned i = 0; i < Ins.
size(); ++i) {
121 void MipsCCState::PreAnalyzeReturnForVectorFloat(
123 for (
unsigned i = 0; i < Outs.
size(); ++i) {
132 void MipsCCState::PreAnalyzeCallOperands(
134 std::vector<TargetLowering::ArgListEntry> &FuncArgs,
136 for (
unsigned i = 0; i < Outs.
size(); ++i) {
142 CallOperandIsFixed.
push_back(Outs[i].IsFixed);
148 void MipsCCState::PreAnalyzeFormalArgumentsForF128(
151 for (
unsigned i = 0; i < Ins.
size(); ++i) {
157 if (Ins[i].Flags.isSRet()) {
160 OriginalArgWasFloatVector.
push_back(
false);
165 std::advance(FuncArg, Ins[i].getOrigArgIndex());
bool inMips16HardFloat() const
const_iterator end(StringRef path)
Get end iterator over path.
This class represents an incoming formal argument to a Function.
const_iterator begin(StringRef path, Style style=Style::native)
Get begin iterator over path.
This class represents lattice values for constants.
void push_back(const T &Elt)
bool isFP128Ty() const
Return true if this is 'fp128'.
bool hasFnAttribute(Attribute::AttrKind Kind) const
Return true if the function has the attribute.
Type * getStructElementType(unsigned N) const
MachineFunction & getMachineFunction() const
bool isVectorTy() const
True if this is an instance of VectorType.
bool isFloatingPoint() const
Return true if this is a FP or a vector FP type.
bool isFloatingPointTy() const
Return true if this is one of the six floating-point types.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
bool isIntegerTy() const
True if this is an instance of IntegerType.
OutputArg - This struct carries flags and a value for a single outgoing (actual) argument or outgoing...
static bool originalEVTTypeIsVectorFloat(EVT Ty)
Return true if the original type was vXfXX.
Type * getType() const
All values are typed, get the type of this value.
static SpecialCallingConvType getSpecialCallingConvForCallee(const SDNode *Callee, const MipsSubtarget &Subtarget)
Determine the SpecialCallingConvType for the given callee.
static bool isF128SoftLibCall(const char *CallSym)
This function returns true if CallSym is a long double emulation routine.
Type * getReturnType() const
Returns the type of the ret val.
The instances of the Type class are immutable: once they are created, they are never changed...
unsigned getStructNumElements() const
EVT getVectorElementType() const
Given a vector type, return the type of each element.
Module.h This file contains the declarations for the Module class.
Represents one node in the SelectionDAG.
const Function & getFunction() const
Return the LLVM function that this machine code represents.
bool isVector() const
Return true if this is a vector value type.
bool isFPOrFPVectorTy() const
Return true if this is a FP type or a vector of FP.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static bool originalTypeIsVectorFloat(const Type *Ty)
Return true if the original type was vXfXX / vXfXX.
StringRef - Represent a constant reference to a string, i.e.
static bool originalTypeIsF128(const Type *Ty, const char *Func)
This function returns true if Ty is fp128, {f128} or i128 which was originally a fp128.
bool isStructTy() const
True if this is an instance of StructType.