Lines Matching defs:SUnit
94 std::optional<SmallVector<SUnit *, 4>> Cache;
98 apply(const SUnit *, const ArrayRef<SUnit *>,
107 Cache = SmallVector<SUnit *, 4>();
114 using SUnitsToCandidateSGsMap = DenseMap<SUnit *, SmallVector<int, 4>>;
143 bool tryAddEdge(SUnit *A, SUnit *B);
151 SmallVector<SUnit *, 32> Collection;
157 bool canAddSU(SUnit &SU) const;
162 void link(SUnit &SU, bool MakePred = false);
166 int link(SUnit &SU, bool MakePred,
167 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
172 void link(SUnit &SU, function_ref<bool(const SUnit *A, const SUnit *B)> P);
190 bool allowedByRules(const SUnit *SU,
200 void add(SUnit &SU) {
218 void initSchedGroup(std::vector<SUnit>::reverse_iterator RIter,
242 using SUToCandSGsPair = std::pair<SUnit *, SmallVector<int, 4>>;
308 void greedyFind(std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I,
324 int addEdges(SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
325 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
330 int linkSUnit(SUnit *SU, int SGID,
331 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I, T E);
333 void removeEdges(const std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges);
377 SmallVector<SUnit *, 32> TempCollection = SG.Collection;
379 auto *SchedBarr = llvm::find_if(TempCollection, [](SUnit *SU) {
436 SUnit *SGBarr = nullptr;
457 SUnit *SU, int SGID, std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges,
474 SmallVectorImpl<SchedGroup> &SyncPipeline, SUnit *SU, int SGID,
475 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges) {
492 const std::vector<std::pair<SUnit *, SUnit *>> &EdgesToRemove) {
496 SUnit *Pred = PredSuccPair.first;
497 SUnit *Succ = PredSuccPair.second;
571 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
634 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
701 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges, T I, T E) {
716 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
760 std::vector<std::pair<SUnit *, SUnit *>> AddedEdges;
915 SmallVector<SUnit *, 4> MFMAChainSeeds;
924 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
940 auto Reaches = any_of(*Cache, [&SU, &DAG](SUnit *TargetSU) {
941 return DAG->IsReachable(TargetSU, const_cast<SUnit *>(SU));
957 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
964 SmallVector<SUnit *, 8> Worklist;
983 return DAG->IsReachable((*Cache)[0], const_cast<SUnit *>(SU));
996 SUnit *ChainSeed;
999 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1029 return DAG->IsReachable((*Cache)[0], const_cast<SUnit *>(SU));
1032 EnablesNthMFMAInChain(unsigned Number, SUnit *ChainSeed,
1041 /// the SUnit have less than \p Size successors.
1048 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1081 /// whether all successors of the SUnit have greater than or equal to \p Size
1089 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1124 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1137 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1149 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1164 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1201 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1220 if (DAG->IsReachable(const_cast<SUnit *>(SU), OtherEle))
1236 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1251 SUnit *ChainSeed;
1254 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1285 IsExactMFMA(unsigned Number, SUnit *ChainSeed, const SIInstrInfo *TII,
1296 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1299 SmallVector<SUnit *, 12> Worklist;
1346 SmallVector<SUnit *, 10> ExpPipeCands;
1347 SmallVector<SUnit *, 10> MFMAPipeCands;
1348 SmallVector<SUnit *, 10> MFMAPipeSUs;
1349 SmallVector<SUnit *, 10> PackSUs;
1350 SmallVector<SUnit *, 10> CvtSUs;
1363 for (SUnit &SU : DAG->SUnits) {
1394 std::optional<SUnit *> TempMFMA;
1395 std::optional<SUnit *> TempExp;
1421 any_of(MFMAPipeSUs, [&SuccSU](SUnit *PotentialMatch) {
1439 std::optional<SUnit *> TempCvt;
1482 PackSUs.begin(), PackSUs.end(), [this, &TempExp](SUnit *VPack) {
1519 [this, &PackPred](SUnit *ExpBase) {
1878 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1897 if (DAG->IsReachable(Elt, const_cast<SUnit *>(SU)))
1911 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1921 SUnit *SuccUnit = Succ.getSUnit();
1935 return llvm::any_of(*Cache, [&SU](SUnit *Elt) {
1949 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
1964 return any_of(OtherGroup->Collection, [&SU](SUnit *Elt) {
1977 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
2018 bool apply(const SUnit *SU, const ArrayRef<SUnit *> Collection,
2053 return llvm::any_of(*Cache, [&SU, &DAG](SUnit *Elt) {
2054 return DAG->IsReachable(const_cast<SUnit *>(SU), Elt);
2095 SmallVector<SUnit *, 6> DSWithPerms;
2127 DenseMap<MachineInstr *, SUnit *> VMEMLookup;
2128 SmallVector<SUnit *, 6> Counted;
2130 SUnit *Cand = nullptr;
2360 void addSchedBarrierEdges(SUnit &SU);
2375 std::vector<SUnit>::reverse_iterator RIter);
2377 bool initIGLPOpt(SUnit &SU);
2398 bool SchedGroup::tryAddEdge(SUnit *A, SUnit *B) {
2465 int SchedGroup::link(SUnit &SU, bool MakePred,
2466 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges) {
2469 SUnit *B = &SU;
2490 void SchedGroup::link(SUnit &SU, bool MakePred) {
2492 SUnit *B = &SU;
2502 void SchedGroup::link(SUnit &SU,
2503 function_ref<bool(const SUnit *A, const SUnit *B)> P) {
2505 SUnit *B = &SU;
2518 bool SchedGroup::canAddSU(SUnit &SU) const {
2543 void SchedGroup::initSchedGroup(std::vector<SUnit>::reverse_iterator RIter,
2545 SUnit &InitSU = *RIter;
2612 void IGroupLPDAGMutation::addSchedBarrierEdges(SUnit &SchedBarrier) {
2627 (function_ref<bool(const SUnit *A, const SUnit *B)>)[](
2628 const SUnit *A, const SUnit *B) { return A->NodeNum > B->NodeNum; });
2671 std::vector<SUnit>::reverse_iterator RIter) {
2686 bool IGroupLPDAGMutation::initIGLPOpt(SUnit &SU) {