15 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H 16 #define LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H 28 static const MCPhysReg XRegList[] = {AArch64::X0, AArch64::X1, AArch64::X2,
29 AArch64::X3, AArch64::X4, AArch64::X5,
30 AArch64::X6, AArch64::X7};
31 static const MCPhysReg HRegList[] = {AArch64::H0, AArch64::H1, AArch64::H2,
32 AArch64::H3, AArch64::H4, AArch64::H5,
33 AArch64::H6, AArch64::H7};
35 AArch64::S3, AArch64::S4, AArch64::S5,
36 AArch64::S6, AArch64::S7};
38 AArch64::D3, AArch64::D4, AArch64::D5,
39 AArch64::D6, AArch64::D7};
41 AArch64::Q3, AArch64::Q4, AArch64::Q5,
42 AArch64::Q6, AArch64::Q7};
46 CCState &State,
unsigned SlotAlign) {
52 for (
auto &It : PendingMembers) {
59 PendingMembers.clear();
65 static bool CC_AArch64_Custom_Stack_Block(
78 return finishStackBlock(PendingMembers, LocVT, ArgFlags, State, 8);
84 static bool CC_AArch64_Custom_Block(
unsigned &ValNo,
MVT &ValVT,
MVT &LocVT,
117 for (
auto &It : PendingMembers) {
118 It.convertToReg(RegResult);
122 PendingMembers.clear();
127 for (
auto Reg : RegList)
134 return finishStackBlock(PendingMembers, LocVT, ArgFlags, State, SlotAlign);
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
static CCValAssign getPending(unsigned ValNo, MVT ValVT, MVT LocVT, LocInfo HTP, unsigned ExtraInfo=0)
GCNRegPressure max(const GCNRegPressure &P1, const GCNRegPressure &P2)
This class represents lattice values for constants.
void push_back(const T &Elt)
MachineFunction & getMachineFunction() const
bool isTargetDarwin() const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void addLoc(const CCValAssign &V)
bool is64BitVector() const
Return true if this is a 64-bit vector type.
unsigned getSizeInBits() const
SmallVectorImpl< CCValAssign > & getPendingLocs()
unsigned getStackAlignment() const
const DataLayout & getDataLayout() const
Return the DataLayout attached to the Module associated to this MF.
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
bool is128BitVector() const
Return true if this is a 128-bit vector type.
unsigned getOrigAlign() const
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
CCState - This class holds information needed while lowering arguments and return values...
unsigned AllocateRegBlock(ArrayRef< MCPhysReg > Regs, unsigned RegsRequired)
AllocateRegBlock - Attempt to allocate a block of RegsRequired consecutive registers.
bool is32BitVector() const
Return true if this is a 32-bit vector type.
bool isInConsecutiveRegsLast() const
static const MCPhysReg QRegList[]
static const MCPhysReg DRegList[]
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.
static const MCPhysReg SRegList[]