|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
Declarations
include/llvm/CodeGen/TargetSubtargetInfo.h 42 class SDep;
lib/Target/Hexagon/HexagonSubtarget.h 37 class SDep;
References
include/llvm/ADT/SmallVector.h 75 AlignedCharArrayUnion<T> FirstEl;
114 using value_type = T;
115 using iterator = T *;
116 using const_iterator = const T *;
121 using reference = T &;
122 using const_reference = const T &;
123 using pointer = T *;
124 using const_pointer = const T *;
259 class SmallVectorTemplateBase<T, true> : public SmallVectorTemplateCommon<T> {
264 static void destroy_range(T *, T *) {}
264 static void destroy_range(T *, T *) {}
286 T1 *I, T1 *E, T2 *Dest,
286 T1 *I, T1 *E, T2 *Dest,
286 T1 *I, T1 *E, T2 *Dest,
287 typename std::enable_if<std::is_same<typename std::remove_const<T1>::type,
288 T2>::value>::type * = nullptr) {
294 memcpy(reinterpret_cast<void *>(Dest), I, (E - I) * sizeof(T));
299 void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); }
302 void push_back(const T &Elt) {
305 memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
315 class SmallVectorImpl : public SmallVectorTemplateBase<T> {
316 using SuperClass = SmallVectorTemplateBase<T>;
357 void resize(size_type N, const T &NV) {
374 LLVM_NODISCARD T pop_back_val() {
375 T Result = ::std::move(this->back());
397 void append(size_type NumInputs, const T &Elt) {
405 void append(std::initializer_list<T> IL) {
412 void assign(size_type NumElts, const T &Elt) {
429 void assign(std::initializer_list<T> IL) {
467 iterator insert(iterator I, T &&Elt) {
497 iterator insert(iterator I, const T &Elt) {
526 iterator insert(iterator I, size_type NumToInsert, const T &Elt) {
637 void insert(iterator I, std::initializer_list<T> IL) {
820 AlignedCharArrayUnion<T> InlineElts[N];
837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
846 explicit SmallVector(size_t Size, const T &Value = T())
865 SmallVector(std::initializer_list<T> IL) : SmallVectorImpl<T>(N) {
884 SmallVector(SmallVectorImpl<T> &&RHS) : SmallVectorImpl<T>(N) {
include/llvm/CodeGen/MachinePipeliner.h 245 bool isBackedge(SUnit *Source, const SDep &Dep) {
246 if (Dep.getKind() != SDep::Anti)
251 bool isLoopCarriedDep(SUnit *Source, const SDep &Dep, bool isSucc = true);
255 unsigned getDistance(SUnit *U, SUnit *V, const SDep &Dep) {
258 if (V->getInstr()->isPHI() && Dep.getKind() == SDep::Anti)
333 for (const SDep &Succ : Nodes[i]->Succs)
531 int earliestCycleInChain(const SDep &Dep);
535 int latestCycleInChain(const SDep &Dep);
include/llvm/CodeGen/MachineScheduler.h 373 void releaseSucc(SUnit *SU, SDep *SuccEdge);
375 void releasePred(SUnit *SU, SDep *PredEdge);
include/llvm/CodeGen/ScheduleDAG.h 129 bool overlaps(const SDep &Other) const;
131 bool operator==(const SDep &Other) const {
135 bool operator!=(const SDep &Other) const {
256 SmallVector<SDep, 4> Preds; ///< All sunit predecessors.
257 SmallVector<SDep, 4> Succs; ///< All sunit successors.
259 typedef SmallVectorImpl<SDep>::iterator pred_iterator;
260 typedef SmallVectorImpl<SDep>::iterator succ_iterator;
261 typedef SmallVectorImpl<SDep>::const_iterator const_pred_iterator;
262 typedef SmallVectorImpl<SDep>::const_iterator const_succ_iterator;
380 bool addPred(const SDep &D, bool Required = true);
385 SDep Dep(SU, SDep::Barrier);
385 SDep Dep(SU, SDep::Barrier);
394 void removePred(const SDep &D);
432 for (const SDep &Pred : Preds)
440 for (const SDep &Succ : Succs)
465 inline bool SDep::overlaps(const SDep &Other) const {
486 inline SDep::Kind SDep::getKind() const { return Dep.getInt(); }
658 const SDep &getSDep() const {
include/llvm/CodeGen/ScheduleDAGInstrs.h 356 bool addEdge(SUnit *SuccSU, const SDep &PredDep);
include/llvm/CodeGen/TargetSubtargetInfo.h 225 virtual void adjustSchedDependency(SUnit *def, SUnit *use, SDep &dep) const {}
include/llvm/Support/AlignOf.h 30 T t;
39 template <typename T> union SizerImpl<T> { char arr[sizeof(T)]; };
50 llvm::detail::SizerImpl<T, Ts...>)];
include/llvm/Support/type_traits.h 91 T t;
122 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
122 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
122 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
130 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
130 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
130 static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
145 std::is_copy_constructible<detail::trivial_helper<T>>::value;
147 !std::is_copy_constructible<T>::value;
151 std::is_move_constructible<detail::trivial_helper<T>>::value;
153 !std::is_move_constructible<T>::value;
157 is_copy_assignable<detail::trivial_helper<T>>::value;
159 !is_copy_assignable<T>::value;
163 is_move_assignable<detail::trivial_helper<T>>::value;
165 !is_move_assignable<T>::value;
169 std::is_destructible<detail::trivial_helper<T>>::value;
lib/CodeGen/AggressiveAntiDepBreaker.cpp 265 static void AntiDepEdges(const SUnit *SU, std::vector<const SDep *> &Edges) {
269 if ((P->getKind() == SDep::Anti) || (P->getKind() == SDep::Output)) {
269 if ((P->getKind() == SDep::Anti) || (P->getKind() == SDep::Output)) {
279 const SDep *Next = nullptr;
291 (NextDepth == PredTotalLatency && P->getKind() == SDep::Anti)) {
832 std::vector<const SDep *> Edges;
851 const SDep *Edge = Edges[i];
854 if ((Edge->getKind() != SDep::Anti) &&
855 (Edge->getKind() != SDep::Output)) continue;
897 (P->getKind() != SDep::Anti || P->getReg() != AntiDepReg) :
898 (P->getKind() == SDep::Data && P->getReg() == AntiDepReg)) {
905 if ((P->getSUnit() == NextSU) && (P->getKind() != SDep::Anti) &&
906 (P->getKind() != SDep::Output)) {
911 (P->getKind() == SDep::Data) &&
929 for (SDep S : PathSU->Succs) {
930 SDep::Kind K = S.getKind();
931 if (K != SDep::Data && K != SDep::Output && K != SDep::Anti)
931 if (K != SDep::Data && K != SDep::Output && K != SDep::Anti)
931 if (K != SDep::Data && K != SDep::Output && K != SDep::Anti)
lib/CodeGen/CriticalAntiDepBreaker.cpp 145 static const SDep *CriticalPathStep(const SUnit *SU) {
146 const SDep *Next = nullptr;
157 (NextDepth == PredTotalLatency && P->getKind() == SDep::Anti)) {
555 if (const SDep *Edge = CriticalPathStep(CriticalPathSU)) {
559 if (Edge->getKind() == SDep::Anti) {
581 (P->getKind() != SDep::Anti || P->getReg() != AntiDepReg) :
582 (P->getKind() == SDep::Data && P->getReg() == AntiDepReg)) {
lib/CodeGen/MachinePipeliner.cpp 613 if (SI.getKind() == SDep::Order) {
702 SDep Dep(Load, SDep::Barrier);
702 SDep Dep(Load, SDep::Barrier);
712 SDep Dep(Load, SDep::Barrier);
712 SDep Dep(Load, SDep::Barrier);
720 SDep Dep(Load, SDep::Barrier);
720 SDep Dep(Load, SDep::Barrier);
727 SDep Dep(Load, SDep::Barrier);
727 SDep Dep(Load, SDep::Barrier);
739 SDep Dep(Load, SDep::Barrier);
739 SDep Dep(Load, SDep::Barrier);
756 SmallVector<SDep, 4> RemoveDeps;
783 SDep Dep(SU, SDep::Anti, Reg);
783 SDep Dep(SU, SDep::Anti, Reg);
791 I.addPred(SDep(SU, SDep::Barrier));
803 SDep Dep(SU, SDep::Data, Reg);
803 SDep Dep(SU, SDep::Data, Reg);
812 I.addPred(SDep(SU, SDep::Barrier));
820 for (auto &PI : I.Preds) {
822 if (PMI->isPHI() && PI.getKind() == SDep::Order) {
870 SmallVector<SDep, 4> Deps;
881 for (auto &P : LastSU->Preds)
882 if (P.getSUnit() == &I && P.getKind() == SDep::Order)
891 SDep Dep(&I, SDep::Anti, NewBase);
891 SDep Dep(&I, SDep::Anti, NewBase);
1114 SmallVector<std::pair<SUnit *, SDep>, 8> DepsAdded;
1119 if (IP->getKind() != SDep::Anti)
1124 for (SmallVector<std::pair<SUnit *, SDep>, 8>::iterator I = DepsAdded.begin(),
1129 SDep &D = I->second;
1134 SDep Dep(SU, SDep::Anti, Reg);
1134 SDep Dep(SU, SDep::Anti, Reg);
1148 for (auto &SI : SUnits[i].Succs) {
1151 if (SI.getKind() == SDep::Output) {
1164 (SI.getKind() == SDep::Anti && !SI.getSUnit()->getInstr()->isPHI()))
1174 for (auto &PI : SUnits[i].Preds) {
1178 if (PI.getKind() == SDep::Order && PI.getSUnit()->getInstr()->mayLoad()) {
1298 for (auto &Dep : SU.Preds) {
1301 SDep::Kind DepKind = Dep.getKind();
1303 if (DepKind == SDep::Anti && TmpMI->isPHI())
1307 else if (DepKind == SDep::Data && !TmpMI->isPHI() && TmpSU->NumPreds > 0)
1318 for (auto &Dep : (*I)->Succs) {
1319 if (Dep.getKind() != SDep::Data)
1340 Src->addPred(SDep(I, SDep::Artificial));
1351 static bool ignoreDependence(const SDep &D, bool isPred) {
1354 return D.getKind() == SDep::Anti && isPred;
1464 if (IS->getKind() != SDep::Anti)
1496 if (PI->getKind() != SDep::Anti)
1522 for (auto &SI : Cur->Succs)
1524 for (auto &PI : Cur->Preds)
1525 if (PI.getKind() == SDep::Anti)
1742 for (auto &SI : SU->Succs) {
1747 for (auto &PI : SU->Preds) {
1871 for (const auto &I : maxHeight->Succs) {
1881 for (const auto &I : maxHeight->Preds) {
1882 if (I.getKind() != SDep::Anti)
1922 for (const auto &I : maxDepth->Preds) {
1930 for (const auto &I : maxDepth->Succs) {
1931 if (I.getKind() != SDep::Anti)
2204 bool SwingSchedulerDAG::isLoopCarriedDep(SUnit *Source, const SDep &Dep,
2206 if ((Dep.getKind() != SDep::Order && Dep.getKind() != SDep::Output) ||
2206 if ((Dep.getKind() != SDep::Order && Dep.getKind() != SDep::Output) ||
2213 if (Dep.getKind() == SDep::Output)
2339 int SMSchedule::earliestCycleInChain(const SDep &Dep) {
2341 SmallVector<SDep, 8> Worklist;
2345 const SDep &Cur = Worklist.pop_back_val();
2353 for (const auto &PI : PrevSU->Preds)
2354 if (PI.getKind() == SDep::Order || Dep.getKind() == SDep::Output)
2354 if (PI.getKind() == SDep::Order || Dep.getKind() == SDep::Output)
2362 int SMSchedule::latestCycleInChain(const SDep &Dep) {
2364 SmallVector<SDep, 8> Worklist;
2368 const SDep &Cur = Worklist.pop_back_val();
2376 for (const auto &SI : SuccSU->Succs)
2377 if (SI.getKind() == SDep::Order || Dep.getKind() == SDep::Output)
2377 if (SI.getKind() == SDep::Order || Dep.getKind() == SDep::Output)
2388 for (auto &P : SU->Preds)
2390 for (auto &S : P.getSUnit()->Succs)
2391 if (S.getKind() == SDep::Data && S.getSUnit()->getInstr()->isPHI())
2411 const SDep &Dep = SU->Preds[i];
2436 const SDep &Dep = SU->Succs[i];
2526 for (auto &S : SU->Succs) {
2529 if (S.getKind() == SDep::Order && stageScheduled(*I) == StageInst1) {
2537 else if (S.getKind() == SDep::Anti && stageScheduled(*I) == StageInst1) {
2543 for (auto &P : SU->Preds) {
2546 if (P.getKind() == SDep::Order && stageScheduled(*I) == StageInst1) {
2649 for (auto &SI : SU.Succs)
2703 for (SDep &PredEdge : SU->Preds) {
2714 for (SDep &SuccEdge : SU->Succs) {
lib/CodeGen/MachineScheduler.cpp 617 void ScheduleDAGMI::releaseSucc(SUnit *SU, SDep *SuccEdge) {
646 for (SDep &Succ : SU->Succs)
654 void ScheduleDAGMI::releasePred(SUnit *SU, SDep *PredEdge) {
683 for (SDep &Pred : SU->Preds)
1576 DAG->addEdge(SUb, SDep(SUa, SDep::Cluster))) {
1583 for (const SDep &Succ : SUa->Succs) {
1588 DAG->addEdge(Succ.getSUnit(), SDep(SUb, SDep::Artificial));
1608 for (const SDep &Pred : SU.Preds) {
1770 for (const SDep &Succ : LastLocalSU->Succs) {
1771 if (Succ.getKind() != SDep::Data || Succ.getReg() != LocalReg)
1785 for (const SDep &Pred : GlobalSU->Preds) {
1786 if (Pred.getKind() != SDep::Anti || Pred.getReg() != GlobalReg)
1800 DAG->addEdge(GlobalSU, SDep(*I, SDep::Weak));
1806 DAG->addEdge(FirstLocalSU, SDep(*I, SDep::Weak));
3257 SmallVectorImpl<SDep> &Deps = isTop ? SU->Preds : SU->Succs;
3261 for (SDep &Dep : Deps) {
3262 if (Dep.getKind() != SDep::Data ||
lib/CodeGen/MacroFusion.cpp 35 static bool isHazard(const SDep &Dep) {
36 return Dep.getKind() == SDep::Anti || Dep.getKind() == SDep::Output;
36 return Dep.getKind() == SDep::Anti || Dep.getKind() == SDep::Output;
43 for (SDep &SI : FirstSU.Succs)
47 for (SDep &SI : SecondSU.Preds)
56 if (!DAG.addEdge(&SecondSU, SDep(&FirstSU, SDep::Cluster)))
60 for (SDep &SI : FirstSU.Succs)
64 for (SDep &SI : SecondSU.Preds)
77 for (const SDep &SI : FirstSU.Succs) {
84 DAG.addEdge(SU, SDep(&SecondSU, SDep::Artificial));
90 for (const SDep &SI : SecondSU.Preds) {
96 DAG.addEdge(&FirstSU, SDep(SU, SDep::Artificial));
104 DAG.addEdge(&FirstSU, SDep(&SU, SDep::Artificial));
155 for (SDep &Dep : AnchorSU.Preds) {
lib/CodeGen/PostRASchedulerList.cpp 190 void ReleaseSucc(SUnit *SU, SDep *SuccEdge);
453 void SchedulePostRATDList::ReleaseSucc(SUnit *SU, SDep *SuccEdge) {
lib/CodeGen/ScheduleDAG.cpp 107 bool SUnit::addPred(const SDep &D, bool Required) {
109 for (SDep &PredDep : Preds) {
120 SDep ForwardD = PredDep;
122 for (SDep &SuccDep : PredSU->Succs) {
134 SDep P = D;
138 if (D.getKind() == SDep::Data) {
175 void SUnit::removePred(const SDep &D) {
177 SmallVectorImpl<SDep>::iterator I = llvm::find(Preds, D);
181 SDep P = D;
184 SmallVectorImpl<SDep>::iterator Succ = llvm::find(N->Succs, P);
189 if (P.getKind() == SDep::Data) {
224 for (SDep &SuccDep : SU->Succs) {
239 for (SDep &PredDep : SU->Preds) {
272 for (const SDep &PredDep : Cur->Preds) {
303 for (const SDep &SuccDep : Cur->Succs) {
333 if (I->getKind() == SDep::Data && I->getSUnit()->getDepth() > MaxDepth)
368 for (const SDep &Dep : SU.Preds) {
378 for (const SDep &Dep : SU.Succs) {
500 for (const SDep &PredDep : SU->Preds) {
515 for (const SDep &PD : SU.Preds) {
580 for (const SDep &SuccDep
709 for (const SDep &PredDep : TargetSU->Preds)
lib/CodeGen/ScheduleDAGInstrs.cpp 254 SDep Dep;
256 Dep = SDep(SU, SDep::Artificial);
261 Dep = SDep(SU, SDep::Data, *Alias);
298 SDep::Kind Kind = MO.isUse() ? SDep::Anti : SDep::Output;
298 SDep::Kind Kind = MO.isUse() ? SDep::Anti : SDep::Output;
298 SDep::Kind Kind = MO.isUse() ? SDep::Anti : SDep::Output;
307 (Kind != SDep::Output || !MO.isDead() ||
309 if (Kind == SDep::Anti)
312 SDep Dep(SU, Kind, /*Reg=*/*Alias);
439 SDep Dep(SU, SDep::Data, Reg);
439 SDep Dep(SU, SDep::Data, Reg);
482 SDep Dep(SU, SDep::Output, Reg);
482 SDep Dep(SU, SDep::Output, Reg);
528 V2SU.SU->addPred(SDep(SU, SDep::Anti, Reg));
542 SDep Dep(SUa, SDep::MayAliasMem);
542 SDep Dep(SUa, SDep::MayAliasMem);
873 SDep Dep(SU, SDep::Artificial);
873 SDep Dep(SU, SDep::Artificial);
1195 bool ScheduleDAGInstrs::addEdge(SUnit *SuccSU, const SDep &PredDep) {
1274 for (const SDep &PredDep : SU->Preds) {
1275 if (PredDep.getKind() != SDep::Data)
1303 void visitPostorderEdge(const SDep &PredDep, const SUnit *Succ) {
1310 void visitCrossEdge(const SDep &PredDep, const SUnit *Succ) {
1353 bool joinPredSubtree(const SDep &PredDep, const SUnit *Succ,
1366 for (const SDep &SuccDep : PredSU->Succs) {
1367 if (SuccDep.getKind() == SDep::Data) {
1415 const SDep *backtrack() {
1432 for (const SDep &SuccDep : SU->Succs) {
1433 if (SuccDep.getKind() == SDep::Data &&
1457 const SDep &PredDep = *DFS.getPred();
1460 if (PredDep.getKind() != SDep::Data
1474 const SDep *PredDep = DFS.backtrack();
lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp 69 for (SDep &Pred : SU->Preds) {
107 for (const SDep &Succ : SU->Succs) {
144 for (const SDep &Succ : SU->Succs)
153 for (SDep &Pred : SU->Preds)
212 for (const SDep &Pred : SU->Preds) {
229 for (const SDep &Succ : SU->Succs)
268 for (const SDep &Succ : Packet[i]->Succs) {
498 for (SDep &Pred : SU->Preds) {
513 for (const SDep &Succ : SU->Succs) {
lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp 88 void AddPred(SUnit *SU, const SDep &D) {
94 void RemovePred(SUnit *SU, const SDep &D) {
99 void ReleasePred(SUnit *SU, SDep *PredEdge);
139 void ScheduleDAGFast::ReleasePred(SUnit *SU, SDep *PredEdge) {
162 for (SDep &Pred : SU->Preds) {
192 for (SDep &Succ : SU->Succs) {
277 SDep ChainPred;
278 SmallVector<SDep, 4> ChainSuccs;
279 SmallVector<SDep, 4> LoadPreds;
280 SmallVector<SDep, 4> NodePreds;
281 SmallVector<SDep, 4> NodeSuccs;
282 for (SDep &Pred : SU->Preds) {
291 for (SDep &Succ : SU->Succs) {
304 const SDep &Pred = LoadPreds[i];
311 const SDep &Pred = NodePreds[i];
316 SDep D = NodeSuccs[i];
324 SDep D = ChainSuccs[i];
334 SDep D(LoadSU, SDep::Barrier);
334 SDep D(LoadSU, SDep::Barrier);
352 for (SDep &Pred : SU->Preds)
358 SmallVector<std::pair<SUnit *, SDep>, 4> DelDeps;
359 for (SDep &Succ : SU->Succs) {
364 SDep D = Succ;
394 SmallVector<std::pair<SUnit *, SDep>, 4> DelDeps;
395 for (SDep &Succ : SU->Succs) {
400 SDep D = Succ;
409 SDep FromDep(SU, SDep::Data, Reg);
409 SDep FromDep(SU, SDep::Data, Reg);
412 SDep ToDep(CopyFromSU, SDep::Data, 0);
412 SDep ToDep(CopyFromSU, SDep::Data, 0);
474 for (SDep &Pred : SU->Preds) {
597 AddPred(TrySU, SDep(Copies.front(), SDep::Artificial));
604 AddPred(NewDef, SDep(TrySU, SDep::Artificial));
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp 225 void AddPredQueued(SUnit *SU, const SDep &D) {
233 void AddPred(SUnit *SU, const SDep &D) {
241 void RemovePred(SUnit *SU, const SDep &D) {
252 void ReleasePred(SUnit *SU, const SDep *PredEdge);
259 void CapturePred(SDep *PredEdge);
398 void ScheduleDAGRRList::ReleasePred(SUnit *SU, const SDep *PredEdge) {
556 for (SDep &Pred : SU->Preds) {
770 for (SDep &Succ : SU->Succs) {
820 void ScheduleDAGRRList::CapturePred(SDep *PredEdge) {
839 for (SDep &Pred : SU->Preds) {
886 for (auto &Succ : SU->Succs) {
900 for (auto &Succ2 : SU->Succs) {
1057 SmallVector<SDep, 4> ChainPreds;
1058 SmallVector<SDep, 4> ChainSuccs;
1059 SmallVector<SDep, 4> LoadPreds;
1060 SmallVector<SDep, 4> NodePreds;
1061 SmallVector<SDep, 4> NodeSuccs;
1062 for (SDep &Pred : SU->Preds) {
1070 for (SDep &Succ : SU->Succs) {
1078 for (const SDep &Pred : ChainPreds) {
1083 for (const SDep &Pred : LoadPreds) {
1088 for (const SDep &Pred : NodePreds) {
1092 for (SDep D : NodeSuccs) {
1103 for (SDep D : ChainSuccs) {
1115 SDep D(LoadSU, SDep::Data, 0);
1115 SDep D(LoadSU, SDep::Data, 0);
1187 for (SDep &Pred : SU->Preds)
1193 AddPredQueued(NewSU, SDep(SU, SDep::Artificial));
1197 SmallVector<std::pair<SUnit *, SDep>, 4> DelDeps;
1198 for (SDep &Succ : SU->Succs) {
1203 SDep D = Succ;
1236 SmallVector<std::pair<SUnit *, SDep>, 4> DelDeps;
1237 for (SDep &Succ : SU->Succs) {
1242 SDep D = Succ;
1251 AddPredQueued(SuccSU, SDep(CopyFromSU, SDep::Artificial));
1257 SDep FromDep(SU, SDep::Data, Reg);
1257 SDep FromDep(SU, SDep::Data, Reg);
1260 SDep ToDep(CopyFromSU, SDep::Data, 0);
1260 SDep ToDep(CopyFromSU, SDep::Data, 0);
1355 for (SDep &Pred : SU->Preds) {
1526 AddPredQueued(TrySU, SDep(BtSU, SDep::Artificial));
1580 AddPredQueued(TrySU, SDep(Copies.front(), SDep::Artificial));
1587 AddPredQueued(NewDef, SDep(TrySU, SDep::Artificial));
1984 for (const SDep &Pred : TempSU->Preds) {
2087 for (const SDep &Pred : SU->Preds) {
2136 for (const SDep &Pred : SU->Preds) {
2179 for (const SDep &Pred : SU->Preds) {
2261 for (const SDep &Pred : SU->Preds) {
2329 for (const SDep &Succ : SU->Succs) {
2347 for (const SDep &Pred : SU->Preds) {
2358 for (const SDep &Pred : SU->Preds) {
2380 for (const SDep &Succ : SU->Succs) {
2417 for (const SDep &Pred : SU->Preds) {
2429 for (const SDep &Pred : SU->Preds) {
2447 for (const SDep &Pred : SU->Preds) {
2847 for (const SDep &Succ : SU->Succs) {
2849 for (const SDep &SuccPred : SuccSU->Preds) {
2960 for (const SDep &Pred : SU.Preds)
2984 for (const SDep &Pred : SU.Preds)
3007 for (const SDep &PredSucc : PredSU->Succs) {
3030 SDep Edge = PredSU->Succs[i];
3076 for (const SDep &Succ : DUSU->Succs) {
3120 scheduleDAG->AddPredQueued(&SU, SDep(SuccSU, SDep::Artificial));
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp 503 SDep Dep = isChain ? SDep(OpSU, SDep::Barrier)
503 SDep Dep = isChain ? SDep(OpSU, SDep::Barrier)
504 : SDep(OpSU, SDep::Data, PhysReg);
643 unsigned OpIdx, SDep& dep) const{
648 if (dep.getKind() != SDep::Data)
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h 108 unsigned OpIdx, SDep& dep) const;
lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp 85 void releaseSucc(SUnit *SU, const SDep &D);
113 void ScheduleDAGVLIW::releaseSucc(SUnit *SU, const SDep &D) {
lib/Target/AMDGPU/AMDGPUSubtarget.cpp 746 for (const SDep &SI : SU.Preds) {
748 SUa->addPred(SDep(SI.getSUnit(), SDep::Artificial));
752 for (const SDep &SI : SUa->Succs) {
754 SI.getSUnit()->addPred(SDep(&SU, SDep::Artificial));
788 for (const SDep &SI : Succs[I]->Succs) {
801 for (const SDep &SI : SU->Preds)
824 if (SU->addPred(SDep(From, SDep::Artificial), false))
827 for (SDep &SI : From->Succs) {
830 SUv->addPred(SDep(SU, SDep::Artificial), false);
833 for (SDep &SI : SU->Succs) {
lib/Target/AMDGPU/GCNILPSched.cpp 65 for (const SDep &Pred : SU->Preds) {
109 for (const SDep &Succ : SU->Succs) {
124 for (const SDep &Pred : SU->Preds) {
277 for (const auto &PredEdge : SU->Preds) {
lib/Target/AMDGPU/GCNMinRegStrategy.cpp 94 for (auto SDep : SU->Succs) {
96 for (auto PDep : SDep.getSUnit()->Preds) {
185 for (const auto &S : SchedSU->Succs) {
187 S.getKind() != SDep::Data)
189 for (const auto &P : S.getSUnit()->Preds) {
201 for (const auto &P : SU->Preds) {
221 for (const auto &S : SU->Succs) {
lib/Target/AMDGPU/R600Packetizer.cpp 195 const SDep &Dep = SUJ->Succs[i];
198 if (Dep.getKind() == SDep::Anti)
200 if (Dep.getKind() == SDep::Output)
lib/Target/AMDGPU/SIMachineScheduler.cpp 443 for (SDep& Succ : SU->Succs) {
453 void SIScheduleBlock::undoReleaseSucc(SUnit *SU, SDep *SuccEdge) {
463 void SIScheduleBlock::releaseSucc(SUnit *SU, SDep *SuccEdge) {
484 for (SDep& Succ : SU->Succs) {
516 for (SDep& Succ : SU->Succs) {
671 for (const auto &PredDep : SU.Preds) {
673 PredDep.getKind() == llvm::SDep::Data)
827 for (SDep& PredDep : SU->Preds) {
869 for (SDep& SuccDep : SU->Succs) {
953 for (SDep& SuccDep : SU->Succs) {
1023 for (SDep& SuccDep : SU->Succs) {
1044 for (SDep& SuccDep : SU->Succs) {
1065 for (SDep& SuccDep : SU->Succs) {
1097 for (SDep& SuccDep : SU->Succs) {
1126 for (SDep& SuccDep : SU->Succs) {
1243 for (SDep& SuccDep : SU->Succs) {
1251 for (SDep& PredDep : SU->Preds) {
1840 for (SDep& PredDep : SU->Preds) {
1875 for (SDep& SuccDep : SU->Succs) {
lib/Target/AMDGPU/SIMachineScheduler.h 198 void undoReleaseSucc(SUnit *SU, SDep *SuccEdge);
199 void releaseSucc(SUnit *SU, SDep *SuccEdge);
lib/Target/Hexagon/HexagonHazardRecognizer.cpp 143 for (auto &S : SU->Succs)
158 for (auto &S : SU->Succs)
lib/Target/Hexagon/HexagonMachineScheduler.cpp 80 for (const auto &S : SUd->Succs) {
292 for (const SDep &PI : SU->Preds) {
525 for (auto &Pred : SU->Preds) {
540 for (auto &Succ : SU->Succs) {
646 for (const SDep &SI : SU->Succs)
652 for (const SDep &PI : SU->Preds)
706 for (const SDep &PI : SU->Preds) {
715 for (const SDep &SI : SU->Succs) {
732 for (const auto &PI : SU->Preds) {
740 for (const auto &SI : SU->Succs) {
lib/Target/Hexagon/HexagonSubtarget.cpp 132 SmallVector<SDep, 4> Erase;
133 for (auto &D : SU.Preds)
134 if (D.getKind() == SDep::Output && D.getReg() == Hexagon::USR_OVF)
136 for (auto &E : Erase)
152 for (SDep &SI : SU.Succs) {
153 if (SI.getKind() != SDep::Order || SI.getLatency() != 0)
162 for (SDep &PI : SI.getSUnit()->Preds) {
163 if (PI.getSUnit() != &SU || PI.getKind() != SDep::Order)
211 DAG->addEdge(&DAG->SUnits[su], SDep(LastSequentialCall, SDep::Barrier));
215 DAG->addEdge(&DAG->SUnits[su], SDep(&DAG->SUnits[su-1], SDep::Barrier));
252 DAG->addEdge(&DAG->SUnits[su], SDep(LastVRegUse[*AI], SDep::Barrier));
302 SDep A(&S0, SDep::Artificial);
302 SDep A(&S0, SDep::Artificial);
320 SDep &Dep) const {
402 MachineInstr &DstInst, SDep &Dep) const {
420 for (auto &I : Src->Succs) {
432 SDep T = I;
459 for (auto &I : Src->Succs) {
462 SDep T = I;
474 static SUnit *getZeroLatency(SUnit *N, SmallVector<SDep, 4> &Deps) {
475 for (auto &I : Deps)
554 for (auto &I : DstBest->Preds)
562 for (auto &I : SrcBest->Succs)
lib/Target/Hexagon/HexagonSubtarget.h 214 void adjustSchedDependency(SUnit *def, SUnit *use, SDep& dep) const override;
270 void updateLatency(MachineInstr &SrcInst, MachineInstr &DstInst, SDep &Dep)
lib/Target/Hexagon/HexagonVLIWPacketizer.cpp 296 SDep::Kind DepType, unsigned DepReg) {
310 if (DepType == SDep::Data) {
319 static bool isRegDependence(const SDep::Kind DepType) {
320 return DepType == SDep::Data || DepType == SDep::Anti ||
320 return DepType == SDep::Data || DepType == SDep::Anti ||
321 DepType == SDep::Output;
369 SDep::Kind DepType, MachineBasicBlock::iterator &MII,
451 SDep::Kind DepType, MachineBasicBlock::iterator &MII,
525 for (const auto &PI : SUI->Preds)
526 if (PI.getKind() != SDep::Anti &&
527 (PI.getKind() != SDep::Data || PI.getReg() != Reg))
928 auto &Dep = PacketSU->Succs[i];
929 if (Dep.getSUnit() == PacketSUDep && Dep.getKind() == SDep::Anti &&
992 auto Dep = PacketSU->Succs[i];
997 if (Dep.getSUnit() == SU && Dep.getKind() == SDep::Data &&
1402 SDep::Kind DepType = SUJ->Succs[i].getKind();
1420 if (DepType == SDep::Data) {
1432 if (DepType == SDep::Data) {
1439 if (DepType == SDep::Data && HII->isDotCurInst(J)) {
1445 if (DepType == SDep::Data) {
1486 DepType == SDep::Order)
1491 if (I.isConditionalBranch() && DepType != SDep::Data &&
1492 DepType != SDep::Output)
1495 if (DepType == SDep::Output) {
1506 if (DepType == SDep::Order) {
1555 if (DepType == SDep::Data && J.getOpcode() == Hexagon::S2_allocframe) {
1583 if ((DepType == SDep::Anti || DepType == SDep::Output) && J.isCall()) {
1583 if ((DepType == SDep::Anti || DepType == SDep::Output) && J.isCall()) {
1607 if (DepType != SDep::Anti) {
1860 for (auto &Pred : SUI->Preds)
1871 for (auto &Pred : SUI->Preds)
lib/Target/Hexagon/HexagonVLIWPacketizer.h 109 bool isCallDependent(const MachineInstr &MI, SDep::Kind DepType,
111 bool promoteToDotCur(MachineInstr &MI, SDep::Kind DepType,
119 bool promoteToDotNew(MachineInstr &MI, SDep::Kind DepType,
unittests/CodeGen/TypeTraitsTest.cpp 20 static_assert(is_trivially_copyable<SDep>::value, "trivially copyable");
usr/include/c++/7.4.0/bits/move.h 72 constexpr _Tp&&
83 constexpr _Tp&&
98 move(_Tp&& __t) noexcept
184 typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
185 is_move_constructible<_Tp>,
186 is_move_assignable<_Tp>>::value>::type
187 swap(_Tp& __a, _Tp& __b)
187 swap(_Tp& __a, _Tp& __b)
198 _Tp __tmp = _GLIBCXX_MOVE(__a);
usr/include/c++/7.4.0/bits/stl_algo.h 3900 const _Tp& __val)
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h 123 typedef _Tp value_type;
181 typedef _Tp value_type;
183 typedef _Tp* pointer;
184 typedef _Tp& reference;
192 typedef _Tp value_type;
194 typedef const _Tp* pointer;
195 typedef const _Tp& reference;
usr/include/c++/7.4.0/bits/stl_pair.h 101 is_constructible<_T2, const _U2&>>::value;
101 is_constructible<_T2, const _U2&>>::value;
108 is_convertible<const _U2&, _T2>>::value;
108 is_convertible<const _U2&, _T2>>::value;
115 is_constructible<_T2, _U2&&>>::value;
115 is_constructible<_T2, _U2&&>>::value;
122 is_convertible<_U2&&, _T2>>::value;
122 is_convertible<_U2&&, _T2>>::value;
129 is_convertible<_U2&&, _T2>>;
129 is_convertible<_U2&&, _T2>>;
134 is_constructible<_T2, _U2&&>,
134 is_constructible<_T2, _U2&&>,
143 is_convertible<const _U2&, _T2>>;
143 is_convertible<const _U2&, _T2>>;
148 is_constructible<_T2, const _U2&&>,
148 is_constructible<_T2, const _U2&&>,
209 : private __pair_base<_T1, _T2>
212 typedef _T2 second_type; /// @c second_type is the second bound type
215 _T2 second; /// @c second is a copy of the second object
252 using _PCCP = _PCC<true, _T1, _T2>;
260 constexpr pair(const _T1& __a, const _T2& __b)
269 explicit constexpr pair(const _T1& __a, const _T2& __b)
283 _T1, _T2>;
311 constexpr pair(_U1&& __x, const _T2& __y)
318 explicit constexpr pair(_U1&& __x, const _T2& __y)
325 constexpr pair(const _T1& __x, _U2&& __y)
341 constexpr pair(_U1&& __x, _U2&& __y)
380 is_copy_assignable<_T2>>::value,
391 is_move_assignable<_T2>>::value,
403 is_assignable<_T2&, const _U2&>>::value,
403 is_assignable<_T2&, const _U2&>>::value,
405 operator=(const pair<_U1, _U2>& __p)
414 is_assignable<_T2&, _U2&&>>::value,
414 is_assignable<_T2&, _U2&&>>::value,
416 operator=(pair<_U1, _U2>&& __p)
524 make_pair(_T1&& __x, _T2&& __y)
usr/include/c++/7.4.0/initializer_list 50 typedef _E value_type;
51 typedef const _E& reference;
52 typedef const _E& const_reference;
54 typedef const _E* iterator;
55 typedef const _E* const_iterator;
usr/include/c++/7.4.0/type_traits 215 : public __is_void_helper<typename remove_cv<_Tp>::type>::type
326 : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
354 : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
381 : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
567 : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
581 : public __or_<is_lvalue_reference<_Tp>,
582 is_rvalue_reference<_Tp>>::type
588 : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
588 : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
601 : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
602 is_void<_Tp>>>::type
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
611 : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
612 is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
612 is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
631 : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
638 : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
762 typename add_rvalue_reference<_Tp>::type declval() noexcept;
777 : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
777 : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
798 typedef decltype(__test<_Tp>(0)) type;
811 remove_all_extents<_Tp>::type>::type
825 : public __is_destructible_safe<_Tp>::type
889 typedef decltype(__test<_Tp>(0)) type;
894 : public __and_<__not_<is_void<_Tp>>,
895 __is_default_constructible_impl<_Tp>>
915 : public __is_default_constructible_atom<_Tp>::type
921 : public __is_default_constructible_safe<_Tp>::type
984 typedef decltype(__test<_Tp, _Arg>(0)) type;
989 : public __and_<is_destructible<_Tp>,
990 __is_direct_constructible_impl<_Tp, _Arg>>
1072 __is_direct_constructible_ref_cast<_Tp, _Arg>,
1073 __is_direct_constructible_new_safe<_Tp, _Arg>
1079 : public __is_direct_constructible_new<_Tp, _Arg>::type
1119 : public __is_direct_constructible<_Tp, _Arg>
1130 : public __is_constructible_impl<_Tp, _Args...>::type
1142 : public is_constructible<_Tp, const _Tp&>
1142 : public is_constructible<_Tp, const _Tp&>
1148 : public __is_copy_constructible_impl<_Tp>
1160 : public is_constructible<_Tp, _Tp&&>
1160 : public is_constructible<_Tp, _Tp&&>
1166 : public __is_move_constructible_impl<_Tp>
1215 : public __and_<is_constructible<_Tp, _Args...>,
1216 __is_nt_constructible_impl<_Tp, _Args...>>
1246 : public is_nothrow_constructible<_Tp, _Tp&&>
1246 : public is_nothrow_constructible<_Tp, _Tp&&>
1252 : public __is_nothrow_move_constructible_impl<_Tp>
1286 : public is_assignable<_Tp&, const _Tp&>
1286 : public is_assignable<_Tp&, const _Tp&>
1292 : public __is_copy_assignable_impl<_Tp>
1304 : public is_assignable<_Tp&, _Tp&&>
1304 : public is_assignable<_Tp&, _Tp&&>
1310 : public __is_move_assignable_impl<_Tp>
1352 : public is_nothrow_assignable<_Tp&, _Tp&&>
1352 : public is_nothrow_assignable<_Tp&, _Tp&&>
1358 : public __is_nt_move_assignable_impl<_Tp>
1377 static void __helper(const _Tp&);
1380 static true_type __test(const _Tp&,
1381 decltype(__helper<const _Tp&>({}))* = 0);
1390 typedef decltype(__test(declval<_Tp>())) type;
1395 : public __is_implicitly_default_constructible_impl<_Tp>::type
1400 : public __and_<is_default_constructible<_Tp>,
1401 __is_implicitly_default_constructible_safe<_Tp>>
1526 static void __test_aux(_To1);
1538 typedef decltype(__test<_From, _To>(0)) type;
1545 : public __is_convertible_helper<_From, _To>::type
1554 { typedef _Tp type; };
1558 { typedef _Tp type; };
1563 { typedef _Tp type; };
1574 remove_const<typename remove_volatile<_Tp>::type>::type type;
1629 { typedef _Tp type; };
1633 { typedef _Tp type; };
1659 { typedef _Tp&& type; };
1664 : public __add_rvalue_reference_helper<_Tp>
1955 { typedef _Tp type; };
2104 { typedef typename remove_cv<_Up>::type __type; };
2131 typedef _Tp __type;
2574 typename remove_reference<_Tp>::type>::type>::type