struct CallLowering::ValueHandler
Declaration
struct CallLowering::ValueHandler { /* full declaration omitted */ };
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:226
Member Variables
- public llvm::MachineIRBuilder& MIRBuilder
- public llvm::MachineRegisterInfo& MRI
- public const bool IsIncomingArgumentHandler
Method Overview
- public ValueHandler(bool IsIncoming, llvm::MachineIRBuilder & MIRBuilder, llvm::MachineRegisterInfo & MRI)
- public virtual unsigned int assignCustomValue(llvm::CallLowering::ArgInfo & Arg, ArrayRef<llvm::CCValAssign> VAs, std::function<void ()> * Thunk = nullptr)
- public virtual void assignValueToAddress(llvm::Register ValVReg, llvm::Register Addr, llvm::LLT MemTy, llvm::MachinePointerInfo & MPO, llvm::CCValAssign & VA)
- public virtual void assignValueToAddress(const llvm::CallLowering::ArgInfo & Arg, unsigned int ValRegIndex, llvm::Register Addr, llvm::LLT MemTy, llvm::MachinePointerInfo & MPO, llvm::CCValAssign & VA)
- public virtual void assignValueToReg(llvm::Register ValVReg, llvm::Register PhysReg, llvm::CCValAssign VA)
- public void copyArgumentMemory(const llvm::CallLowering::ArgInfo & Arg, llvm::Register DstPtr, llvm::Register SrcPtr, const llvm::MachinePointerInfo & DstPtrInfo, llvm::Align DstAlign, const llvm::MachinePointerInfo & SrcPtrInfo, llvm::Align SrcAlign, uint64_t MemSize, llvm::CCValAssign & VA) const
- public llvm::Register extendRegister(llvm::Register ValReg, llvm::CCValAssign & VA, unsigned int MaxSizeBits = 0)
- public virtual llvm::Register getStackAddress(uint64_t MemSize, int64_t Offset, llvm::MachinePointerInfo & MPO, ISD::ArgFlagsTy Flags)
- public virtual llvm::LLT getStackValueStoreType(const llvm::DataLayout & DL, const llvm::CCValAssign & VA, ISD::ArgFlagsTy Flags) const
- public bool isIncomingArgumentHandler() const
- public virtual ~ValueHandler()
Methods
¶ValueHandler(bool IsIncoming,
llvm::MachineIRBuilder& MIRBuilder,
llvm::MachineRegisterInfo& MRI)
ValueHandler(bool IsIncoming,
llvm::MachineIRBuilder& MIRBuilder,
llvm::MachineRegisterInfo& MRI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:231
Parameters
- bool IsIncoming
- llvm::MachineIRBuilder& MIRBuilder
- llvm::MachineRegisterInfo& MRI
¶virtual unsigned int assignCustomValue(
llvm::CallLowering::ArgInfo& Arg,
ArrayRef<llvm::CCValAssign> VAs,
std::function<void()>* Thunk = nullptr)
virtual unsigned int assignCustomValue(
llvm::CallLowering::ArgInfo& Arg,
ArrayRef<llvm::CCValAssign> VAs,
std::function<void()>* Thunk = nullptr)
Description
Handle custom values, which may be passed into one or more of \p VAs. \p If the handler wants the assignments to be delayed until after mem loc assignments, then it sets \p Thunk to the thunk to do the assignment.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:292
Parameters
- llvm::CallLowering::ArgInfo& Arg
- ArrayRef<llvm::CCValAssign> VAs
- std::function<void()>* Thunk = nullptr
Returns
The number of \p VAs that have been assigned after the first one, and which should therefore be skipped from further processing.
¶virtual void assignValueToAddress(
llvm::Register ValVReg,
llvm::Register Addr,
llvm::LLT MemTy,
llvm::MachinePointerInfo& MPO,
llvm::CCValAssign& VA)
virtual void assignValueToAddress(
llvm::Register ValVReg,
llvm::Register Addr,
llvm::LLT MemTy,
llvm::MachinePointerInfo& MPO,
llvm::CCValAssign& VA)
Description
The specified value has been assigned to a stack location. Load or store it there, with appropriate extension if necessary.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:271
Parameters
- llvm::Register ValVReg
- llvm::Register Addr
- llvm::LLT MemTy
- llvm::MachinePointerInfo& MPO
- llvm::CCValAssign& VA
¶virtual void assignValueToAddress(
const llvm::CallLowering::ArgInfo& Arg,
unsigned int ValRegIndex,
llvm::Register Addr,
llvm::LLT MemTy,
llvm::MachinePointerInfo& MPO,
llvm::CCValAssign& VA)
virtual void assignValueToAddress(
const llvm::CallLowering::ArgInfo& Arg,
unsigned int ValRegIndex,
llvm::Register Addr,
llvm::LLT MemTy,
llvm::MachinePointerInfo& MPO,
llvm::CCValAssign& VA)
Description
An overload which takes an ArgInfo if additional information about the arg is needed. \p ValRegIndex is the index in \p Arg.Regs for the value to store.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:278
Parameters
- const llvm::CallLowering::ArgInfo& Arg
- unsigned int ValRegIndex
- llvm::Register Addr
- llvm::LLT MemTy
- llvm::MachinePointerInfo& MPO
- llvm::CCValAssign& VA
¶virtual void assignValueToReg(
llvm::Register ValVReg,
llvm::Register PhysReg,
llvm::CCValAssign VA)
virtual void assignValueToReg(
llvm::Register ValVReg,
llvm::Register PhysReg,
llvm::CCValAssign VA)
Description
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.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:265
Parameters
- llvm::Register ValVReg
- llvm::Register PhysReg
- llvm::CCValAssign VA
¶void copyArgumentMemory(
const llvm::CallLowering::ArgInfo& Arg,
llvm::Register DstPtr,
llvm::Register SrcPtr,
const llvm::MachinePointerInfo& DstPtrInfo,
llvm::Align DstAlign,
const llvm::MachinePointerInfo& SrcPtrInfo,
llvm::Align SrcAlign,
uint64_t MemSize,
llvm::CCValAssign& VA) const
void copyArgumentMemory(
const llvm::CallLowering::ArgInfo& Arg,
llvm::Register DstPtr,
llvm::Register SrcPtr,
const llvm::MachinePointerInfo& DstPtrInfo,
llvm::Align DstAlign,
const llvm::MachinePointerInfo& SrcPtrInfo,
llvm::Align SrcAlign,
uint64_t MemSize,
llvm::CCValAssign& VA) const
Description
Do a memory copy of \p MemSize bytes from \p SrcPtr to \p DstPtr. This is necessary for outgoing stack-passed byval arguments.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:302
Parameters
- const llvm::CallLowering::ArgInfo& Arg
- llvm::Register DstPtr
- llvm::Register SrcPtr
- const llvm::MachinePointerInfo& DstPtrInfo
- llvm::Align DstAlign
- const llvm::MachinePointerInfo& SrcPtrInfo
- llvm::Align SrcAlign
- uint64_t MemSize
- llvm::CCValAssign& VA
¶llvm::Register extendRegister(
llvm::Register ValReg,
llvm::CCValAssign& VA,
unsigned int MaxSizeBits = 0)
llvm::Register extendRegister(
llvm::Register ValReg,
llvm::CCValAssign& VA,
unsigned int MaxSizeBits = 0)
Description
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.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:309
Parameters
- llvm::Register ValReg
- llvm::CCValAssign& VA
- unsigned int MaxSizeBits = 0
¶virtual llvm::Register getStackAddress(
uint64_t MemSize,
int64_t Offset,
llvm::MachinePointerInfo& MPO,
ISD::ArgFlagsTy Flags)
virtual llvm::Register getStackAddress(
uint64_t MemSize,
int64_t Offset,
llvm::MachinePointerInfo& MPO,
ISD::ArgFlagsTy Flags)
Description
Materialize a VReg containing the address of the specified stack-based object. This is either based on a FrameIndex or direct SP manipulation, depending on the context. \p MPO should be initialized to an appropriate description of the address created.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:249
Parameters
- uint64_t MemSize
- int64_t Offset
- llvm::MachinePointerInfo& MPO
- ISD::ArgFlagsTy Flags
¶virtual llvm::LLT getStackValueStoreType(
const llvm::DataLayout& DL,
const llvm::CCValAssign& VA,
ISD::ArgFlagsTy Flags) const
virtual llvm::LLT getStackValueStoreType(
const llvm::DataLayout& DL,
const llvm::CCValAssign& VA,
ISD::ArgFlagsTy Flags) const
Description
Return the in-memory size to write for the argument at \p VA. This may be smaller than the allocated stack slot size. This is overridable primarily for targets to maintain compatibility with hacks around the existing DAG call lowering infrastructure.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:258
Parameters
- const llvm::DataLayout& DL
- const llvm::CCValAssign& VA
- ISD::ArgFlagsTy Flags
¶bool isIncomingArgumentHandler() const
bool isIncomingArgumentHandler() const
Description
Returns true if the handler is dealing with incoming arguments, i.e. those that move values from some physical location to vregs.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:240
¶virtual ~ValueHandler()
virtual ~ValueHandler()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:236