10 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZCALLINGCONV_H 11 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZCALLINGCONV_H 36 bool IsShortVectorType(
EVT ArgVT) {
43 :
CCState(CC, isVarArg, MF, locs, C) {}
49 for (
unsigned i = 0; i < Ins.
size(); ++i)
52 ArgIsShortVector.
clear();
53 for (
unsigned i = 0; i < Ins.
size(); ++i)
54 ArgIsShortVector.
push_back(IsShortVectorType(Ins[i].ArgVT));
63 for (
unsigned i = 0; i < Outs.
size(); ++i)
66 ArgIsShortVector.
clear();
67 for (
unsigned i = 0; i < Outs.
size(); ++i)
68 ArgIsShortVector.
push_back(IsShortVectorType(Outs[i].ArgVT));
79 bool IsFixed(
unsigned ValNo) {
return ArgIsFixed[ValNo]; }
115 for (
auto &It : PendingMembers) {
117 It.convertToReg(Reg);
119 It.convertToMem(Offset);
123 PendingMembers.clear();
bool CC_SystemZ_I128Indirect(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static CCValAssign getPending(unsigned ValNo, MVT ValVT, MVT LocVT, LocInfo HTP, unsigned ExtraInfo=0)
This class represents lattice values for constants.
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
const MCPhysReg ArgFPRs[NumArgFPRs]
void push_back(const T &Elt)
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals in...
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...
const unsigned NumArgGPRs
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void addLoc(const CCValAssign &V)
unsigned getStoreSize() const
Return the number of bytes overwritten by a store of the specified value type.
SmallVectorImpl< CCValAssign > & getPendingLocs()
const unsigned NumArgFPRs
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
This is an important class for using LLVM in a threaded context.
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
bool IsShortVector(unsigned ValNo)
CCState - This class holds information needed while lowering arguments and return values...
bool IsFixed(unsigned ValNo)
SystemZCCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C)
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed v...
bool isVector() const
Return true if this is a vector value type.
LLVM_NODISCARD bool empty() const
const MCPhysReg ArgGPRs[NumArgGPRs]
unsigned AllocateReg(unsigned Reg)
AllocateReg - Attempt to allocate one register.
unsigned AllocateStack(unsigned Size, unsigned Align)
AllocateStack - Allocate a chunk of stack space with the specified size and alignment.