LLVM  3.7.0
Public Member Functions | List of all members
llvm::SystemZInstrInfo Class Reference

#include <SystemZInstrInfo.h>

Inheritance diagram for llvm::SystemZInstrInfo:
[legend]
Collaboration diagram for llvm::SystemZInstrInfo:
[legend]

Public Member Functions

 SystemZInstrInfo (SystemZSubtarget &STI)
 
unsigned isLoadFromStackSlot (const MachineInstr *MI, int &FrameIndex) const override
 
unsigned isStoreToStackSlot (const MachineInstr *MI, int &FrameIndex) const override
 
bool isStackSlotCopy (const MachineInstr *MI, int &DestFrameIndex, int &SrcFrameIndex) const override
 
bool AnalyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const override
 
unsigned RemoveBranch (MachineBasicBlock &MBB) const override
 
unsigned InsertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, DebugLoc DL) const override
 
bool analyzeCompare (const MachineInstr *MI, unsigned &SrcReg, unsigned &SrcReg2, int &Mask, int &Value) const override
 
bool optimizeCompareInstr (MachineInstr *CmpInstr, unsigned SrcReg, unsigned SrcReg2, int Mask, int Value, const MachineRegisterInfo *MRI) const override
 
bool isPredicable (MachineInstr *MI) const override
 
bool isProfitableToIfCvt (MachineBasicBlock &MBB, unsigned NumCycles, unsigned ExtraPredCycles, const BranchProbability &Probability) const override
 
bool isProfitableToIfCvt (MachineBasicBlock &TMBB, unsigned NumCyclesT, unsigned ExtraPredCyclesT, MachineBasicBlock &FMBB, unsigned NumCyclesF, unsigned ExtraPredCyclesF, const BranchProbability &Probability) const override
 
bool PredicateInstruction (MachineInstr *MI, ArrayRef< MachineOperand > Pred) const override
 
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const override
 
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
 
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIdx, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
 
MachineInstrconvertToThreeAddress (MachineFunction::iterator &MFI, MachineBasicBlock::iterator &MBBI, LiveVariables *LV) const override
 
MachineInstrfoldMemoryOperandImpl (MachineFunction &MF, MachineInstr *MI, ArrayRef< unsigned > Ops, MachineBasicBlock::iterator InsertPt, int FrameIndex) const override
 
MachineInstrfoldMemoryOperandImpl (MachineFunction &MF, MachineInstr *MI, ArrayRef< unsigned > Ops, MachineBasicBlock::iterator InsertPt, MachineInstr *LoadMI) const override
 
bool expandPostRAPseudo (MachineBasicBlock::iterator MBBI) const override
 
bool ReverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const override
 
const SystemZRegisterInfogetRegisterInfo () const
 
uint64_t getInstSizeInBytes (const MachineInstr *MI) const
 
SystemZII::Branch getBranchInfo (const MachineInstr *MI) const
 
void getLoadStoreOpcodes (const TargetRegisterClass *RC, unsigned &LoadOpcode, unsigned &StoreOpcode) const
 
unsigned getOpcodeForOffset (unsigned Opcode, int64_t Offset) const
 
unsigned getLoadAndTest (unsigned Opcode) const
 
bool isRxSBGMask (uint64_t Mask, unsigned BitSize, unsigned &Start, unsigned &End) const
 
unsigned getCompareAndBranch (unsigned Opcode, const MachineInstr *MI=nullptr) const
 
void loadImmediate (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned Reg, uint64_t Value) const
 

Detailed Description

Definition at line 117 of file SystemZInstrInfo.h.

Constructor & Destructor Documentation

SystemZInstrInfo::SystemZInstrInfo ( SystemZSubtarget STI)
explicit

Definition at line 43 of file SystemZInstrInfo.cpp.

Member Function Documentation

bool SystemZInstrInfo::AnalyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TBB,
MachineBasicBlock *&  FBB,
SmallVectorImpl< MachineOperand > &  Cond,
bool  AllowModify 
) const
override
bool SystemZInstrInfo::analyzeCompare ( const MachineInstr MI,
unsigned SrcReg,
unsigned SrcReg2,
int Mask,
int Value 
) const
override
MachineInstr * SystemZInstrInfo::convertToThreeAddress ( MachineFunction::iterator MFI,
MachineBasicBlock::iterator MBBI,
LiveVariables LV 
) const
override
void SystemZInstrInfo::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
DebugLoc  DL,
unsigned  DestReg,
unsigned  SrcReg,
bool  KillSrc 
) const
override
bool SystemZInstrInfo::expandPostRAPseudo ( MachineBasicBlock::iterator  MBBI) const
override
MachineInstr * SystemZInstrInfo::foldMemoryOperandImpl ( MachineFunction MF,
MachineInstr MI,
ArrayRef< unsigned Ops,
MachineBasicBlock::iterator  InsertPt,
int  FrameIndex 
) const
override
MachineInstr * SystemZInstrInfo::foldMemoryOperandImpl ( MachineFunction MF,
MachineInstr MI,
ArrayRef< unsigned Ops,
MachineBasicBlock::iterator  InsertPt,
MachineInstr LoadMI 
) const
override

