LLVM  8.0.1
Public Member Functions | List of all members
llvm::LanaiInstrInfo Class Reference

#include "Target/Lanai/LanaiInstrInfo.h"

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

Public Member Functions

 LanaiInstrInfo ()
 
virtual const LanaiRegisterInfogetRegisterInfo () const
 
bool areMemAccessesTriviallyDisjoint (MachineInstr &MIa, MachineInstr &MIb, AliasAnalysis *AA) const override
 
unsigned isLoadFromStackSlot (const MachineInstr &MI, int &FrameIndex) const override
 
unsigned isLoadFromStackSlotPostFE (const MachineInstr &MI, int &FrameIndex) const override
 
unsigned isStoreToStackSlot (const MachineInstr &MI, int &FrameIndex) const override
 
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator Position, const DebugLoc &DL, unsigned DestinationRegister, unsigned SourceRegister, bool KillSource) const override
 
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator Position, unsigned SourceRegister, bool IsKill, int FrameIndex, const TargetRegisterClass *RegisterClass, const TargetRegisterInfo *RegisterInfo) const override
 
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator Position, unsigned DestinationRegister, int FrameIndex, const TargetRegisterClass *RegisterClass, const TargetRegisterInfo *RegisterInfo) const override
 
bool expandPostRAPseudo (MachineInstr &MI) const override
 
bool getMemOperandWithOffset (MachineInstr &LdSt, MachineOperand *&BaseOp, int64_t &Offset, const TargetRegisterInfo *TRI) const override
 
bool getMemOperandWithOffsetWidth (MachineInstr &LdSt, MachineOperand *&BaseOp, int64_t &Offset, unsigned &Width, const TargetRegisterInfo *TRI) const
 
std::pair< unsigned, unsigneddecomposeMachineOperandsTargetFlags (unsigned TF) const override
 
ArrayRef< std::pair< unsigned, const char * > > getSerializableDirectMachineOperandTargetFlags () const override
 
bool analyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TrueBlock, MachineBasicBlock *&FalseBlock, SmallVectorImpl< MachineOperand > &Condition, bool AllowModify) const override
 
unsigned removeBranch (MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override
 
bool analyzeCompare (const MachineInstr &MI, unsigned &SrcReg, unsigned &SrcReg2, int &CmpMask, int &CmpValue) const override
 
bool optimizeCompareInstr (MachineInstr &CmpInstr, unsigned SrcReg, unsigned SrcReg2, int CmpMask, int CmpValue, const MachineRegisterInfo *MRI) const override
 
bool analyzeSelect (const MachineInstr &MI, SmallVectorImpl< MachineOperand > &Cond, unsigned &TrueOp, unsigned &FalseOp, bool &Optimizable) const override
 
MachineInstroptimizeSelect (MachineInstr &MI, SmallPtrSetImpl< MachineInstr *> &SeenMIs, bool PreferFalse) const override
 
bool reverseBranchCondition (SmallVectorImpl< MachineOperand > &Condition) const override
 
unsigned insertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TrueBlock, MachineBasicBlock *FalseBlock, ArrayRef< MachineOperand > Condition, const DebugLoc &DL, int *BytesAdded=nullptr) const override
 

Detailed Description

Definition at line 26 of file LanaiInstrInfo.h.

Constructor & Destructor Documentation

◆ LanaiInstrInfo()

LanaiInstrInfo::LanaiInstrInfo ( )

Definition at line 31 of file LanaiInstrInfo.cpp.

Member Function Documentation

◆ analyzeBranch()

bool LanaiInstrInfo::analyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TrueBlock,
MachineBasicBlock *&  FalseBlock,
SmallVectorImpl< MachineOperand > &  Condition,
bool  AllowModify 
) const
override

◆ analyzeCompare()

bool LanaiInstrInfo::analyzeCompare ( const MachineInstr MI,
unsigned SrcReg,
unsigned SrcReg2,
int &  CmpMask,
int &  CmpValue 
) const
override

◆ analyzeSelect()

bool LanaiInstrInfo::analyzeSelect ( const MachineInstr MI,
SmallVectorImpl< MachineOperand > &  Cond,
unsigned TrueOp,
unsigned FalseOp,
bool Optimizable 
) const
override

◆ areMemAccessesTriviallyDisjoint()

