Lines Matching defs:SUnit
95 std::optional<SmallVector<SUnit *, 4>> Cache;
99 apply(const SUnit *, const ArrayRef<SUnit *>,
108 Cache = SmallVector<SUnit *, 4>();
115 using SUnitsToCandidateSGsMap = DenseMap<SUnit *, SmallVector<int, 4>>;
144 bool tryAddEdge(SUnit *A, SUnit *B);
152 SmallVector<SUnit *, 32> Collection;
158 bool canAddSU(SUnit &SU) const;
163 void link(SUnit &SU, bool MakePred = false);
167 int link(SUnit &SU, bool MakePred,
168 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
173 void link(SUnit &SU, function_ref<bool(const SUnit *A, const SUnit *B)> P);
191 bool allowedByRules(const SUnit *SU,
201 void add(SUnit &SU) {
219 void initSchedGroup(std::vector<SUnit>::reverse_iterator RIter,
244 static void resetEdges(SUnit &SU, ScheduleDAGInstrs *DAG) {
260 using SUToCandSGsPair = std::pair<SUnit *, SmallVector<int, 4>>;
326 void greedyFind(std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I,
342 int addEdges(SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
343 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
348 int linkSUnit(SUnit *SU, int SGID,
349 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I, T E);
351 void removeEdges(const std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
395 SmallVector<SUnit *, 32> TempCollection = SG.Collection;
397 auto SchedBarr = llvm::find_if(TempCollection, [](SUnit *SU) {
454 SUnit *SGBarr = nullptr;
476 SUnit *SU, int SGID, std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges,
493 SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
494 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges) {
511 const std::vector<std::pair<SUnit *, SUnit *>> &EdgesToRemove) {
515 SUnit *Pred = PredSuccPair.first;
516 SUnit *Succ = PredSuccPair.second;
590 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
653 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
720 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I, T E) {
735 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
779 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
933 SmallVector<SUnit *, 4> MFMAChainSeeds;
942 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
959 Cache->begin(), Cache->end(), [&SU, &DAG](SUnit *TargetSU) {
960 return DAG->IsReachable(TargetSU, const_cast<SUnit *>(SU));
976 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
983 SmallVector<SUnit *, 8> Worklist;
1002 return DAG->IsReachable((*Cache)[0], const_cast<SUnit *>(SU));
1015 SUnit *ChainSeed;
1018 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1048 return DAG->IsReachable((*Cache)[0], const_cast<SUnit *>(SU));
1051 EnablesNthMFMAInChain(unsigned Number, SUnit *ChainSeed,
1060 /// the SUnit have less than \p Size successors.
1067 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1100 /// whether all successors of the SUnit have greater than or equal to \p Size
1108 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1143 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1156 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1168 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1183 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1220 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1239 if (DAG->IsReachable(const_cast<SUnit *>(SU), OtherEle))
1255 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1270 SUnit *ChainSeed;
1273 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1304 IsExactMFMA(unsigned Number, SUnit *ChainSeed, const SIInstrInfo *TII,
1315 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1318 SmallVector<SUnit *, 12> Worklist;
1365 SmallVector<SUnit *, 10> ExpPipeCands;
1366 SmallVector<SUnit *, 10> MFMAPipeCands;
1367 SmallVector<SUnit *, 10> MFMAPipeSUs;
1368 SmallVector<SUnit *, 10> PackSUs;
1369 SmallVector<SUnit *, 10> CvtSUs;
1382 for (SUnit &SU : DAG->SUnits) {
1413 std::optional<SUnit *> TempMFMA;
1414 std::optional<SUnit *> TempExp;
1443 [&SuccSU](SUnit *PotentialMatch) {
1461 std::optional<SUnit *> TempCvt;
1505 PackSUs.begin(), PackSUs.end(), [this, &TempExp](SUnit *VPack) {
1542 [this, &PackPred](SUnit *ExpBase) {
1859 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1878 if (DAG->IsReachable(Elt, const_cast<SUnit *>(SU)))
1892 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1902 SUnit *SuccUnit = Succ.getSUnit();
1916 return llvm::any_of(*Cache, [&SU](SUnit *Elt) {
1930 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1946 OtherGroup->Collection.end(), [&SU](SUnit *Elt) {
1962 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
2003 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
2038 return llvm::any_of(*Cache, [&SU, &DAG](SUnit *Elt) {
2039 return DAG->IsReachable(const_cast<SUnit *>(SU), Elt);
2080 SmallVector<SUnit *, 6> DSWithPerms;
2112 DenseMap<MachineInstr *, SUnit *> VMEMLookup;
2113 SmallVector<SUnit *, 6> Counted;
2115 SUnit *Cand = nullptr;
2343 void addSchedBarrierEdges(SUnit &SU);
2358 std::vector<SUnit>::reverse_iterator RIter);
2360 bool initIGLPOpt(SUnit &SU);
2381 bool SchedGroup::tryAddEdge(SUnit *A, SUnit *B) {
2448 int SchedGroup::link(SUnit &SU, bool MakePred,
2449 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges) {
2452 SUnit *B = &SU;
2473 void SchedGroup::link(SUnit &SU, bool MakePred) {
2475 SUnit *B = &SU;
2485 void SchedGroup::link(SUnit &SU,
2486 function_ref<bool(const SUnit *A, const SUnit *B)> P) {
2488 SUnit *B = &SU;
2501 bool SchedGroup::canAddSU(SUnit &SU) const {
2526 void SchedGroup::initSchedGroup(std::vector<SUnit>::reverse_iterator RIter,
2528 SUnit &InitSU = *RIter;
2596 void IGroupLPDAGMutation::addSchedBarrierEdges(SUnit &SchedBarrier) {
2612 (function_ref<bool(const SUnit *A, const SUnit *B)>)[](
2613 const SUnit *A, const SUnit *B) { return A->NodeNum > B->NodeNum; });
2656 std::vector<SUnit>::reverse_iterator RIter) {
2672 bool IGroupLPDAGMutation::initIGLPOpt(SUnit &SU) {