Definition at line 889 of file SystemZInstrInfo.cpp.

SystemZII::Branch SystemZInstrInfo::getBranchInfo ( const MachineInstr MI) const
unsigned SystemZInstrInfo::getCompareAndBranch ( unsigned  Opcode,
const MachineInstr MI = nullptr 
) const
uint64_t SystemZInstrInfo::getInstSizeInBytes ( const MachineInstr MI) const
unsigned SystemZInstrInfo::getLoadAndTest ( unsigned  Opcode) const

Definition at line 1182 of file SystemZInstrInfo.cpp.

References llvm::MipsISD::LDR, and llvm::AArch64CC::LT.

void SystemZInstrInfo::getLoadStoreOpcodes ( const TargetRegisterClass RC,
unsigned LoadOpcode,
unsigned StoreOpcode 
) const
unsigned SystemZInstrInfo::getOpcodeForOffset ( unsigned  Opcode,
int64_t  Offset 
) const
const SystemZRegisterInfo& llvm::SystemZInstrInfo::getRegisterInfo ( ) const
inline

Definition at line 199 of file SystemZInstrInfo.h.

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

unsigned SystemZInstrInfo::InsertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TBB,
MachineBasicBlock FBB,
ArrayRef< MachineOperand Cond,
DebugLoc  DL 
) const
override
unsigned SystemZInstrInfo::isLoadFromStackSlot ( const MachineInstr MI,
int FrameIndex 
) const
override

Definition at line 206 of file SystemZInstrInfo.cpp.

References isSimpleMove(), and llvm::SystemZII::SimpleBDXLoad.

bool SystemZInstrInfo::isPredicable ( MachineInstr MI) const
override
bool SystemZInstrInfo::isProfitableToIfCvt ( MachineBasicBlock MBB,
unsigned  NumCycles,
unsigned  ExtraPredCycles,
const BranchProbability Probability 
) const
override

Definition at line 515 of file SystemZInstrInfo.cpp.

bool SystemZInstrInfo::isProfitableToIfCvt ( MachineBasicBlock TMBB,
unsigned  NumCyclesT,
unsigned  ExtraPredCyclesT,
MachineBasicBlock FMBB,
unsigned  NumCyclesF,
unsigned  ExtraPredCyclesF,
const BranchProbability Probability 
) const
override

Definition at line 523 of file SystemZInstrInfo.cpp.

bool SystemZInstrInfo::isRxSBGMask ( uint64_t  Mask,
unsigned  BitSize,
unsigned Start,
unsigned End 
) const
bool SystemZInstrInfo::isStackSlotCopy ( const MachineInstr MI,
int DestFrameIndex,
int SrcFrameIndex 
) const
override
unsigned SystemZInstrInfo::isStoreToStackSlot ( const MachineInstr MI,
int FrameIndex 
) const
override

Definition at line 211 of file SystemZInstrInfo.cpp.

References isSimpleMove(), and llvm::SystemZII::SimpleBDXStore.

void SystemZInstrInfo::loadImmediate ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  Reg,
uint64_t  Value 
) const
void SystemZInstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  DestReg,
int  FrameIdx,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const
override
bool SystemZInstrInfo::optimizeCompareInstr ( MachineInstr CmpInstr,
unsigned  SrcReg,
unsigned  SrcReg2,
int  Mask,
int  Value,
const MachineRegisterInfo MRI 
) const
override
bool SystemZInstrInfo::PredicateInstruction ( MachineInstr MI,
ArrayRef< MachineOperand Pred 
) const
override
unsigned SystemZInstrInfo::RemoveBranch ( MachineBasicBlock MBB) const
override
bool SystemZInstrInfo::ReverseBranchCondition ( SmallVectorImpl< MachineOperand > &  Cond) const
override
void SystemZInstrInfo::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const
override

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