LLVM 22.0.0git
M68kOutgoingArgHandler Struct Reference
Inheritance diagram for M68kOutgoingArgHandler:
[legend]

Public Member Functions

 M68kOutgoingArgHandler (MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI, MachineInstrBuilder MIB)
void assignValueToReg (Register ValVReg, Register PhysReg, const CCValAssign &VA) override
 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.
void assignValueToAddress (Register ValVReg, Register Addr, LLT MemTy, const MachinePointerInfo &MPO, const CCValAssign &VA) override
 The specified value has been assigned to a stack location.
Register getStackAddress (uint64_t Size, int64_t Offset, MachinePointerInfo &MPO, ISD::ArgFlagsTy Flags) override
 Materialize a VReg containing the address of the specified stack-based object.
Public Member Functions inherited from llvm::CallLowering::OutgoingValueHandler
 OutgoingValueHandler (MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI)
Public Member Functions inherited from llvm::CallLowering::ValueHandler
 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 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 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.

Public Attributes

MachineInstrBuilder MIB
const DataLayoutDL
const M68kSubtargetSTI
Public Attributes inherited from llvm::CallLowering::ValueHandler
MachineIRBuilderMIRBuilder
MachineRegisterInfoMRI
const bool IsIncomingArgumentHandler

Detailed Description

Definition at line 52 of file M68kCallLowering.cpp.

Constructor & Destructor Documentation

◆ M68kOutgoingArgHandler()

Member Function Documentation

◆ assignValueToAddress()

void M68kOutgoingArgHandler::assignValueToAddress ( Register ValVReg,
Register Addr,
LLT MemTy,
const MachinePointerInfo & MPO,
const CCValAssign & VA )
inlineoverridevirtual

The specified value has been assigned to a stack location.

Load or store it there, with appropriate extension if necessary.

Implements llvm::CallLowering::ValueHandler.

Definition at line 66 of file M68kCallLowering.cpp.

References llvm::CallLowering::ValueHandler::extendRegister(), llvm::MachineFunction::getMachineMemOperand(), llvm::inferAlignFromPtrInfo(), llvm::CallLowering::ValueHandler::MIRBuilder, and llvm::MachineMemOperand::MOStore.

◆ assignValueToReg()

void M68kOutgoingArgHandler::assignValueToReg ( Register ValVReg,
Register PhysReg,
const CCValAssign & VA )
inlineoverridevirtual

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.

Implements llvm::CallLowering::ValueHandler.

Definition at line 59 of file M68kCallLowering.cpp.

References llvm::CallLowering::ValueHandler::extendRegister(), llvm::RegState::Implicit, MIB, and llvm::CallLowering::ValueHandler::MIRBuilder.

◆ getStackAddress()

Register M68kOutgoingArgHandler::getStackAddress ( uint64_t MemSize,
int64_t Offset,
MachinePointerInfo & MPO,
ISD::ArgFlagsTy Flags )
inlineoverridevirtual

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. MPO should be initialized to an appropriate description of the address created.

Implements llvm::CallLowering::ValueHandler.

Definition at line 77 of file M68kCallLowering.cpp.

References DL, llvm::MachinePointerInfo::getStack(), llvm::CallLowering::ValueHandler::MIRBuilder, llvm::Offset, llvm::LLT::pointer(), llvm::LLT::scalar(), Size, SPReg, and STI.

Member Data Documentation

◆ DL

const DataLayout& M68kOutgoingArgHandler::DL

Definition at line 90 of file M68kCallLowering.cpp.

Referenced by getStackAddress(), and M68kOutgoingArgHandler().

◆ MIB

MachineInstrBuilder M68kOutgoingArgHandler::MIB

Definition at line 89 of file M68kCallLowering.cpp.

Referenced by assignValueToReg(), and M68kOutgoingArgHandler().

◆ STI

const M68kSubtarget& M68kOutgoingArgHandler::STI

Definition at line 91 of file M68kCallLowering.cpp.

Referenced by getStackAddress(), and M68kOutgoingArgHandler().


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