Lines Matching refs:HII
116 const HexagonInstrInfo *HII = nullptr; member in __anon73fb695d0111::HexagonPacketizer
139 HII = MF.getSubtarget<HexagonSubtarget>().getInstrInfo(); in INITIALIZE_PASS_DEPENDENCY()
212 HII = HST.getInstrInfo(); in runOnMachineFunction()
220 HII->genAllInsnTimingClasses(MF); in runOnMachineFunction()
246 HII->translateInstrsForDup(MF, true); in runOnMachineFunction()
255 while (RB != End && HII->isSchedulingBoundary(*RB, &MB, MF)) in runOnMachineFunction()
260 while (RE != End && !HII->isSchedulingBoundary(*RE, &MB, MF)) in runOnMachineFunction()
275 HII->translateInstrsForDup(MF, false); in runOnMachineFunction()
295 auto *ExtMI = MF.CreateMachineInstr(HII->get(Hexagon::A4_ext), DebugLoc()); in tryAllocateResourcesForConstExt()
309 if (HII->isDeallocRet(MI)) in isCallDependent()
365 if (HII->isHVXVec(MI) && MI.mayStore()) in isNewifiable()
367 return HII->isPredicated(MI) && HII->getDotNewPredOp(MI, nullptr) > 0; in isNewifiable()
370 return HII->mayBeNewStore(MI); in isNewifiable()
380 int CurOpcode = HII->getDotCurOp(MI); in promoteToDotCur()
381 MI.setDesc(HII->get(CurOpcode)); in promoteToDotCur()
389 if (HII->isDotCurInst(*BI)) { in cleanUpDotCur()
402 MI->setDesc(HII->get(HII->getNonDotCurOp(*MI))); in cleanUpDotCur()
410 if (!HII->isHVXVec(MI)) in canPromoteToDotCur()
412 if (!HII->isHVXVec(*MII)) in canPromoteToDotCur()
416 if (HII->isDotCurInst(MI) && !HII->mayBeCurLoad(MI)) in canPromoteToDotCur()
419 if (!HII->mayBeCurLoad(MI)) in canPromoteToDotCur()
464 NewOpcode = HII->getDotNewPredOp(MI, MBPI); in promoteToDotNew()
466 NewOpcode = HII->getDotNewOp(MI); in promoteToDotNew()
467 MI.setDesc(HII->get(NewOpcode)); in promoteToDotNew()
472 int NewOpcode = HII->getDotOldOp(MI); in demoteToDotOld()
473 MI.setDesc(HII->get(NewOpcode)); in demoteToDotOld()
491 if (HII->isValidOffset(Opc, NewOff, HRI)) { in useCallersSP()
522 if (!HII->getBaseAndOffsetPosition(MI, BPI, OPI)) in updateOffset()
525 if (!HII->getBaseAndOffsetPosition(MJ, BPJ, OPJ)) in updateOffset()
538 if (!HII->getIncrementValue(MJ, Incr)) in updateOffset()
542 if (!HII->isValidOffset(MI.getOpcode(), Offset+Incr, HRI)) in updateOffset()
554 if (!HII->getBaseAndOffsetPosition(MI, BP, OP)) in undoChangedOffset()
568 const HexagonInstrInfo *HII) { in getPredicateSense() argument
569 if (!HII->isPredicated(MI)) in getPredicateSense()
571 if (HII->isPredicatedTrue(MI)) in getPredicateSense()
577 const HexagonInstrInfo *HII) { in getPostIncrementOperand() argument
578 assert(HII->isPostIncrement(MI) && "Not a post increment operation."); in getPostIncrementOperand()
654 if (!HII->mayBeNewStore(MI)) in canPromoteToNewValueStore()
665 const TargetRegisterClass *PacketRC = HII->getRegClass(MCID, 0, HRI, MF); in canPromoteToNewValueStore()
680 if (HII->isPostIncrement(MI) && in canPromoteToNewValueStore()
681 getPostIncrementOperand(MI, HII).getReg() == DepReg) { in canPromoteToNewValueStore()
685 if (HII->isPostIncrement(PacketMI) && PacketMI.mayLoad() && in canPromoteToNewValueStore()
686 getPostIncrementOperand(PacketMI, HII).getReg() == DepReg) { in canPromoteToNewValueStore()
700 if (HII->isPredicated(PacketMI)) { in canPromoteToNewValueStore()
701 if (!HII->isPredicated(MI)) in canPromoteToNewValueStore()
743 HII->isDotNewInst(PacketMI) != HII->isDotNewInst(MI) || in canPromoteToNewValueStore()
744 getPredicateSense(MI, HII) != getPredicateSense(PacketMI, HII)) in canPromoteToNewValueStore()
783 if (!HII->isPostIncrement(MI)) { in canPromoteToNewValueStore()
823 if (!HII->mayBeNewStore(MI)) in canPromoteToNewValue()
854 if (HII->isDotNewInst(MI) && !HII->mayBeNewStore(MI)) in canPromoteToDotNew()
878 const TargetRegisterClass *VecRC = HII->getRegClass(MCID, 0, HRI, MF); in canPromoteToDotNew()
884 return HII->predCanBeUsedAsDotNew(PI, DepReg); in canPromoteToDotNew()
886 if (RC != &Hexagon::PredRegsRegClass && !HII->mayBeNewStore(MI)) in canPromoteToDotNew()
891 int NewOpcode = (RC != &Hexagon::PredRegsRegClass) ? HII->getDotNewOp(MI) : in canPromoteToDotNew()
892 HII->getDotNewPredOp(MI, MBPI); in canPromoteToDotNew()
893 const MCInstrDesc &D = HII->get(NewOpcode); in canPromoteToDotNew()
926 if (!HII->isPredicated(*I)) in restrictingDepExistInPacket()
971 if (getPredicateSense(MI1, HII) == PK_Unknown || in arePredicatesComplements()
972 getPredicateSense(MI2, HII) == PK_Unknown) in arePredicatesComplements()
1024 unsigned PReg1 = getPredicatedRegister(MI1, HII); in arePredicatesComplements()
1025 unsigned PReg2 = getPredicatedRegister(MI2, HII); in arePredicatesComplements()
1029 getPredicateSense(MI1, HII) != getPredicateSense(MI2, HII) && in arePredicatesComplements()
1030 HII->isDotNewInst(MI1) == HII->isDotNewInst(MI2); in arePredicatesComplements()
1085 if (HII->isSolo(MI)) in isSoloInstruction()
1107 const HexagonInstrInfo &HII) { in cannotCoexistAsymm() argument
1110 HII.isHVXMemWithAIndirect(MI, MJ)) in cannotCoexistAsymm()
1115 if (MI.mayStore() && HII.isRestrictNoSlot1Store(MJ) && HII.isPureSlot0(MJ)) in cannotCoexistAsymm()
1127 if (HII.isNewValueStore(MI) && MJ.mayStore()) in cannotCoexistAsymm()
1144 unsigned TJ = HII.getType(MJ); in cannotCoexistAsymm()
1163 return cannotCoexistAsymm(MI, MJ, *HII) || cannotCoexistAsymm(MJ, MI, *HII); in cannotCoexist()
1214 if (HII->isPredicated(I) || HII->isPredicated(J)) in hasDeadDependence()
1238 if ((HII->isSaveCalleeSavedRegsCall(I) && in hasControlDependence()
1240 (HII->isSaveCalleeSavedRegsCall(J) && in hasControlDependence()
1252 if (MI.isCall() || HII->isDeallocRet(MI) || HII->isNewValueJump(MI)) in hasControlDependence()
1254 if (HII->isPredicated(MI) && HII->isPredicatedNew(MI) && HII->isJumpR(MI)) in hasControlDependence()
1259 if (HII->isLoopN(I) && isBadForLoopN(J)) in hasControlDependence()
1261 if (HII->isLoopN(J) && isBadForLoopN(I)) in hasControlDependence()
1266 return HII->isDeallocRet(I) && in hasControlDependence()
1286 assert((J.isCall() || HII->isTailCall(J)) && "Regmask on a non-call"); in hasRegMaskDependence()
1308 if (HII->isNewValueInst(J) || HII->isMemOp(J) || HII->isMemOp(I)) in hasDualStoreDependence()
1313 bool MopStI = HII->isMemOp(I) || StoreI; in hasDualStoreDependence()
1314 bool MopStJ = HII->isMemOp(J) || StoreJ; in hasDualStoreDependence()
1319 return (StoreJ && HII->isDeallocRet(I)) || (StoreI && HII->isDeallocRet(J)); in hasDualStoreDependence()
1364 if (NextMII != I.getParent()->end() && HII->isNewValueJump(*NextMII)) { in isLegalToPacketizeTogether()
1389 HII->isLoopN(*PI)) { in isLegalToPacketizeTogether()
1440 if (I.isCall() || HII->isJumpR(I) || I.isReturn() || HII->isTailCall(I)) { in isLegalToPacketizeTogether()
1454 if (DepType == SDep::Data && HII->isDotCurInst(J)) { in isLegalToPacketizeTogether()
1455 if (HII->isHVXVec(I)) in isLegalToPacketizeTogether()
1469 if (HII->isNewValueJump(I)) in isLegalToPacketizeTogether()
1475 if (HII->isPredicated(I) && HII->isPredicated(J) && in isLegalToPacketizeTogether()
1532 bool NVStoreJ = HII->isNewValueStore(J); in isLegalToPacketizeTogether()
1533 bool NVStoreI = HII->isNewValueStore(I); in isLegalToPacketizeTogether()
1534 bool IsVecJ = HII->isHVXVec(J); in isLegalToPacketizeTogether()
1535 bool IsVecI = HII->isHVXVec(I); in isLegalToPacketizeTogether()
1539 if (LoadJ && LoadI && HII->isPureSlot0(J)) { in isLegalToPacketizeTogether()
1551 (!HII->isMemOp(J) && !HII->isMemOp(I)) && (!IsVecJ && !IsVecI)) in isLegalToPacketizeTogether()
1698 if (HII->isMemOp(*MJ)) in foundLSInPacket()
1702 if (MJ->mayStore() && !HII->isNewValueStore(*MJ)) in foundLSInPacket()
1729 bool ExtMI = HII->isExtended(MI) || HII->isConstExtended(MI); in addToPacket()
1742 bool ExtNvjMI = HII->isExtended(NvjMI) || HII->isConstExtended(NvjMI); in addToPacket()
1813 for (auto &I : make_range(HII->expandVGatherPseudo(*MI), NextMI)) in endPacket()
1824 HII->setBundleNoShuf(BundleMII); in endPacket()
1856 PacketHasSLOT0OnlyInsn |= HII->isPureSlot0(*MJ); in shouldAddToPacket()
1858 int Opcode = HII->getDuplexOpcode(MI, false); in shouldAddToPacket()
1862 if (HII->isDuplexPair(MI, *MJ) && !PacketHasSLOT0OnlyInsn) { in shouldAddToPacket()
1870 MIRef.setDesc(HII->get(Opcode)); in shouldAddToPacket()
1924 HII->isNewValueJump(I) || HII->isToBeScheduledASAP(*J, I)) in calcStall()