LLVM: lib/Target/AArch64/AArch64CallingConvention.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool finishStackBlock (SmallVectorImpl< CCValAssign > &PendingMembers, MVT LocVT, ISD::ArgFlagsTy &ArgFlags, CCState &State, Align SlotAlign)
static bool CC_AArch64_Custom_Stack_Block (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
The Darwin variadic PCS places anonymous arguments in 8-byte stack slots.
static bool CC_AArch64_Custom_Block (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
Given an [N x Ty] block, it should be passed in a consecutive sequence of registers.
Variables
static const MCPhysReg XRegList []
static const MCPhysReg HRegList []
static const MCPhysReg SRegList []
static const MCPhysReg DRegList []
static const MCPhysReg QRegList []
static const MCPhysReg ZRegList []
static const MCPhysReg PRegList []

CC_AArch64_Custom_Block()

Given an [N x Ty] block, it should be passed in a consecutive sequence of registers.

If no such sequence is available, mark the rest of the registers of that type as used and place the argument on the stack.

Definition at line 135 of file AArch64CallingConvention.cpp.

References llvm::CCValAssign::AExtUpper, llvm::alignTo(), assert(), llvm::SmallVectorImpl< T >::clear(), DRegList, llvm::ArrayRef< T >::empty(), finishStackBlock(), llvm::ISD::ArgFlagsTy::getNonZeroMemAlign(), llvm::CCValAssign::getPending(), llvm::CCValAssign::getReg(), HRegList, Info, llvm::MVT::is128BitVector(), llvm::MVT::is32BitVector(), llvm::MVT::is64BitVector(), llvm::ISD::ArgFlagsTy::isInConsecutiveRegsLast(), llvm::MVT::isScalableVector(), llvm::AArch64Subtarget::isTargetDarwin(), llvm::AArch64Subtarget::isTargetILP32(), llvm::AArch64Subtarget::isTargetMachO(), PRegList, llvm::SmallVectorTemplateBase< T, bool >::push_back(), QRegList, Reg, llvm::MVT::SimpleTy, llvm::SmallVectorTemplateCommon< T, typename >::size(), SRegList, XRegList, llvm::CCValAssign::ZExt, llvm::zip(), and ZRegList.

CC_AArch64_Custom_Stack_Block()

finishStackBlock()

Definition at line 43 of file AArch64CallingConvention.cpp.

References llvm::AArch64TargetLowering::CCAssignFnForCall(), llvm::SmallVectorImpl< T >::clear(), llvm::CCValAssign::Full, llvm::MVT::getSizeInBits(), llvm::AArch64Subtarget::getTargetLowering(), llvm::EVT::getTypeForEVT(), I, llvm::MVT::isScalableVector(), llvm_unreachable, PRegList, llvm::ISD::ArgFlagsTy::setInConsecutiveRegs(), llvm::ISD::ArgFlagsTy::setInConsecutiveRegsLast(), Size, and ZRegList.

Referenced by CC_AArch64_Custom_Block(), and CC_AArch64_Custom_Stack_Block().

DRegList

HRegList

PRegList

QRegList

SRegList

XRegList

ZRegList