reference, declarationdefinition
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