Lines Matching refs:MCII
39 Hexagon::PacketIterator::PacketIterator(MCInstrInfo const &MCII, in PacketIterator() argument
41 : MCII(MCII), BundleCurrent(Inst.begin() + in PacketIterator()
45 Hexagon::PacketIterator::PacketIterator(MCInstrInfo const &MCII, in PacketIterator() argument
47 : MCII(MCII), BundleCurrent(Inst.end()), BundleEnd(Inst.end()), in PacketIterator()
63 if (HexagonMCInstrInfo::isDuplex(MCII, Inst)) { in operator ++()
88 MCInstrInfo const &MCII, MCInst &MCB, in addConstExtender() argument
92 MCI.getOperand(HexagonMCInstrInfo::getExtendableOp(MCII, MCI)); in addConstExtender()
96 new (Context) MCInst(HexagonMCInstrInfo::deriveExtender(MCII, MCI, exOp)); in addConstExtender()
103 HexagonMCInstrInfo::bundleInstructions(MCInstrInfo const &MCII, in bundleInstructions() argument
106 return make_range(Hexagon::PacketIterator(MCII, MCI), in bundleInstructions()
107 Hexagon::PacketIterator(MCII, MCI, nullptr)); in bundleInstructions()
124 bool canonicalizePacketImpl(MCInstrInfo const &MCII, MCSubtargetInfo const &STI, in canonicalizePacketImpl() argument
134 HexagonMCInstrInfo::tryCompound(MCII, STI, Context, MCB); in canonicalizePacketImpl()
135 HexagonMCShuffle(Context, false, MCII, STI, MCB); in canonicalizePacketImpl()
142 HexagonMCInstrInfo::getDuplexPossibilties(MCII, STI, MCB); in canonicalizePacketImpl()
143 HexagonMCShuffle(Context, MCII, STI, MCB, possibleDuplexes); in canonicalizePacketImpl()
159 HexagonMCShuffle(Context, true, MCII, STI, MCB); in canonicalizePacketImpl()
164 bool HexagonMCInstrInfo::canonicalizePacket(MCInstrInfo const &MCII, in canonicalizePacket() argument
171 return canonicalizePacketImpl(MCII, STI, Context, MCB, Check); in canonicalizePacket()
174 HexagonMCChecker DefaultCheck(Context, MCII, STI, MCB, *RI, false); in canonicalizePacket()
177 if (canonicalizePacketImpl(MCII, STI, Context, MCB, &PerfCheck)) in canonicalizePacket()
181 return canonicalizePacketImpl(MCII, *ArchSTI, Context, MCB, &ArchCheck); in canonicalizePacket()
184 MCInst HexagonMCInstrInfo::deriveExtender(MCInstrInfo const &MCII, in deriveExtender() argument
187 assert(HexagonMCInstrInfo::isExtendable(MCII, Inst) || in deriveExtender()
188 HexagonMCInstrInfo::isExtended(MCII, Inst)); in deriveExtender()
228 MCInstrInfo const &MCII, MCInst &MCB, in extendIfNeeded() argument
230 if (isConstExtended(MCII, MCI)) in extendIfNeeded()
231 addConstExtender(Context, MCII, MCB, MCI); in extendIfNeeded()
234 unsigned HexagonMCInstrInfo::getMemAccessSize(MCInstrInfo const &MCII, in getMemAccessSize() argument
236 uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getMemAccessSize()
241 unsigned HexagonMCInstrInfo::getAddrMode(MCInstrInfo const &MCII, in getAddrMode() argument
243 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getAddrMode()
248 MCInstrDesc const &HexagonMCInstrInfo::getDesc(MCInstrInfo const &MCII, in getDesc() argument
250 return MCII.get(MCI.getOpcode()); in getDesc()
309 unsigned short HexagonMCInstrInfo::getExtendableOp(MCInstrInfo const &MCII, in getExtendableOp() argument
311 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtendableOp()
316 HexagonMCInstrInfo::getExtendableOperand(MCInstrInfo const &MCII, in getExtendableOperand() argument
318 unsigned O = HexagonMCInstrInfo::getExtendableOp(MCII, MCI); in getExtendableOperand()
321 assert((HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getExtendableOperand()
322 HexagonMCInstrInfo::isExtended(MCII, MCI)) && in getExtendableOperand()
327 unsigned HexagonMCInstrInfo::getExtentAlignment(MCInstrInfo const &MCII, in getExtentAlignment() argument
329 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtentAlignment()
333 unsigned HexagonMCInstrInfo::getExtentBits(MCInstrInfo const &MCII, in getExtentBits() argument
335 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtentBits()
339 bool HexagonMCInstrInfo::isExtentSigned(MCInstrInfo const &MCII, in isExtentSigned() argument
341 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtentSigned()
346 int HexagonMCInstrInfo::getMaxValue(MCInstrInfo const &MCII, in getMaxValue() argument
348 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getMaxValue()
349 HexagonMCInstrInfo::isExtended(MCII, MCI)); in getMaxValue()
351 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed in getMaxValue()
352 return (1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1)) - 1; in getMaxValue()
353 return (1 << HexagonMCInstrInfo::getExtentBits(MCII, MCI)) - 1; in getMaxValue()
357 int HexagonMCInstrInfo::getMinValue(MCInstrInfo const &MCII, in getMinValue() argument
359 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getMinValue()
360 HexagonMCInstrInfo::isExtended(MCII, MCI)); in getMinValue()
362 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed in getMinValue()
363 return -(1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1)); in getMinValue()
367 StringRef HexagonMCInstrInfo::getName(MCInstrInfo const &MCII, in getName() argument
369 return MCII.getName(MCI.getOpcode()); in getName()
372 unsigned short HexagonMCInstrInfo::getNewValueOp(MCInstrInfo const &MCII, in getNewValueOp() argument
374 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getNewValueOp()
378 MCOperand const &HexagonMCInstrInfo::getNewValueOperand(MCInstrInfo const &MCII, in getNewValueOperand() argument
380 if (HexagonMCInstrInfo::hasTmpDst(MCII, MCI)) { in getNewValueOperand()
386 unsigned O = HexagonMCInstrInfo::getNewValueOp(MCII, MCI); in getNewValueOperand()
389 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) || in getNewValueOperand()
390 HexagonMCInstrInfo::hasNewValue(MCII, MCI)) && in getNewValueOperand()
397 unsigned short HexagonMCInstrInfo::getNewValueOp2(MCInstrInfo const &MCII, in getNewValueOp2() argument
399 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getNewValueOp2()
404 HexagonMCInstrInfo::getNewValueOperand2(MCInstrInfo const &MCII, in getNewValueOperand2() argument
406 unsigned O = HexagonMCInstrInfo::getNewValueOp2(MCII, MCI); in getNewValueOperand2()
409 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) || in getNewValueOperand2()
410 HexagonMCInstrInfo::hasNewValue2(MCII, MCI)) && in getNewValueOperand2()
416 unsigned HexagonMCInstrInfo::getType(MCInstrInfo const &MCII, in getType() argument
418 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags; in getType()
423 unsigned HexagonMCInstrInfo::getCVIResources(MCInstrInfo const &MCII, in getCVIResources() argument
428 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getCVIResources()
443 unsigned HexagonMCInstrInfo::getUnits(MCInstrInfo const &MCII, in getUnits() argument
447 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getUnits()
454 unsigned HexagonMCInstrInfo::getOtherReservedSlots(MCInstrInfo const &MCII, in getOtherReservedSlots() argument
458 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getOtherReservedSlots()
477 bool HexagonMCInstrInfo::hasDuplex(MCInstrInfo const &MCII, MCInst const &MCI) { in hasDuplex() argument
482 if (HexagonMCInstrInfo::isDuplex(MCII, *I.getInst())) in hasDuplex()
506 bool HexagonMCInstrInfo::hasNewValue(MCInstrInfo const &MCII, in hasNewValue() argument
508 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasNewValue()
513 bool HexagonMCInstrInfo::hasNewValue2(MCInstrInfo const &MCII, in hasNewValue2() argument
515 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasNewValue2()
526 bool HexagonMCInstrInfo::isAccumulator(MCInstrInfo const &MCII, in isAccumulator() argument
528 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isAccumulator()
538 bool HexagonMCInstrInfo::isConstExtended(MCInstrInfo const &MCII, in isConstExtended() argument
540 if (HexagonMCInstrInfo::isExtended(MCII, MCI)) in isConstExtended()
542 if (!HexagonMCInstrInfo::isExtendable(MCII, MCI)) in isConstExtended()
544 MCOperand const &MO = HexagonMCInstrInfo::getExtendableOperand(MCII, MCI); in isConstExtended()
549 if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeJ) || in isConstExtended()
550 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCJ && in isConstExtended()
551 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch()) || in isConstExtended()
552 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeNCJ && in isConstExtended()
553 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch())) in isConstExtended()
556 else if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCR) && in isConstExtended()
567 int MinValue = HexagonMCInstrInfo::getMinValue(MCII, MCI); in isConstExtended()
568 int MaxValue = HexagonMCInstrInfo::getMaxValue(MCII, MCI); in isConstExtended()
572 bool HexagonMCInstrInfo::isCanon(MCInstrInfo const &MCII, MCInst const &MCI) { in isCanon() argument
573 return !HexagonMCInstrInfo::getDesc(MCII, MCI).isPseudo() && in isCanon()
574 !HexagonMCInstrInfo::isPrefix(MCII, MCI); in isCanon()
577 bool HexagonMCInstrInfo::isCofMax1(MCInstrInfo const &MCII, MCInst const &MCI) { in isCofMax1() argument
578 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofMax1()
582 bool HexagonMCInstrInfo::isCofRelax1(MCInstrInfo const &MCII, in isCofRelax1() argument
584 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofRelax1()
588 bool HexagonMCInstrInfo::isCofRelax2(MCInstrInfo const &MCII, in isCofRelax2() argument
590 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofRelax2()
594 bool HexagonMCInstrInfo::isCompound(MCInstrInfo const &MCII, in isCompound() argument
596 return (getType(MCII, MCI) == HexagonII::TypeCJ); in isCompound()
599 bool HexagonMCInstrInfo::isCVINew(MCInstrInfo const &MCII, MCInst const &MCI) { in isCVINew() argument
600 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCVINew()
609 bool HexagonMCInstrInfo::isDuplex(MCInstrInfo const &MCII, MCInst const &MCI) { in isDuplex() argument
610 return HexagonII::TypeDUPLEX == HexagonMCInstrInfo::getType(MCII, MCI); in isDuplex()
613 bool HexagonMCInstrInfo::isExtendable(MCInstrInfo const &MCII, in isExtendable() argument
615 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtendable()
619 bool HexagonMCInstrInfo::isExtended(MCInstrInfo const &MCII, in isExtended() argument
621 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtended()
625 bool HexagonMCInstrInfo::isFloat(MCInstrInfo const &MCII, MCInst const &MCI) { in isFloat() argument
626 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isFloat()
630 bool HexagonMCInstrInfo::isHVX(MCInstrInfo const &MCII, MCInst const &MCI) { in isHVX() argument
631 const uint64_t V = getType(MCII, MCI); in isHVX()
655 bool HexagonMCInstrInfo::isNewValue(MCInstrInfo const &MCII, in isNewValue() argument
657 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isNewValue()
661 bool HexagonMCInstrInfo::isNewValueStore(MCInstrInfo const &MCII, in isNewValueStore() argument
663 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isNewValueStore()
668 bool HexagonMCInstrInfo::isOpExtendable(MCInstrInfo const &MCII, in isOpExtendable() argument
670 return (O == HexagonMCInstrInfo::getExtendableOp(MCII, MCI)); in isOpExtendable()
718 bool HexagonMCInstrInfo::isPredicated(MCInstrInfo const &MCII, in isPredicated() argument
720 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicated()
724 bool HexagonMCInstrInfo::isPrefix(MCInstrInfo const &MCII, MCInst const &MCI) { in isPrefix() argument
725 return HexagonII::TypeEXTENDER == HexagonMCInstrInfo::getType(MCII, MCI); in isPrefix()
728 bool HexagonMCInstrInfo::isPredicateLate(MCInstrInfo const &MCII, in isPredicateLate() argument
730 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicateLate()
735 bool HexagonMCInstrInfo::isPredicatedNew(MCInstrInfo const &MCII, in isPredicatedNew() argument
737 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicatedNew()
741 bool HexagonMCInstrInfo::isPredicatedTrue(MCInstrInfo const &MCII, in isPredicatedTrue() argument
743 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicatedTrue()
753 bool HexagonMCInstrInfo::isPredRegister(MCInstrInfo const &MCII, in isPredRegister() argument
755 MCInstrDesc const &Desc = HexagonMCInstrInfo::getDesc(MCII, Inst); in isPredRegister()
762 bool HexagonMCInstrInfo::isSoloAX(MCInstrInfo const &MCII, MCInst const &MCI) { in isSoloAX() argument
763 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isSoloAX()
768 bool HexagonMCInstrInfo::isRestrictSlot1AOK(MCInstrInfo const &MCII, in isRestrictSlot1AOK() argument
770 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isRestrictSlot1AOK()
775 bool HexagonMCInstrInfo::isRestrictNoSlot1Store(MCInstrInfo const &MCII, in isRestrictNoSlot1Store() argument
777 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isRestrictNoSlot1Store()
783 bool HexagonMCInstrInfo::isSolo(MCInstrInfo const &MCII, MCInst const &MCI) { in isSolo() argument
784 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags; in isSolo()
854 bool HexagonMCInstrInfo::isVector(MCInstrInfo const &MCII, MCInst const &MCI) { in isVector() argument
855 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isVector()
926 HexagonMCInstrInfo::predicateInfo(MCInstrInfo const &MCII, MCInst const &MCI) { in predicateInfo() argument
927 if (!isPredicated(MCII, MCI)) in predicateInfo()
929 MCInstrDesc const &Desc = getDesc(MCII, MCI); in predicateInfo()
932 return {MCI.getOperand(I).getReg(), I, isPredicatedTrue(MCII, MCI)}; in predicateInfo()
936 bool HexagonMCInstrInfo::prefersSlot3(MCInstrInfo const &MCII, in prefersSlot3() argument
938 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in prefersSlot3()
943 bool HexagonMCInstrInfo::hasTmpDst(MCInstrInfo const &MCII, MCInst const &MCI) { in hasTmpDst() argument
944 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasTmpDst()
959 unsigned HexagonMCInstrInfo::slotsConsumed(MCInstrInfo const &MCII, in slotsConsumed() argument
967 if (isDuplex(MCII, MCI)) in slotsConsumed()