15 #ifndef LLVM_LIB_TARGET_X86_X86CALLINGCONV_H 16 #define LLVM_LIB_TARGET_X86_X86CALLINGCONV_H 30 ISD::ArgFlagsTy &ArgFlags, CCState &State);
40 ISD::ArgFlagsTy &ArgFlags, CCState &State);
49 ISD::ArgFlagsTy &ArgFlags, CCState &State);
55 "stackmap and patchpoint intrinsics.");
68 static const unsigned NumRegs =
sizeof(RegList)/
sizeof(RegList[0]);
85 if (PendingMembers.
empty()) {
103 bool UseRegs = PendingMembers.
size() <= std::min(2U, NumRegs - FirstFree);
105 for (
auto &It : PendingMembers) {
107 It.convertToReg(State.
AllocateReg(RegList[FirstFree++]));
113 PendingMembers.clear();
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.
static CCValAssign getPending(unsigned ValNo, MVT ValVT, MVT LocVT, LocInfo HTP, unsigned ExtraInfo=0)
This class represents lattice values for constants.
void push_back(const T &Elt)
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void addLoc(const CCValAssign &V)
SmallVectorImpl< CCValAssign > & getPendingLocs()
bool CC_X86_32_VectorCall(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
Vectorcall calling convention has special handling for vector types or HVA for 32 bit arch...
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
static CCValAssign getReg(unsigned ValNo, MVT ValVT, unsigned RegNo, MVT LocVT, LocInfo HTP)
bool CC_X86_64_VectorCall(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
Vectorcall calling convention has special handling for vector types or HVA for 64 bit arch...
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
CCState - This class holds information needed while lowering arguments and return values...
bool CC_X86_32_MCUInReg(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
LLVM_NODISCARD bool empty() const
bool CC_X86_AnyReg_Error(unsigned &, MVT &, MVT &, CCValAssign::LocInfo &, ISD::ArgFlagsTy &, CCState &)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool CC_X86_32_RegCall_Assign2Regs(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
When regcall calling convention compiled to 32 bit arch, special treatment is required for 64 bit mas...
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.