LLVM  8.0.1
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::HexagonShuffler Class Reference

#include "Target/Hexagon/MCTargetDesc/HexagonShuffler.h"

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

Public Types

using iterator = HexagonPacket::iterator
 

Public Member Functions

 HexagonShuffler (MCContext &Context, bool ReportErrors, MCInstrInfo const &MCII, MCSubtargetInfo const &STI)
 
void reset ()
 
bool check ()
 Check that the packet is legal and enforce relative insn order. More...
 
bool shuffle ()
 
unsigned size () const
 
bool isMemReorderDisabled () const
 
iterator begin ()
 
iterator end ()
 
void append (MCInst const &ID, MCInst const *Extender, unsigned S)
 
void reportError (Twine const &Msg)
 

Protected Member Functions

void applySlotRestrictions ()
 
void restrictSlot1AOK ()
 
void restrictNoSlot1Store ()
 

Protected Attributes

MCContextContext
 
int64_t BundleFlags
 
MCInstrInfo constMCII
 
MCSubtargetInfo constSTI
 
SMLoc Loc
 
bool ReportErrors
 
std::vector< std::pair< SMLoc, std::string > > AppliedRestrictions
 

Detailed Description

Definition at line 140 of file HexagonShuffler.h.

Member Typedef Documentation

◆ iterator

Definition at line 163 of file HexagonShuffler.h.

Constructor & Destructor Documentation

◆ HexagonShuffler()

HexagonShuffler::HexagonShuffler ( MCContext Context,
bool  ReportErrors,
MCInstrInfo const MCII,
MCSubtargetInfo const STI 
)

Member Function Documentation

◆ append()

void HexagonShuffler::append ( MCInst const ID,
MCInst const Extender,
unsigned  S 
)

◆ applySlotRestrictions()

void HexagonShuffler::applySlotRestrictions ( )
protected

Definition at line 288 of file HexagonShuffler.cpp.

References restrictNoSlot1Store(), and restrictSlot1AOK().

Referenced by check().

◆ begin()

iterator llvm::HexagonShuffler::begin ( )
inline

◆ check()

bool HexagonShuffler::check ( )

Check that the packet is legal and enforce relative insn order.

Definition at line 294 of file HexagonShuffler.cpp.

References applySlotRestrictions(), assert(), begin(), checkHVXPipes(), llvm::SmallVectorImpl< T >::clear(), end(), first, llvm::HexagonMCInstrInfo::getDesc(), llvm::MCOperand::getInst(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::HexagonMCInstrInfo::getOtherReservedSlots(), llvm::HexagonMCInstrInfo::getType(), I, isBranch(), isMemReorderDisabled(), llvm::MCInstrDesc::isReturn(), jumpSlots, CVIUnits::Lanes, llvm::HexagonInstr::lessCore(), llvm::HexagonInstr::lessCVI(), LLVM_FALLTHROUGH, MAX_JUMP_SLOTS, llvm::MCInstrDesc::mayLoad(), llvm::MCInstrDesc::mayStore(), MCII, llvm::HexagonMCInstrInfo::prefersSlot3(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), reportError(), second, llvm::SmallVectorBase::size(), STI, stores, llvm::HexagonII::TypeALU64, llvm::HexagonII::TypeCJ, llvm::HexagonII::TypeCR, llvm::HexagonII::TypeCVI_GATHER, llvm::HexagonII::TypeCVI_GATHER_RST, llvm::HexagonII::TypeCVI_SCATTER, llvm::HexagonII::TypeCVI_SCATTER_DV, llvm::HexagonII::TypeCVI_SCATTER_NEW_RST, llvm::HexagonII::TypeCVI_SCATTER_NEW_ST, llvm::HexagonII::TypeCVI_SCATTER_RST, llvm::HexagonII::TypeCVI_VM_LD, llvm::HexagonII::TypeCVI_VM_NEW_ST, llvm::HexagonII::TypeCVI_VM_ST, llvm::HexagonII::TypeCVI_VM_STU, llvm::HexagonII::TypeCVI_VM_TMP_LD, llvm::HexagonII::TypeCVI_VM_VP_LDU, llvm::HexagonII::TypeCVI_ZW, llvm::HexagonII::TypeDUPLEX, llvm::HexagonII::TypeJ, llvm::HexagonII::TypeLD, llvm::HexagonII::TypeNCJ, llvm::HexagonII::TypeS_2op, llvm::HexagonII::TypeS_3op, llvm::HexagonII::TypeST, llvm::HexagonII::TypeV2LDST, llvm::HexagonII::TypeV4LDST, and CVIUnits::Units.

Referenced by llvm::HexagonMCChecker::reportBranchErrors(), and shuffle().

◆ end()

iterator llvm::HexagonShuffler::end ( )
inline

◆ isMemReorderDisabled()

bool llvm::HexagonShuffler::isMemReorderDisabled ( ) const
inline

Definition at line 177 of file HexagonShuffler.h.

References llvm::HexagonMCInstrInfo::memReorderDisabledMask.

Referenced by check().

◆ reportError()

void HexagonShuffler::reportError ( Twine const Msg)

◆ reset()

void HexagonShuffler::reset ( )

Definition at line 208 of file HexagonShuffler.cpp.

References BundleFlags, and llvm::SmallVectorImpl< T >::clear().

Referenced by HexagonShuffler().

◆ restrictNoSlot1Store()

void HexagonShuffler::restrictNoSlot1Store ( )
protected

◆ restrictSlot1AOK()

void HexagonShuffler::restrictSlot1AOK ( )
protected

◆ shuffle()

bool HexagonShuffler::shuffle ( )

◆ size()

unsigned llvm::HexagonShuffler::size ( ) const
inline

Definition at line 175 of file HexagonShuffler.h.

References llvm::SmallVectorBase::size().

Referenced by llvm::HexagonMCShuffle(), and shuffle().

Member Data Documentation

◆ AppliedRestrictions

std::vector<std::pair<SMLoc, std::string> > llvm::HexagonShuffler::AppliedRestrictions
protected

Definition at line 157 of file HexagonShuffler.h.

Referenced by reportError(), restrictNoSlot1Store(), and restrictSlot1AOK().

◆ BundleFlags

int64_t llvm::HexagonShuffler::BundleFlags
protected

Definition at line 152 of file HexagonShuffler.h.

Referenced by llvm::HexagonMCShuffler::copyTo(), and reset().

◆ Context

MCContext& llvm::HexagonShuffler::Context
protected

Definition at line 151 of file HexagonShuffler.h.

Referenced by llvm::HexagonMCShuffler::HexagonMCShuffler(), and reportError().

◆ Loc

SMLoc llvm::HexagonShuffler::Loc
protected

Definition at line 155 of file HexagonShuffler.h.

Referenced by llvm::HexagonMCShuffler::copyTo(), and reportError().

◆ MCII

MCInstrInfo const& llvm::HexagonShuffler::MCII
protected

◆ ReportErrors

bool llvm::HexagonShuffler::ReportErrors
protected

Definition at line 156 of file HexagonShuffler.h.

Referenced by reportError().

◆ STI

MCSubtargetInfo const& llvm::HexagonShuffler::STI
protected

Definition at line 154 of file HexagonShuffler.h.

Referenced by check(), and llvm::HexagonMCShuffler::HexagonMCShuffler().


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