LLVM  9.0.0svn
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
Collaboration diagram for llvm::HexagonShuffler:
Collaboration graph

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

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

Detailed Description

Definition at line 139 of file HexagonShuffler.h.

Member Typedef Documentation

◆ iterator

Definition at line 162 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 ( )

Definition at line 287 of file HexagonShuffler.cpp.

References restrictNoSlot1Store(), and restrictSlot1AOK().

Referenced by check().

◆ begin()

iterator llvm::HexagonShuffler::begin ( )

◆ check()

bool HexagonShuffler::check ( )

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

Definition at line 293 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 ( )

◆ isMemReorderDisabled()

bool llvm::HexagonShuffler::isMemReorderDisabled ( ) const

Definition at line 176 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 207 of file HexagonShuffler.cpp.

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

Referenced by HexagonShuffler().

◆ restrictNoSlot1Store()

void HexagonShuffler::restrictNoSlot1Store ( )

◆ restrictSlot1AOK()

void HexagonShuffler::restrictSlot1AOK ( )

◆ shuffle()

bool HexagonShuffler::shuffle ( )

◆ size()

unsigned llvm::HexagonShuffler::size ( ) const

Definition at line 174 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

Definition at line 156 of file HexagonShuffler.h.

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

◆ BundleFlags

int64_t llvm::HexagonShuffler::BundleFlags

Definition at line 151 of file HexagonShuffler.h.

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

◆ Context

MCContext& llvm::HexagonShuffler::Context

Definition at line 150 of file HexagonShuffler.h.

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

◆ Loc

SMLoc llvm::HexagonShuffler::Loc

Definition at line 154 of file HexagonShuffler.h.

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


MCInstrInfo const& llvm::HexagonShuffler::MCII

◆ ReportErrors

bool llvm::HexagonShuffler::ReportErrors

Definition at line 155 of file HexagonShuffler.h.

Referenced by reportError().


MCSubtargetInfo const& llvm::HexagonShuffler::STI

Definition at line 153 of file HexagonShuffler.h.

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

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