58 std::vector<TargetLowering::ArgListEntry> &FuncArgs,
70 void PreAnalyzeFormalArgumentsForVectorFloat(
105 std::vector<TargetLowering::ArgListEntry> &FuncArgs,
const char *Func) {
106 OriginalArgWasF128.
clear();
107 OriginalArgWasFloat.
clear();
108 OriginalArgWasFloatVector.
clear();
109 CallOperandIsFixed.
clear();
110 PreAnalyzeCallOperands(Outs, FuncArgs, Func);
116 std::vector<TargetLowering::ArgListEntry> &FuncArgs,
118 PreAnalyzeCallOperands(Outs, Fn, FuncArgs, Func);
133 OriginalArgWasFloat.
clear();
134 OriginalArgWasF128.
clear();
135 OriginalArgWasFloatVector.
clear();
136 PreAnalyzeFormalArgumentsForF128(Ins);
154 OriginalArgWasFloat.
clear();
155 OriginalArgWasF128.
clear();
156 OriginalArgWasFloatVector.
clear();
157 PreAnalyzeCallResultForF128(Ins,
RetTy, Func);
158 PreAnalyzeCallResultForVectorFloat(Ins,
RetTy);
170 OriginalArgWasFloat.
clear();
171 OriginalArgWasF128.
clear();
172 OriginalArgWasFloatVector.
clear();
173 PreAnalyzeReturnForF128(Outs);
174 PreAnalyzeReturnForVectorFloat(Outs);
185 PreAnalyzeReturnForF128(ArgsFlags);
186 PreAnalyzeReturnForVectorFloat(ArgsFlags);
188 OriginalArgWasFloat.
clear();
189 OriginalArgWasF128.
clear();
190 OriginalArgWasFloatVector.
clear();
196 return OriginalArgWasFloat[ValNo];
199 return OriginalArgWasFloatVector[ValNo];
202 return OriginalRetWasFloatVector[ValNo];
This file defines the SmallVector class.
CCState - This class holds information needed while lowering arguments and return values.
void AnalyzeCallResult(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
AnalyzeCallResult - Analyze the return values of a call, incorporating info about the passed values i...
bool CheckReturn(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
CheckReturn - Analyze the return values of a function, returning true if the return can be performed ...
void AnalyzeReturn(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
AnalyzeReturn - Analyze the returned values of a return, incorporating info about the result values i...
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed v...
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals in...
This is an important class for using LLVM in a threaded context.
static bool originalTypeIsVectorFloat(const Type *Ty)
Return true if the original type was vXfXX / vXfXX.
void AnalyzeCallResult(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn, const Type *RetTy, const char *Func)
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn, std::vector< TargetLowering::ArgListEntry > &FuncArgs, const char *Func)
void PreAnalyzeReturn(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
bool CheckReturn(const SmallVectorImpl< ISD::OutputArg > &ArgsFlags, CCAssignFn Fn)
static bool isF128SoftLibCall(const char *CallSym)
This function returns true if CallSym is a long double emulation routine.
void PreAnalyzeReturnValue(EVT ArgVT)
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.
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)=delete
bool WasOriginalRetVectorFloat(unsigned ValNo) const
void AnalyzeReturn(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
void PreAnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn, std::vector< TargetLowering::ArgListEntry > &FuncArgs, const char *Func)
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
bool WasOriginalArgFloat(unsigned ValNo)
void PreAnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
static bool originalEVTTypeIsVectorFloat(EVT Ty)
Return true if the original type was vXfXX.
void AnalyzeCallOperands(const SmallVectorImpl< MVT > &Outs, SmallVectorImpl< ISD::ArgFlagsTy > &Flags, CCAssignFn Fn)=delete
bool WasOriginalArgVectorFloat(unsigned ValNo) const
void PreAnalyzeCallOperand(const Type *ArgTy, bool IsFixed, const char *Func)
void PreAnalyzeFormalArgument(const Type *ArgTy, ISD::ArgFlagsTy Flags)
bool IsCallOperandFixed(unsigned ValNo)
SpecialCallingConvType getSpecialCallingConv()
bool WasOriginalArgF128(unsigned ValNo)
static SpecialCallingConvType getSpecialCallingConvForCallee(const SDNode *Callee, const MipsSubtarget &Subtarget)
Determine the SpecialCallingConvType for the given callee.
MipsCCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C, SpecialCallingConvType SpecialCC=NoSpecialCallingConv)
void PreAnalyzeCallResult(const Type *RetTy, const char *Func)
void PreAnalyzeCallResult(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn, const Type *RetTy, const char *Func)
Represents one node in the SelectionDAG.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void push_back(const T &Elt)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
The instances of the Type class are immutable: once they are created, they are never changed.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
CCAssignFn - This function assigns a location for Val, updating State to reflect the change.