• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/Hexagon/MCTargetDesc/

Lines Matching refs:MCII

38 Hexagon::PacketIterator::PacketIterator(MCInstrInfo const &MCII,
40 : MCII(MCII), BundleCurrent(Inst.begin() +
44 Hexagon::PacketIterator::PacketIterator(MCInstrInfo const &MCII,
46 : MCII(MCII), BundleCurrent(Inst.end()), BundleEnd(Inst.end()),
62 if (HexagonMCInstrInfo::isDuplex(MCII, Inst)) {
87 MCInstrInfo const &MCII, MCInst &MCB,
91 MCI.getOperand(HexagonMCInstrInfo::getExtendableOp(MCII, MCI));
95 new (Context) MCInst(HexagonMCInstrInfo::deriveExtender(MCII, MCI, exOp));
102 HexagonMCInstrInfo::bundleInstructions(MCInstrInfo const &MCII,
105 return make_range(Hexagon::PacketIterator(MCII, MCI),
106 Hexagon::PacketIterator(MCII, MCI, nullptr));
122 bool HexagonMCInstrInfo::canonicalizePacket(MCInstrInfo const &MCII,
133 HexagonMCInstrInfo::tryCompound(MCII, STI, Context, MCB);
134 HexagonMCShuffle(Context, false, MCII, STI, MCB);
141 HexagonMCInstrInfo::getDuplexPossibilties(MCII, STI, MCB);
142 HexagonMCShuffle(Context, MCII, STI, MCB, possibleDuplexes);
155 HexagonMCShuffle(Context, true, MCII, STI, MCB);
159 MCInst HexagonMCInstrInfo::deriveExtender(MCInstrInfo const &MCII,
162 assert(HexagonMCInstrInfo::isExtendable(MCII, Inst) ||
163 HexagonMCInstrInfo::isExtended(MCII, Inst));
203 MCInstrInfo const &MCII, MCInst &MCB,
205 if (isConstExtended(MCII, MCI))
206 addConstExtender(Context, MCII, MCB, MCI);
209 unsigned HexagonMCInstrInfo::getMemAccessSize(MCInstrInfo const &MCII,
211 uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
216 unsigned HexagonMCInstrInfo::getAddrMode(MCInstrInfo const &MCII,
218 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
223 MCInstrDesc const &HexagonMCInstrInfo::getDesc(MCInstrInfo const &MCII,
225 return MCII.get(MCI.getOpcode());
284 unsigned short HexagonMCInstrInfo::getExtendableOp(MCInstrInfo const &MCII,
286 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
291 HexagonMCInstrInfo::getExtendableOperand(MCInstrInfo const &MCII,
293 unsigned O = HexagonMCInstrInfo::getExtendableOp(MCII, MCI);
296 assert((HexagonMCInstrInfo::isExtendable(MCII, MCI) ||
297 HexagonMCInstrInfo::isExtended(MCII, MCI)) &&
302 unsigned HexagonMCInstrInfo::getExtentAlignment(MCInstrInfo const &MCII,
304 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
308 unsigned HexagonMCInstrInfo::getExtentBits(MCInstrInfo const &MCII,
310 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
314 bool HexagonMCInstrInfo::isExtentSigned(MCInstrInfo const &MCII,
316 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
321 int HexagonMCInstrInfo::getMaxValue(MCInstrInfo const &MCII,
323 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) ||
324 HexagonMCInstrInfo::isExtended(MCII, MCI));
326 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed
327 return (1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1)) - 1;
328 return (1 << HexagonMCInstrInfo::getExtentBits(MCII, MCI)) - 1;
332 int HexagonMCInstrInfo::getMinValue(MCInstrInfo const &MCII,
334 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) ||
335 HexagonMCInstrInfo::isExtended(MCII, MCI));
337 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed
338 return -(1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1));
342 StringRef HexagonMCInstrInfo::getName(MCInstrInfo const &MCII,
344 return MCII.getName(MCI.getOpcode());
347 unsigned short HexagonMCInstrInfo::getNewValueOp(MCInstrInfo const &MCII,
349 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
353 MCOperand const &HexagonMCInstrInfo::getNewValueOperand(MCInstrInfo const &MCII,
355 if (HexagonMCInstrInfo::hasTmpDst(MCII, MCI)) {
361 unsigned O = HexagonMCInstrInfo::getNewValueOp(MCII, MCI);
364 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) ||
365 HexagonMCInstrInfo::hasNewValue(MCII, MCI)) &&
372 unsigned short HexagonMCInstrInfo::getNewValueOp2(MCInstrInfo const &MCII,
374 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
379 HexagonMCInstrInfo::getNewValueOperand2(MCInstrInfo const &MCII,
381 unsigned O = HexagonMCInstrInfo::getNewValueOp2(MCII, MCI);
384 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) ||
385 HexagonMCInstrInfo::hasNewValue2(MCII, MCI)) &&
391 unsigned HexagonMCInstrInfo::getType(MCInstrInfo const &MCII,
393 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags;
398 unsigned HexagonMCInstrInfo::getUnits(MCInstrInfo const &MCII,
402 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass();
409 unsigned HexagonMCInstrInfo::getOtherReservedSlots(MCInstrInfo const &MCII,
413 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass();
432 bool HexagonMCInstrInfo::hasDuplex(MCInstrInfo const &MCII, MCInst const &MCI) {
437 if (HexagonMCInstrInfo::isDuplex(MCII, *I.getInst()))
461 bool HexagonMCInstrInfo::hasNewValue(MCInstrInfo const &MCII,
463 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
468 bool HexagonMCInstrInfo::hasNewValue2(MCInstrInfo const &MCII,
470 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
481 bool HexagonMCInstrInfo::isAccumulator(MCInstrInfo const &MCII,
483 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
493 bool HexagonMCInstrInfo::isConstExtended(MCInstrInfo const &MCII,
495 if (HexagonMCInstrInfo::isExtended(MCII, MCI))
497 if (!HexagonMCInstrInfo::isExtendable(MCII, MCI))
499 MCOperand const &MO = HexagonMCInstrInfo::getExtendableOperand(MCII, MCI);
504 if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeJ) ||
505 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCJ &&
506 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch()) ||
507 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeNCJ &&
508 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch()))
511 else if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCR) &&
522 int MinValue = HexagonMCInstrInfo::getMinValue(MCII, MCI);
523 int MaxValue = HexagonMCInstrInfo::getMaxValue(MCII, MCI);
527 bool HexagonMCInstrInfo::isCanon(MCInstrInfo const &MCII, MCInst const &MCI) {
528 return !HexagonMCInstrInfo::getDesc(MCII, MCI).isPseudo() &&
529 !HexagonMCInstrInfo::isPrefix(MCII, MCI);
532 bool HexagonMCInstrInfo::isCofMax1(MCInstrInfo const &MCII, MCInst const &MCI) {
533 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
537 bool HexagonMCInstrInfo::isCofRelax1(MCInstrInfo const &MCII,
539 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
543 bool HexagonMCInstrInfo::isCofRelax2(MCInstrInfo const &MCII,
545 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
549 bool HexagonMCInstrInfo::isCompound(MCInstrInfo const &MCII,
551 return (getType(MCII, MCI) == HexagonII::TypeCJ);
554 bool HexagonMCInstrInfo::isCVINew(MCInstrInfo const &MCII, MCInst const &MCI) {
555 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
564 bool HexagonMCInstrInfo::isDuplex(MCInstrInfo const &MCII, MCInst const &MCI) {
565 return HexagonII::TypeDUPLEX == HexagonMCInstrInfo::getType(MCII, MCI);
568 bool HexagonMCInstrInfo::isExtendable(MCInstrInfo const &MCII,
570 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
574 bool HexagonMCInstrInfo::isExtended(MCInstrInfo const &MCII,
576 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
580 bool HexagonMCInstrInfo::isFloat(MCInstrInfo const &MCII, MCInst const &MCI) {
581 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
585 bool HexagonMCInstrInfo::isHVX(MCInstrInfo const &MCII, MCInst const &MCI) {
586 const uint64_t V = getType(MCII, MCI);
610 bool HexagonMCInstrInfo::isNewValue(MCInstrInfo const &MCII,
612 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
617 bool HexagonMCInstrInfo::isOpExtendable(MCInstrInfo const &MCII,
619 return (O == HexagonMCInstrInfo::getExtendableOp(MCII, MCI));
628 bool HexagonMCInstrInfo::isPredicated(MCInstrInfo const &MCII,
630 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
634 bool HexagonMCInstrInfo::isPrefix(MCInstrInfo const &MCII, MCInst const &MCI) {
635 return HexagonII::TypeEXTENDER == HexagonMCInstrInfo::getType(MCII, MCI);
638 bool HexagonMCInstrInfo::isPredicateLate(MCInstrInfo const &MCII,
640 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
645 bool HexagonMCInstrInfo::isPredicatedNew(MCInstrInfo const &MCII,
647 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
651 bool HexagonMCInstrInfo::isPredicatedTrue(MCInstrInfo const &MCII,
653 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
663 bool HexagonMCInstrInfo::isSoloAX(MCInstrInfo const &MCII, MCInst const &MCI) {
664 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
669 bool HexagonMCInstrInfo::isRestrictSlot1AOK(MCInstrInfo const &MCII,
671 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
676 bool HexagonMCInstrInfo::isRestrictNoSlot1Store(MCInstrInfo const &MCII,
678 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
684 bool HexagonMCInstrInfo::isSolo(MCInstrInfo const &MCII, MCInst const &MCI) {
685 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags;
755 bool HexagonMCInstrInfo::isVector(MCInstrInfo const &MCII, MCInst const &MCI) {
756 if ((getType(MCII, MCI) <= HexagonII::TypeCVI_LAST) &&
757 (getType(MCII, MCI) >= HexagonII::TypeCVI_FIRST))
817 HexagonMCInstrInfo::predicateInfo(MCInstrInfo const &MCII, MCInst const &MCI) {
818 if (!isPredicated(MCII, MCI))
820 MCInstrDesc const &Desc = getDesc(MCII, MCI);
823 return {MCI.getOperand(I).getReg(), I, isPredicatedTrue(MCII, MCI)};
827 bool HexagonMCInstrInfo::prefersSlot3(MCInstrInfo const &MCII,
829 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;
834 bool HexagonMCInstrInfo::hasTmpDst(MCInstrInfo const &MCII, MCInst const &MCI) {
835 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags;