LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
llvm::PatchPointOpers Class Reference

MI-level patchpoint operands. More...

#include <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
 
unsigned getMetaIdx (unsigned Pos=0) const
 
const MachineOperandgetMetaOper (unsigned Pos)
 
unsigned getArgIdx () const
 
unsigned getVarIdx () const
 
unsigned getStackMapStartIdx () const
 
unsigned getNextScratchIdx (unsigned StartIdx=0) const
 Get the next scratch register operand index. More...
 

Detailed Description

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 37 of file StackMaps.h.

Member Enumeration Documentation

anonymous enum

Enumerate the meta operands.

Enumerator
IDPos 
NBytesPos 
TargetPos 
NArgPos 
CCPos 
MetaEnd 

Definition at line 40 of file StackMaps.h.

Constructor & Destructor Documentation

PatchPointOpers::PatchPointOpers ( const MachineInstr MI)
explicit

Member Function Documentation

unsigned llvm::PatchPointOpers::getArgIdx ( ) const
inline

Definition at line 60 of file StackMaps.h.

References getMetaIdx(), and MetaEnd.

Referenced by getStackMapStartIdx().

unsigned llvm::PatchPointOpers::getMetaIdx ( unsigned  Pos = 0) const
inline

Definition at line 51 of file StackMaps.h.

References MetaEnd.

Referenced by getArgIdx(), getMetaOper(), getVarIdx(), and PatchPointOpers().

const MachineOperand& llvm::PatchPointOpers::getMetaOper ( unsigned  Pos)
inline

Definition at line 56 of file StackMaps.h.

References getMetaIdx(), and llvm::MachineInstr::getOperand().

Referenced by LowerPATCHPOINT().

unsigned PatchPointOpers::getNextScratchIdx ( unsigned  StartIdx = 0) const
unsigned llvm::PatchPointOpers::getStackMapStartIdx ( ) const
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 71 of file StackMaps.h.

References getArgIdx(), and getVarIdx().

unsigned llvm::PatchPointOpers::getVarIdx ( ) const
inline

Get the operand index of the variable list of non-argument operands. These hold the "live state".

Definition at line 64 of file StackMaps.h.

References llvm::MachineOperand::getImm(), getMetaIdx(), llvm::MachineInstr::getOperand(), MetaEnd, and NArgPos.

Referenced by foldPatchpoint(), getNextScratchIdx(), and getStackMapStartIdx().

bool llvm::PatchPointOpers::hasDef ( ) const
inline

Definition at line 49 of file StackMaps.h.

bool llvm::PatchPointOpers::isAnyReg ( ) const
inline

Definition at line 48 of file StackMaps.h.


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