Lines Matching full:roots
329 // ST[y1] +1 +2 <-- Roots
347 SmallInstructionVector Roots; member
352 // The set of all DAG roots, and state tracking of all roots
363 /// Stage 1: Find all the DAG roots for the induction variable.
365 /// Stage 2: Validate if the found roots are valid.
379 std::map<int64_t,Instruction*> &Roots);
382 void collectInLoopUserSet(const SmallInstructionVector &Roots,
419 // The roots themselves.
610 const SmallInstructionVector &Roots, in collectInLoopUserSet() argument
614 for (SmallInstructionVector::const_iterator I = Roots.begin(), in collectInLoopUserSet()
615 IE = Roots.end(); I != IE; ++I) in collectInLoopUserSet()
666 collectPossibleRoots(Instruction *Base, std::map<int64_t,Instruction*> &Roots) { in collectPossibleRoots() argument
698 if (Roots.find(V) != Roots.end()) in collectPossibleRoots()
702 Roots[V] = cast<Instruction>(I); in collectPossibleRoots()
705 if (Roots.empty()) in collectPossibleRoots()
712 if (Roots.find(0) != Roots.end()) { in collectPossibleRoots()
713 DEBUG(dbgs() << "LRR: Multiple roots found for base - aborting!\n"); in collectPossibleRoots()
716 Roots[0] = Base; in collectPossibleRoots()
722 NumBaseUses = Roots.begin()->second->getNumUses(); in collectPossibleRoots()
725 for (auto &KV : Roots) { in collectPossibleRoots()
792 } else if (DRS.Roots.empty()) { in findRootsBase()
793 DRS.Roots.push_back(KV.second); in findRootsBase()
795 DRS.Roots.push_back(KV.second); in findRootsBase()
801 DRS.Roots.clear(); in findRootsBase()
832 if (V.Roots.empty() || V.Roots.size() != RootSets[0].Roots.size()) { in findRoots()
846 // Consider a DAGRootSet with N-1 roots (so N different values including in findRoots()
848 // Define d = Roots[0] - BaseInst, which should be the same as in findRoots()
849 // Roots[I] - Roots[I-1] for all I in [1..N). in findRoots()
856 unsigned N = V.Roots.size() + 1; in findRoots()
857 const SCEV *StepSCEV = SE->getMinusSCEV(SE->getSCEV(V.Roots[0]), ADR); in findRoots()
864 Scale = RootSets[0].Roots.size() + 1; in findRoots()
873 DEBUG(dbgs() << "LRR: Successfully found roots: Scale=" << Scale << "\n"); in findRoots()
887 Exclude.insert(DRS.Roots.begin(), DRS.Roots.end()); in collectUsedInstructions()
901 for (auto *Root : DRS.Roots) { in collectUsedInstructions()
927 Exclude.insert(DRS.Roots.begin(), DRS.Roots.end()); in collectUsedInstructions()
966 if (std::find(DRS.Roots.begin(), DRS.Roots.end(), I) != DRS.Roots.end()) in isRootInst()
1006 // that of the primary induction variable (excluding the roots). Our goal in validate()
1205 if (DRS.Roots[Iter-1] == (Instruction*) Op2) { in validate()
1428 // First, we collect the use set of %iv, excluding the other increment roots.
1446 // roots, belong to simple latch code, parts of validated reductions, part of