Lines Matching defs:ScaledReg

163 // the same ScaledReg and Scale.
167 " with the same ScaledReg and Scale"));
490 /// 1. BaseRegs.size > 1 implies ScaledReg != NULL and
491 /// 2. ScaledReg != NULL implies Scale != 1 || !BaseRegs.empty().
493 /// formula should be put in the ScaledReg.
506 const SCEV *ScaledReg = nullptr;
624 assert((Scale == 0 || ScaledReg) &&
625 "ScaledReg must be non-null if Scale is non-zero");
627 if (!ScaledReg)
636 if (containsAddRecDependentOnLoop(ScaledReg, L))
639 // If ScaledReg is not a recurrent expr, or it is but its loop is not current
641 // loop, we want to swap the reg in BaseRegs with ScaledReg.
649 /// Every formula having more than one base register, must use the ScaledReg
659 assert(ScaledReg && "Expected 1*reg => reg");
661 BaseRegs.push_back(ScaledReg);
663 ScaledReg = nullptr;
667 // Keep the invariant sum in BaseRegs and one of the variant sum in ScaledReg.
668 if (!ScaledReg) {
669 ScaledReg = BaseRegs.pop_back_val();
673 // If ScaledReg is an invariant with respect to L, find the reg from
675 // reg with ScaledReg.
676 if (!containsAddRecDependentOnLoop(ScaledReg, L)) {
681 std::swap(ScaledReg, *I);
694 BaseRegs.push_back(ScaledReg);
695 ScaledReg = nullptr;
702 if (BaseRegs.size() != 1 || ScaledReg)
710 return !!ScaledReg + BaseRegs.size();
717 ScaledReg ? ScaledReg->getType() :
731 return S == ScaledReg || is_contained(BaseRegs, S);
738 if (ScaledReg)
739 if (RegUses.isRegUsedByUsesOtherThan(ScaledReg, LUIdx))
772 if (ScaledReg)
773 OS << *ScaledReg;
1509 if (const SCEV *ScaledReg = F.ScaledReg) {
1510 if (VisitedRegs.count(ScaledReg)) {
1514 RatePrimaryRegister(F, ScaledReg, Regs, LoserRegs);
1698 if (F.ScaledReg) Key.push_back(F.ScaledReg);
1722 if (F.ScaledReg) Key.push_back(F.ScaledReg);
1730 assert((!F.ScaledReg || !F.ScaledReg->isZero()) &&
1742 if (F.ScaledReg)
1743 Regs.insert(F.ScaledReg);
1761 if (F.ScaledReg) Regs.insert(F.ScaledReg);
1909 // scaling factor is profitable before computing the actual ScaledReg for
2876 F.ScaledReg == OrigF.ScaledReg &&
3680 if (F.ScaledReg)
3681 RegUses.countRegister(F.ScaledReg, LUIdx);
3920 const SCEV *BaseReg = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
3979 F.ScaledReg = nullptr;
3984 F.ScaledReg = InnerSum;
4099 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
4108 F.ScaledReg = G;
4146 F.ScaledReg = nullptr;
4151 F.ScaledReg = NewG;
4159 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
4198 F.ScaledReg = G;
4202 // related with current loop while F.ScaledReg is not.
4240 if (Base.ScaledReg && Base.ScaledReg->getType()->isPointerTy())
4300 if (F.ScaledReg) {
4301 F.ScaledReg = SE.getMulExpr(F.ScaledReg, FactorS);
4302 if (getExactSDiv(F.ScaledReg, FactorS, SE) != Base.ScaledReg)
4375 F.ScaledReg = Quotient;
4384 // non canonical Formula with ScaledReg's loop not being L.
4428 // It is invalid to extend a pointer type so exit early if ScaledReg or
4430 if (Base.ScaledReg && Base.ScaledReg->getType()->isPointerTy())
4448 if (F.ScaledReg) {
4450 getAnyExtendConsideringPostIncUses(Loops, F.ScaledReg, SrcTy, SE);
4453 F.ScaledReg = NewScaledReg;
4625 if (F.ScaledReg == OrigReg) {
4638 NewF.ScaledReg = SE.getAddExpr(NegImmS, NewF.ScaledReg);
4643 if (const SCEVConstant *C = dyn_cast<SCEVConstant>(NewF.ScaledReg)) {
4801 if (F.ScaledReg &&
4802 RegUses.isRegUsedByUsesOtherThan(F.ScaledReg, LUIdx))
4803 Key.push_back(F.ScaledReg);
5018 /// If a LSRUse has multiple formulae with the same ScaledReg and Scale.
5021 /// Scale and ScaledReg pair as possible while narrowing the search space.
5023 /// from a formulae set with more Scale and ScaledReg variations than
5024 /// a formulae set with the same Scale and ScaledReg. The picking winner
5026 /// ScaledReg and filter others, and we want to avoid that if possible.
5034 "from the Formulae with the same Scale and ScaledReg.\n");
5036 // Map the "Scale * ScaledReg" pair to the best formula of current LSRUse.
5085 if (!F.ScaledReg)
5087 auto P = BestFormulae.insert({{F.ScaledReg, F.Scale}, FIdx});
5267 if (const SCEV *ScaledReg = F.ScaledReg) {
5268 if (!UniqRegs.count(ScaledReg)) {
5270 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg);
5271 if (isa<SCEVAddRecExpr>(ScaledReg))
5273 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg);
5298 if (F.ScaledReg)
5299 UniqRegs.insert(F.ScaledReg);
5464 if ((F.ScaledReg && F.ScaledReg == Reg) ||
5489 VisitedRegs.insert(F.ScaledReg ? F.ScaledReg : F.BaseRegs[0]);
5726 // Expand the ScaledReg portion.
5729 const SCEV *ScaledS = F.ScaledReg;