LLVM
10.0.0svn
|
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 81 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 86 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 102 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 110 of file HexagonMCInstrInfo.cpp.
References assert(), llvm::MCInst::begin(), bundleInstructionsOffset, llvm::MCInst::end(), isBundle(), and llvm::make_range().
Definition at line 115 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 122 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 176 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 159 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 702 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 190 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 202 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 216 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 223 of file HexagonMCInstrInfo.cpp.
References llvm::MCInstrInfo::get(), and llvm::MCInst::getOpcode().
Referenced by 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 190 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 1035 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 228 of file HexagonMCInstrInfo.cpp.
References llvm_unreachable, R2, R4, and R6.
Referenced by llvm::HexagonMCCodeEmitter::getMachineOpValue().
Definition at line 278 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 284 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 291 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 302 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 308 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 321 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 209 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 332 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 342 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 347 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 372 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 353 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 379 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 409 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 391 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 398 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 432 of file HexagonMCInstrInfo.cpp.
References bundleInstructions(), I, isBundle(), and isDuplex().
Referenced by llvm::HexagonMCShuffle().
Definition at line 444 of file HexagonMCInstrInfo.cpp.
References extenderForIndex().
Referenced by getDuplexPossibilties().
Definition at line 448 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 461 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 468 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 834 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 115 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 188 of file HexagonMCInstrInfo.h.
References minConstant().
Definition at line 195 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 192 of file HexagonMCInstrInfo.h.
References minConstant().
Definition at line 474 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 481 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonII::AccumulatorMask, llvm::HexagonII::AccumulatorPos, F(), getDesc(), and llvm::MCInstrDesc::TSFlags.
Referenced by inRange().
Definition at line 487 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 527 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 532 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 537 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 543 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 549 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 493 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 554 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 559 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup().
bool llvm::HexagonMCInstrInfo::isDuplex | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 564 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 657 of file HexagonMCDuplexInfo.cpp.
References getDuplexCandidateGroup(), and isDuplexPairMatch().
Referenced by inRange().
Definition at line 90 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 568 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 574 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 314 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 580 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 585 of file HexagonMCInstrInfo.cpp.
References getType(), llvm::HexagonII::TypeCVI_FIRST, and llvm::HexagonII::TypeCVI_LAST.
Referenced by inRange().
Definition at line 590 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 594 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 600 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup(), and inRange().
Definition at line 604 of file HexagonMCInstrInfo.cpp.
Referenced by getCompoundCandidateGroup(), getDuplexCandidateGroup(), and subInstWouldBeExtended().
Definition at line 689 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 610 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 617 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 578 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 622 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 628 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicatedMask, llvm::HexagonII::PredicatedPos, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::InterleavedAccessInfo::analyzeInterleaving(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), 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 645 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 651 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 638 of file HexagonMCInstrInfo.cpp.
References F(), getDesc(), llvm::HexagonII::PredicateLateMask, llvm::HexagonII::PredicateLatePos, and llvm::MCInstrDesc::TSFlags.
Referenced by inRange().
Definition at line 658 of file HexagonMCInstrInfo.cpp.
Referenced by getDuplexCandidateGroup(), and inRange().
bool llvm::HexagonMCInstrInfo::isPrefix | ( | MCInstrInfo const & | MCII, |
MCInst const & | MCI | ||
) |
Definition at line 634 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 676 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 669 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 684 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 663 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 695 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 755 of file HexagonMCInstrInfo.cpp.
References getType(), llvm::HexagonII::TypeCVI_FIRST, and llvm::HexagonII::TypeCVI_LAST.
Referenced by adjustDuplex(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), and inRange().
Definition at line 762 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 781 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustExtend().
Referenced by inRange(), isConstExtended(), and makeCombineInst().
Definition at line 789 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::mustNotExtend().
Referenced by inRange(), and isConstExtended().
Definition at line 805 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 817 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 827 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 839 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 798 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 853 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 859 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 776 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustExtend().
Referenced by GetSymbolRef(), llvm::HexagonLowerToMC(), and makeCombineInst().
Definition at line 785 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setMustNotExtend().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction(), and makeCombineInst().
void llvm::HexagonMCInstrInfo::setOuterLoop | ( | MCInst & | MCI | ) |
Definition at line 866 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 793 of file HexagonMCInstrInfo.cpp.
References llvm::HexagonMCExpr::setS27_2_reloc().
Referenced by llvm::HexagonAsmPrinter::HexagonProcessInstruction(), and makeCombineInst().
Definition at line 541 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 872 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 398 of file HexagonMCCompound.cpp.
References assert(), llvm::dbgs(), llvm::HexagonMCShuffle(), isBundle(), LLVM_DEBUG, lookForCompound(), and llvm::MCInst::size().
Referenced by canonicalizePacket().
Definition at line 77 of file HexagonMCInstrInfo.h.
Referenced by bundleInstructions(), bundleSize(), extenderForIndex(), getDuplexPossibilties(), instruction(), and lookForCompound().
int64_t const llvm::HexagonMCInstrInfo::innerLoopMask = 1 << innerLoopOffset |
Definition at line 67 of file HexagonMCInstrInfo.h.
Referenced by isInnerLoop(), and setInnerLoop().
Definition at line 66 of file HexagonMCInstrInfo.h.
int64_t const llvm::HexagonMCInstrInfo::memReorderDisabledMask = 1 << memReorderDisabledOffset |
Definition at line 75 of file HexagonMCInstrInfo.h.
Referenced by llvm::HexagonShuffler::isMemReorderDisabled(), isMemReorderDisabled(), and setMemReorderDisabled().
Definition at line 74 of file HexagonMCInstrInfo.h.
int64_t const llvm::HexagonMCInstrInfo::outerLoopMask = 1 << outerLoopOffset |
Definition at line 70 of file HexagonMCInstrInfo.h.
Referenced by isOuterLoop(), and setOuterLoop().
Definition at line 69 of file HexagonMCInstrInfo.h.