Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
llvm::HexagonMCInstrInfo Namespace Reference

Classes

class  PredicateInfo

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, bool AttemptCompatibility=false)
bool IsABranchingInst (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &I)
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)
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)
unsigned getAddrMode (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 (MCRegister 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)
bool isExtentSigned (MCInstrInfo const &MCII, MCInst const &MCI)
int getMaxValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the maximum value of an extendable operand.
int getMinValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the minimum value of an extendable operand.
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.
MCOperand constgetNewValueOperand2 (MCInstrInfo const &MCII, MCInst const &MCI)
unsigned getType (MCInstrInfo const &MCII, MCInst const &MCI)
 Return the Hexagon ISA class for the insn.
unsigned getCVIResources (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
 Return the resources used by this instruction.
unsigned getUnits (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
 Return the slots used by the insn.
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.
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.
bool hasNewValue2 (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn produces a second value.
bool hasTmpDst (MCInstrInfo const &MCII, MCInst const &MCI)
bool hasHvxTmp (MCInstrInfo const &MCII, MCInst const &MCI)
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.
bool isBundle (MCInst const &MCI)
bool isCanon (MCInstrInfo const &MCII, MCInst const &MCI)
bool isCofMax1 (MCInstrInfo const &MCII, MCInst const &MCI)
bool isCofRelax1 (MCInstrInfo const &MCII, MCInst const &MCI)
bool isCofRelax2 (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 (MCRegister 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.
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.
bool isHVX (MCInstrInfo const &MCII, MCInst const &MCI)
bool isImmext (MCInst const &MCI)
bool isInnerLoop (MCInst const &MCI)
bool isIntReg (MCRegister Reg)
bool isIntRegForSubInst (MCRegister Reg)
bool isMemReorderDisabled (MCInst const &MCI)
bool isNewValue (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn expects newly produced value.
bool isNewValueStore (MCInstrInfo const &MCII, MCInst const &MCI)
 Return true if the operand is a new-value store insn.
bool isOpExtendable (MCInstrInfo const &MCII, MCInst const &MCI, unsigned short)
 Return whether the operand is extendable.
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.
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.
bool isPredicatedTrue (MCInstrInfo const &MCII, MCInst const &MCI)
bool isPredReg (MCRegisterInfo const &MRI, MCRegister Reg)
bool isPredRegister (MCInstrInfo const &MCII, MCInst const &Inst, unsigned I)
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.
bool isSoloAX (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn can be packaged only with A and X-type insns.
bool isRestrictSlot1AOK (MCInstrInfo const &MCII, MCInst const &MCI)
 Return whether the insn can be packaged only with an A-type insn in slot #1.
bool isRestrictNoSlot1Store (MCInstrInfo const &MCII, MCInst const &MCI)
bool isSubInstruction (MCInst const &MCI)
bool isVector (MCInstrInfo const &MCII, MCInst const &MCI)
bool mustExtend (MCExpr const &Expr)
bool mustNotExtend (MCExpr const &Expr)
bool requiresSlot (MCSubtargetInfo const &STI, MCInst const &MCI)
bool LoopNeedsPadding (MCInst const &MCB)
unsigned packetSize (StringRef CPU)
unsigned packetSizeSlots (MCSubtargetInfo const &STI)
unsigned slotsConsumed (MCInstrInfo const &MCII, MCSubtargetInfo const &STI, MCInst const &MCI)
void padEndloop (MCInst &MCI, MCContext &Context)
PredicateInfo predicateInfo (MCInstrInfo const &MCII, MCInst const &MCI)
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 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 (MCRegister Consumer, MCRegister Producer, MCRegister Producer2)
bool IsVecRegSingle (MCRegister VecReg)
bool IsVecRegPair (MCRegister VecReg)
bool IsReverseVecRegPair (MCRegister VecReg)
bool IsSingleConsumerRefPairProducer (MCRegister Producer, MCRegister Consumer)
std::pair< unsigned, unsignedGetVecRegPairIndices (MCRegister VecRegPair)
 Returns an ordered pair of the constituent register ordinals for each of the elements of VecRegPair.
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 of the bundle with the compound insn.

Variables

constexpr size_t innerLoopOffset = 0
constexpr int64_t innerLoopMask = 1 << innerLoopOffset
constexpr size_t outerLoopOffset = 1
constexpr int64_t outerLoopMask = 1 << outerLoopOffset
constexpr size_t memReorderDisabledOffset = 2
constexpr int64_t memReorderDisabledMask = 1 << memReorderDisabledOffset
constexpr size_t splitNoMemOrderOffset = 3
constexpr int64_t splitNoMemorderMask = 1 << splitNoMemOrderOffset
constexpr size_t noShuffleOffset = 4
constexpr int64_t noShuffleMask = 1 << noShuffleOffset
constexpr size_t bundleInstructionsOffset = 1

Function Documentation

◆ addConstant()

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

◆ addConstExtender()

◆ bundleInstructions() [1/2]

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

◆ bundleInstructions() [2/2]

◆ bundleSize()

◆ canonicalizePacket()

bool llvm::HexagonMCInstrInfo::canonicalizePacket ( MCInstrInfo const & MCII,
MCSubtargetInfo const & STI,
MCContext & Context,
MCInst & MCB,
HexagonMCChecker * Checker,
bool AttemptCompatibility = false )

◆ deriveDuplex()

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

◆ deriveExtender()

◆ deriveSubInst()

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

References addConstExtender(), and isConstExtended().

Referenced by llvm::HexagonLowerToMC().

◆ getAddrMode()

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

◆ getCVIResources()

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

◆ getDesc()

◆ getDuplexCandidateGroup()

◆ getDuplexPossibilties()

◆ getDuplexRegisterNumbering()

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

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

Definition at line 310 of file HexagonMCInstrInfo.cpp.

References assert(), and llvm::cast().

◆ getExtendableOp()

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

References assert(), getExtentBits(), isExtendable(), isExtended(), and isExtentSigned().

Referenced by isConstExtended().

◆ getMemAccessSize()

◆ getMinValue()

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

Return the minimum value of an extendable operand.

Definition at line 364 of file HexagonMCInstrInfo.cpp.

References assert(), getExtentBits(), isExtendable(), isExtended(), and isExtentSigned().

Referenced by isConstExtended().

◆ getName()

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

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

Referenced by getNewValueOperand2().

◆ getNewValueOperand()

◆ 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 )

Return the slots this instruction consumes in addition to the slot(s) it can execute out of.

Definition at line 461 of file HexagonMCInstrInfo.cpp.

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

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

◆ getType()

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

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

Referenced by getCVIResources(), getOtherReservedSlots(), and getUnits().

◆ GetVecRegPairIndices()

std::pair< unsigned, unsigned > llvm::HexagonMCInstrInfo::GetVecRegPairIndices ( MCRegister VecRegPair)

Returns an ordered pair of the constituent register ordinals for each of the elements of VecRegPair.

For example, Hexagon::W0 ("v0:1") returns { 0, 1 } and Hexagon::W1 ("v3:2") returns { 3, 2 }.

Definition at line 708 of file HexagonMCInstrInfo.cpp.

References assert(), IsReverseVecRegPair(), and IsVecRegPair().

◆ hasDuplex()

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

Definition at line 484 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 496 of file HexagonMCInstrInfo.cpp.

References extenderForIndex().

Referenced by getDuplexPossibilties().

◆ hasHvxTmp()

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

◆ hasImmExt()

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

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

◆ hasTmpDst()

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

Definition at line 954 of file HexagonMCInstrInfo.cpp.

References llvm::MCInst::getOpcode().

Referenced by getNewValueOperand().

◆ iClassOfDuplexPair()

◆ inRange() [1/2]

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

◆ inRange() [2/2]

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

Definition at line 211 of file HexagonMCInstrInfo.h.

References llvm::isUInt(), and minConstant().

◆ inSRange()

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

Definition at line 208 of file HexagonMCInstrInfo.h.

References llvm::isShiftedInt(), and minConstant().

Referenced by getDuplexCandidateGroup().

◆ instruction()

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

◆ IsABranchingInst()

bool llvm::HexagonMCInstrInfo::IsABranchingInst ( MCInstrInfo const & MCII,
MCSubtargetInfo const & STI,
MCInst const & I )

◆ isAccumulator()

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

Return where the instruction is an accumulator.

Definition at line 533 of file HexagonMCInstrInfo.cpp.

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

◆ isBundle()

◆ isCanon()

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

Definition at line 587 of file HexagonMCInstrInfo.cpp.

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

◆ isCofMax1()

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

◆ isCofRelax1()

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

◆ isCofRelax2()

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

◆ isCompound()

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

Definition at line 609 of file HexagonMCInstrInfo.cpp.

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

◆ isConstExtended()

◆ isCVINew()

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

◆ isDblRegForSubInst()

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

Definition at line 619 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 651 of file HexagonMCDuplexInfo.cpp.

References getDuplexCandidateGroup(), and isDuplexPairMatch().

◆ isDuplexPairMatch()

◆ isExtendable()

◆ isExtended()

◆ isExtentSigned()

bool llvm::HexagonMCInstrInfo::isExtentSigned ( 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 640 of file HexagonMCInstrInfo.cpp.

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

Referenced by isNeitherAnorX().

◆ isHVX()

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

◆ isImmext()

◆ isInnerLoop()

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

◆ isIntReg()

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

Definition at line 660 of file HexagonMCInstrInfo.cpp.

Referenced by getDuplexCandidateGroup().

◆ isIntRegForSubInst()

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

◆ isMemReorderDisabled()

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

◆ isNewValue()

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

◆ isNewValueStore()

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

Return true if the operand is a new-value store insn.

Definition at line 676 of file HexagonMCInstrInfo.cpp.

References F, getDesc(), llvm::HexagonII::NVStoreMask, llvm::HexagonII::NVStorePos, and llvm::MCInstrDesc::TSFlags.

◆ isOpExtendable()

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

Return whether the operand is extendable.

Definition at line 683 of file HexagonMCInstrInfo.cpp.

References getExtendableOp().

◆ isOrderedDuplexPair()

◆ isOuterLoop()

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

◆ isPredicated()

◆ isPredicatedNew()

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

Return whether the insn is newly predicated.

Definition at line 750 of file HexagonMCInstrInfo.cpp.

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

◆ isPredicatedTrue()

◆ isPredicateLate()

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

◆ isPredReg()

bool llvm::HexagonMCInstrInfo::isPredReg ( MCRegisterInfo const & MRI,
MCRegister Reg )

Definition at line 763 of file HexagonMCInstrInfo.cpp.

References MRI.

◆ isPredRegister()

bool llvm::HexagonMCInstrInfo::isPredRegister ( MCInstrInfo const & MCII,
MCInst const & Inst,
unsigned I )

◆ isPrefix()

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

Definition at line 739 of file HexagonMCInstrInfo.cpp.

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

Referenced by isCanon().

◆ isRestrictNoSlot1Store()

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

◆ isRestrictSlot1AOK()

bool llvm::HexagonMCInstrInfo::isRestrictSlot1AOK ( 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 783 of file HexagonMCInstrInfo.cpp.

References F, getDesc(), llvm::HexagonII::RestrictSlot1AOKMask, llvm::HexagonII::RestrictSlot1AOKPos, and llvm::MCInstrDesc::TSFlags.

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

◆ IsReverseVecRegPair()

bool llvm::HexagonMCInstrInfo::IsReverseVecRegPair ( MCRegister VecReg)

◆ IsSingleConsumerRefPairProducer()

bool llvm::HexagonMCInstrInfo::IsSingleConsumerRefPairProducer ( MCRegister Producer,
MCRegister Consumer )

Definition at line 720 of file HexagonMCInstrInfo.cpp.

References IsReverseVecRegPair(), IsVecRegPair(), and IsVecRegSingle().

Referenced by RegisterMatches().

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

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

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

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

◆ isSubInstruction()

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

Definition at line 809 of file HexagonMCInstrInfo.cpp.

References llvm::MCInst::getOpcode().

◆ IsVecRegPair()

bool llvm::HexagonMCInstrInfo::IsVecRegPair ( MCRegister VecReg)

◆ IsVecRegSingle()

bool llvm::HexagonMCInstrInfo::IsVecRegSingle ( MCRegister VecReg)

Definition at line 703 of file HexagonMCInstrInfo.cpp.

Referenced by IsSingleConsumerRefPairProducer(), and SubregisterBit().

◆ isVector()

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

◆ LoopNeedsPadding()

bool llvm::HexagonMCInstrInfo::LoopNeedsPadding ( MCInst const & MCB)

◆ minConstant()

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

◆ mustExtend()

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

Definition at line 893 of file HexagonMCInstrInfo.cpp.

References llvm::cast(), and llvm::HexagonMCExpr::mustExtend().

Referenced by isConstExtended().

◆ mustNotExtend()

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

Definition at line 901 of file HexagonMCInstrInfo.cpp.

References llvm::cast(), and llvm::HexagonMCExpr::mustNotExtend().

Referenced by isConstExtended().

◆ packetSize()

unsigned llvm::HexagonMCInstrInfo::packetSize ( StringRef CPU)

◆ packetSizeSlots()

unsigned llvm::HexagonMCInstrInfo::packetSizeSlots ( MCSubtargetInfo const & STI)

◆ padEndloop()

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

◆ predicateInfo()

HexagonMCInstrInfo::PredicateInfo llvm::HexagonMCInstrInfo::predicateInfo ( MCInstrInfo const & MCII,
MCInst const & MCI )

◆ prefersSlot3()

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

◆ replaceDuplex()

◆ requiresSlot()

◆ s27_2_reloc()

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

Definition at line 910 of file HexagonMCInstrInfo.cpp.

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

◆ setInnerLoop()

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

◆ setMemReorderDisabled()

◆ 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 )

◆ slotsConsumed()

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

Definition at line 985 of file HexagonMCInstrInfo.cpp.

References bundleInstructions(), isDuplex(), and requiresSlot().

◆ subInstWouldBeExtended()

◆ SubregisterBit()

unsigned llvm::HexagonMCInstrInfo::SubregisterBit ( MCRegister Consumer,
MCRegister Producer,
MCRegister 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 of the bundle with the compound insn.

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

Definition at line 401 of file HexagonMCCompound.cpp.

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

Variable Documentation

◆ bundleInstructionsOffset

size_t llvm::HexagonMCInstrInfo::bundleInstructionsOffset = 1
constexpr

◆ innerLoopMask

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

Definition at line 68 of file HexagonMCInstrInfo.h.

Referenced by isInnerLoop(), and setInnerLoop().

◆ innerLoopOffset

size_t llvm::HexagonMCInstrInfo::innerLoopOffset = 0
constexpr

Definition at line 67 of file HexagonMCInstrInfo.h.

◆ memReorderDisabledMask

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

◆ memReorderDisabledOffset

size_t llvm::HexagonMCInstrInfo::memReorderDisabledOffset = 2
constexpr

Definition at line 75 of file HexagonMCInstrInfo.h.

◆ noShuffleMask

int64_t llvm::HexagonMCInstrInfo::noShuffleMask = 1 << noShuffleOffset
constexpr

Definition at line 82 of file HexagonMCInstrInfo.h.

◆ noShuffleOffset

size_t llvm::HexagonMCInstrInfo::noShuffleOffset = 4
constexpr

Definition at line 81 of file HexagonMCInstrInfo.h.

◆ outerLoopMask

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

Definition at line 71 of file HexagonMCInstrInfo.h.

Referenced by isOuterLoop(), and setOuterLoop().

◆ outerLoopOffset

size_t llvm::HexagonMCInstrInfo::outerLoopOffset = 1
constexpr

Definition at line 70 of file HexagonMCInstrInfo.h.

◆ splitNoMemorderMask

int64_t llvm::HexagonMCInstrInfo::splitNoMemorderMask = 1 << splitNoMemOrderOffset
constexpr

Definition at line 79 of file HexagonMCInstrInfo.h.

◆ splitNoMemOrderOffset

size_t llvm::HexagonMCInstrInfo::splitNoMemOrderOffset = 3
constexpr

Definition at line 78 of file HexagonMCInstrInfo.h.