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
137 HexagonMCInstrInfo::tryCompound(MCII, STI, Context, MCB); in canonicalizePacketImpl()
138 HexagonMCShuffle(Context, false, MCII, STI, MCB); in canonicalizePacketImpl()
142 ? HexagonMCInstrInfo::getDuplexPossibilties(MCII, STI, MCB) in canonicalizePacketImpl()
147 HexagonMCShuffle(Context, MCII, STI, MCB, possibleDuplexes); in canonicalizePacketImpl()
165 HexagonMCShuffle(Context, true, MCII, STI, MCB); in canonicalizePacketImpl()
171 bool HexagonMCInstrInfo::canonicalizePacket(MCInstrInfo const &MCII, in canonicalizePacket() argument
178 return canonicalizePacketImpl(MCII, STI, Context, MCB, Check); in canonicalizePacket()
181 HexagonMCChecker DefaultCheck(Context, MCII, STI, MCB, *RI, false); in canonicalizePacket()
184 if (canonicalizePacketImpl(MCII, STI, Context, MCB, &PerfCheck)) in canonicalizePacket()
188 return canonicalizePacketImpl(MCII, *ArchSTI, Context, MCB, &ArchCheck); in canonicalizePacket()
191 MCInst HexagonMCInstrInfo::deriveExtender(MCInstrInfo const &MCII, in deriveExtender() argument
194 assert(HexagonMCInstrInfo::isExtendable(MCII, Inst) || in deriveExtender()
195 HexagonMCInstrInfo::isExtended(MCII, Inst)); in deriveExtender()
235 MCInstrInfo const &MCII, MCInst &MCB, in extendIfNeeded() argument
237 if (isConstExtended(MCII, MCI)) in extendIfNeeded()
238 addConstExtender(Context, MCII, MCB, MCI); in extendIfNeeded()
241 unsigned HexagonMCInstrInfo::getMemAccessSize(MCInstrInfo const &MCII, in getMemAccessSize() argument
243 uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getMemAccessSize()
248 unsigned HexagonMCInstrInfo::getAddrMode(MCInstrInfo const &MCII, in getAddrMode() argument
250 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getAddrMode()
255 MCInstrDesc const &HexagonMCInstrInfo::getDesc(MCInstrInfo const &MCII, in getDesc() argument
257 return MCII.get(MCI.getOpcode()); in getDesc()
316 unsigned short HexagonMCInstrInfo::getExtendableOp(MCInstrInfo const &MCII, in getExtendableOp() argument
318 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtendableOp()
323 HexagonMCInstrInfo::getExtendableOperand(MCInstrInfo const &MCII, in getExtendableOperand() argument
325 unsigned O = HexagonMCInstrInfo::getExtendableOp(MCII, MCI); in getExtendableOperand()
328 assert((HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getExtendableOperand()
329 HexagonMCInstrInfo::isExtended(MCII, MCI)) && in getExtendableOperand()
334 unsigned HexagonMCInstrInfo::getExtentAlignment(MCInstrInfo const &MCII, in getExtentAlignment() argument
336 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtentAlignment()
340 unsigned HexagonMCInstrInfo::getExtentBits(MCInstrInfo const &MCII, in getExtentBits() argument
342 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getExtentBits()
346 bool HexagonMCInstrInfo::isExtentSigned(MCInstrInfo const &MCII, in isExtentSigned() argument
348 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtentSigned()
353 int HexagonMCInstrInfo::getMaxValue(MCInstrInfo const &MCII, in getMaxValue() argument
355 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getMaxValue()
356 HexagonMCInstrInfo::isExtended(MCII, MCI)); in getMaxValue()
358 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed in getMaxValue()
359 return (1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1)) - 1; in getMaxValue()
360 return (1 << HexagonMCInstrInfo::getExtentBits(MCII, MCI)) - 1; in getMaxValue()
364 int HexagonMCInstrInfo::getMinValue(MCInstrInfo const &MCII, in getMinValue() argument
366 assert(HexagonMCInstrInfo::isExtendable(MCII, MCI) || in getMinValue()
367 HexagonMCInstrInfo::isExtended(MCII, MCI)); in getMinValue()
369 if (HexagonMCInstrInfo::isExtentSigned(MCII, MCI)) // if value is signed in getMinValue()
370 return -(1 << (HexagonMCInstrInfo::getExtentBits(MCII, MCI) - 1)); in getMinValue()
374 StringRef HexagonMCInstrInfo::getName(MCInstrInfo const &MCII, in getName() argument
376 return MCII.getName(MCI.getOpcode()); in getName()
379 unsigned short HexagonMCInstrInfo::getNewValueOp(MCInstrInfo const &MCII, in getNewValueOp() argument
381 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getNewValueOp()
385 MCOperand const &HexagonMCInstrInfo::getNewValueOperand(MCInstrInfo const &MCII, in getNewValueOperand() argument
387 if (HexagonMCInstrInfo::hasTmpDst(MCII, MCI)) { in getNewValueOperand()
393 unsigned O = HexagonMCInstrInfo::getNewValueOp(MCII, MCI); in getNewValueOperand()
396 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) || in getNewValueOperand()
397 HexagonMCInstrInfo::hasNewValue(MCII, MCI)) && in getNewValueOperand()
404 unsigned short HexagonMCInstrInfo::getNewValueOp2(MCInstrInfo const &MCII, in getNewValueOp2() argument
406 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in getNewValueOp2()
411 HexagonMCInstrInfo::getNewValueOperand2(MCInstrInfo const &MCII, in getNewValueOperand2() argument
413 unsigned O = HexagonMCInstrInfo::getNewValueOp2(MCII, MCI); in getNewValueOperand2()
416 assert((HexagonMCInstrInfo::isNewValue(MCII, MCI) || in getNewValueOperand2()
417 HexagonMCInstrInfo::hasNewValue2(MCII, MCI)) && in getNewValueOperand2()
423 unsigned HexagonMCInstrInfo::getType(MCInstrInfo const &MCII, in getType() argument
425 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags; in getType()
430 unsigned HexagonMCInstrInfo::getCVIResources(MCInstrInfo const &MCII, in getCVIResources() argument
435 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getCVIResources()
450 unsigned HexagonMCInstrInfo::getUnits(MCInstrInfo const &MCII, in getUnits() argument
454 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getUnits()
461 unsigned HexagonMCInstrInfo::getOtherReservedSlots(MCInstrInfo const &MCII, in getOtherReservedSlots() argument
465 int SchedClass = HexagonMCInstrInfo::getDesc(MCII, MCI).getSchedClass(); in getOtherReservedSlots()
484 bool HexagonMCInstrInfo::hasDuplex(MCInstrInfo const &MCII, MCInst const &MCI) { in hasDuplex() argument
489 if (HexagonMCInstrInfo::isDuplex(MCII, *I.getInst())) in hasDuplex()
513 bool HexagonMCInstrInfo::hasNewValue(MCInstrInfo const &MCII, in hasNewValue() argument
515 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasNewValue()
520 bool HexagonMCInstrInfo::hasNewValue2(MCInstrInfo const &MCII, in hasNewValue2() argument
522 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasNewValue2()
533 bool HexagonMCInstrInfo::isAccumulator(MCInstrInfo const &MCII, in isAccumulator() argument
535 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isAccumulator()
545 bool HexagonMCInstrInfo::isConstExtended(MCInstrInfo const &MCII, in isConstExtended() argument
547 if (HexagonMCInstrInfo::isExtended(MCII, MCI)) in isConstExtended()
549 if (!HexagonMCInstrInfo::isExtendable(MCII, MCI)) in isConstExtended()
551 MCOperand const &MO = HexagonMCInstrInfo::getExtendableOperand(MCII, MCI); in isConstExtended()
556 if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeJ) || in isConstExtended()
557 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCJ && in isConstExtended()
558 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch()) || in isConstExtended()
559 (HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeNCJ && in isConstExtended()
560 HexagonMCInstrInfo::getDesc(MCII, MCI).isBranch())) in isConstExtended()
563 else if ((HexagonMCInstrInfo::getType(MCII, MCI) == HexagonII::TypeCR) && in isConstExtended()
574 int MinValue = HexagonMCInstrInfo::getMinValue(MCII, MCI); in isConstExtended()
575 int MaxValue = HexagonMCInstrInfo::getMaxValue(MCII, MCI); in isConstExtended()
579 bool HexagonMCInstrInfo::isCanon(MCInstrInfo const &MCII, MCInst const &MCI) { in isCanon() argument
580 return !HexagonMCInstrInfo::getDesc(MCII, MCI).isPseudo() && in isCanon()
581 !HexagonMCInstrInfo::isPrefix(MCII, MCI); in isCanon()
584 bool HexagonMCInstrInfo::isCofMax1(MCInstrInfo const &MCII, MCInst const &MCI) { in isCofMax1() argument
585 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofMax1()
589 bool HexagonMCInstrInfo::isCofRelax1(MCInstrInfo const &MCII, in isCofRelax1() argument
591 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofRelax1()
595 bool HexagonMCInstrInfo::isCofRelax2(MCInstrInfo const &MCII, in isCofRelax2() argument
597 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCofRelax2()
601 bool HexagonMCInstrInfo::isCompound(MCInstrInfo const &MCII, in isCompound() argument
603 return (getType(MCII, MCI) == HexagonII::TypeCJ); in isCompound()
606 bool HexagonMCInstrInfo::isCVINew(MCInstrInfo const &MCII, MCInst const &MCI) { in isCVINew() argument
607 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isCVINew()
616 bool HexagonMCInstrInfo::isDuplex(MCInstrInfo const &MCII, MCInst const &MCI) { in isDuplex() argument
617 return HexagonII::TypeDUPLEX == HexagonMCInstrInfo::getType(MCII, MCI); in isDuplex()
620 bool HexagonMCInstrInfo::isExtendable(MCInstrInfo const &MCII, in isExtendable() argument
622 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtendable()
626 bool HexagonMCInstrInfo::isExtended(MCInstrInfo const &MCII, in isExtended() argument
628 uint64_t const F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isExtended()
632 bool HexagonMCInstrInfo::isFloat(MCInstrInfo const &MCII, MCInst const &MCI) { in isFloat() argument
633 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isFloat()
637 bool HexagonMCInstrInfo::isHVX(MCInstrInfo const &MCII, MCInst const &MCI) { in isHVX() argument
638 const uint64_t V = getType(MCII, MCI); in isHVX()
662 bool HexagonMCInstrInfo::isNewValue(MCInstrInfo const &MCII, in isNewValue() argument
664 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isNewValue()
668 bool HexagonMCInstrInfo::isNewValueStore(MCInstrInfo const &MCII, in isNewValueStore() argument
670 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isNewValueStore()
675 bool HexagonMCInstrInfo::isOpExtendable(MCInstrInfo const &MCII, in isOpExtendable() argument
677 return (O == HexagonMCInstrInfo::getExtendableOp(MCII, MCI)); in isOpExtendable()
725 bool HexagonMCInstrInfo::isPredicated(MCInstrInfo const &MCII, in isPredicated() argument
727 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicated()
731 bool HexagonMCInstrInfo::isPrefix(MCInstrInfo const &MCII, MCInst const &MCI) { in isPrefix() argument
732 return HexagonII::TypeEXTENDER == HexagonMCInstrInfo::getType(MCII, MCI); in isPrefix()
735 bool HexagonMCInstrInfo::isPredicateLate(MCInstrInfo const &MCII, in isPredicateLate() argument
737 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicateLate()
742 bool HexagonMCInstrInfo::isPredicatedNew(MCInstrInfo const &MCII, in isPredicatedNew() argument
744 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicatedNew()
748 bool HexagonMCInstrInfo::isPredicatedTrue(MCInstrInfo const &MCII, in isPredicatedTrue() argument
750 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isPredicatedTrue()
760 bool HexagonMCInstrInfo::isPredRegister(MCInstrInfo const &MCII, in isPredRegister() argument
762 MCInstrDesc const &Desc = HexagonMCInstrInfo::getDesc(MCII, Inst); in isPredRegister()
769 bool HexagonMCInstrInfo::isSoloAX(MCInstrInfo const &MCII, MCInst const &MCI) { in isSoloAX() argument
770 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isSoloAX()
775 bool HexagonMCInstrInfo::isRestrictSlot1AOK(MCInstrInfo const &MCII, in isRestrictSlot1AOK() argument
777 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isRestrictSlot1AOK()
782 bool HexagonMCInstrInfo::isRestrictNoSlot1Store(MCInstrInfo const &MCII, in isRestrictNoSlot1Store() argument
784 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isRestrictNoSlot1Store()
790 bool HexagonMCInstrInfo::isSolo(MCInstrInfo const &MCII, MCInst const &MCI) { in isSolo() argument
791 const uint64_t F = MCII.get(MCI.getOpcode()).TSFlags; in isSolo()
861 bool HexagonMCInstrInfo::isVector(MCInstrInfo const &MCII, MCInst const &MCI) { in isVector() argument
862 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in isVector()
930 HexagonMCInstrInfo::predicateInfo(MCInstrInfo const &MCII, MCInst const &MCI) { in predicateInfo() argument
931 if (!isPredicated(MCII, MCI)) in predicateInfo()
933 MCInstrDesc const &Desc = getDesc(MCII, MCI); in predicateInfo()
936 return {MCI.getOperand(I).getReg(), I, isPredicatedTrue(MCII, MCI)}; in predicateInfo()
940 bool HexagonMCInstrInfo::prefersSlot3(MCInstrInfo const &MCII, in prefersSlot3() argument
942 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in prefersSlot3()
946 bool HexagonMCInstrInfo::hasTmpDst(MCInstrInfo const &MCII, MCInst const &MCI) { in hasTmpDst() argument
961 bool HexagonMCInstrInfo::hasHvxTmp(MCInstrInfo const &MCII, MCInst const &MCI) { in hasHvxTmp() argument
962 const uint64_t F = HexagonMCInstrInfo::getDesc(MCII, MCI).TSFlags; in hasHvxTmp()
977 unsigned HexagonMCInstrInfo::slotsConsumed(MCInstrInfo const &MCII, in slotsConsumed() argument
985 if (isDuplex(MCII, MCI)) in slotsConsumed()
1046 bool HexagonMCInstrInfo::IsABranchingInst(MCInstrInfo const &MCII, in IsABranchingInst() argument
1050 MCInstrDesc const &Desc = HexagonMCInstrInfo::getDesc(MCII, I); in IsABranchingInst()