bool LanaiInstrInfo::areMemAccessesTriviallyDisjoint ( MachineInstr MIa,
MachineInstr MIb,
AliasAnalysis AA 
) const
override

◆ copyPhysReg()

void LanaiInstrInfo::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  Position,
const DebugLoc DL,
unsigned  DestinationRegister,
unsigned  SourceRegister,
bool  KillSource 
) const
override

◆ decomposeMachineOperandsTargetFlags()

std::pair< unsigned, unsigned > LanaiInstrInfo::decomposeMachineOperandsTargetFlags ( unsigned  TF) const
override

Definition at line 164 of file LanaiInstrInfo.cpp.

Referenced by getRegisterInfo().

◆ expandPostRAPseudo()

bool LanaiInstrInfo::expandPostRAPseudo ( MachineInstr MI) const
override

Definition at line 120 of file LanaiInstrInfo.cpp.

Referenced by getRegisterInfo().

◆ getMemOperandWithOffset()

bool LanaiInstrInfo::getMemOperandWithOffset ( MachineInstr LdSt,
MachineOperand *&  BaseOp,
int64_t &  Offset,
const TargetRegisterInfo TRI 
) const
override

Definition at line 797 of file LanaiInstrInfo.cpp.

References getMemOperandWithOffsetWidth(), and llvm::MachineInstr::getOpcode().

Referenced by getRegisterInfo().

◆ getMemOperandWithOffsetWidth()

bool LanaiInstrInfo::getMemOperandWithOffsetWidth ( MachineInstr LdSt,
MachineOperand *&  BaseOp,
int64_t &  Offset,
unsigned Width,
const TargetRegisterInfo TRI 
) const

◆ getRegisterInfo()

virtual const LanaiRegisterInfo& llvm::LanaiInstrInfo::getRegisterInfo ( ) const
inlinevirtual

◆ getSerializableDirectMachineOperandTargetFlags()

ArrayRef< std::pair< unsigned, const char * > > LanaiInstrInfo::getSerializableDirectMachineOperandTargetFlags ( ) const
override

◆ insertBranch()

unsigned LanaiInstrInfo::insertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TrueBlock,
MachineBasicBlock FalseBlock,
ArrayRef< MachineOperand Condition,
const DebugLoc DL,
int *  BytesAdded = nullptr 
) const
override

◆ isLoadFromStackSlot()

unsigned LanaiInstrInfo::isLoadFromStackSlot ( const MachineInstr MI,
int &  FrameIndex 
) const
override

◆ isLoadFromStackSlotPostFE()

unsigned LanaiInstrInfo::isLoadFromStackSlotPostFE ( const MachineInstr MI,
int &  FrameIndex 
) const
override

◆ isStoreToStackSlot()

unsigned LanaiInstrInfo::isStoreToStackSlot ( const MachineInstr MI,
int &  FrameIndex 
) const
override

◆ loadRegFromStackSlot()

void LanaiInstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  Position,
unsigned  DestinationRegister,
int  FrameIndex,
const TargetRegisterClass RegisterClass,
const TargetRegisterInfo RegisterInfo 
) const
override

◆ optimizeCompareInstr()

bool LanaiInstrInfo::optimizeCompareInstr ( MachineInstr CmpInstr,
unsigned  SrcReg,
unsigned  SrcReg2,
int  CmpMask,
int  CmpValue,
const MachineRegisterInfo MRI 
) const
override

◆ optimizeSelect()

MachineInstr * LanaiInstrInfo::optimizeSelect ( MachineInstr MI,
SmallPtrSetImpl< MachineInstr *> &  SeenMIs,
bool  PreferFalse 
) const
override

◆ removeBranch()

unsigned LanaiInstrInfo::removeBranch ( MachineBasicBlock MBB,
int *  BytesRemoved = nullptr 
) const
override

◆ reverseBranchCondition()

bool LanaiInstrInfo::reverseBranchCondition ( SmallVectorImpl< MachineOperand > &  Condition) const
override

Definition at line 647 of file LanaiInstrInfo.cpp.

References assert(), getOppositeCondition(), and llvm::SmallVectorBase::size().

Referenced by getRegisterInfo().

◆ storeRegToStackSlot()

void LanaiInstrInfo::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  Position,
unsigned  SourceRegister,
bool  IsKill,
int  FrameIndex,
const TargetRegisterClass RegisterClass,
const TargetRegisterInfo RegisterInfo 
) const
override

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