LLVM  3.7.0
Functions | Variables
llvm::HexagonMCInstrInfo Namespace Reference

Functions

iterator_range
< MCInst::const_iterator
bundleInstructions (MCInst const &MCI)
 
size_t bundleSize (MCInst const &MCI)
 
void clampExtended (MCInstrInfo const &MCII, MCInst &MCI)
 
MCInstderiveDuplex (MCContext &Context, unsigned iClass, MCInst const &inst0, MCInst const &inst1)
 
MCInst deriveSubInst (MCInst const &Inst)
 
MCInst constextenderForIndex (MCInst const &MCB, size_t Index)
 
HexagonII::MemAccessSize getAccessSize (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getBitCount (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned short getCExtOpNum (MCInstrInfo const &MCII, MCInst const &MCI)
 
MCInstrDesc constgetDesc (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getDuplexCandidateGroup (MCInst const &MI)
 
SmallVector< DuplexCandidate, 8 > getDuplexPossibilties (MCInstrInfo const &MCII, MCInst const &MCB)
 
unsigned short getExtendableOp (MCInstrInfo const &MCII, MCInst const &MCI)
 
MCOperand constgetExtendableOperand (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getExtentAlignment (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getExtentBits (MCInstrInfo const &MCII, MCInst const &MCI)
 
int getMaxValue (MCInstrInfo const &MCII, MCInst const &MCI)
 
int getMinValue (MCInstrInfo const &MCII, MCInst const &MCI)
 
char constgetName (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned short getNewValueOp (MCInstrInfo const &MCII, MCInst const &MCI)
 
MCOperand constgetNewValueOperand (MCInstrInfo const &MCII, MCInst const &MCI)
 
int getSubTarget (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getType (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getUnits (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
 Return the slots used by the insn. More...
 
bool hasExtenderForIndex (MCInst const &MCB, size_t Index)
 
bool hasImmExt (MCInst const &MCI)
 
bool hasNewValue (MCInstrInfo const &MCII, MCInst const &MCI)
 
MCInst constinstruction (MCInst const &MCB, size_t Index)
 
bool isBundle (MCInst const &MCI)
 
bool isCanon (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned iClassOfDuplexPair (unsigned Ga, unsigned Gb)
 
bool isConstExtended (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isDblRegForSubInst (unsigned Reg)
 
bool isDuplex (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isDuplexPair (MCInst const &MIa, MCInst const &MIb)
 Symmetrical. See if these two instructions are fit for duplex pair. More...
 
bool isDuplexPairMatch (unsigned Ga, unsigned Gb)
 
bool isExtendable (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isExtended (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isFloat (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether it is a floating-point insn. More...
 
bool isImmext (MCInst const &MCI)
 
bool isInnerLoop (MCInst const &MCI)
 
bool isIntReg (unsigned Reg)
 
bool isIntRegForSubInst (unsigned Reg)
 
bool isNewValue (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isOperandExtended (MCInstrInfo const &MCII, MCInst const &MCI, unsigned short OperandNum)
 
bool isOrderedDuplexPair (MCInstrInfo const &MCII, MCInst const &MIa, bool ExtendedA, MCInst const &MIb, bool ExtendedB, bool bisReversable)
 non-Symmetrical. See if these two instructions are fit for duplex pair. More...
 
bool isOuterLoop (MCInst const &MCI)
 
bool isPredicated (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isPredicatedTrue (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isPredReg (unsigned Reg)
 
bool isPrefix (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isSolo (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isSoloAX (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn can be packaged only with A and X-type insns. More...
 
bool isSoloAin1 (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn can be packaged only with an A-type insn in slot #1. More...
 
void padEndloop (MCInst &MCI)
 
bool prefersSlot3 (MCInstrInfo const &MCII, MCInst const &MCI)
 
void replaceDuplex (MCContext &Context, MCInst &MCB, DuplexCandidate Candidate)
 
void setInnerLoop (MCInst &MCI)
 
void setOuterLoop (MCInst &MCI)
 
bool subInstWouldBeExtended (MCInst const &potentialDuplex)
 
void tryCompound (MCInstrInfo const &MCII, MCContext &Context, MCInst &MCI)
 tryCompound - Given a bundle check for compound insns when one is found update the contents fo the bundle with the compound insn. More...
 

Variables

size_t const innerLoopOffset = 0
 
int64_t const innerLoopMask = 1 << innerLoopOffset
 
size_t const outerLoopOffset = 1
 
int64_t const outerLoopMask = 1 << outerLoopOffset
 
size_t const bundleInstructionsOffset = 1
 

Function Documentation

iterator_range< MCInst::const_iterator > llvm::HexagonMCInstrInfo::bundleInstructions ( MCInst const MCI)
size_t llvm::HexagonMCInstrInfo::bundleSize ( MCInst const MCI)
void llvm::HexagonMCInstrInfo::clampExtended ( MCInstrInfo const MCII,
MCInst &  MCI 
)
MCInst * llvm::HexagonMCInstrInfo::deriveDuplex ( MCContext &  Context,
unsigned  iClass,
MCInst const inst0,
MCInst const inst1 
)
MCInst llvm::HexagonMCInstrInfo::deriveSubInst ( MCInst const Inst)
MCInst const * llvm::HexagonMCInstrInfo::extenderForIndex ( MCInst const MCB,
size_t  Index 
)
HexagonII::MemAccessSize llvm::HexagonMCInstrInfo::getAccessSize ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getBitCount ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned short llvm::HexagonMCInstrInfo::getCExtOpNum ( MCInstrInfo const MCII,
MCInst const MCI 
)
MCInstrDesc const & llvm::HexagonMCInstrInfo::getDesc ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getDuplexCandidateGroup ( MCInst const MI)
SmallVector< DuplexCandidate, 8 > llvm::HexagonMCInstrInfo::getDuplexPossibilties ( MCInstrInfo const MCII,
MCInst const MCB 
)
unsigned short llvm::HexagonMCInstrInfo::getExtendableOp ( MCInstrInfo const MCII,
MCInst const MCI 
)
MCOperand const & llvm::HexagonMCInstrInfo::getExtendableOperand ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getExtentAlignment ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getExtentBits ( MCInstrInfo const MCII,
MCInst const MCI 
)
int llvm::HexagonMCInstrInfo::getMaxValue ( MCInstrInfo const MCII,
MCInst const MCI 
)
int llvm::HexagonMCInstrInfo::getMinValue ( MCInstrInfo const MCII,
MCInst const MCI 
)
char const * llvm::HexagonMCInstrInfo::getName ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned short llvm::HexagonMCInstrInfo::getNewValueOp ( MCInstrInfo const MCII,
MCInst const MCI 
)
MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand ( MCInstrInfo const MCII,
MCInst const MCI 
)
int llvm::HexagonMCInstrInfo::getSubTarget ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getType ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::getUnits ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::hasExtenderForIndex ( MCInst const MCB,
size_t  Index 
)

Definition at line 234 of file HexagonMCInstrInfo.cpp.

References extenderForIndex().

Referenced by getDuplexPossibilties().

bool llvm::HexagonMCInstrInfo::hasImmExt ( MCInst const MCI)
bool llvm::HexagonMCInstrInfo::hasNewValue ( MCInstrInfo const MCII,
MCInst const MCI 
)
unsigned llvm::HexagonMCInstrInfo::iClassOfDuplexPair ( unsigned  Ga,
unsigned  Gb 
)
MCInst const & llvm::HexagonMCInstrInfo::instruction ( MCInst const MCB,
size_t  Index 
)
bool llvm::HexagonMCInstrInfo::isBundle ( MCInst const MCI)
bool llvm::HexagonMCInstrInfo::isCanon ( MCInstrInfo const MCII,
MCInst const MCI 
)

Definition at line 258 of file HexagonMCInstrInfo.cpp.

References getDesc(), getType(), isPrefix(), and llvm::HexagonII::TypeENDLOOP.

bool llvm::HexagonMCInstrInfo::isConstExtended ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isDblRegForSubInst ( unsigned  Reg)

Definition at line 264 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup().

bool llvm::HexagonMCInstrInfo::isDuplex ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isDuplexPair ( MCInst const MIa,
MCInst const MIb 
)

Symmetrical. See if these two instructions are fit for duplex pair.

Definition at line 669 of file HexagonMCDuplexInfo.cpp.

References getDuplexCandidateGroup(), and isDuplexPairMatch().

bool llvm::HexagonMCInstrInfo::isDuplexPairMatch ( unsigned  Ga,
unsigned  Gb 
)
bool llvm::HexagonMCInstrInfo::isExtendable ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isExtended ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isFloat ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return whether it is a floating-point insn.

Definition at line 323 of file HexagonMCInstrInfo.cpp.

References F(), llvm::HexagonII::FPMask, llvm::HexagonII::FPPos, getDesc(), and llvm::MCInstrDesc::TSFlags.

Referenced by llvm::HexagonShuffler::check().

bool llvm::HexagonMCInstrInfo::isImmext ( MCInst const MCI)
bool llvm::HexagonMCInstrInfo::isInnerLoop ( MCInst const MCI)
bool llvm::HexagonMCInstrInfo::isIntReg ( unsigned  Reg)

Definition at line 340 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup().

bool llvm::HexagonMCInstrInfo::isIntRegForSubInst ( unsigned  Reg)

Definition at line 344 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup(), and subInstWouldBeExtended().

bool llvm::HexagonMCInstrInfo::isNewValue ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isOperandExtended ( MCInstrInfo const MCII,
MCInst const MCI,
unsigned short  OperandNum 
)
bool llvm::HexagonMCInstrInfo::isOrderedDuplexPair ( MCInstrInfo const MCII,
MCInst const MIa,
bool  ExtendedA,
MCInst const MIb,
bool  ExtendedB,
bool  bisReversable 
)
bool llvm::HexagonMCInstrInfo::isOuterLoop ( MCInst const MCI)
bool llvm::HexagonMCInstrInfo::isPredicated ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isPredicatedTrue ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isPredReg ( unsigned  Reg)

Definition at line 384 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup().

bool llvm::HexagonMCInstrInfo::isPrefix ( MCInstrInfo const MCII,
MCInst const MCI 
)

Definition at line 388 of file HexagonMCInstrInfo.cpp.

References getType(), and llvm::HexagonII::TypePREFIX.

Referenced by isCanon(), and readPrefixes().

bool llvm::HexagonMCInstrInfo::isSolo ( MCInstrInfo const MCII,
MCInst const MCI 
)
bool llvm::HexagonMCInstrInfo::isSoloAin1 ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return whether the insn can be packaged only with an A-type insn in slot #1.

Definition at line 402 of file HexagonMCInstrInfo.cpp.

References F(), getDesc(), llvm::HexagonII::SoloAin1Mask, llvm::HexagonII::SoloAin1Pos, and llvm::MCInstrDesc::TSFlags.

Referenced by llvm::HexagonShuffler::check().

bool llvm::HexagonMCInstrInfo::isSoloAX ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return whether the insn can be packaged only with A and X-type insns.

Definition at line 397 of file HexagonMCInstrInfo.cpp.

References F(), getDesc(), llvm::HexagonII::SoloAXMask, llvm::HexagonII::SoloAXPos, and llvm::MCInstrDesc::TSFlags.

Referenced by llvm::HexagonShuffler::check().

void llvm::HexagonMCInstrInfo::padEndloop ( MCInst &  MCI)
bool llvm::HexagonMCInstrInfo::prefersSlot3 ( MCInstrInfo const MCII,
MCInst const MCI 
)
void llvm::HexagonMCInstrInfo::replaceDuplex ( MCContext &  Context,
MCInst &  MCB,
DuplexCandidate  Candidate 
)
void llvm::HexagonMCInstrInfo::setInnerLoop ( MCInst &  MCI)
void llvm::HexagonMCInstrInfo::setOuterLoop ( MCInst &  MCI)
bool llvm::HexagonMCInstrInfo::subInstWouldBeExtended ( MCInst const potentialDuplex)
void llvm::HexagonMCInstrInfo::tryCompound ( MCInstrInfo const MCII,
MCContext Context,
MCInst MCI 
)

tryCompound - Given a bundle check for compound insns when one is found update the contents fo the bundle with the compound insn.

If a compound instruction is found then the bundle will have one additional slot.

Definition at line 405 of file HexagonMCCompound.cpp.

References llvm::TargetOpcode::BUNDLE, llvm::MCInst::getOpcode(), and llvm::MCInst::size().

Referenced by llvm::HexagonAsmPrinter::EmitInstruction().

Variable Documentation

size_t const llvm::HexagonMCInstrInfo::bundleInstructionsOffset = 1
int64_t const llvm::HexagonMCInstrInfo::innerLoopMask = 1 << innerLoopOffset

Definition at line 37 of file HexagonMCInstrInfo.h.

Referenced by isInnerLoop(), and setInnerLoop().

size_t const llvm::HexagonMCInstrInfo::innerLoopOffset = 0

Definition at line 36 of file HexagonMCInstrInfo.h.

int64_t const llvm::HexagonMCInstrInfo::outerLoopMask = 1 << outerLoopOffset

Definition at line 40 of file HexagonMCInstrInfo.h.

Referenced by isOuterLoop(), and setOuterLoop().

size_t const llvm::HexagonMCInstrInfo::outerLoopOffset = 1

Definition at line 39 of file HexagonMCInstrInfo.h.