LLVM  6.0.0svn
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::HexagonPacketizerList Class Reference

#include "Target/Hexagon/HexagonVLIWPacketizer.h"

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

Public Member Functions

 HexagonPacketizerList (MachineFunction &MF, MachineLoopInfo &MLI, AliasAnalysis *AA, const MachineBranchProbabilityInfo *MBPI)
 
void initPacketizerState () override
 
bool ignorePseudoInstruction (const MachineInstr &MI, const MachineBasicBlock *MBB) override
 
bool isSoloInstruction (const MachineInstr &MI) override
 
bool isLegalToPacketizeTogether (SUnit *SUI, SUnit *SUJ) override
 
bool isLegalToPruneDependencies (SUnit *SUI, SUnit *SUJ) override
 
MachineBasicBlock::iterator addToPacket (MachineInstr &MI) override
 
void endPacket (MachineBasicBlock *MBB, MachineBasicBlock::iterator MI) override
 
bool shouldAddToPacket (const MachineInstr &MI) override
 
void unpacketizeSoloInstrs (MachineFunction &MF)
 
- Public Member Functions inherited from llvm::VLIWPacketizerList
 VLIWPacketizerList (MachineFunction &MF, MachineLoopInfo &MLI, AliasAnalysis *AA)
 
virtual ~VLIWPacketizerList ()
 
void PacketizeMIs (MachineBasicBlock *MBB, MachineBasicBlock::iterator BeginItr, MachineBasicBlock::iterator EndItr)
 
DFAPacketizergetResourceTracker ()
 
void addMutation (std::unique_ptr< ScheduleDAGMutation > Mutation)
 
bool alias (const MachineInstr &MI1, const MachineInstr &MI2, bool UseTBAA=true) const
 

Protected Member Functions

bool isCallDependent (const MachineInstr &MI, SDep::Kind DepType, unsigned DepReg)
 
