LLVM 22.0.0git
llvm::HexagonPacketizerList Class Reference

#include "Target/Hexagon/HexagonVLIWPacketizer.h"

Inheritance diagram for llvm::HexagonPacketizerList:
[legend]

Public Member Functions

 HexagonPacketizerList (MachineFunction &MF, MachineLoopInfo &MLI, AAResults *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, AAResults *AA)
VLIWPacketizerListoperator= (const VLIWPacketizerList &other)=delete
 VLIWPacketizerList (const VLIWPacketizerList &other)=delete
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.
void undoChangedOffset (MachineInstr &MI)
 Undo the changed offset.
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)
unsigned int calcStall (const MachineInstr &MI)

Protected Attributes

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

Detailed Description

Definition at line 27 of file HexagonVLIWPacketizer.h.

Constructor & Destructor Documentation

◆ HexagonPacketizerList()

Member Function Documentation

◆ addToPacket()

◆ arePredicatesComplements()

◆ calcStall()

unsigned int HexagonPacketizerList::calcStall ( const MachineInstr & MI)
protected

◆ cannotCoexist()

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

Definition at line 1152 of file HexagonVLIWPacketizer.cpp.

References cannotCoexistAsymm(), and MI.

Referenced by isLegalToPacketizeTogether(), and isLegalToPruneDependencies().

◆ canPromoteToDotCur()

◆ canPromoteToDotNew()

◆ canPromoteToNewValue()

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

Definition at line 811 of file HexagonVLIWPacketizer.cpp.

References canPromoteToNewValueStore(), llvm::SUnit::getInstr(), and MI.

Referenced by canPromoteToDotNew().

◆ canPromoteToNewValueStore()

◆ canReserveResourcesForConstExt()

bool HexagonPacketizerList::canReserveResourcesForConstExt ( )
protected

Definition at line 279 of file HexagonVLIWPacketizer.cpp.

References tryAllocateResourcesForConstExt().

Referenced by addToPacket().

◆ cleanUpDotCur()

void HexagonPacketizerList::cleanUpDotCur ( )
protected

◆ demoteToDotOld()

bool HexagonPacketizerList::demoteToDotOld ( MachineInstr & MI)
protected

Definition at line 462 of file HexagonVLIWPacketizer.cpp.

References MI.

Referenced by addToPacket(), and isLegalToPruneDependencies().

◆ endPacket()

◆ foundLSInPacket()

bool HexagonPacketizerList::foundLSInPacket ( )

Definition at line 1681 of file HexagonVLIWPacketizer.cpp.

References llvm::VLIWPacketizerList::CurrentPacketMIs, and Opc.

Referenced by endPacket().

◆ getmemShufDisabled()

bool llvm::HexagonPacketizerList::getmemShufDisabled ( )
inlineprotected

Definition at line 113 of file HexagonVLIWPacketizer.h.

Referenced by endPacket().

◆ hasControlDependence()

◆ hasDeadDependence()

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

◆ hasDualStoreDependence()

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

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

References llvm::SDep::Data, and MI.

Referenced by isLegalToPacketizeTogether().

◆ isCurifiable()

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

References MI.

◆ isLegalToPacketizeTogether()

◆ isLegalToPruneDependencies()

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

◆ isNewifiable()

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

Definition at line 351 of file HexagonVLIWPacketizer.cpp.

References MI.

Referenced by canPromoteToDotNew().

◆ isPromotedToDotNew()

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

Definition at line 150 of file HexagonVLIWPacketizer.h.

◆ isSoloInstruction()

bool HexagonPacketizerList::isSoloInstruction ( const MachineInstr & MI)
overridevirtual

Reimplemented from llvm::VLIWPacketizerList.

Definition at line 1057 of file HexagonVLIWPacketizer.cpp.

References isSchedBarrier(), MI, and ScheduleInlineAsm.

Referenced by isLegalToPacketizeTogether().

◆ producesStall()

bool HexagonPacketizerList::producesStall ( const MachineInstr & MI)
protected

Definition at line 1931 of file HexagonVLIWPacketizer.cpp.

References calcStall(), I, and llvm::Latency.

Referenced by addToPacket(), and shouldAddToPacket().

◆ promoteToDotCur()

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

Definition at line 367 of file HexagonVLIWPacketizer.cpp.

References assert(), llvm::SDep::Data, and MI.

Referenced by isLegalToPacketizeTogether().

◆ promoteToDotNew()

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

Definition at line 449 of file HexagonVLIWPacketizer.cpp.

References assert(), llvm::SDep::Data, MBPI, and MI.

Referenced by isLegalToPacketizeTogether().

◆ reserveResourcesForConstExt()

void HexagonPacketizerList::reserveResourcesForConstExt ( )
protected

Definition at line 274 of file HexagonVLIWPacketizer.cpp.

References llvm_unreachable, and tryAllocateResourcesForConstExt().

Referenced by addToPacket().

◆ restrictingDepExistInPacket()

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

◆ setmemShufDisabled()

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

Definition at line 116 of file HexagonVLIWPacketizer.h.

Referenced by endPacket(), and isLegalToPacketizeTogether().

◆ shouldAddToPacket()

bool HexagonPacketizerList::shouldAddToPacket ( const MachineInstr & MI)
overridevirtual

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

References llvm_unreachable, MI, and OP.

Referenced by isLegalToPruneDependencies().

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

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

Referenced by isLegalToPruneDependencies().

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

Referenced by canPromoteToDotNew(), HexagonPacketizerList(), and promoteToDotNew().

◆ MLI

const MachineLoopInfo* llvm::HexagonPacketizerList::MLI
protected

Definition at line 73 of file HexagonVLIWPacketizer.h.

Referenced by calcStall(), and HexagonPacketizerList().


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