LLVM 20.0.0git
|
MI-level patchpoint operands. More...
#include "llvm/CodeGen/StackMaps.h"
Public Types | |
enum | { IDPos , NBytesPos , TargetPos , NArgPos , CCPos , MetaEnd } |
Enumerate the meta operands. More... | |
Public Member Functions | |
PatchPointOpers (const MachineInstr *MI) | |
bool | isAnyReg () const |
bool | hasDef () const |
uint64_t | getID () const |
Return the ID for the given patchpoint. | |
uint32_t | getNumPatchBytes () const |
Return the number of patchable bytes the given patchpoint should emit. | |
const MachineOperand & | getCallTarget () const |
Returns the target of the underlying call. | |
CallingConv::ID | getCallingConv () const |
Returns the calling convention. | |
unsigned | getArgIdx () const |
uint32_t | getNumCallArgs () const |
Return the number of call arguments. | |
unsigned | getVarIdx () const |
Get the operand index of the variable list of non-argument operands. | |
unsigned | getStackMapStartIdx () const |
Get the index at which stack map locations will be recorded. | |
unsigned | getNextScratchIdx (unsigned StartIdx=0) const |
Get the next scratch register operand index. | |
MI-level patchpoint operands.
MI patchpoint operations take the form: [<def>], <id>, <numBytes>, <target>, <numArgs>, <cc>, ...
IR patchpoint intrinsics do not have the <cc> operand because calling convention is part of the subclass data.
SD patchpoint nodes do not have a def operand because it is part of the SDValue.
Patchpoints following the anyregcc convention are handled specially. For these, the stack map also records the location of the return value and arguments.
Definition at line 76 of file StackMaps.h.
anonymous enum |
Enumerate the meta operands.
Enumerator | |
---|---|
IDPos | |
NBytesPos | |
TargetPos | |
NArgPos | |
CCPos | |
MetaEnd |
Definition at line 79 of file StackMaps.h.
|
explicit |
Definition at line 62 of file StackMaps.cpp.
|
inline |
Definition at line 118 of file StackMaps.h.
References MetaEnd.
Referenced by getStackMapStartIdx().
|
inline |
Returns the calling convention.
Definition at line 114 of file StackMaps.h.
References CCPos, and llvm::MachineOperand::getImm().
Referenced by isAnyReg().
|
inline |
Returns the target of the underlying call.
Definition at line 109 of file StackMaps.h.
References TargetPos.
|
inline |
Return the ID for the given patchpoint.
Definition at line 101 of file StackMaps.h.
References llvm::MachineOperand::getImm(), and IDPos.
Referenced by llvm::StackMaps::recordPatchPoint().
Get the next scratch register operand index.
Definition at line 77 of file StackMaps.cpp.
References assert(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), getVarIdx(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isEarlyClobber(), llvm::MachineOperand::isImplicit(), and llvm::MachineOperand::isReg().
|
inline |
Return the number of call arguments.
Definition at line 121 of file StackMaps.h.
Referenced by getVarIdx(), and llvm::StackMaps::recordPatchPoint().
|
inline |
Return the number of patchable bytes the given patchpoint should emit.
Definition at line 104 of file StackMaps.h.
References llvm::MachineOperand::getImm(), and NBytesPos.
Referenced by llvm::AArch64InstrInfo::getInstSizeInBytes(), llvm::PPCInstrInfo::getInstSizeInBytes(), llvm::RISCVInstrInfo::getInstSizeInBytes(), and llvm::SystemZInstrInfo::getInstSizeInBytes().
|
inline |
Get the index at which stack map locations will be recorded.
Arguments are not recorded unless the anyregcc convention is used.
Definition at line 133 of file StackMaps.h.
References getArgIdx(), getVarIdx(), and isAnyReg().
Referenced by llvm::StackMaps::recordPatchPoint().
|
inline |
Get the operand index of the variable list of non-argument operands.
These hold the "live state".
Definition at line 127 of file StackMaps.h.
References getNumCallArgs(), and MetaEnd.
Referenced by getNextScratchIdx(), and getStackMapStartIdx().
|
inline |
Definition at line 98 of file StackMaps.h.
Referenced by llvm::StackMaps::recordPatchPoint().
|
inline |
Definition at line 97 of file StackMaps.h.
References llvm::CallingConv::AnyReg, and getCallingConv().
Referenced by getStackMapStartIdx(), and llvm::StackMaps::recordPatchPoint().