bool promoteToDotCur (MachineInstr &MI, SDep::Kind DepType, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
 
bool canPromoteToDotCur (const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
 
void cleanUpDotCur ()
 
bool promoteToDotNew (MachineInstr &MI, SDep::Kind DepType, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
 
bool canPromoteToDotNew (const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII, const TargetRegisterClass *RC)
 
bool canPromoteToNewValue (const MachineInstr &MI, const SUnit *PacketSU, unsigned DepReg, MachineBasicBlock::iterator &MII)
 
bool canPromoteToNewValueStore (const MachineInstr &MI, const MachineInstr &PacketMI, unsigned DepReg)
 
bool demoteToDotOld (MachineInstr &MI)
 
bool useCallersSP (MachineInstr &MI)
 
void useCalleesSP (MachineInstr &MI)
 
bool updateOffset (SUnit *SUI, SUnit *SUJ)
 Return true if we can update the offset in MI so that MI and MJ can be packetized together. More...
 
void undoChangedOffset (MachineInstr &MI)
 Undo the changed offset. More...
 
bool arePredicatesComplements (MachineInstr &MI1, MachineInstr &MI2)
 
bool restrictingDepExistInPacket (MachineInstr &, unsigned)
 
bool isNewifiable (const MachineInstr &MI, const TargetRegisterClass *NewRC)
 
bool isCurifiable (MachineInstr &MI)
 
bool cannotCoexist (const MachineInstr &MI, const MachineInstr &MJ)
 
bool isPromotedToDotNew () const
 
bool tryAllocateResourcesForConstExt (bool Reserve)
 
bool canReserveResourcesForConstExt ()
 
void reserveResourcesForConstExt ()
 
bool hasDeadDependence (const MachineInstr &I, const MachineInstr &J)
 
bool hasControlDependence (const MachineInstr &I, const MachineInstr &J)
 
bool hasRegMaskDependence (const MachineInstr &I, const MachineInstr &J)
 
bool hasV4SpecificDependence (const MachineInstr &I, const MachineInstr &J)
 
bool producesStall (const MachineInstr &MI)
 

Protected Attributes

const MachineBranchProbabilityInfoMBPI
 A handle to the branch probability pass. More...
 
const MachineLoopInfoMLI
 
- Protected Attributes inherited from llvm::VLIWPacketizerList
MachineFunctionMF
 
const TargetInstrInfoTII
 
AliasAnalysisAA
 
DefaultVLIWSchedulerVLIWScheduler
 
std::vector< MachineInstr * > CurrentPacketMIs
 
DFAPacketizerResourceTracker
 
std::map< MachineInstr *, SUnit * > MIToSUnit
 

Detailed Description

Definition at line 28 of file HexagonVLIWPacketizer.h.

Constructor & Destructor Documentation

◆ HexagonPacketizerList()

hexagon Hexagon false HexagonPacketizerList::HexagonPacketizerList ( MachineFunction MF,
MachineLoopInfo MLI,
AliasAnalysis AA,
const MachineBranchProbabilityInfo MBPI 
)

Definition at line 125 of file HexagonVLIWPacketizer.cpp.

Member Function Documentation

◆ addToPacket()

MachineBasicBlock::iterator HexagonPacketizerList::addToPacket ( MachineInstr MI)
overridevirtual

◆ arePredicatesComplements()

bool HexagonPacketizerList::arePredicatesComplements ( MachineInstr MI1,
MachineInstr MI2 
)
protected

◆ cannotCoexist()

bool HexagonPacketizerList::cannotCoexist ( const MachineInstr MI,
const MachineInstr MJ 
)
protected

Definition at line 1127 of file HexagonVLIWPacketizer.cpp.

References cannotCoexistAsymm().

◆ canPromoteToDotCur()

bool HexagonPacketizerList::canPromoteToDotCur ( const MachineInstr MI,
const SUnit PacketSU,
unsigned  DepReg,
MachineBasicBlock::iterator MII,
const TargetRegisterClass RC 
)
protected

◆ canPromoteToDotNew()

bool HexagonPacketizerList::canPromoteToDotNew ( const MachineInstr MI,
const SUnit PacketSU,
unsigned  DepReg,
MachineBasicBlock::iterator MII,
const TargetRegisterClass RC 
)
protected

◆ canPromoteToNewValue()

bool HexagonPacketizerList::canPromoteToNewValue ( const MachineInstr MI,
const SUnit PacketSU,
unsigned  DepReg,
MachineBasicBlock::iterator MII 
)
protected

Definition at line 802 of file HexagonVLIWPacketizer.cpp.

References llvm::SUnit::getInstr().

◆ canPromoteToNewValueStore()

bool HexagonPacketizerList::canPromoteToNewValueStore ( const MachineInstr MI,
const MachineInstr PacketMI,
unsigned  DepReg 
)
protected

◆ canReserveResourcesForConstExt()

bool HexagonPacketizerList::canReserveResourcesForConstExt ( )
protected

Definition at line 272 of file HexagonVLIWPacketizer.cpp.

Referenced by isPromotedToDotNew().

◆ cleanUpDotCur()

void HexagonPacketizerList::cleanUpDotCur ( )
protected

◆ demoteToDotOld()

bool HexagonPacketizerList::demoteToDotOld ( MachineInstr MI)
protected

Definition at line 456 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::setDesc().

◆ endPacket()

void HexagonPacketizerList::endPacket ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI 
)
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1704 of file HexagonVLIWPacketizer.cpp.

References llvm::VLIWPacketizerList::endPacket().

◆ hasControlDependence()

bool HexagonPacketizerList::hasControlDependence ( const MachineInstr I,
const MachineInstr J 
)
protected

◆ hasDeadDependence()

bool HexagonPacketizerList::hasDeadDependence ( const MachineInstr I,
const MachineInstr J 
)
protected

◆ hasRegMaskDependence()

bool HexagonPacketizerList::hasRegMaskDependence ( const MachineInstr I,
const MachineInstr J 
)
protected

◆ hasV4SpecificDependence()

bool HexagonPacketizerList::hasV4SpecificDependence ( const MachineInstr I,
const MachineInstr J 
)
protected

Definition at line 1267 of file HexagonVLIWPacketizer.cpp.

References isSystemInstr(), and llvm::MachineInstr::mayStore().

Referenced by isPromotedToDotNew().

◆ ignorePseudoInstruction()

bool HexagonPacketizerList::ignorePseudoInstruction ( const MachineInstr MI,
const MachineBasicBlock MBB 
)
overridevirtual

◆ initPacketizerState()

void HexagonPacketizerList::initPacketizerState ( )
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1019 of file HexagonVLIWPacketizer.cpp.

◆ isCallDependent()

bool HexagonPacketizerList::isCallDependent ( const MachineInstr MI,
SDep::Kind  DepType,
unsigned  DepReg 
)
protected

Definition at line 287 of file HexagonVLIWPacketizer.cpp.

References llvm::SDep::Data, and llvm::MachineInstr::operands().

◆ isCurifiable()

bool llvm::HexagonPacketizerList::isCurifiable ( MachineInstr MI)
protected

◆ isLegalToPacketizeTogether()

bool HexagonPacketizerList::isLegalToPacketizeTogether ( SUnit SUI,
SUnit SUJ 
)
overridevirtual

◆ isLegalToPruneDependencies()

bool HexagonPacketizerList::isLegalToPruneDependencies ( SUnit SUI,
SUnit SUJ 
)
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1588 of file HexagonVLIWPacketizer.cpp.

References assert(), llvm::SUnit::getInstr(), and I.

◆ isNewifiable()

bool HexagonPacketizerList::isNewifiable ( const MachineInstr MI,
const TargetRegisterClass NewRC 
)
protected

Definition at line 344 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::mayStore().

◆ isPromotedToDotNew()

bool llvm::HexagonPacketizerList::isPromotedToDotNew ( ) const
inlineprotected

◆ isSoloInstruction()

bool HexagonPacketizerList::isSoloInstruction ( const MachineInstr MI)
overridevirtual

◆ producesStall()

bool HexagonPacketizerList::producesStall ( const MachineInstr MI)
protected

Definition at line 1715 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::getParent(), I, and llvm::SUnit::Preds.

Referenced by isPromotedToDotNew().

◆ promoteToDotCur()

bool HexagonPacketizerList::promoteToDotCur ( MachineInstr MI,
SDep::Kind  DepType,
MachineBasicBlock::iterator MII,
const TargetRegisterClass RC 
)
protected

◆ promoteToDotNew()

bool HexagonPacketizerList::promoteToDotNew ( MachineInstr MI,
SDep::Kind  DepType,
MachineBasicBlock::iterator MII,
const TargetRegisterClass RC 
)
protected

◆ reserveResourcesForConstExt()

void HexagonPacketizerList::reserveResourcesForConstExt ( )
protected

Definition at line 267 of file HexagonVLIWPacketizer.cpp.

References llvm_unreachable.

Referenced by isPromotedToDotNew().

◆ restrictingDepExistInPacket()

bool HexagonPacketizerList::restrictingDepExistInPacket ( MachineInstr MI,
unsigned  DepReg 
)
protected

◆ shouldAddToPacket()

bool HexagonPacketizerList::shouldAddToPacket ( const MachineInstr MI)
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1710 of file HexagonVLIWPacketizer.cpp.

◆ tryAllocateResourcesForConstExt()

bool HexagonPacketizerList::tryAllocateResourcesForConstExt ( bool  Reserve)
protected

◆ undoChangedOffset()

void HexagonPacketizerList::undoChangedOffset ( MachineInstr MI)
protected

Undo the changed offset.

This is needed if the instruction cannot be added to the current packet due to a different instruction.

Definition at line 534 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::getOperand(), llvm_unreachable, OP, and llvm::MachineOperand::setImm().

◆ unpacketizeSoloInstrs()

void HexagonPacketizerList::unpacketizeSoloInstrs ( MachineFunction MF)

◆ updateOffset()

bool HexagonPacketizerList::updateOffset ( SUnit SUI,
SUnit SUJ 
)
protected

Return true if we can update the offset in MI so that MI and MJ can be packetized together.

Definition at line 501 of file HexagonVLIWPacketizer.cpp.

References llvm::SDep::Anti, assert(), llvm::SDep::Data, llvm::SUnit::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), MI, and llvm::SUnit::Preds.

◆ useCalleesSP()

void HexagonPacketizerList::useCalleesSP ( MachineInstr MI)
protected

◆ useCallersSP()

bool HexagonPacketizerList::useCallersSP ( MachineInstr MI)
protected

Member Data Documentation

◆ MBPI

const MachineBranchProbabilityInfo* llvm::HexagonPacketizerList::MBPI
protected

A handle to the branch probability pass.

Definition at line 61 of file HexagonVLIWPacketizer.h.

◆ MLI

const MachineLoopInfo* llvm::HexagonPacketizerList::MLI
protected

Definition at line 62 of file HexagonVLIWPacketizer.h.


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