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)
void push_back(const T &Elt)
static CCValAssign getPending(unsigned ValNo, MVT ValVT, MVT LocVT, LocInfo HTP, unsigned ExtraInfo=0)
void AnalyzeFormalArguments(const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
const MCPhysReg ArgFPRs[NumArgFPRs]
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...
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
const unsigned NumArgGPRs
bool isVector() const
isVector - Return true if this is a vector value type.
struct fuzzer::@269 Flags
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void addLoc(const CCValAssign &V)
Reg
All possible values of the reg field in the ModR/M byte.
SmallVectorImpl< llvm::CCValAssign > & getPendingLocs()
LLVM_NODISCARD bool empty() const
const unsigned NumArgFPRs
unsigned getStoreSize() const
getStoreSize - Return the number of bytes overwritten by a store of the specified value type...
MVT - Machine Value Type.
This is an important class for using LLVM in a threaded context.
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
EVT - Extended Value Type.
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)
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
void AnalyzeCallOperands(const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed v...
LLVM_ATTRIBUTE_ALWAYS_INLINE size_type size() 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.