LLVM  6.0.0svn
Functions | Variables
llvm::HexagonMCInstrInfo Namespace Reference

Functions

void addConstant (MCInst &MI, uint64_t Value, MCContext &Context)
 
void addConstExtender (MCContext &Context, MCInstrInfo const &MCII, MCInst &MCB, MCInst const &MCI)
 
iterator_range< Hexagon::PacketIteratorbundleInstructions (MCInstrInfo const &MCII, MCInst const &MCI)
 
iterator_range< MCInst::const_iteratorbundleInstructions (MCInst const &MCI)
 
size_t bundleSize (MCInst const &MCI)
 
bool canonicalizePacket (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCContext &Context, MCInst &MCB, HexagonMCChecker *Checker)
 
MCInstderiveDuplex (MCContext &Context, unsigned iClass, MCInst const &inst0, MCInst const &inst1)
 
MCInst deriveExtender (MCInstrInfo const &MCII, MCInst const &Inst, MCOperand const &MO)
 
MCInst deriveSubInst (MCInst const &Inst)
 
void clampExtended (MCInstrInfo const &MCII, MCContext &Context, MCInst &MCI)
 
MCInst createBundle ()
 
MCInst constextenderForIndex (MCInst const &MCB, size_t Index)
 
void extendIfNeeded (MCContext &Context, MCInstrInfo const &MCII, MCInst &MCB, MCInst const &MCI)
 
unsigned getMemAccessSize (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, MCSubtargetInfo const &STI, MCInst const &MCB)
 
unsigned getDuplexRegisterNumbering (unsigned Reg)
 
MCExpr constgetExpr (MCExpr const &Expr)
 
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)
 Return the maximum value of an extendable operand. More...
 
int getMinValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the minimum value of an extendable operand. More...
 
