LLVM API Documentation

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

#include <AArch64InstrInfo.h>

Inheritance diagram for llvm::AArch64InstrInfo:
Inheritance graph
[legend]
Collaboration diagram for llvm::AArch64InstrInfo:
Collaboration graph
[legend]

Public Member Functions

 AArch64InstrInfo (const AArch64Subtarget &TM)
 
const TargetRegisterInfogetRegisterInfo () const
 
const AArch64SubtargetgetSubTarget () const
 
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator I, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const
 
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
 
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIdx, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
 
bool AnalyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const
 
unsigned InsertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const
 
unsigned RemoveBranch (MachineBasicBlock &MBB) const
 
bool ReverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const
 
bool expandPostRAPseudo (MachineBasicBlock::iterator MI) const
 
unsigned estimateRSStackLimit (MachineFunction &MF) const
 
void getAddressConstraints (const MachineInstr &MI, int &AccessScale, int &MinOffset, int &MaxOffset) const
 
unsigned getInstSizeInBytes (const MachineInstr &MI) const
 
unsigned getInstBundleLength (const MachineInstr &MI) const
 

Detailed Description

Definition at line 27 of file AArch64InstrInfo.h.

Constructor & Destructor Documentation

AArch64InstrInfo::AArch64InstrInfo ( const AArch64Subtarget TM)
explicit

Definition at line 37 of file AArch64InstrInfo.cpp.

Member Function Documentation

bool AArch64InstrInfo::AnalyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TBB,
MachineBasicBlock *&  FBB,
SmallVectorImpl< MachineOperand > &  Cond,
bool  AllowModify = false 
) const
void AArch64InstrInfo::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  I,
DebugLoc  DL,
unsigned  DestReg,
unsigned  SrcReg,
bool  KillSrc 
) const
unsigned AArch64InstrInfo::estimateRSStackLimit ( MachineFunction MF) const

Look through the instructions in this function and work out the largest the stack frame can be while maintaining the ability to address local slots with no complexities.

Definition at line 486 of file AArch64InstrInfo.cpp.

References llvm::MachineFunction::begin(), llvm::MachineFunction::end(), getAddressConstraints(), I, and MaxOffset.

Referenced by llvm::AArch64FrameLowering::processFunctionBeforeCalleeSavedScan().

bool AArch64InstrInfo::expandPostRAPseudo ( MachineBasicBlock::iterator  MI) const
void AArch64InstrInfo::getAddressConstraints ( const MachineInstr MI,
int &  AccessScale,
int &  MinOffset,
int &  MaxOffset 
) const

getAddressConstraints - For loads and stores (and PRFMs) taking an immediate offset, this function determines the constraints required for the immediate. It must satisfy:

  • MinOffset <= imm <= MaxOffset
  • imm % OffsetScale == 0

Definition at line 512 of file AArch64InstrInfo.cpp.

References llvm::TargetOpcode::DBG_VALUE, llvm::MachineInstr::getOpcode(), and llvm_unreachable.

Referenced by llvm::AArch64RegisterInfo::eliminateFrameIndex(), and estimateRSStackLimit().

unsigned AArch64InstrInfo::getInstBundleLength ( const MachineInstr MI) const
unsigned AArch64InstrInfo::getInstSizeInBytes ( const MachineInstr MI) const
const TargetRegisterInfo& llvm::AArch64InstrInfo::getRegisterInfo ( ) const
inline

getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As such, whenever a client has an instance of instruction info, it should always be able to get register info as well (through this method).

Definition at line 37 of file AArch64InstrInfo.h.

Referenced by llvm::AArch64TargetMachine::getRegisterInfo().

const AArch64Subtarget& llvm::AArch64InstrInfo::getSubTarget ( ) const
inline

Definition at line 39 of file AArch64InstrInfo.h.

Referenced by copyPhysReg().

unsigned AArch64InstrInfo::InsertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TBB,
MachineBasicBlock FBB,
const SmallVectorImpl< MachineOperand > &  Cond,
DebugLoc  DL 
) const
void AArch64InstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  DestReg,
int  FrameIdx,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const
unsigned AArch64InstrInfo::RemoveBranch ( MachineBasicBlock MBB) const
bool AArch64InstrInfo::ReverseBranchCondition ( SmallVectorImpl< MachineOperand > &  Cond) const

Definition at line 281 of file AArch64InstrInfo.cpp.

References llvm::A64InvertCondCode(), and llvm_unreachable.

void AArch64InstrInfo::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const

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