LLVM
8.0.1
|
#include "Target/Mips/MipsCCState.h"
Public Types | |
enum | SpecialCallingConvType { Mips16RetHelperConv, NoSpecialCallingConv } |
Public Member Functions | |
MipsCCState (CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C, SpecialCallingConvType SpecialCC=NoSpecialCallingConv) | |
void | AnalyzeCallOperands (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn, std::vector< TargetLowering::ArgListEntry > &FuncArgs, const char *Func) |
void | AnalyzeCallOperands (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)=delete |
void | AnalyzeCallOperands (const SmallVectorImpl< MVT > &Outs, SmallVectorImpl< ISD::ArgFlagsTy > &Flags, CCAssignFn Fn)=delete |
void | AnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
void | AnalyzeCallResult (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn, const Type *RetTy, const char *Func) |
void | AnalyzeReturn (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
bool | CheckReturn (const SmallVectorImpl< ISD::OutputArg > &ArgsFlags, CCAssignFn Fn) |
bool | WasOriginalArgF128 (unsigned ValNo) |
bool | WasOriginalArgFloat (unsigned ValNo) |
bool | WasOriginalArgVectorFloat (unsigned ValNo) const |
bool | WasOriginalRetVectorFloat (unsigned ValNo) const |
bool | IsCallOperandFixed (unsigned ValNo) |
SpecialCallingConvType | getSpecialCallingConv () |
Public Member Functions inherited from llvm::CCState | |
CCState (CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C) | |
void | addLoc (const CCValAssign &V) |
LLVMContext & | getContext () const |
MachineFunction & | getMachineFunction () const |
CallingConv::ID | getCallingConv () const |
bool | isVarArg () const |
unsigned | getNextStackOffset () const |
getNextStackOffset - Return the next stack offset such that all stack slots satisfy their alignment requirements. More... | |
unsigned | getAlignedCallFrameSize () const |
getAlignedCallFrameSize - Return the size of the call frame needed to be able to store all arguments and such that the alignment requirement of each of the arguments is satisfied. More... | |
bool | isAllocated (unsigned Reg) const |
isAllocated - Return true if the specified register (or an alias) is allocated. More... | |
void | AnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals into this state. More... | |
void | AnalyzeArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
The function will invoke AnalyzeFormalArguments. More... | |
void | AnalyzeReturn (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
AnalyzeReturn - Analyze the returned values of a return, incorporating info about the result values into this state. More... | |
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 without sret-demotion, and false otherwise. More... | |
void | AnalyzeCallOperands (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed values into this state. More... | |
void | AnalyzeCallOperands (SmallVectorImpl< MVT > &ArgVTs, SmallVectorImpl< ISD::ArgFlagsTy > &Flags, CCAssignFn Fn) |
AnalyzeCallOperands - Same as above except it takes vectors of types and argument flags. More... | |
void | AnalyzeArguments (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
The function will invoke AnalyzeCallOperands. More... | |
void | AnalyzeCallResult (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
AnalyzeCallResult - Analyze the return values of a call, incorporating info about the passed values into this state. More... | |
bool | IsShadowAllocatedReg (unsigned Reg) const |
A shadow allocated register is a register that was allocated but wasn't added to the location list (Locs). More... | |
void | AnalyzeCallResult (MVT VT, CCAssignFn Fn) |
AnalyzeCallResult - Same as above except it's specialized for calls which produce a single value. More... | |
unsigned | getFirstUnallocated (ArrayRef< MCPhysReg > Regs) const |
getFirstUnallocated - Return the index of the first unallocated register in the set, or Regs.size() if they are all allocated. More... | |
unsigned | AllocateReg (unsigned Reg) |
AllocateReg - Attempt to allocate one register. More... | |
unsigned | AllocateReg (unsigned Reg, unsigned ShadowReg) |
Version of AllocateReg with extra register to be shadowed. More... | |
unsigned | AllocateReg (ArrayRef< MCPhysReg > Regs) |
AllocateReg - Attempt to allocate one of the specified registers. More... | |
unsigned | AllocateRegBlock (ArrayRef< MCPhysReg > Regs, unsigned RegsRequired) |
AllocateRegBlock - Attempt to allocate a block of RegsRequired consecutive registers. More... | |
unsigned | AllocateReg (ArrayRef< MCPhysReg > Regs, const MCPhysReg *ShadowRegs) |
Version of AllocateReg with list of registers to be shadowed. More... | |
unsigned | AllocateStack (unsigned Size, unsigned Align) |
AllocateStack - Allocate a chunk of stack space with the specified size and alignment. More... | |
void | ensureMaxAlignment (unsigned Align) |
unsigned | AllocateStack (unsigned Size, unsigned Align, unsigned ShadowReg) |
Version of AllocateStack with extra register to be shadowed. More... | |
unsigned | AllocateStack (unsigned Size, unsigned Align, ArrayRef< MCPhysReg > ShadowRegs) |
Version of AllocateStack with list of extra registers to be shadowed. More... | |
void | HandleByVal (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, int MinSize, int MinAlign, ISD::ArgFlagsTy ArgFlags) |
Allocate space on the stack large enough to pass an argument by value. More... | |
unsigned | getInRegsParamsCount () const |
unsigned | getInRegsParamsProcessed () const |
void | getInRegsParamInfo (unsigned InRegsParamRecordIndex, unsigned &BeginReg, unsigned &EndReg) const |
void | addInRegsParamInfo (unsigned RegBegin, unsigned RegEnd) |
bool | nextInRegsParam () |
void | clearByValRegsInfo () |
void | rewindByValRegsInfo () |
SmallVectorImpl< CCValAssign > & | getPendingLocs () |
SmallVectorImpl< ISD::ArgFlagsTy > & | getPendingArgFlags () |
void | getRemainingRegParmsForType (SmallVectorImpl< MCPhysReg > &Regs, MVT VT, CCAssignFn Fn) |
Compute the remaining unused register parameters that would be used for the given value type. More... | |
void | analyzeMustTailForwardedRegisters (SmallVectorImpl< ForwardedRegister > &Forwards, ArrayRef< MVT > RegParmTypes, CCAssignFn Fn) |
Compute the set of registers that need to be preserved and forwarded to any musttail calls. More... | |
template<class T > | |
void | AnalyzeArgumentsSecondPass (const SmallVectorImpl< T > &Args, CCAssignFn Fn) |
The function runs an additional analysis pass over function arguments. More... | |
Static Public Member Functions | |
static SpecialCallingConvType | getSpecialCallingConvForCallee (const SDNode *Callee, const MipsSubtarget &Subtarget) |
Determine the SpecialCallingConvType for the given callee. More... | |
Static Public Member Functions inherited from llvm::CCState | |
static bool | resultsCompatible (CallingConv::ID CalleeCC, CallingConv::ID CallerCC, MachineFunction &MF, LLVMContext &C, const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn CalleeFn, CCAssignFn CallerFn) |
Returns true if the results of the two calling conventions are compatible. More... | |
Definition at line 21 of file MipsCCState.h.
Enumerator | |
---|---|
Mips16RetHelperConv | |
NoSpecialCallingConv |
Definition at line 23 of file MipsCCState.h.
|
inline |
Definition at line 84 of file MipsCCState.h.
|
inline |
Definition at line 90 of file MipsCCState.h.
References llvm::CCState::AnalyzeCallOperands(), and llvm::SmallVectorImpl< T >::clear().
|
delete |
|
delete |
|
inline |
Definition at line 120 of file MipsCCState.h.
References llvm::CCState::AnalyzeCallResult(), and llvm::SmallVectorImpl< T >::clear().
Referenced by CC_MipsO32_FP64(), and llvm::MipsCallLowering::lowerCall().
|
inline |
Definition at line 111 of file MipsCCState.h.
References llvm::CCState::AnalyzeFormalArguments(), and llvm::SmallVectorImpl< T >::clear().
|
inline |
Definition at line 131 of file MipsCCState.h.
References llvm::CCState::AnalyzeReturn(), and llvm::SmallVectorImpl< T >::clear().
Referenced by llvm::MipsCallLowering::lowerReturn(), and UnpackFromArgumentSlot().
|
inline |
Definition at line 141 of file MipsCCState.h.
References llvm::CCState::CheckReturn(), llvm::SmallVectorImpl< T >::clear(), and llvm::MCID::Return.
Referenced by UnpackFromArgumentSlot().
|
inline |
Definition at line 163 of file MipsCCState.h.
|
static |
Determine the SpecialCallingConvType for the given callee.
Definition at line 71 of file MipsCCState.cpp.
References llvm::Function::arg_begin(), llvm::Function::arg_size(), llvm::ISD::OutputArg::ArgVT, assert(), F(), G, llvm::MachineFunction::getFunction(), llvm::CCState::getMachineFunction(), llvm::Function::getReturnType(), llvm::Value::getType(), llvm::Function::hasFnAttribute(), llvm::MipsSubtarget::inMips16HardFloat(), llvm::MipsISD::Ins, llvm::Type::isFloatingPointTy(), llvm::Type::isVectorTy(), Mips16RetHelperConv, NoSpecialCallingConv, originalEVTTypeIsVectorFloat(), originalTypeIsF128(), originalTypeIsVectorFloat(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorBase::size(), and llvm::TargetLoweringBase::ArgListEntry::Ty.
Definition at line 162 of file MipsCCState.h.
Definition at line 152 of file MipsCCState.h.
Definition at line 153 of file MipsCCState.h.
Definition at line 156 of file MipsCCState.h.
Referenced by CC_MipsO32().
Definition at line 159 of file MipsCCState.h.