StringRef getName (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned short getNewValueOp (MCInstrInfo const &MCII, MCInst const &MCI)
 
MCOperand constgetNewValueOperand (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned short getNewValueOp2 (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the new value or the newly produced value. More...
 
MCOperand constgetNewValueOperand2 (MCInstrInfo const &MCII, MCInst const &MCI)
 
unsigned getType (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the Hexagon ISA class for the insn. More...
 
unsigned getUnits (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
 Return the slots used by the insn. More...
 
unsigned getOtherReservedSlots (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
 Return the slots this instruction consumes in addition to the slot(s) it can execute out of. More...
 
bool hasDuplex (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool hasExtenderForIndex (MCInst const &MCB, size_t Index)
 
bool hasImmExt (MCInst const &MCI)
 
bool hasNewValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn produces a value. More...
 
bool hasNewValue2 (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn produces a second value. More...
 
unsigned iClassOfDuplexPair (unsigned Ga, unsigned Gb)
 
int64_t minConstant (MCInst const &MCI, size_t Index)
 
template<unsigned N, unsigned S>
bool inRange (MCInst const &MCI, size_t Index)
 
template<unsigned N, unsigned S>
bool inSRange (MCInst const &MCI, size_t Index)
 
template<unsigned N>
bool inRange (MCInst const &MCI, size_t Index)
 
MCInst constinstruction (MCInst const &MCB, size_t Index)
 
bool isAccumulator (MCInstrInfo const &MCII, MCInst const &MCI)
 Return where the instruction is an accumulator. More...
 
bool isBundle (MCInst const &MCI)
 
bool isCanon (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isCofMax1 (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isCompound (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isConstExtended (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isCVINew (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 isMemReorderDisabled (MCInst const &MCI)
 
bool isMemStoreReorderEnabled (MCInst const &MCI)
 
bool isNewValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn expects newly produced value. More...
 
bool isOpExtendable (MCInstrInfo const &MCII, MCInst const &MCI, unsigned short)
 Return whether the operand is extendable. More...
 
bool isOrderedDuplexPair (MCInstrInfo const &MCII, MCInst const &MIa, bool ExtendedA, MCInst const &MIb, bool ExtendedB, bool bisReversable, MCSubtargetInfo const &STI)
 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 isPredicateLate (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool isPredicatedNew (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn is newly predicated. More...
 
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)
 Return whether the insn is solo, i.e., cannot be in a packet. More...
 
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...
 
bool isSubInstruction (MCInst const &MCI)
 
bool isVector (MCInstrInfo const &MCII, MCInst const &MCI)
 
bool mustExtend (MCExpr const &Expr)
 
bool mustNotExtend (MCExpr const &Expr)
 
void padEndloop (MCInst &MCI, MCContext &Context)
 
bool prefersSlot3 (MCInstrInfo const &MCII, MCInst const &MCI)
 
void replaceDuplex (MCContext &Context, MCInst &MCI, DuplexCandidate Candidate)
 
bool s27_2_reloc (MCExpr const &Expr)
 
void setInnerLoop (MCInst &MCI)
 
void setMemReorderDisabled (MCInst &MCI)
 
void setMemStoreReorderEnabled (MCInst &MCI)
 
void setMustExtend (MCExpr const &Expr, bool Val=true)
 
void setMustNotExtend (MCExpr const &Expr, bool Val=true)
 
void setS27_2_reloc (MCExpr const &Expr, bool Val=true)
 
void setOuterLoop (MCInst &MCI)
 
bool subInstWouldBeExtended (MCInst const &potentialDuplex)
 
unsigned SubregisterBit (unsigned Consumer, unsigned Producer, unsigned Producer2)
 
void tryCompound (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, 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 memReorderDisabledOffset = 2
 
int64_t const memReorderDisabledMask = 1 << memReorderDisabledOffset
 
size_t const memStoreReorderEnabledOffset = 3
 
int64_t const memStoreReorderEnabledMask = 1 << memStoreReorderEnabledOffset
 
size_t const bundleInstructionsOffset = 1
 

Function Documentation

◆ addConstant()

void llvm::HexagonMCInstrInfo::addConstant ( MCInst MI,
uint64_t  Value,
MCContext Context 
)

◆ addConstExtender()

void llvm::HexagonMCInstrInfo::addConstExtender ( MCContext Context,
MCInstrInfo const MCII,
MCInst MCB,
MCInst const MCI 
)

◆ bundleInstructions() [1/2]

iterator_range< Hexagon::PacketIterator > llvm::HexagonMCInstrInfo::bundleInstructions ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ bundleInstructions() [2/2]

iterator_range< MCInst::const_iterator > llvm::HexagonMCInstrInfo::bundleInstructions ( MCInst const MCI)

◆ bundleSize()

size_t llvm::HexagonMCInstrInfo::bundleSize ( MCInst const MCI)

◆ canonicalizePacket()

bool llvm::HexagonMCInstrInfo::canonicalizePacket ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCContext Context,
MCInst MCB,
HexagonMCChecker Checker 
)

◆ clampExtended()

void llvm::HexagonMCInstrInfo::clampExtended ( MCInstrInfo const MCII,
MCContext Context,
MCInst MCI 
)

◆ createBundle()

MCInst llvm::HexagonMCInstrInfo::createBundle ( )

◆ deriveDuplex()

MCInst * llvm::HexagonMCInstrInfo::deriveDuplex ( MCContext Context,
unsigned  iClass,
MCInst const inst0,
MCInst const inst1 
)

◆ deriveExtender()

MCInst llvm::HexagonMCInstrInfo::deriveExtender ( MCInstrInfo const MCII,
MCInst const Inst,
MCOperand const MO 
)

◆ deriveSubInst()

MCInst llvm::HexagonMCInstrInfo::deriveSubInst ( MCInst const Inst)

◆ extenderForIndex()

MCInst const * llvm::HexagonMCInstrInfo::extenderForIndex ( MCInst const MCB,
size_t  Index 
)

◆ extendIfNeeded()

void llvm::HexagonMCInstrInfo::extendIfNeeded ( MCContext Context,
MCInstrInfo const MCII,
MCInst MCB,
MCInst const MCI 
)

Definition at line 222 of file HexagonMCInstrInfo.cpp.

References addConstExtender(), and isConstExtended().

Referenced by llvm::HexagonLowerToMC().

◆ getDesc()

MCInstrDesc const & llvm::HexagonMCInstrInfo::getDesc ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getDuplexCandidateGroup()

unsigned llvm::HexagonMCInstrInfo::getDuplexCandidateGroup ( MCInst const MI)

◆ getDuplexPossibilties()

SmallVector< DuplexCandidate, 8 > llvm::HexagonMCInstrInfo::getDuplexPossibilties ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst const MCB 
)

◆ getDuplexRegisterNumbering()

unsigned llvm::HexagonMCInstrInfo::getDuplexRegisterNumbering ( unsigned  Reg)

Definition at line 241 of file HexagonMCInstrInfo.cpp.

References llvm_unreachable, R2, R4, and R6.

Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().

◆ getExpr()

MCExpr const & llvm::HexagonMCInstrInfo::getExpr ( MCExpr const Expr)

◆ getExtendableOp()

unsigned short llvm::HexagonMCInstrInfo::getExtendableOp ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getExtendableOperand()

MCOperand const & llvm::HexagonMCInstrInfo::getExtendableOperand ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getExtentAlignment()

unsigned llvm::HexagonMCInstrInfo::getExtentAlignment ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getExtentBits()

unsigned llvm::HexagonMCInstrInfo::getExtentBits ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getMaxValue()

int llvm::HexagonMCInstrInfo::getMaxValue ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return the maximum value of an extendable operand.

Definition at line 328 of file HexagonMCInstrInfo.cpp.

References assert(), llvm::HexagonII::ExtentSignedMask, llvm::HexagonII::ExtentSignedPos, F(), getDesc(), getExtentBits(), isExtendable(), isExtended(), and llvm::MCInstrDesc::TSFlags.

Referenced by isConstExtended().

◆ getMemAccessSize()

unsigned llvm::HexagonMCInstrInfo::getMemAccessSize ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getMinValue()

int llvm::HexagonMCInstrInfo::getMinValue ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return the minimum value of an extendable operand.

Definition at line 342 of file HexagonMCInstrInfo.cpp.

References assert(), llvm::HexagonII::ExtentSignedMask, llvm::HexagonII::ExtentSignedPos, F(), getDesc(), getExtentBits(), isExtendable(), isExtended(), and llvm::MCInstrDesc::TSFlags.

Referenced by isConstExtended().

◆ getName()

StringRef llvm::HexagonMCInstrInfo::getName ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getNewValueOp()

unsigned short llvm::HexagonMCInstrInfo::getNewValueOp ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getNewValueOp2()

unsigned short llvm::HexagonMCInstrInfo::getNewValueOp2 ( MCInstrInfo const MCII,
MCInst const MCI 
)

Return the new value or the newly produced value.

Definition at line 378 of file HexagonMCInstrInfo.cpp.

References F(), getDesc(), llvm::HexagonII::NewValueOpMask2, llvm::HexagonII::NewValueOpPos2, and llvm::MCInstrDesc::TSFlags.

Referenced by getNewValueOperand2().

◆ getNewValueOperand()

MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getNewValueOperand2()

MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand2 ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getOtherReservedSlots()

unsigned llvm::HexagonMCInstrInfo::getOtherReservedSlots ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst const MCI 
)

◆ getType()

unsigned llvm::HexagonMCInstrInfo::getType ( MCInstrInfo const MCII,
MCInst const MCI 
)

◆ getUnits()

unsigned llvm::HexagonMCInstrInfo::getUnits ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
MCInst const MCI 
)

Return the slots used by the insn.

Return the slots this instruction can execute out of.

Definition at line 404 of file HexagonMCInstrInfo.cpp.

References getDesc(), llvm::MCInstrDesc::getSchedClass(), llvm::MCSubtargetInfo::getSchedModel(), llvm::HexagonStages, and llvm::MCSchedModel::InstrItineraries.

Referenced by getOtherReservedSlots(), and llvm::HexagonResource::setWeight().

◆ hasDuplex()

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

Definition at line 438 of file HexagonMCInstrInfo.cpp.

References bundleInstructions(), I, isBundle(), and isDuplex().

Referenced by llvm::HexagonMCShuffle().

◆ hasExtenderForIndex()

bool llvm::HexagonMCInstrInfo::hasExtenderForIndex ( MCInst const MCB,
size_t  Index 
)

Definition at line 450 of file HexagonMCInstrInfo.cpp.

References extenderForIndex().

Referenced by getDuplexPossibilties().

◆ hasImmExt()

bool llvm::HexagonMCInstrInfo::hasImmExt ( MCInst const MCI)

Definition at line 454 of file HexagonMCInstrInfo.cpp.

References bundleInstructions(), I, isBundle(), and isImmext().

Referenced by llvm::HexagonMCShuffle().

◆ hasNewValue()

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

◆ hasNewValue2()

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

◆ iClassOfDuplexPair()

unsigned llvm::HexagonMCInstrInfo::iClassOfDuplexPair ( unsigned  Ga,
unsigned  Gb 
)

◆ inRange() [1/2]

template<unsigned N, unsigned S>
bool llvm::HexagonMCInstrInfo::inRange ( MCInst const MCI,
size_t  Index 
)

Definition at line 191 of file HexagonMCInstrInfo.h.

References minConstant().

◆ inRange() [2/2]

template<unsigned N>
bool llvm::HexagonMCInstrInfo::inRange ( MCInst const MCI,
size_t  Index 
)

◆ inSRange()

template<unsigned N, unsigned S>
bool llvm::HexagonMCInstrInfo::inSRange ( MCInst const MCI,
size_t  Index 
)

Definition at line 195 of file HexagonMCInstrInfo.h.

References minConstant().

◆ instruction()

MCInst const & llvm::HexagonMCInstrInfo::instruction ( MCInst const MCB,
size_t  Index 
)

◆ isAccumulator()

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

Return where the instruction is an accumulator.

Definition at line 487 of file HexagonMCInstrInfo.cpp.

References llvm::HexagonII::AccumulatorMask, llvm::HexagonII::AccumulatorPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.

Referenced by inRange().

◆ isBundle()

bool llvm::HexagonMCInstrInfo::isBundle ( MCInst const MCI)

◆ isCanon()

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

Definition at line 533 of file HexagonMCInstrInfo.cpp.

References getDesc(), isPrefix(), and llvm::MCInstrDesc::isPseudo().

Referenced by inRange().

◆ isCofMax1()

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

◆ isCompound()

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

Definition at line 543 of file HexagonMCInstrInfo.cpp.

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

Referenced by inRange().

◆ isConstExtended()

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

◆ isCVINew()

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

◆ isDblRegForSubInst()

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

Definition at line 553 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup().

◆ isDuplex()

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

◆ isDuplexPair()

bool llvm::HexagonMCInstrInfo::isDuplexPair ( MCInst const MIa,
MCInst const MIb 
)

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

Definition at line 655 of file HexagonMCDuplexInfo.cpp.

References getDuplexCandidateGroup(), and isDuplexPairMatch().

Referenced by inRange().

◆ isDuplexPairMatch()

bool llvm::HexagonMCInstrInfo::isDuplexPairMatch ( unsigned  Ga,
unsigned  Gb 
)

◆ isExtendable()

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

◆ isExtended()

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

◆ isFloat()

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

Return whether it is a floating-point insn.

Definition at line 574 of file HexagonMCInstrInfo.cpp.

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

Referenced by combineTargetShuffle(), inRange(), and isNeitherAnorX().

◆ isImmext()

bool llvm::HexagonMCInstrInfo::isImmext ( MCInst const MCI)

◆ isInnerLoop()

bool llvm::HexagonMCInstrInfo::isInnerLoop ( MCInst const MCI)

◆ isIntReg()

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

Definition at line 589 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup(), and inRange().

◆ isIntRegForSubInst()

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

◆ isMemReorderDisabled()

bool llvm::HexagonMCInstrInfo::isMemReorderDisabled ( MCInst const MCI)

◆ isMemStoreReorderEnabled()

bool llvm::HexagonMCInstrInfo::isMemStoreReorderEnabled ( MCInst const MCI)

◆ isNewValue()

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

◆ isOpExtendable()

bool llvm::HexagonMCInstrInfo::isOpExtendable ( MCInstrInfo const MCII,
MCInst const MCI,
unsigned short  O 
)

Return whether the operand is extendable.

Definition at line 606 of file HexagonMCInstrInfo.cpp.

References getExtendableOp().

Referenced by inRange().

◆ isOrderedDuplexPair()

bool llvm::HexagonMCInstrInfo::isOrderedDuplexPair ( MCInstrInfo const MCII,
MCInst const MIa,
bool  ExtendedA,
MCInst const MIb,
bool  ExtendedB,
bool  bisReversable,
MCSubtargetInfo const STI 
)

◆ isOuterLoop()

bool llvm::HexagonMCInstrInfo::isOuterLoop ( MCInst const MCI)

◆ isPredicated()

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

◆ isPredicatedNew()

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

Return whether the insn is newly predicated.

Definition at line 634 of file HexagonMCInstrInfo.cpp.

References F(), getDesc(), llvm::HexagonII::PredicatedNewMask, llvm::HexagonII::PredicatedNewPos, and llvm::MCInstrDesc::TSFlags.

Referenced by inRange(), and isNeitherAnorX().

◆ isPredicatedTrue()

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

◆ isPredicateLate()

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

◆ isPredReg()

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

Definition at line 647 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup(), and inRange().

◆ isPrefix()

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

Definition at line 623 of file HexagonMCInstrInfo.cpp.

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

Referenced by isCanon().

◆ isSolo()

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

Return whether the insn is solo, i.e., cannot be in a packet.

Definition at line 665 of file HexagonMCInstrInfo.cpp.

References F(), llvm::MCInstrInfo::get(), llvm::MCInst::getOpcode(), llvm::HexagonII::SoloMask, and llvm::HexagonII::SoloPos.

Referenced by inRange(), and isNeitherAnorX().

◆ isSoloAin1()

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 658 of file HexagonMCInstrInfo.cpp.

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

Referenced by llvm::HexagonShuffler::check(), and inRange().

◆ isSoloAX()

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 652 of file HexagonMCInstrInfo.cpp.

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

Referenced by inRange(), and isNeitherAnorX().

◆ isSubInstruction()

bool llvm::HexagonMCInstrInfo::isSubInstruction ( MCInst const MCI)

◆ isVector()

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

◆ minConstant()

int64_t llvm::HexagonMCInstrInfo::minConstant ( MCInst const MCI,
size_t  Index 
)

◆ mustExtend()

bool llvm::HexagonMCInstrInfo::mustExtend ( MCExpr const Expr)

Definition at line 768 of file HexagonMCInstrInfo.cpp.

References llvm::HexagonMCExpr::mustExtend().

Referenced by inRange(), isConstExtended(), and makeCombineInst().

◆ mustNotExtend()

bool llvm::HexagonMCInstrInfo::mustNotExtend ( MCExpr const Expr)

Definition at line 776 of file HexagonMCInstrInfo.cpp.

References llvm::HexagonMCExpr::mustNotExtend().

Referenced by inRange(), and isConstExtended().

◆ padEndloop()

void llvm::HexagonMCInstrInfo::padEndloop ( MCInst MCI,
MCContext Context 
)

◆ prefersSlot3()

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

◆ replaceDuplex()

void llvm::HexagonMCInstrInfo::replaceDuplex ( MCContext Context,
MCInst MCI,
DuplexCandidate  Candidate 
)

◆ s27_2_reloc()

bool llvm::HexagonMCInstrInfo::s27_2_reloc ( MCExpr const Expr)

Definition at line 785 of file HexagonMCInstrInfo.cpp.

References llvm::dyn_cast(), and llvm::HexagonMCExpr::s27_2_reloc().

Referenced by inRange(), and isPCRel().

◆ setInnerLoop()

void llvm::HexagonMCInstrInfo::setInnerLoop ( MCInst MCI)

◆ setMemReorderDisabled()

void llvm::HexagonMCInstrInfo::setMemReorderDisabled ( MCInst MCI)

◆ setMemStoreReorderEnabled()

void llvm::HexagonMCInstrInfo::setMemStoreReorderEnabled ( MCInst MCI)

◆ setMustExtend()

void llvm::HexagonMCInstrInfo::setMustExtend ( MCExpr const Expr,
bool  Val = true 
)

◆ setMustNotExtend()

void llvm::HexagonMCInstrInfo::setMustNotExtend ( MCExpr const Expr,
bool  Val = true 
)

◆ setOuterLoop()

void llvm::HexagonMCInstrInfo::setOuterLoop ( MCInst MCI)

◆ setS27_2_reloc()

void llvm::HexagonMCInstrInfo::setS27_2_reloc ( MCExpr const Expr,
bool  Val = true 
)

◆ subInstWouldBeExtended()

bool llvm::HexagonMCInstrInfo::subInstWouldBeExtended ( MCInst const potentialDuplex)

◆ SubregisterBit()

unsigned llvm::HexagonMCInstrInfo::SubregisterBit ( unsigned  Consumer,
unsigned  Producer,
unsigned  Producer2 
)

◆ tryCompound()

void llvm::HexagonMCInstrInfo::tryCompound ( MCInstrInfo const MCII,
MCSubtargetInfo const STI,
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 400 of file HexagonMCCompound.cpp.

References assert(), llvm::dbgs(), DEBUG, llvm::HexagonMCShuffle(), isBundle(), lookForCompound(), and llvm::MCInst::size().

Referenced by canonicalizePacket(), and inRange().

Variable Documentation

◆ bundleInstructionsOffset

size_t const llvm::HexagonMCInstrInfo::bundleInstructionsOffset = 1

◆ innerLoopMask

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

Definition at line 68 of file HexagonMCInstrInfo.h.

Referenced by isInnerLoop(), and setInnerLoop().

◆ innerLoopOffset

size_t const llvm::HexagonMCInstrInfo::innerLoopOffset = 0

Definition at line 67 of file HexagonMCInstrInfo.h.

◆ memReorderDisabledMask

int64_t const llvm::HexagonMCInstrInfo::memReorderDisabledMask = 1 << memReorderDisabledOffset

Definition at line 76 of file HexagonMCInstrInfo.h.

Referenced by isMemReorderDisabled(), and setMemReorderDisabled().

◆ memReorderDisabledOffset

size_t const llvm::HexagonMCInstrInfo::memReorderDisabledOffset = 2

Definition at line 75 of file HexagonMCInstrInfo.h.

◆ memStoreReorderEnabledMask

int64_t const llvm::HexagonMCInstrInfo::memStoreReorderEnabledMask = 1 << memStoreReorderEnabledOffset

Definition at line 80 of file HexagonMCInstrInfo.h.

Referenced by isMemStoreReorderEnabled(), and setMemStoreReorderEnabled().

◆ memStoreReorderEnabledOffset

size_t const llvm::HexagonMCInstrInfo::memStoreReorderEnabledOffset = 3

Definition at line 79 of file HexagonMCInstrInfo.h.

◆ outerLoopMask

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

Definition at line 71 of file HexagonMCInstrInfo.h.

Referenced by isOuterLoop(), and setOuterLoop().

◆ outerLoopOffset

size_t const llvm::HexagonMCInstrInfo::outerLoopOffset = 1

Definition at line 70 of file HexagonMCInstrInfo.h.