LLVM: llvm::CallLowering::ValueHandler Struct Reference (original) (raw)

#include "[llvm/CodeGen/GlobalISel/CallLowering.h](CallLowering%5F8h%5Fsource.html)"

Public Member Functions
ValueHandler (bool IsIncoming, MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
virtual ~ValueHandler ()=default
bool isIncomingArgumentHandler () const
Returns true if the handler is dealing with incoming arguments, i.e.
virtual Register getStackAddress (uint64_t MemSize, int64_t Offset, MachinePointerInfo &MPO, ISD::ArgFlagsTy Flags)=0
Materialize a VReg containing the address of the specified stack-based object.
virtual LLT getStackValueStoreType (const DataLayout &DL, const CCValAssign &VA, ISD::ArgFlagsTy Flags) const
Return the in-memory size to write for the argument at VA.
virtual void assignValueToReg (Register ValVReg, Register PhysReg, const CCValAssign &VA)=0
The specified value has been assigned to a physical register, handle the appropriate COPY (either to or from) and mark any relevant uses/defines as needed.
virtual void assignValueToAddress (Register ValVReg, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, const CCValAssign &VA)=0
The specified value has been assigned to a stack location.
virtual void assignValueToAddress (const ArgInfo &Arg, unsigned ValRegIndex, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, const CCValAssign &VA)
An overload which takes an ArgInfo if additional information about the arg is needed.
virtual unsigned assignCustomValue (ArgInfo &Arg, ArrayRef< CCValAssign > VAs, std::function< void()> *Thunk=nullptr)
Handle custom values, which may be passed into one or more of VAs.
void copyArgumentMemory (const ArgInfo &Arg, Register DstPtr, Register SrcPtr, const MachinePointerInfo &DstPtrInfo, Align DstAlign, const MachinePointerInfo &SrcPtrInfo, Align SrcAlign, uint64_t MemSize, CCValAssign &VA) const
Do a memory copy of MemSize bytes from SrcPtr to DstPtr.
Register extendRegister (Register ValReg, const CCValAssign &VA, unsigned MaxSizeBits=0)
Extend a register to the location type given in VA, capped at extending to at most MaxSize bits.

Definition at line 242 of file CallLowering.h.

~ValueHandler()

virtual llvm::CallLowering::ValueHandler::~ValueHandler ( ) virtualdefault

assignCustomValue()

virtual unsigned llvm::CallLowering::ValueHandler::assignCustomValue ( ArgInfo & Arg, ArrayRef< CCValAssign > VAs, std::function< void()> * Thunk = nullptr ) inlinevirtual

Handle custom values, which may be passed into one or more of VAs.

If the handler wants the assignments to be delayed until after mem loc assignments, then it sets Thunk to the thunk to do the assignment.

Returns

The number of VAs that have been assigned including the first one, and which should therefore be skipped from further processing.

Definition at line 308 of file CallLowering.h.

References llvm_unreachable.

Referenced by llvm::CallLowering::handleAssignments().

assignValueToAddress() [1/2]

assignValueToAddress() [2/2]

assignValueToReg()

copyArgumentMemory()

extendRegister()

Extend a register to the location type given in VA, capped at extending to at most MaxSize bits.

If MaxSizeBits is 0 then no maximum is set.

Definition at line 1299 of file CallLowering.cpp.

References llvm::CCValAssign::AExt, llvm::CCValAssign::BCvt, llvm::CCValAssign::Full, llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocVT(), llvm::LLT::getSizeInBits(), llvm::CCValAssign::getValVT(), llvm::LLT::isPointer(), llvm::LLT::isScalar(), llvm_unreachable, MIRBuilder, MRI, llvm::LLT::scalar(), llvm::CCValAssign::SExt, and llvm::CCValAssign::ZExt.

Referenced by M68kOutgoingArgHandler::assignValueToAddress(), and M68kOutgoingArgHandler::assignValueToReg().

getStackAddress()

getStackValueStoreType()

isIncomingArgumentHandler()

bool llvm::CallLowering::ValueHandler::isIncomingArgumentHandler ( ) const inline

IsIncomingArgumentHandler

const bool llvm::CallLowering::ValueHandler::IsIncomingArgumentHandler

MIRBuilder

Definition at line 243 of file CallLowering.h.

Referenced by M68kOutgoingArgHandler::assignValueToAddress(), llvm::CallLowering::IncomingValueHandler::assignValueToReg(), M68kOutgoingArgHandler::assignValueToReg(), llvm::CallLowering::IncomingValueHandler::buildExtensionHint(), copyArgumentMemory(), extendRegister(), llvm::FormalArgHandler::FormalArgHandler(), M68kOutgoingArgHandler::getStackAddress(), llvm::CallLowering::IncomingValueHandler::IncomingValueHandler(), llvm::M68kIncomingValueHandler::M68kIncomingValueHandler(), M68kOutgoingArgHandler::M68kOutgoingArgHandler(), llvm::CallLowering::OutgoingValueHandler::OutgoingValueHandler(), llvm::PPCIncomingValueHandler::PPCIncomingValueHandler(), and ValueHandler().

MRI

Definition at line 244 of file CallLowering.h.

Referenced by llvm::CallLowering::IncomingValueHandler::assignValueToReg(), llvm::CallLowering::IncomingValueHandler::buildExtensionHint(), copyArgumentMemory(), extendRegister(), llvm::FormalArgHandler::FormalArgHandler(), llvm::CallLowering::IncomingValueHandler::IncomingValueHandler(), llvm::M68kIncomingValueHandler::M68kIncomingValueHandler(), M68kOutgoingArgHandler::M68kOutgoingArgHandler(), llvm::CallLowering::OutgoingValueHandler::OutgoingValueHandler(), llvm::PPCIncomingValueHandler::PPCIncomingValueHandler(), and ValueHandler().


The documentation for this struct was generated from the following files: