Lines Matching refs:HII
116 const HexagonInstrInfo *HII = nullptr; member in __anonf0f5588d0111::HexagonPacketizer
139 HII = MF.getSubtarget<HexagonSubtarget>().getInstrInfo(); in INITIALIZE_PASS_DEPENDENCY()
212 HII = HST.getInstrInfo(); in runOnMachineFunction()
219 HII->genAllInsnTimingClasses(MF); in runOnMachineFunction()
245 HII->translateInstrsForDup(MF, true); in runOnMachineFunction()
254 while (RB != End && HII->isSchedulingBoundary(*RB, &MB, MF)) in runOnMachineFunction()
259 while (RE != End && !HII->isSchedulingBoundary(*RE, &MB, MF)) in runOnMachineFunction()
274 HII->translateInstrsForDup(MF, false); in runOnMachineFunction()
294 auto *ExtMI = MF.CreateMachineInstr(HII->get(Hexagon::A4_ext), DebugLoc()); in tryAllocateResourcesForConstExt()
308 if (HII->isDeallocRet(MI)) in isCallDependent()
364 if (HII->isHVXVec(MI) && MI.mayStore()) in isNewifiable()
366 return HII->isPredicated(MI) && HII->getDotNewPredOp(MI, nullptr) > 0; in isNewifiable()
369 return HII->mayBeNewStore(MI); in isNewifiable()
379 int CurOpcode = HII->getDotCurOp(MI); in promoteToDotCur()
380 MI.setDesc(HII->get(CurOpcode)); in promoteToDotCur()
388 if (HII->isDotCurInst(*BI)) { in cleanUpDotCur()
401 MI->setDesc(HII->get(HII->getNonDotCurOp(*MI))); in cleanUpDotCur()
409 if (!HII->isHVXVec(MI)) in canPromoteToDotCur()
411 if (!HII->isHVXVec(*MII)) in canPromoteToDotCur()
415 if (HII->isDotCurInst(MI) && !HII->mayBeCurLoad(MI)) in canPromoteToDotCur()
418 if (!HII->mayBeCurLoad(MI)) in canPromoteToDotCur()
463 NewOpcode = HII->getDotNewPredOp(MI, MBPI); in promoteToDotNew()
465 NewOpcode = HII->getDotNewOp(MI); in promoteToDotNew()
466 MI.setDesc(HII->get(NewOpcode)); in promoteToDotNew()
471 int NewOpcode = HII->getDotOldOp(MI); in demoteToDotOld()
472 MI.setDesc(HII->get(NewOpcode)); in demoteToDotOld()
490 if (HII->isValidOffset(Opc, NewOff, HRI)) { in useCallersSP()
521 if (!HII->getBaseAndOffsetPosition(MI, BPI, OPI)) in updateOffset()
524 if (!HII->getBaseAndOffsetPosition(MJ, BPJ, OPJ)) in updateOffset()
537 if (!HII->getIncrementValue(MJ, Incr)) in updateOffset()
541 if (!HII->isValidOffset(MI.getOpcode(), Offset+Incr, HRI)) in updateOffset()
553 if (!HII->getBaseAndOffsetPosition(MI, BP, OP)) in undoChangedOffset()
567 const HexagonInstrInfo *HII) { in getPredicateSense() argument
568 if (!HII->isPredicated(MI)) in getPredicateSense()
570 if (HII->isPredicatedTrue(MI)) in getPredicateSense()
576 const HexagonInstrInfo *HII) { in getPostIncrementOperand() argument
577 assert(HII->isPostIncrement(MI) && "Not a post increment operation."); in getPostIncrementOperand()
653 if (!HII->mayBeNewStore(MI)) in canPromoteToNewValueStore()
664 const TargetRegisterClass *PacketRC = HII->getRegClass(MCID, 0, HRI, MF); in canPromoteToNewValueStore()
679 if (HII->isPostIncrement(MI) && in canPromoteToNewValueStore()
680 getPostIncrementOperand(MI, HII).getReg() == DepReg) { in canPromoteToNewValueStore()
684 if (HII->isPostIncrement(PacketMI) && PacketMI.mayLoad() && in canPromoteToNewValueStore()
685 getPostIncrementOperand(PacketMI, HII).getReg() == DepReg) { in canPromoteToNewValueStore()
699 if (HII->isPredicated(PacketMI)) { in canPromoteToNewValueStore()
700 if (!HII->isPredicated(MI)) in canPromoteToNewValueStore()
742 HII->isDotNewInst(PacketMI) != HII->isDotNewInst(MI) || in canPromoteToNewValueStore()
743 getPredicateSense(MI, HII) != getPredicateSense(PacketMI, HII)) in canPromoteToNewValueStore()
782 if (!HII->isPostIncrement(MI)) { in canPromoteToNewValueStore()
822 if (!HII->mayBeNewStore(MI)) in canPromoteToNewValue()
853 if (HII->isDotNewInst(MI) && !HII->mayBeNewStore(MI)) in canPromoteToDotNew()
877 const TargetRegisterClass *VecRC = HII->getRegClass(MCID, 0, HRI, MF); in canPromoteToDotNew()
883 return HII->predCanBeUsedAsDotNew(PI, DepReg); in canPromoteToDotNew()
885 if (RC != &Hexagon::PredRegsRegClass && !HII->mayBeNewStore(MI)) in canPromoteToDotNew()
890 int NewOpcode = (RC != &Hexagon::PredRegsRegClass) ? HII->getDotNewOp(MI) : in canPromoteToDotNew()
891 HII->getDotNewPredOp(MI, MBPI); in canPromoteToDotNew()
892 const MCInstrDesc &D = HII->get(NewOpcode); in canPromoteToDotNew()
925 if (!HII->isPredicated(*I)) in restrictingDepExistInPacket()
970 if (getPredicateSense(MI1, HII) == PK_Unknown || in arePredicatesComplements()
971 getPredicateSense(MI2, HII) == PK_Unknown) in arePredicatesComplements()
1023 unsigned PReg1 = getPredicatedRegister(MI1, HII); in arePredicatesComplements()
1024 unsigned PReg2 = getPredicatedRegister(MI2, HII); in arePredicatesComplements()
1028 getPredicateSense(MI1, HII) != getPredicateSense(MI2, HII) && in arePredicatesComplements()
1029 HII->isDotNewInst(MI1) == HII->isDotNewInst(MI2); in arePredicatesComplements()
1084 if (HII->isSolo(MI)) in isSoloInstruction()
1106 const HexagonInstrInfo &HII) { in cannotCoexistAsymm() argument
1109 HII.isHVXMemWithAIndirect(MI, MJ)) in cannotCoexistAsymm()
1114 if (MI.mayStore() && HII.isRestrictNoSlot1Store(MJ) && HII.isPureSlot0(MJ)) in cannotCoexistAsymm()
1126 if (HII.isNewValueStore(MI) && MJ.mayStore()) in cannotCoexistAsymm()
1143 unsigned TJ = HII.getType(MJ); in cannotCoexistAsymm()
1162 return cannotCoexistAsymm(MI, MJ, *HII) || cannotCoexistAsymm(MJ, MI, *HII); in cannotCoexist()
1213 if (HII->isPredicated(I) || HII->isPredicated(J)) in hasDeadDependence()
1237 if ((HII->isSaveCalleeSavedRegsCall(I) && in hasControlDependence()
1239 (HII->isSaveCalleeSavedRegsCall(J) && in hasControlDependence()
1251 if (MI.isCall() || HII->isDeallocRet(MI) || HII->isNewValueJump(MI)) in hasControlDependence()
1253 if (HII->isPredicated(MI) && HII->isPredicatedNew(MI) && HII->isJumpR(MI)) in hasControlDependence()
1258 if (HII->isLoopN(I) && isBadForLoopN(J)) in hasControlDependence()
1260 if (HII->isLoopN(J) && isBadForLoopN(I)) in hasControlDependence()
1265 return HII->isDeallocRet(I) && in hasControlDependence()
1285 assert((J.isCall() || HII->isTailCall(J)) && "Regmask on a non-call"); in hasRegMaskDependence()
1307 if (HII->isNewValueInst(J) || HII->isMemOp(J) || HII->isMemOp(I)) in hasDualStoreDependence()
1312 bool MopStI = HII->isMemOp(I) || StoreI; in hasDualStoreDependence()
1313 bool MopStJ = HII->isMemOp(J) || StoreJ; in hasDualStoreDependence()
1318 return (StoreJ && HII->isDeallocRet(I)) || (StoreI && HII->isDeallocRet(J)); in hasDualStoreDependence()
1363 if (NextMII != I.getParent()->end() && HII->isNewValueJump(*NextMII)) { in isLegalToPacketizeTogether()
1388 HII->isLoopN(*PI)) { in isLegalToPacketizeTogether()
1439 if (I.isCall() || HII->isJumpR(I) || I.isReturn() || HII->isTailCall(I)) { in isLegalToPacketizeTogether()
1453 if (DepType == SDep::Data && HII->isDotCurInst(J)) { in isLegalToPacketizeTogether()
1454 if (HII->isHVXVec(I)) in isLegalToPacketizeTogether()
1468 if (HII->isNewValueJump(I)) in isLegalToPacketizeTogether()
1474 if (HII->isPredicated(I) && HII->isPredicated(J) && in isLegalToPacketizeTogether()
1531 bool NVStoreJ = HII->isNewValueStore(J); in isLegalToPacketizeTogether()
1532 bool NVStoreI = HII->isNewValueStore(I); in isLegalToPacketizeTogether()
1533 bool IsVecJ = HII->isHVXVec(J); in isLegalToPacketizeTogether()
1534 bool IsVecI = HII->isHVXVec(I); in isLegalToPacketizeTogether()
1538 if (LoadJ && LoadI && HII->isPureSlot0(J)) { in isLegalToPacketizeTogether()
1550 (!HII->isMemOp(J) && !HII->isMemOp(I)) && (!IsVecJ && !IsVecI)) in isLegalToPacketizeTogether()
1697 if (HII->isMemOp(*MJ)) in foundLSInPacket()
1701 if (MJ->mayStore() && !HII->isNewValueStore(*MJ)) in foundLSInPacket()
1728 bool ExtMI = HII->isExtended(MI) || HII->isConstExtended(MI); in addToPacket()
1741 bool ExtNvjMI = HII->isExtended(NvjMI) || HII->isConstExtended(NvjMI); in addToPacket()
1812 for (auto &I : make_range(HII->expandVGatherPseudo(*MI), NextMI)) in endPacket()
1823 HII->setBundleNoShuf(BundleMII); in endPacket()
1855 PacketHasSLOT0OnlyInsn |= HII->isPureSlot0(*MJ); in shouldAddToPacket()
1857 int Opcode = HII->getDuplexOpcode(MI, false); in shouldAddToPacket()
1861 if (HII->isDuplexPair(MI, *MJ) && !PacketHasSLOT0OnlyInsn) { in shouldAddToPacket()
1869 MIRef.setDesc(HII->get(Opcode)); in shouldAddToPacket()
1923 HII->isNewValueJump(I) || HII->isToBeScheduledASAP(*J, I)) in calcStall()