LLVM  8.0.1
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, bool Minimal)
 
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
 
bool foundLSInPacket ()
 
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 getmemShufDisabled ()
 
void setmemShufDisabled (bool val)
 
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 hasDualStoreDependence (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,
bool  Minimal 
)

Definition at line 132 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 1143 of file HexagonVLIWPacketizer.cpp.

References cannotCoexistAsymm().

Referenced by setmemShufDisabled().

◆ 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 812 of file HexagonVLIWPacketizer.cpp.

References llvm::SUnit::getInstr().

Referenced by setmemShufDisabled().

◆ canPromoteToNewValueStore()

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

◆ canReserveResourcesForConstExt()

bool HexagonPacketizerList::canReserveResourcesForConstExt ( )
protected

Definition at line 280 of file HexagonVLIWPacketizer.cpp.

Referenced by isPromotedToDotNew().

◆ cleanUpDotCur()

void HexagonPacketizerList::cleanUpDotCur ( )
protected

◆ demoteToDotOld()

bool HexagonPacketizerList::demoteToDotOld ( MachineInstr MI)
protected

Definition at line 463 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::setDesc().

Referenced by setmemShufDisabled().

◆ endPacket()

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

◆ foundLSInPacket()

bool HexagonPacketizerList::foundLSInPacket ( )

Definition at line 1668 of file HexagonVLIWPacketizer.cpp.

◆ getmemShufDisabled()

bool llvm::HexagonPacketizerList::getmemShufDisabled ( )
inlineprotected

Definition at line 105 of file HexagonVLIWPacketizer.h.

◆ hasControlDependence()

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

◆ hasDeadDependence()

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

◆ hasDualStoreDependence()

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

Definition at line 1285 of file HexagonVLIWPacketizer.cpp.

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

Referenced by isPromotedToDotNew().

◆ hasRegMaskDependence()

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

◆ ignorePseudoInstruction()

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

◆ initPacketizerState()

void HexagonPacketizerList::initPacketizerState ( )
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1025 of file HexagonVLIWPacketizer.cpp.

References INT64_MAX.

◆ isCallDependent()

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

Definition at line 295 of file HexagonVLIWPacketizer.cpp.

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

Referenced by setmemShufDisabled().

◆ isCurifiable()

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

Referenced by setmemShufDisabled().

◆ 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 1621 of file HexagonVLIWPacketizer.cpp.

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

◆ isNewifiable()

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

Definition at line 352 of file HexagonVLIWPacketizer.cpp.

References llvm::MachineInstr::mayStore().

Referenced by setmemShufDisabled().

◆ 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 1805 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

Definition at line 368 of file HexagonVLIWPacketizer.cpp.

References assert(), llvm::SDep::Data, and llvm::MachineInstr::setDesc().

Referenced by setmemShufDisabled().

◆ promoteToDotNew()

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

Definition at line 450 of file HexagonVLIWPacketizer.cpp.

References assert(), llvm::SDep::Data, and llvm::MachineInstr::setDesc().

Referenced by setmemShufDisabled().

◆ reserveResourcesForConstExt()

void HexagonPacketizerList::reserveResourcesForConstExt ( )
protected

Definition at line 275 of file HexagonVLIWPacketizer.cpp.

References llvm_unreachable.

Referenced by isPromotedToDotNew().

◆ restrictingDepExistInPacket()

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

Definition at line 911 of file HexagonVLIWPacketizer.cpp.

References llvm::SDep::Anti, I, llvm::SUnit::isSucc(), and llvm::SUnit::Succs.

Referenced by setmemShufDisabled().

◆ setmemShufDisabled()

void llvm::HexagonPacketizerList::setmemShufDisabled ( bool  val)
inlineprotected

◆ shouldAddToPacket()

bool HexagonPacketizerList::shouldAddToPacket ( const MachineInstr MI)
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1798 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 544 of file HexagonVLIWPacketizer.cpp.

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

Referenced by setmemShufDisabled().

◆ 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 508 of file HexagonVLIWPacketizer.cpp.

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

Referenced by setmemShufDisabled().

◆ 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 63 of file HexagonVLIWPacketizer.h.

◆ MLI

const MachineLoopInfo* llvm::HexagonPacketizerList::MLI
protected

Definition at line 64 of file HexagonVLIWPacketizer.h.


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