Lines Matching full:subscript
23 // coupled RDIV subscripts and lacks a multi-subscript MIV test.
37 // Some non-linear subscript pairs can be handled by the GCD test
75 STATISTIC(SeparableSubscriptPairs, "Separable subscript pairs");
76 STATISTIC(CoupledSubscriptPairs, "Coupled subscript pairs");
77 STATISTIC(NonlinearSubscriptPairs, "Nonlinear subscript pairs");
213 // if no subscript in the source or destination mention the induction
252 // if no subscript in the source or destination mention the induction
781 // removeMatchingExtensions - Examines a subscript pair.
785 void DependenceAnalysis::removeMatchingExtensions(Subscript *Pair) {
835 // Examines the subscript pair (the Src and Dst SCEVs)
838 DependenceAnalysis::Subscript::ClassificationKind
845 return Subscript::NonLinear;
847 return Subscript::NonLinear;
852 return Subscript::ZIV;
854 return Subscript::SIV;
858 return Subscript::RDIV;
859 return Subscript::MIV;
1766 // exactRDIVtest - Tests the RDIV subscript pair for dependence.
2169 // Tests the single-subscript MIV pair (Src and Dst) for dependence.
2198 // Tests an MIV subscript pair for dependence.
2305 // For example, given a subscript pair [3*i + 2*j] and [i' + 2*j' - 1],
2308 // If i = i', we can simplify the subscript to [2*i + 2*j] and [2*j' - 1],
2397 // Use Banerjee's Inequalities to test an MIV subscript pair.
2410 // where A_k is the coefficient of the kth index in the source subscript,
2411 // B_k is the coefficient of the kth index in the destination subscript,
2814 // Walks through the subscript,
2818 DependenceAnalysis::collectCoeffInfo(const SCEV *Subscript,
2821 const SCEV *Zero = SE->getConstant(Subscript->getType(), 0);
2829 while (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Subscript)) {
2835 CI[K].Iterations = collectUpperBound(L, Subscript->getType());
2836 Subscript = AddRec->getStart();
2838 Constant = Subscript;
2854 DEBUG(dbgs() << "\t Constant = " << *Subscript << '\n');
2963 // to simplify a subscript pair (Src and Dst).
2993 // constraint into a subscript pair (Src and Dst).
3020 // constraint into a subscript pair (Src and Dst).
3097 // constraint into a subscript pair (Src and Dst).
3255 SmallVector<Subscript, 4> Pair(Pairs);
3289 DEBUG(dbgs() << " subscript " << P << "\n");
3325 // We've already classified each subscript pair as ZIV, SIV, etc.,
3336 // For each subscript SI 0 .. 3, we consider each remaining subscript, SJ.
3356 // In the end, we've got 1 separable subscript and 1 coupled group.
3358 if (Pair[SI].Classification == Subscript::NonLinear) {
3369 else if (Pair[SI].Classification == Subscript::ZIV) {
3410 DEBUG(dbgs() << "testing subscript " << SI);
3412 case Subscript::ZIV:
3417 case Subscript::SIV: {
3426 case Subscript::RDIV:
3431 case Subscript::MIV:
3437 llvm_unreachable("subscript has unexpected classification");
3442 // test coupled subscript groups
3449 DEBUG(dbgs() << "testing subscript group " << SI << " { ");
3456 if (Pair[SJ].Classification == Subscript::SIV)
3465 DEBUG(dbgs() << "testing subscript " << SJ << ", SIV\n");
3466 // SJ is an SIV subscript that's part of the current coupled group
3489 // SJ is an MIV subscript that's part of the current coupled group
3500 case Subscript::ZIV:
3506 case Subscript::SIV:
3510 case Subscript::RDIV:
3511 case Subscript::MIV:
3514 llvm_unreachable("bad subscript classification");
3523 if (Pair[SJ].Classification == Subscript::RDIV) {
3536 if (Pair[SJ].Classification == Subscript::MIV) {
3677 SmallVector<Subscript, 4> Pair(Pairs);
3714 if (Pair[SI].Classification == Subscript::NonLinear) {
3724 else if (Pair[SI].Classification == Subscript::ZIV)
3755 case Subscript::SIV: {
3766 case Subscript::ZIV:
3767 case Subscript::RDIV:
3768 case Subscript::MIV:
3771 llvm_unreachable("subscript has unexpected classification");
3776 // test coupled subscript groups
3786 if (Pair[SJ].Classification == Subscript::SIV)
3794 // SJ is an SIV subscript that's part of the current coupled group
3809 // SJ is an MIV subscript that's part of the current coupled group
3817 case Subscript::ZIV:
3820 case Subscript::SIV:
3824 case Subscript::RDIV:
3825 case Subscript::MIV:
3828 llvm_unreachable("bad subscript classification");