LLVM 20.0.0git
|
#include "Target/Mips/MipsCCState.h"
Public Types | |
enum | SpecialCallingConvType { Mips16RetHelperConv , NoSpecialCallingConv } |
Public Member Functions | |
void | PreAnalyzeCallOperand (const Type *ArgTy, bool IsFixed, const char *Func) |
void | PreAnalyzeFormalArgument (const Type *ArgTy, ISD::ArgFlagsTy Flags) |
void | PreAnalyzeReturnValue (EVT ArgVT) |
MipsCCState (CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C, SpecialCallingConvType SpecialCC=NoSpecialCallingConv) | |
void | PreAnalyzeCallOperands (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn, std::vector< TargetLowering::ArgListEntry > &FuncArgs, const char *Func) |
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 | PreAnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
void | AnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
void | PreAnalyzeCallResult (const Type *RetTy, const char *Func) |
void | PreAnalyzeCallResult (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn, const Type *RetTy, const char *Func) |
void | AnalyzeCallResult (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn, const Type *RetTy, const char *Func) |
void | PreAnalyzeReturn (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
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 &Context, bool NegativeOffsets=false) | |
void | addLoc (const CCValAssign &V) |
LLVMContext & | getContext () const |
MachineFunction & | getMachineFunction () const |
CallingConv::ID | getCallingConv () const |
bool | isVarArg () const |
uint64_t | getStackSize () const |
Returns the size of the currently allocated portion of the stack. | |
uint64_t | 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. | |
bool | isAllocated (MCRegister Reg) const |
isAllocated - Return true if the specified register (or an alias) is allocated. | |
void | AnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals into this state. | |
void | AnalyzeArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn) |
The function will invoke AnalyzeFormalArguments. | |
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. | |
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. | |
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. | |
void | AnalyzeCallOperands (SmallVectorImpl< MVT > &ArgVTs, SmallVectorImpl< ISD::ArgFlagsTy > &Flags, CCAssignFn Fn) |
AnalyzeCallOperands - Same as above except it takes vectors of types and argument flags. | |
void | AnalyzeArguments (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn) |
The function will invoke AnalyzeCallOperands. | |
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. | |
bool | IsShadowAllocatedReg (MCRegister Reg) const |
A shadow allocated register is a register that was allocated but wasn't added to the location list (Locs). | |
void | AnalyzeCallResult (MVT VT, CCAssignFn Fn) |
AnalyzeCallResult - Same as above except it's specialized for calls which produce a single value. | |
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. | |
void | DeallocateReg (MCPhysReg Reg) |
MCRegister | AllocateReg (MCPhysReg Reg) |
AllocateReg - Attempt to allocate one register. | |
MCRegister | AllocateReg (MCPhysReg Reg, MCPhysReg ShadowReg) |
Version of AllocateReg with extra register to be shadowed. | |
MCPhysReg | AllocateReg (ArrayRef< MCPhysReg > Regs) |
AllocateReg - Attempt to allocate one of the specified registers. | |
MCPhysReg | AllocateRegBlock (ArrayRef< MCPhysReg > Regs, unsigned RegsRequired) |
AllocateRegBlock - Attempt to allocate a block of RegsRequired consecutive registers. | |
MCRegister | AllocateReg (ArrayRef< MCPhysReg > Regs, const MCPhysReg *ShadowRegs) |
Version of AllocateReg with list of registers to be shadowed. | |
int64_t | AllocateStack (unsigned Size, Align Alignment) |
AllocateStack - Allocate a chunk of stack space with the specified size and alignment. | |
void | ensureMaxAlignment (Align Alignment) |
int64_t | AllocateStack (unsigned Size, Align Alignment, ArrayRef< MCPhysReg > ShadowRegs) |
Version of AllocateStack with list of extra registers to be shadowed. | |
void | HandleByVal (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, int MinSize, Align MinAlign, ISD::ArgFlagsTy ArgFlags) |
Allocate space on the stack large enough to pass an argument by value. | |
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. | |
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. | |
template<class T > | |
void | AnalyzeArgumentsSecondPass (const SmallVectorImpl< T > &Args, CCAssignFn Fn) |
The function runs an additional analysis pass over function arguments. | |
Static Public Member Functions | |
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. | |
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. | |
static bool | originalEVTTypeIsVectorFloat (EVT Ty) |
Return true if the original type was vXfXX. | |
static bool | originalTypeIsVectorFloat (const Type *Ty) |
Return true if the original type was vXfXX / vXfXX. | |
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. | |
Definition at line 20 of file MipsCCState.h.
Enumerator | |
---|---|
Mips16RetHelperConv | |
NoSpecialCallingConv |
Definition at line 22 of file MipsCCState.h.
|
inline |
Definition at line 98 of file MipsCCState.h.
|
delete |
|
inline |
Definition at line 114 of file MipsCCState.h.
References llvm::CCState::AnalyzeCallOperands().
|
delete |
|
inline |
Definition at line 161 of file MipsCCState.h.
References llvm::CCState::AnalyzeCallResult(), PreAnalyzeCallResult(), and RetTy.
|
inline |
Definition at line 139 of file MipsCCState.h.
References llvm::CCState::AnalyzeFormalArguments(), and PreAnalyzeFormalArguments().
|
inline |
Definition at line 177 of file MipsCCState.h.
References llvm::CCState::AnalyzeReturn(), and PreAnalyzeReturn().
|
inline |
Definition at line 183 of file MipsCCState.h.
References llvm::CCState::CheckReturn(), and llvm::SmallVectorImpl< T >::clear().
|
inline |
Definition at line 205 of file MipsCCState.h.
|
static |
Determine the SpecialCallingConvType for the given callee.
Definition at line 70 of file MipsCCState.cpp.
References F, G, llvm::MipsSubtarget::inMips16HardFloat(), Mips16RetHelperConv, NoSpecialCallingConv, and Sym.
Definition at line 204 of file MipsCCState.h.
This function returns true if CallSym is a long double emulation routine.
FIXME: Changing the ABI based on the callee name is unsound. The lib func address could be captured.
Definition at line 15 of file MipsCCState.cpp.
References assert(), llvm::is_sorted(), and S1.
Referenced by originalTypeIsF128().
Return true if the original type was vXfXX.
Definition at line 54 of file MipsCCState.cpp.
References llvm::EVT::getVectorElementType(), llvm::EVT::isFloatingPoint(), and llvm::EVT::isVector().
Referenced by PreAnalyzeReturnValue().
This function returns true if Ty is fp128, {f128} or i128 which was originally a fp128.
Definition at line 39 of file MipsCCState.cpp.
References llvm::Type::getStructElementType(), llvm::Type::getStructNumElements(), isF128SoftLibCall(), llvm::Type::isFP128Ty(), llvm::Type::isIntegerTy(), and llvm::Type::isStructTy().
Referenced by PreAnalyzeCallOperand(), PreAnalyzeCallResult(), and PreAnalyzeFormalArgument().
Return true if the original type was vXfXX / vXfXX.
Definition at line 62 of file MipsCCState.cpp.
References llvm::Type::isFPOrFPVectorTy(), and llvm::Type::isVectorTy().
Referenced by PreAnalyzeCallResult().
Definition at line 133 of file MipsCCState.cpp.
References llvm::Type::isFloatingPointTy(), llvm::Type::isVectorTy(), originalTypeIsF128(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inline |
Definition at line 103 of file MipsCCState.h.
References llvm::SmallVectorImpl< T >::clear().
|
inline |
Definition at line 151 of file MipsCCState.h.
References llvm::SmallVectorImpl< T >::clear(), and RetTy.
Definition at line 145 of file MipsCCState.h.
References originalTypeIsF128(), originalTypeIsVectorFloat(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and RetTy.
Referenced by AnalyzeCallResult().
void MipsCCState::PreAnalyzeFormalArgument | ( | const Type * | ArgTy, |
ISD::ArgFlagsTy | Flags | ||
) |
Definition at line 157 of file MipsCCState.cpp.
References llvm::Type::isFloatingPointTy(), llvm::Type::isVectorTy(), originalTypeIsF128(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inline |
Definition at line 131 of file MipsCCState.h.
References llvm::SmallVectorImpl< T >::clear().
Referenced by AnalyzeFormalArguments().
|
inline |
Definition at line 168 of file MipsCCState.h.
References llvm::SmallVectorImpl< T >::clear().
Referenced by AnalyzeReturn().
void MipsCCState::PreAnalyzeReturnValue | ( | EVT | ArgVT | ) |
Definition at line 129 of file MipsCCState.cpp.
References originalEVTTypeIsVectorFloat(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Definition at line 194 of file MipsCCState.h.
Definition at line 195 of file MipsCCState.h.
Definition at line 198 of file MipsCCState.h.
Referenced by CC_MipsO32().
Definition at line 201 of file MipsCCState.h.