LLVM 20.0.0git
|
Classes | |
class | PredicateInfo |
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 |
Definition at line 82 of file HexagonMCInstrInfo.cpp.
References llvm::MCConstantExpr::create(), llvm::MCOperand::createExpr(), and MI.
Referenced by brtargetDecoder(), and unsignedImmDecoder().
void llvm::HexagonMCInstrInfo::addConstExtender | ( | MCContext & | Context, |
MCInstrInfo const & | MCII, | ||
MCInst & | MCB, | ||
MCInst const & | MCI | ||
) |
Definition at line 87 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createInst(), deriveExtender(), getExtendableOp(), llvm::MCInst::getLoc(), llvm::MCInst::getOperand(), isBundle(), and llvm::MCInst::setLoc().
Referenced by extendIfNeeded().
iterator_range< MCInst::const_iterator > llvm::HexagonMCInstrInfo::bundleInstructions | ( | MCInst const & | MCI | ) |
Definition at line 111 of file HexagonMCInstrInfo.cpp.
References assert(), bundleInstructionsOffset, llvm::drop_begin(), and isBundle().
iterator_range< Hexagon::PacketIterator > llvm::HexagonMCInstrInfo::bundleInstructions | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 103 of file HexagonMCInstrInfo.cpp.
References assert(), isBundle(), and llvm::make_range().
Referenced by llvm::HexagonMCELFStreamer::emitInstruction(), llvm::HexagonMCCodeEmitter::encodeInstruction(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), hasDuplex(), hasImmExt(), llvm::HexagonInstPrinter::printInst(), llvm::HexagonMCChecker::reportBranchErrors(), and slotsConsumed().
Definition at line 116 of file HexagonMCInstrInfo.cpp.
References bundleInstructionsOffset, isBundle(), and llvm::MCInst::size().
Referenced by llvm::HexagonAsmPrinter::emitInstruction(), llvm::HexagonMCELFStreamer::emitInstruction(), llvm::HexagonMCCodeEmitter::encodeInstruction(), extenderForIndex(), llvm::HexagonMCShuffle(), LoopNeedsPadding(), and llvm::HexagonInstPrinter::printInst().
bool llvm::HexagonMCInstrInfo::canonicalizePacket | ( | MCInstrInfo const & | MCII, |
MCSubtargetInfo const & | STI, | ||
MCContext & | Context, | ||
MCInst & | MCB, | ||
HexagonMCChecker * | Checker, | ||
bool | AttemptCompatibility = false |
||
) |
Definition at line 171 of file HexagonMCInstrInfo.cpp.
References Check, llvm::Hexagon_MC::getArchSubtarget(), and llvm::MCContext::getRegisterInfo().
Referenced by llvm::HexagonAsmPrinter::emitInstruction().
MCInst * llvm::HexagonMCInstrInfo::deriveDuplex | ( | MCContext & | Context, |
unsigned | iClass, | ||
MCInst const & | inst0, | ||
MCInst const & | inst1 | ||
) |
Definition at line 208 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createInst(), deriveSubInst(), and llvm::MCInst::setOpcode().
Referenced by replaceDuplex().
MCInst llvm::HexagonMCInstrInfo::deriveExtender | ( | MCInstrInfo const & | MCII, |
MCInst const & | Inst, | ||
MCOperand const & | MO | ||
) |
Definition at line 191 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::getExpr(), llvm::MCOperand::getImm(), llvm::MCOperand::isExpr(), isExtendable(), isExtended(), llvm::MCOperand::isImm(), llvm_unreachable, and llvm::MCInst::setOpcode().
Referenced by addConstExtender().
Definition at line 696 of file HexagonMCDuplexInfo.cpp.
References addOps(), assert(), llvm::MCOperand::getExpr(), llvm::MCInst::getLoc(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm_unreachable, and minConstant().
Referenced by deriveDuplex(), and isOrderedDuplexPair().
Definition at line 222 of file HexagonMCInstrInfo.cpp.
References assert(), bundleInstructionsOffset, bundleSize(), llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), and isImmext().
Referenced by hasExtenderForIndex().
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().
unsigned llvm::HexagonMCInstrInfo::getAddrMode | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 248 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::AddrModeMask, llvm::HexagonII::AddrModePos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
unsigned llvm::HexagonMCInstrInfo::getCVIResources | ( | MCInstrInfo const & | MCII, |
MCSubtargetInfo const & | STI, | ||
MCInst const & | MCI | ||
) |
Return the resources used by this instruction.
Definition at line 430 of file HexagonMCInstrInfo.cpp.
References getDesc(), llvm::MCInstrDesc::getSchedClass(), llvm::MCSubtargetInfo::getSchedModel(), getUnits(), llvm::HexagonStages, II, llvm::MCSchedModel::InstrItineraries, and Size.
Referenced by llvm::HexagonCVIResource::HexagonCVIResource().
MCInstrDesc const & llvm::HexagonMCInstrInfo::getDesc | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 255 of file HexagonMCInstrInfo.cpp.
References llvm::MCInstrInfo::get(), and llvm::MCInst::getOpcode().
Referenced by llvm::HexagonMCCodeEmitter::encodeSingleInstruction(), getAddrMode(), getCVIResources(), getExtendableOp(), getExtentAlignment(), getExtentBits(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), getMemAccessSize(), getNewValueOp(), getNewValueOp2(), getOtherReservedSlots(), llvm::HexagonShuffler::GetPacketSummary(), getUnits(), hasHvxTmp(), hasNewValue(), hasNewValue2(), llvm::HexagonCVIResource::HexagonCVIResource(), IsABranchingInst(), isAccumulator(), isCanon(), isCofMax1(), isCofRelax1(), isCofRelax2(), isConstExtended(), isCVINew(), isExtendable(), isExtended(), isExtentSigned(), isFloat(), isNewValue(), isNewValueStore(), isPredicated(), isPredicatedNew(), isPredicatedTrue(), isPredicateLate(), isPredRegister(), isRestrictNoSlot1Store(), isRestrictSlot1AOK(), isSoloAX(), isVector(), predicateInfo(), prefersSlot3(), llvm::HexagonShuffler::restrictNoSlot1Store(), llvm::HexagonShuffler::restrictStoreLoadOrder(), and llvm::HexagonShuffler::shuffle().
Definition at line 189 of file HexagonMCDuplexInfo.cpp.
References llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::HexagonII::HSIG_A, llvm::HexagonII::HSIG_L1, llvm::HexagonII::HSIG_L2, llvm::HexagonII::HSIG_None, llvm::HexagonII::HSIG_S1, llvm::HexagonII::HSIG_S2, isDblRegForSubInst(), isIntReg(), isIntRegForSubInst(), and minConstant().
Referenced by getDuplexPossibilties(), isDuplexPair(), and isOrderedDuplexPair().
SmallVector< DuplexCandidate, 8 > llvm::HexagonMCInstrInfo::getDuplexPossibilties | ( | MCInstrInfo const & | MCII, |
MCSubtargetInfo const & | STI, | ||
MCInst const & | MCB | ||
) |
Definition at line 1028 of file HexagonMCDuplexInfo.cpp.
References assert(), bundleInstructionsOffset, llvm::dbgs(), getDuplexCandidateGroup(), llvm::MCOperand::getInst(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), hasExtenderForIndex(), iClassOfDuplexPair(), isBundle(), isMemReorderDisabled(), isOrderedDuplexPair(), isStoreInst(), LLVM_DEBUG, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
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().
Definition at line 310 of file HexagonMCInstrInfo.cpp.
References assert().
unsigned short llvm::HexagonMCInstrInfo::getExtendableOp | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 316 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendableOpMask, llvm::HexagonII::ExtendableOpPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by addConstExtender(), getExtendableOperand(), isOpExtendable(), llvm::HexagonInstPrinter::printBrtarget(), and llvm::HexagonInstPrinter::printOperand().
MCOperand const & llvm::HexagonMCInstrInfo::getExtendableOperand | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 323 of file HexagonMCInstrInfo.cpp.
References assert(), getExtendableOp(), llvm::MCInst::getOperand(), llvm::MCOperand::isExpr(), isExtendable(), isExtended(), and llvm::MCOperand::isImm().
Referenced by isConstExtended().
unsigned llvm::HexagonMCInstrInfo::getExtentAlignment | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 334 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentAlignMask, llvm::HexagonII::ExtentAlignPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
unsigned llvm::HexagonMCInstrInfo::getExtentBits | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 340 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentBitsMask, llvm::HexagonII::ExtentBitsPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by brtargetDecoder(), getMaxValue(), getMinValue(), and s32_0ImmDecoder().
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().
unsigned llvm::HexagonMCInstrInfo::getMemAccessSize | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 241 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::getMemAccessSizeInBytes(), llvm::HexagonII::MemAccesSizeMask, llvm::HexagonII::MemAccessSizePos, and llvm::MCInstrDesc::TSFlags.
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().
StringRef llvm::HexagonMCInstrInfo::getName | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 374 of file HexagonMCInstrInfo.cpp.
References llvm::MCInstrInfo::getName(), and llvm::MCInst::getOpcode().
Referenced by llvm::HexagonMCCodeEmitter::encodeSingleInstruction(), and llvm::HexagonShuffler::tryAuction().
unsigned short llvm::HexagonMCInstrInfo::getNewValueOp | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 379 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::NewValueOpMask, llvm::HexagonII::NewValueOpPos, and llvm::MCInstrDesc::TSFlags.
Referenced by getNewValueOperand().
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().
MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 385 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::createReg(), getNewValueOp(), llvm::MCInst::getOperand(), hasNewValue(), hasTmpDst(), isNewValue(), and llvm::MCOperand::isReg().
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 411 of file HexagonMCInstrInfo.cpp.
References assert(), getNewValueOp2(), llvm::MCInst::getOperand(), hasNewValue2(), isNewValue(), and llvm::MCOperand::isReg().
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
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().
unsigned llvm::HexagonMCInstrInfo::getType | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return the Hexagon ISA class for the insn.
Definition at line 423 of file HexagonMCInstrInfo.cpp.
References F, llvm::MCInstrInfo::get(), llvm::MCInst::getOpcode(), llvm::MCInstrDesc::TSFlags, llvm::HexagonII::TypeMask, and llvm::HexagonII::TypePos.
Referenced by llvm::HexagonShuffler::GetPacketSummary(), isConstExtended(), isDuplex(), isNeitherAnorX(), isPrefix(), lookForCompound(), and llvm::HexagonShuffler::restrictSlot1AOK().
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().
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().
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().
Definition at line 496 of file HexagonMCInstrInfo.cpp.
References extenderForIndex().
Referenced by getDuplexPossibilties().
bool llvm::HexagonMCInstrInfo::hasHvxTmp | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 969 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::HasHvxTmpMask, llvm::HexagonII::HasHvxTmpPos, and llvm::MCInstrDesc::TSFlags.
Definition at line 500 of file HexagonMCInstrInfo.cpp.
References bundleInstructions(), I, isBundle(), and isImmext().
Referenced by llvm::HexagonMCShuffle().
bool llvm::HexagonMCInstrInfo::hasNewValue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether the insn produces a value.
Definition at line 513 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::hasNewValueMask, llvm::HexagonII::hasNewValuePos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), and getNewValueOperand().
bool llvm::HexagonMCInstrInfo::hasNewValue2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether the insn produces a second value.
Definition at line 520 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::hasNewValueMask2, llvm::HexagonII::hasNewValuePos2, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), and getNewValueOperand2().
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().
Definition at line 114 of file HexagonMCDuplexInfo.cpp.
References llvm::HexagonII::HSIG_A, llvm::HexagonII::HSIG_Compound, llvm::HexagonII::HSIG_L1, llvm::HexagonII::HSIG_L2, llvm::HexagonII::HSIG_None, llvm::HexagonII::HSIG_S1, and llvm::HexagonII::HSIG_S2.
Referenced by getDuplexPossibilties().
Definition at line 204 of file HexagonMCInstrInfo.h.
References Index, and minConstant().
Definition at line 211 of file HexagonMCInstrInfo.h.
References Index, and minConstant().
Definition at line 208 of file HexagonMCInstrInfo.h.
References Index, and minConstant().
Definition at line 526 of file HexagonMCInstrInfo.cpp.
References assert(), bundleInstructionsOffset, llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), HEXAGON_PRESHUFFLE_PACKET_SIZE, and isBundle().
bool llvm::HexagonMCInstrInfo::IsABranchingInst | ( | MCInstrInfo const & | MCII, |
MCSubtargetInfo const & | STI, | ||
MCInst const & | I | ||
) |
Definition at line 1056 of file HexagonMCInstrInfo.cpp.
References assert(), getDesc(), I, and isBundle().
Referenced by llvm::HexagonShuffler::GetPacketSummary(), and llvm::HexagonMCChecker::reportBranchErrors().
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.
Definition at line 539 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::isImm(), and llvm::MCInst::size().
Referenced by addConstExtender(), bundleInstructions(), bundleSize(), llvm::HexagonMCCodeEmitter::encodeInstruction(), llvm::HexagonMCCodeEmitter::encodeSingleInstruction(), getDuplexPossibilties(), hasDuplex(), hasImmExt(), llvm::HexagonMCShuffle(), instruction(), IsABranchingInst(), isInnerLoop(), isMemReorderDisabled(), isOuterLoop(), lookForCompound(), padEndloop(), llvm::HexagonInstPrinter::printInst(), replaceDuplex(), setInnerLoop(), setMemReorderDisabled(), setOuterLoop(), and tryCompound().
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().
bool llvm::HexagonMCInstrInfo::isCofMax1 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 592 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofMax1Mask, llvm::HexagonII::CofMax1Pos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
bool llvm::HexagonMCInstrInfo::isCofRelax1 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 597 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofRelax1Mask, llvm::HexagonII::CofRelax1Pos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
bool llvm::HexagonMCInstrInfo::isCofRelax2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 603 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofRelax2Mask, llvm::HexagonII::CofRelax2Pos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
bool llvm::HexagonMCInstrInfo::isCompound | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 609 of file HexagonMCInstrInfo.cpp.
References getType(), and llvm::HexagonII::TypeCJ.
bool llvm::HexagonMCInstrInfo::isConstExtended | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 545 of file HexagonMCInstrInfo.cpp.
References assert(), getDesc(), llvm::MCOperand::getExpr(), getExtendableOperand(), getMaxValue(), getMinValue(), llvm::MCInst::getOpcode(), getType(), isBranch(), isExtendable(), isExtended(), isExtentSigned(), llvm::MCOperand::isImm(), mustExtend(), mustNotExtend(), llvm::HexagonII::TypeCJ, llvm::HexagonII::TypeCR, llvm::HexagonII::TypeJ, and llvm::HexagonII::TypeNCJ.
Referenced by extendIfNeeded(), llvm::HexagonInstPrinter::printBrtarget(), and llvm::HexagonInstPrinter::printOperand().
bool llvm::HexagonMCInstrInfo::isCVINew | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 614 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CVINewMask, llvm::HexagonII::CVINewPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
bool llvm::HexagonMCInstrInfo::isDblRegForSubInst | ( | MCRegister | Reg | ) |
Definition at line 619 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup().
bool llvm::HexagonMCInstrInfo::isDuplex | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 624 of file HexagonMCInstrInfo.cpp.
References getType(), and llvm::HexagonII::TypeDUPLEX.
Referenced by hasDuplex(), llvm::Hexagon::PacketIterator::operator++(), llvm::HexagonInstPrinter::printInst(), and slotsConsumed().
Symmetrical. See if these two instructions are fit for duplex pair.
Definition at line 651 of file HexagonMCDuplexInfo.cpp.
References getDuplexCandidateGroup(), and isDuplexPairMatch().
Definition at line 89 of file HexagonMCDuplexInfo.cpp.
References llvm::HexagonII::HSIG_A, llvm::HexagonII::HSIG_Compound, llvm::HexagonII::HSIG_L1, llvm::HexagonII::HSIG_L2, llvm::HexagonII::HSIG_None, llvm::HexagonII::HSIG_S1, and llvm::HexagonII::HSIG_S2.
bool llvm::HexagonMCInstrInfo::isExtendable | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 628 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendableMask, llvm::HexagonII::ExtendablePos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by deriveExtender(), getExtendableOperand(), getMaxValue(), getMinValue(), and isConstExtended().
bool llvm::HexagonMCInstrInfo::isExtended | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 634 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendedMask, llvm::HexagonII::ExtendedPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by deriveExtender(), getExtendableOperand(), getMaxValue(), getMinValue(), and isConstExtended().
bool llvm::HexagonMCInstrInfo::isExtentSigned | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 346 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentSignedMask, llvm::HexagonII::ExtentSignedPos, F, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by getMaxValue(), getMinValue(), and isConstExtended().
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().
bool llvm::HexagonMCInstrInfo::isHVX | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 645 of file HexagonMCInstrInfo.cpp.
References getType(), llvm::HexagonII::TypeCVI_FIRST, and llvm::HexagonII::TypeCVI_LAST.
Definition at line 650 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::getOpcode().
Referenced by llvm::HexagonMCCodeEmitter::encodeInstruction(), extenderForIndex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), hasImmExt(), lookForCompound(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonShuffler::reportResourceUsage().
Definition at line 654 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), innerLoopMask, and isBundle().
Referenced by LoopNeedsPadding(), and llvm::HexagonInstPrinter::printInst().
bool llvm::HexagonMCInstrInfo::isIntReg | ( | MCRegister | Reg | ) |
Definition at line 660 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup().
bool llvm::HexagonMCInstrInfo::isIntRegForSubInst | ( | MCRegister | Reg | ) |
Definition at line 664 of file HexagonMCInstrInfo.cpp.
Referenced by getCompoundCandidateGroup(), getDuplexCandidateGroup(), and subInstWouldBeExtended().
Definition at line 803 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), and memReorderDisabledMask.
Referenced by getDuplexPossibilties(), and setMemReorderDisabled().
bool llvm::HexagonMCInstrInfo::isNewValue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether the insn expects newly produced value.
Definition at line 670 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::NewValueMask, llvm::HexagonII::NewValuePos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), getNewValueOperand(), and getNewValueOperand2().
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.
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().
bool llvm::HexagonMCInstrInfo::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.
Definition at line 572 of file HexagonMCDuplexInfo.cpp.
References deriveSubInst(), llvm::StringRef::equals_insensitive(), llvm::MCSubtargetInfo::getCPU(), getDuplexCandidateGroup(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm::HexagonII::HSIG_L2, llvm::HexagonII::HSIG_None, llvm::HexagonII::HSIG_S1, llvm::HexagonII::HSIG_S2, isDuplexPairMatch(), llvm::MCOperand::isReg(), opcodeData, and subInstWouldBeExtended().
Referenced by getDuplexPossibilties().
Definition at line 688 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), and outerLoopMask.
Referenced by LoopNeedsPadding(), and llvm::HexagonInstPrinter::printInst().
bool llvm::HexagonMCInstrInfo::isPredicated | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 733 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::PredicatedMask, llvm::HexagonII::PredicatedPos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
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.
bool llvm::HexagonMCInstrInfo::isPredicatedTrue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 756 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::PredicatedFalseMask, llvm::HexagonII::PredicatedFalsePos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), and predicateInfo().
bool llvm::HexagonMCInstrInfo::isPredicateLate | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 743 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::PredicateLateMask, llvm::HexagonII::PredicateLatePos, and llvm::MCInstrDesc::TSFlags.
bool llvm::HexagonMCInstrInfo::isPredReg | ( | MCRegisterInfo const & | MRI, |
MCRegister | Reg | ||
) |
Definition at line 763 of file HexagonMCInstrInfo.cpp.
References MRI.
bool llvm::HexagonMCInstrInfo::isPredRegister | ( | MCInstrInfo const & | MCII, |
MCInst const & | Inst, | ||
unsigned | I | ||
) |
Definition at line 768 of file HexagonMCInstrInfo.cpp.
References getDesc(), llvm::MCInst::getOperand(), I, and llvm::MCOperand::isReg().
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().
bool llvm::HexagonMCInstrInfo::isRestrictNoSlot1Store | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 790 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::RestrictNoSlot1StoreMask, llvm::HexagonII::RestrictNoSlot1StorePos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonShuffler::GetPacketSummary().
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().
bool llvm::HexagonMCInstrInfo::IsReverseVecRegPair | ( | MCRegister | VecReg | ) |
Definition at line 699 of file HexagonMCInstrInfo.cpp.
Referenced by GetVecRegPairIndices(), IsSingleConsumerRefPairProducer(), and SubregisterBit().
bool llvm::HexagonMCInstrInfo::IsSingleConsumerRefPairProducer | ( | MCRegister | Producer, |
MCRegister | Consumer | ||
) |
Definition at line 720 of file HexagonMCInstrInfo.cpp.
References IsReverseVecRegPair(), IsVecRegPair(), and IsVecRegSingle().
Referenced by RegisterMatches().
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.
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.
Definition at line 809 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::getOpcode().
bool llvm::HexagonMCInstrInfo::IsVecRegPair | ( | MCRegister | VecReg | ) |
Definition at line 694 of file HexagonMCInstrInfo.cpp.
Referenced by GetVecRegPairIndices(), IsSingleConsumerRefPairProducer(), and SubregisterBit().
bool llvm::HexagonMCInstrInfo::IsVecRegSingle | ( | MCRegister | VecReg | ) |
Definition at line 703 of file HexagonMCInstrInfo.cpp.
Referenced by IsSingleConsumerRefPairProducer(), and SubregisterBit().
bool llvm::HexagonMCInstrInfo::isVector | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 869 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::isCVIMask, llvm::HexagonII::isCVIPos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
Definition at line 1048 of file HexagonMCInstrInfo.cpp.
References bundleSize(), HEXAGON_PACKET_INNER_SIZE, HEXAGON_PACKET_OUTER_SIZE, isInnerLoop(), and isOuterLoop().
Referenced by padEndloop().
Definition at line 874 of file HexagonMCInstrInfo.cpp.
References llvm::MCOperand::getExpr(), llvm::MCInst::getOperand(), llvm::MCOperand::isExpr(), llvm::Sentinel, and llvm::MCInst::size().
Referenced by deriveSubInst(), getCompoundCandidateGroup(), getDuplexCandidateGroup(), inRange(), and inSRange().
Definition at line 893 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustExtend().
Referenced by isConstExtended().
Definition at line 901 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustNotExtend().
Referenced by isConstExtended().
Definition at line 923 of file HexagonMCInstrInfo.cpp.
References llvm::StringSwitch< T, R >::Case(), and llvm::StringSwitch< T, R >::Default().
unsigned llvm::HexagonMCInstrInfo::packetSizeSlots | ( | MCSubtargetInfo const & | STI | ) |
Definition at line 917 of file HexagonMCInstrInfo.cpp.
References llvm::MCSubtargetInfo::hasFeature(), and HEXAGON_PACKET_SIZE.
Definition at line 929 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), llvm::MCOperand::createInst(), isBundle(), LoopNeedsPadding(), and llvm::MCInst::setOpcode().
HexagonMCInstrInfo::PredicateInfo llvm::HexagonMCInstrInfo::predicateInfo | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 938 of file HexagonMCInstrInfo.cpp.
References getDesc(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), I, isPredicatedTrue(), and N.
bool llvm::HexagonMCInstrInfo::prefersSlot3 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 948 of file HexagonMCInstrInfo.cpp.
References F, getDesc(), llvm::HexagonII::PrefersSlot3Mask, llvm::HexagonII::PrefersSlot3Pos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonShuffler::GetPacketSummary().
void llvm::HexagonMCInstrInfo::replaceDuplex | ( | MCContext & | Context, |
MCInst & | MCI, | ||
DuplexCandidate | Candidate | ||
) |
Definition at line 1001 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCInst::begin(), deriveDuplex(), llvm::MCInst::erase(), llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), llvm::DuplexCandidate::iClass, isBundle(), llvm::DuplexCandidate::packetIndexI, llvm::DuplexCandidate::packetIndexJ, llvm::MCOperand::setInst(), and llvm::MCInst::size().
Referenced by llvm::HexagonMCShuffle().
bool llvm::HexagonMCInstrInfo::requiresSlot | ( | MCSubtargetInfo const & | STI, |
MCInst const & | MCI | ||
) |
Definition at line 974 of file HexagonMCInstrInfo.cpp.
References llvm::MCSubtargetInfo::getFeatureBits(), and llvm::MCInst::getOpcode().
Referenced by llvm::HexagonShuffler::permitNonSlot(), llvm::HexagonShuffler::reportResourceUsage(), and slotsConsumed().
Definition at line 910 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::s27_2_reloc().
void llvm::HexagonMCInstrInfo::setInnerLoop | ( | MCInst & | MCI | ) |
Definition at line 1015 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), innerLoopMask, isBundle(), and llvm::MCOperand::setImm().
Referenced by llvm::HexagonLowerToMC().
void llvm::HexagonMCInstrInfo::setMemReorderDisabled | ( | MCInst & | MCI | ) |
Definition at line 1021 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), isMemReorderDisabled(), memReorderDisabledMask, and llvm::MCOperand::setImm().
Referenced by llvm::HexagonAsmPrinter::emitInstruction().
Definition at line 888 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustExtend().
Referenced by GetSymbolRef(), and llvm::HexagonLowerToMC().
Definition at line 897 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustNotExtend().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction().
void llvm::HexagonMCInstrInfo::setOuterLoop | ( | MCInst & | MCI | ) |
Definition at line 1028 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), outerLoopMask, and llvm::MCOperand::setImm().
Referenced by llvm::HexagonLowerToMC().
Definition at line 905 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setS27_2_reloc().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction().
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().
Definition at line 535 of file HexagonMCDuplexInfo.cpp.
References llvm::MCOperand::getExpr(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), and isIntRegForSubInst().
Referenced by isOrderedDuplexPair().
unsigned llvm::HexagonMCInstrInfo::SubregisterBit | ( | MCRegister | Consumer, |
MCRegister | Producer, | ||
MCRegister | Producer2 | ||
) |
Definition at line 1034 of file HexagonMCInstrInfo.cpp.
References IsReverseVecRegPair(), IsVecRegPair(), and IsVecRegSingle().
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
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 401 of file HexagonMCCompound.cpp.
References assert(), llvm::dbgs(), llvm::HexagonMCShuffle(), isBundle(), LLVM_DEBUG, lookForCompound(), and llvm::MCInst::size().
|
constexpr |
Definition at line 84 of file HexagonMCInstrInfo.h.
Referenced by bundleInstructions(), bundleSize(), extenderForIndex(), getDuplexPossibilties(), instruction(), and lookForCompound().
|
constexpr |
Definition at line 68 of file HexagonMCInstrInfo.h.
Referenced by isInnerLoop(), and setInnerLoop().
|
constexpr |
Definition at line 67 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 76 of file HexagonMCInstrInfo.h.
Referenced by llvm::HexagonShuffler::isMemReorderDisabled(), isMemReorderDisabled(), and setMemReorderDisabled().
|
constexpr |
Definition at line 75 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 82 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 81 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 71 of file HexagonMCInstrInfo.h.
Referenced by isOuterLoop(), and setOuterLoop().
|
constexpr |
Definition at line 70 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 79 of file HexagonMCInstrInfo.h.
|
constexpr |
Definition at line 78 of file HexagonMCInstrInfo.h.