LLVM
8.0.1
|
Classes | |
class | PredicateInfo |
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 | bundleInstructionsOffset = 1 |
Definition at line 83 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), llvm::MCConstantExpr::create(), and llvm::MCOperand::createExpr().
Referenced by brtargetDecoder(), and unsignedImmDecoder().
void llvm::HexagonMCInstrInfo::addConstExtender | ( | MCContext & | Context, |
MCInstrInfo const & | MCII, | ||
MCInst & | MCB, | ||
MCInst const & | MCI | ||
) |
Definition at line 88 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), Context, llvm::MCOperand::createInst(), deriveExtender(), getExtendableOp(), llvm::MCInst::getLoc(), llvm::MCInst::getOperand(), isBundle(), and llvm::MCInst::setLoc().
Referenced by extendIfNeeded().
iterator_range< Hexagon::PacketIterator > llvm::HexagonMCInstrInfo::bundleInstructions | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 104 of file HexagonMCInstrInfo.cpp.
References assert(), isBundle(), and llvm::make_range().
Referenced by adjustDuplex(), llvm::HexagonMCELFStreamer::EmitInstruction(), llvm::HexagonMCCodeEmitter::encodeInstruction(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), hasDuplex(), hasImmExt(), isNeitherAnorX(), LLVMInitializeHexagonDisassembler(), llvm::HexagonInstPrinter::printInst(), raise_relocation_error(), and llvm::HexagonMCChecker::reportBranchErrors().
iterator_range< MCInst::const_iterator > llvm::HexagonMCInstrInfo::bundleInstructions | ( | MCInst const & | MCI | ) |
Definition at line 112 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCInst::begin(), bundleInstructionsOffset, llvm::MCInst::end(), isBundle(), and llvm::make_range().
Definition at line 117 of file HexagonMCInstrInfo.cpp.
References bundleInstructionsOffset, isBundle(), and llvm::MCInst::size().
Referenced by adjustDuplex(), canonicalizePacket(), llvm::HexagonMCELFStreamer::EmitInstruction(), llvm::HexagonAsmPrinter::EmitInstruction(), llvm::HexagonMCCodeEmitter::encodeInstruction(), extenderForIndex(), llvm::HexagonGetLastSlot(), llvm::HexagonMCShuffle(), padEndloop(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::canonicalizePacket | ( | MCInstrInfo const & | MCII, |
MCSubtargetInfo const & | STI, | ||
MCContext & | Context, | ||
MCInst & | MCB, | ||
HexagonMCChecker * | Checker | ||
) |
Definition at line 124 of file HexagonMCInstrInfo.cpp.
References bundleSize(), llvm::HexagonMCChecker::check(), getDuplexPossibilties(), llvm::MCSubtargetInfo::getFeatureBits(), HEXAGON_PACKET_SIZE, llvm::HexagonDisableCompound, llvm::HexagonMCShuffle(), padEndloop(), and tryCompound().
Referenced by llvm::HexagonAsmPrinter::EmitInstruction().
MCInst * llvm::HexagonMCInstrInfo::deriveDuplex | ( | MCContext & | Context, |
unsigned | iClass, | ||
MCInst const & | inst0, | ||
MCInst const & | inst1 | ||
) |
Definition at line 178 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), Context, 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 161 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 703 of file HexagonMCDuplexInfo.cpp.
References llvm::HexagonII::Absolute, addOps(), assert(), llvm::MCOperand::getExpr(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), llvm_unreachable, minConstant(), and llvm::MCInst::setOpcode().
Referenced by deriveDuplex(), and isOrderedDuplexPair().
Definition at line 192 of file HexagonMCInstrInfo.cpp.
References assert(), bundleInstructionsOffset, bundleSize(), llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), and isImmext().
Referenced by adjustDuplex(), and hasExtenderForIndex().
void llvm::HexagonMCInstrInfo::extendIfNeeded | ( | MCContext & | Context, |
MCInstrInfo const & | MCII, | ||
MCInst & | MCB, | ||
MCInst const & | MCI | ||
) |
Definition at line 204 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 218 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::AddrModeMask, llvm::HexagonII::AddrModePos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCChecker::reportBranchErrors().
MCInstrDesc const & llvm::HexagonMCInstrInfo::getDesc | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 225 of file HexagonMCInstrInfo.cpp.
References llvm::MCInstrInfo::get(), and llvm::MCInst::getOpcode().
Referenced by llvm::RISCVInstrInfo::analyzeBranch(), llvm::HexagonShuffler::check(), llvm::HexagonMCCodeEmitter::EncodeSingleInstruction(), getAddrMode(), getExtendableOp(), getExtentAlignment(), getExtentBits(), getMemAccessSize(), getNewValueOp(), getNewValueOp2(), getOtherReservedSlots(), getUnits(), hasNewValue(), hasNewValue2(), hasTmpDst(), llvm::HexagonCVIResource::HexagonCVIResource(), isAccumulator(), isCanon(), isCofMax1(), isCofRelax1(), isCofRelax2(), isConstExtended(), isCVINew(), isExtendable(), isExtended(), isExtentSigned(), isFloat(), isNewValue(), isPCRel(), isPredicated(), isPredicatedNew(), isPredicatedTrue(), isPredicateLate(), isRestrictNoSlot1Store(), isRestrictSlot1AOK(), isSoloAX(), makeCombineInst(), predicateInfo(), prefersSlot3(), raise_relocation_error(), llvm::HexagonMCChecker::reportBranchErrors(), llvm::HexagonShuffler::restrictNoSlot1Store(), and llvm::HexagonShuffler::shuffle().
Definition at line 191 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(), isPredReg(), 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 1036 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 >::push_back().
Referenced by canonicalizePacket().
Definition at line 230 of file HexagonMCInstrInfo.cpp.
References llvm_unreachable, R2, R4, and R6.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
Definition at line 280 of file HexagonMCInstrInfo.cpp.
References assert().
Referenced by llvm::SCEVPredicate::getComplexity(), llvm::SCEVWrapPredicate::getFlags(), llvm::IVUsers::getLoop(), llvm::SCEVUnionPredicate::getPredicates(), llvm::IVUsers::getStride(), and isPCRel().
unsigned short llvm::HexagonMCInstrInfo::getExtendableOp | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 286 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendableOpMask, llvm::HexagonII::ExtendableOpPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by addConstExtender(), getExtendableOperand(), isOpExtendable(), isPCRel(), llvm::HexagonInstPrinter::printBrtarget(), and llvm::HexagonInstPrinter::printOperand().
MCOperand const & llvm::HexagonMCInstrInfo::getExtendableOperand | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 293 of file HexagonMCInstrInfo.cpp.
References assert(), getExtendableOp(), llvm::MCInst::getOperand(), llvm::MCOperand::isExpr(), isExtendable(), isExtended(), llvm::MCOperand::isImm(), and llvm::RISCVFenceField::O.
Referenced by llvm::Hexagon_MC::GetELFFlags(), and isConstExtended().
unsigned llvm::HexagonMCInstrInfo::getExtentAlignment | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 304 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentAlignMask, llvm::HexagonII::ExtentAlignPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by isPCRel().
unsigned llvm::HexagonMCInstrInfo::getExtentBits | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 310 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentBitsMask, llvm::HexagonII::ExtentBitsPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by brtargetDecoder(), getMaxValue(), getMinValue(), isPCRel(), and s32_0ImmDecoder().
int llvm::HexagonMCInstrInfo::getMaxValue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return the maximum value of an extendable operand.
Definition at line 323 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 211 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 334 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 344 of file HexagonMCInstrInfo.cpp.
References llvm::MCInstrInfo::getName(), and llvm::MCInst::getOpcode().
Referenced by llvm::HexagonMCCodeEmitter::EncodeSingleInstruction(), and isPCRel().
unsigned short llvm::HexagonMCInstrInfo::getNewValueOp | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 349 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::NewValueOpMask, llvm::HexagonII::NewValueOpPos, and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), and getNewValueOperand().
unsigned short llvm::HexagonMCInstrInfo::getNewValueOp2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return the new value or the newly produced value.
Definition at line 374 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 355 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::createReg(), getNewValueOp(), llvm::MCInst::getOperand(), hasNewValue(), hasTmpDst(), isNewValue(), llvm::MCOperand::isReg(), and llvm::RISCVFenceField::O.
Referenced by adjustDuplex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), and llvm::HexagonMCChecker::reportBranchErrors().
MCOperand const & llvm::HexagonMCInstrInfo::getNewValueOperand2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 381 of file HexagonMCInstrInfo.cpp.
References assert(), getNewValueOp2(), llvm::MCInst::getOperand(), hasNewValue2(), isNewValue(), llvm::MCOperand::isReg(), and llvm::RISCVFenceField::O.
Referenced by adjustDuplex(), and 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 411 of file HexagonMCInstrInfo.cpp.
References getDesc(), llvm::MCInstrDesc::getSchedClass(), llvm::MCSubtargetInfo::getSchedModel(), getUnits(), llvm::HexagonGetLastSlot(), llvm::HexagonStages, llvm::MCSchedModel::InstrItineraries, and llvm::InstrItinerary::LastStage.
Referenced by llvm::HexagonShuffler::check().
unsigned llvm::HexagonMCInstrInfo::getType | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return the Hexagon ISA class for the insn.
Definition at line 393 of file HexagonMCInstrInfo.cpp.
References F(), llvm::MCInstrInfo::get(), llvm::MCInst::getOpcode(), llvm::HexagonII::TypeMask, and llvm::HexagonII::TypePos.
Referenced by llvm::HexagonShuffler::check(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), llvm::HexagonCVIResource::HexagonCVIResource(), isConstExtended(), isDuplex(), isNeitherAnorX(), isPCRel(), isPrefix(), lookForCompound(), raise_relocation_error(), llvm::HexagonMCChecker::reportBranchErrors(), 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 400 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().
bool llvm::HexagonMCInstrInfo::hasDuplex | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 434 of file HexagonMCInstrInfo.cpp.
References bundleInstructions(), I, isBundle(), and isDuplex().
Referenced by llvm::HexagonMCShuffle().
Definition at line 446 of file HexagonMCInstrInfo.cpp.
References extenderForIndex().
Referenced by getDuplexPossibilties().
Definition at line 450 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 463 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::hasNewValueMask, llvm::HexagonII::hasNewValuePos, and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), 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 470 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::hasNewValueMask2, llvm::HexagonII::hasNewValuePos2, and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), and getNewValueOperand2().
bool llvm::HexagonMCInstrInfo::hasTmpDst | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
return true if instruction has hasTmpDst attribute.
Definition at line 836 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::HasTmpDstMask, llvm::HexagonII::HasTmpDstPos, and llvm::MCInstrDesc::TSFlags.
Referenced by getNewValueOperand(), and llvm::HexagonMCChecker::reportBranchErrors().
Definition at line 116 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().
bool llvm::HexagonMCInstrInfo::inRange | ( | MCInst const & | MCI, |
size_t | Index | ||
) |
Definition at line 189 of file HexagonMCInstrInfo.h.
References minConstant().
Definition at line 196 of file HexagonMCInstrInfo.h.
References Context, instruction(), isAccumulator(), isBundle(), isCanon(), isCofMax1(), isCofRelax1(), isCofRelax2(), isCompound(), isConstExtended(), isCVINew(), isDblRegForSubInst(), isDuplex(), isDuplexPair(), isDuplexPairMatch(), isExtendable(), isExtended(), isFloat(), isHVX(), isImmext(), isInnerLoop(), isIntReg(), isIntRegForSubInst(), isMemReorderDisabled(), isNewValue(), isOpExtendable(), isOrderedDuplexPair(), isOuterLoop(), isPredicated(), isPredicatedNew(), isPredicatedTrue(), isPredicateLate(), isPredReg(), isPrefix(), isRestrictNoSlot1Store(), isRestrictSlot1AOK(), isSolo(), isSoloAX(), isSubInstruction(), isVector(), minConstant(), mustExtend(), mustNotExtend(), padEndloop(), and Reg.
bool llvm::HexagonMCInstrInfo::inSRange | ( | MCInst const & | MCI, |
size_t | Index | ||
) |
Definition at line 193 of file HexagonMCInstrInfo.h.
References minConstant().
Definition at line 476 of file HexagonMCInstrInfo.cpp.
References assert(), bundleInstructionsOffset, llvm::MCOperand::getInst(), llvm::MCInst::getOperand(), HEXAGON_PACKET_SIZE, and isBundle().
Referenced by inRange().
bool llvm::HexagonMCInstrInfo::isAccumulator | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return where the instruction is an accumulator.
Definition at line 483 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::AccumulatorMask, llvm::HexagonII::AccumulatorPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange().
Definition at line 489 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::HexagonGetLastSlot(), llvm::HexagonMCShuffle(), inRange(), instruction(), 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 529 of file HexagonMCInstrInfo.cpp.
References getDesc(), isPrefix(), and llvm::MCInstrDesc::isPseudo().
Referenced by inRange().
bool llvm::HexagonMCInstrInfo::isCofMax1 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 534 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofMax1Mask, llvm::HexagonII::CofMax1Pos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isCofRelax1 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 539 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofRelax1Mask, llvm::HexagonII::CofRelax1Pos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isCofRelax2 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 545 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CofRelax2Mask, llvm::HexagonII::CofRelax2Pos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isCompound | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 551 of file HexagonMCInstrInfo.cpp.
References getType(), and llvm::HexagonII::TypeCJ.
Referenced by inRange().
bool llvm::HexagonMCInstrInfo::isConstExtended | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 495 of file HexagonMCInstrInfo.cpp.
References assert(), getDesc(), llvm::MCOperand::getExpr(), getExtendableOperand(), getMaxValue(), getMinValue(), llvm::MCInst::getOpcode(), getType(), llvm::MCInstrDesc::isBranch(), isExtendable(), isExtended(), llvm::MCOperand::isImm(), mustExtend(), mustNotExtend(), llvm::HexagonII::TypeCJ, llvm::HexagonII::TypeCR, llvm::HexagonII::TypeJ, and llvm::HexagonII::TypeNCJ.
Referenced by extendIfNeeded(), inRange(), llvm::HexagonInstPrinter::printBrtarget(), and llvm::HexagonInstPrinter::printOperand().
bool llvm::HexagonMCInstrInfo::isCVINew | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 556 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::CVINewMask, llvm::HexagonII::CVINewPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
Definition at line 561 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup().
bool llvm::HexagonMCInstrInfo::isDuplex | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 566 of file HexagonMCInstrInfo.cpp.
References getType(), and llvm::HexagonII::TypeDUPLEX.
Referenced by adjustDuplex(), hasDuplex(), inRange(), llvm::Hexagon::PacketIterator::operator++(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonMCChecker::reportBranchErrors().
Symmetrical. See if these two instructions are fit for duplex pair.
Definition at line 658 of file HexagonMCDuplexInfo.cpp.
References getDuplexCandidateGroup(), and isDuplexPairMatch().
Referenced by inRange().
Definition at line 91 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 570 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendableMask, llvm::HexagonII::ExtendablePos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), deriveExtender(), llvm::Hexagon_MC::GetELFFlags(), getExtendableOperand(), getMaxValue(), getMinValue(), inRange(), isConstExtended(), and isPCRel().
bool llvm::HexagonMCInstrInfo::isExtended | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 576 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtendedMask, llvm::HexagonII::ExtendedPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), deriveExtender(), getExtendableOperand(), getMaxValue(), getMinValue(), inRange(), isConstExtended(), and isPCRel().
bool llvm::HexagonMCInstrInfo::isExtentSigned | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 316 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::ExtentSignedMask, llvm::HexagonII::ExtentSignedPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by getMaxValue(), getMinValue(), and isPCRel().
bool llvm::HexagonMCInstrInfo::isFloat | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether it is a floating-point insn.
Definition at line 582 of file HexagonMCInstrInfo.cpp.
References F(), llvm::HexagonII::FPMask, llvm::HexagonII::FPPos, getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), isNeitherAnorX(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isHVX | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 587 of file HexagonMCInstrInfo.cpp.
References getType(), llvm::HexagonII::TypeCVI_FIRST, and llvm::HexagonII::TypeCVI_LAST.
Referenced by inRange().
Definition at line 592 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::getOpcode().
Referenced by adjustDuplex(), llvm::HexagonMCCodeEmitter::encodeInstruction(), extenderForIndex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), hasImmExt(), inRange(), lookForCompound(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonMCChecker::reportBranchErrors().
Definition at line 596 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), innerLoopMask, and isBundle().
Referenced by inRange(), padEndloop(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonMCChecker::reportBranchErrors().
Definition at line 602 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup(), and inRange().
Definition at line 606 of file HexagonMCInstrInfo.cpp.
Referenced by getCompoundCandidateGroup(), getDuplexCandidateGroup(), and subInstWouldBeExtended().
Definition at line 691 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), and memReorderDisabledMask.
Referenced by getDuplexPossibilties(), llvm::HexagonGetLastSlot(), inRange(), and setMemReorderDisabled().
bool llvm::HexagonMCInstrInfo::isNewValue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether the insn expects newly produced value.
Definition at line 612 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::NewValueMask, llvm::HexagonII::NewValuePos, and llvm::MCInstrDesc::TSFlags.
Referenced by adjustDuplex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), getNewValueOperand(), getNewValueOperand2(), inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isOpExtendable | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI, | ||
unsigned short | O | ||
) |
Return whether the operand is extendable.
Definition at line 619 of file HexagonMCInstrInfo.cpp.
References getExtendableOp().
Referenced by inRange().
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 579 of file HexagonMCDuplexInfo.cpp.
References llvm::sys::path::begin(), deriveSubInst(), llvm::sys::path::end(), llvm::StringRef::equals_lower(), 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, second, and subInstWouldBeExtended().
Referenced by getDuplexPossibilties(), and inRange().
Definition at line 624 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), and outerLoopMask.
Referenced by inRange(), padEndloop(), llvm::HexagonInstPrinter::printInst(), and llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::isPredicated | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 630 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicatedMask, llvm::HexagonII::PredicatedPos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::ARCInstrInfo::analyzeBranch(), llvm::InterleavedAccessInfo::analyzeInterleaving(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), llvm::R600InstrInfo::getRegisterInfo(), inRange(), llvm::PPCInstrInfo::isProfitableToUnpredicate(), llvm::MSP430InstrInfo::isUnpredicatedTerminator(), llvm::X86InstrInfo::isUnpredicatedTerminator(), llvm::HexagonMCInstrInfo::PredicateInfo::PredicateInfo(), predicateInfo(), and llvm::InterleavedAccessInfo::requiresScalarEpilogue().
bool llvm::HexagonMCInstrInfo::isPredicatedNew | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Return whether the insn is newly predicated.
Definition at line 647 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicatedNewMask, llvm::HexagonII::PredicatedNewPos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange().
bool llvm::HexagonMCInstrInfo::isPredicatedTrue | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 653 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicatedFalseMask, llvm::HexagonII::PredicatedFalsePos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), inRange(), and predicateInfo().
bool llvm::HexagonMCInstrInfo::isPredicateLate | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 640 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicateLateMask, llvm::HexagonII::PredicateLatePos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange().
Definition at line 660 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup(), and inRange().
bool llvm::HexagonMCInstrInfo::isPrefix | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 636 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 678 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::RestrictNoSlot1StoreMask, llvm::HexagonII::RestrictNoSlot1StorePos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonShuffler::restrictNoSlot1Store().
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 671 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::RestrictSlot1AOKMask, llvm::HexagonII::RestrictSlot1AOKPos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and llvm::HexagonShuffler::restrictSlot1AOK().
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 686 of file HexagonMCInstrInfo.cpp.
References F(), llvm::MCInstrInfo::get(), llvm::MCInst::getOpcode(), llvm::HexagonII::SoloMask, and llvm::HexagonII::SoloPos.
Referenced by inRange(), and llvm::HexagonMCChecker::reportBranchErrors().
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 665 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::SoloAXMask, llvm::HexagonII::SoloAXPos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange(), and isNeitherAnorX().
Definition at line 697 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::getOpcode().
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue(), inRange(), and isPCRel().
bool llvm::HexagonMCInstrInfo::isVector | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 757 of file HexagonMCInstrInfo.cpp.
References getType(), llvm::HexagonII::TypeCVI_FIRST, and llvm::HexagonII::TypeCVI_LAST.
Referenced by adjustDuplex(), llvm::MachineIRBuilder::buildInstr(), GetAEABIUnwindPersonalityName(), llvm::LLParser::getContext(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), getOpenCLAlignment(), llvm::R600InstrInfo::getRegisterInfo(), inRange(), parseOptionalLinkageAux(), and VisitGlobalVariableForEmission().
Definition at line 764 of file HexagonMCInstrInfo.cpp.
References llvm::MCOperand::getExpr(), llvm::MCInst::getOperand(), llvm::MCOperand::isExpr(), llvm::max(), and llvm::MCInst::size().
Referenced by deriveSubInst(), getCompoundCandidateGroup(), getDuplexCandidateGroup(), inRange(), and inSRange().
Definition at line 783 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustExtend().
Referenced by inRange(), isConstExtended(), and makeCombineInst().
Definition at line 791 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustNotExtend().
Referenced by inRange(), and isConstExtended().
Definition at line 807 of file HexagonMCInstrInfo.cpp.
References llvm::MCInst::addOperand(), assert(), bundleSize(), llvm::MCOperand::createInst(), HEXAGON_PACKET_INNER_SIZE, HEXAGON_PACKET_OUTER_SIZE, isBundle(), isInnerLoop(), isOuterLoop(), llvm::WebAssembly::Nop, and llvm::MCInst::setOpcode().
Referenced by canonicalizePacket(), and inRange().
HexagonMCInstrInfo::PredicateInfo llvm::HexagonMCInstrInfo::predicateInfo | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 819 of file HexagonMCInstrInfo.cpp.
References getDesc(), llvm::MCInstrDesc::getNumDefs(), llvm::MCInstrDesc::getNumOperands(), llvm::MCInst::getOperand(), llvm::MCOperand::getReg(), I, isPredicated(), isPredicatedTrue(), N, llvm::MCInstrDesc::OpInfo, and llvm::MCOperandInfo::RegClass.
Referenced by llvm::HexagonMCChecker::reportBranchErrors().
bool llvm::HexagonMCInstrInfo::prefersSlot3 | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 829 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PrefersSlot3Mask, llvm::HexagonII::PrefersSlot3Pos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::HexagonShuffler::check().
void llvm::HexagonMCInstrInfo::replaceDuplex | ( | MCContext & | Context, |
MCInst & | MCI, | ||
DuplexCandidate | Candidate | ||
) |
Definition at line 841 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().
Definition at line 800 of file HexagonMCInstrInfo.cpp.
References llvm::dyn_cast(), and llvm::HexagonMCExpr::s27_2_reloc().
Referenced by isPCRel().
void llvm::HexagonMCInstrInfo::setInnerLoop | ( | MCInst & | MCI | ) |
Definition at line 855 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), innerLoopMask, isBundle(), and llvm::MCOperand::setImm().
Referenced by adjustDuplex(), and llvm::HexagonLowerToMC().
void llvm::HexagonMCInstrInfo::setMemReorderDisabled | ( | MCInst & | MCI | ) |
Definition at line 861 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 778 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustExtend().
Referenced by GetSymbolRef(), llvm::HexagonLowerToMC(), and makeCombineInst().
Definition at line 787 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustNotExtend().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction(), and makeCombineInst().
void llvm::HexagonMCInstrInfo::setOuterLoop | ( | MCInst & | MCI | ) |
Definition at line 868 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCOperand::getImm(), llvm::MCInst::getOperand(), isBundle(), outerLoopMask, and llvm::MCOperand::setImm().
Referenced by adjustDuplex(), and llvm::HexagonLowerToMC().
Definition at line 795 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setS27_2_reloc().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction(), and makeCombineInst().
Definition at line 542 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 | ( | unsigned | Consumer, |
unsigned | Producer, | ||
unsigned | Producer2 | ||
) |
Definition at line 874 of file HexagonMCInstrInfo.cpp.
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 400 of file HexagonMCCompound.cpp.
References assert(), llvm::dbgs(), llvm::HexagonMCShuffle(), isBundle(), LLVM_DEBUG, lookForCompound(), and llvm::MCInst::size().
Referenced by canonicalizePacket().
Definition at line 78 of file HexagonMCInstrInfo.h.
Referenced by bundleInstructions(), bundleSize(), extenderForIndex(), getDuplexPossibilties(), instruction(), and lookForCompound().
int64_t const llvm::HexagonMCInstrInfo::innerLoopMask = 1 << innerLoopOffset |
Definition at line 68 of file HexagonMCInstrInfo.h.
Referenced by isInnerLoop(), and setInnerLoop().
Definition at line 67 of file HexagonMCInstrInfo.h.
int64_t const llvm::HexagonMCInstrInfo::memReorderDisabledMask = 1 << memReorderDisabledOffset |
Definition at line 76 of file HexagonMCInstrInfo.h.
Referenced by llvm::HexagonShuffler::isMemReorderDisabled(), isMemReorderDisabled(), and setMemReorderDisabled().
Definition at line 75 of file HexagonMCInstrInfo.h.
int64_t const llvm::HexagonMCInstrInfo::outerLoopMask = 1 << outerLoopOffset |
Definition at line 71 of file HexagonMCInstrInfo.h.
Referenced by isOuterLoop(), and setOuterLoop().
Definition at line 70 of file HexagonMCInstrInfo.h.