Lines Matching defs:ScaledReg

164 // the same ScaledReg and Scale.
168 " with the same ScaledReg and Scale"));
498 /// 1. BaseRegs.size > 1 implies ScaledReg != NULL and
499 /// 2. ScaledReg != NULL implies Scale != 1 || !BaseRegs.empty().
501 /// formula should be put in the ScaledReg.
514 const SCEV *ScaledReg = nullptr;
632 if (!ScaledReg)
641 if (containsAddRecDependentOnLoop(ScaledReg, L))
644 // If ScaledReg is not a recurrent expr, or it is but its loop is not current
646 // loop, we want to swap the reg in BaseRegs with ScaledReg.
654 /// Every formula having more than one base register, must use the ScaledReg
664 assert(ScaledReg && "Expected 1*reg => reg");
666 BaseRegs.push_back(ScaledReg);
668 ScaledReg = nullptr;
672 // Keep the invariant sum in BaseRegs and one of the variant sum in ScaledReg.
673 if (!ScaledReg) {
674 ScaledReg = BaseRegs.pop_back_val();
678 // If ScaledReg is an invariant with respect to L, find the reg from
680 // reg with ScaledReg.
681 if (!containsAddRecDependentOnLoop(ScaledReg, L)) {
686 std::swap(ScaledReg, *I);
699 BaseRegs.push_back(ScaledReg);
700 ScaledReg = nullptr;
707 if (BaseRegs.size() != 1 || ScaledReg)
715 return !!ScaledReg + BaseRegs.size();
722 ScaledReg ? ScaledReg->getType() :
736 return S == ScaledReg || is_contained(BaseRegs, S);
743 if (ScaledReg)
744 if (RegUses.isRegUsedByUsesOtherThan(ScaledReg, LUIdx))
777 if (ScaledReg)
778 OS << *ScaledReg;
1514 if (const SCEV *ScaledReg = F.ScaledReg) {
1515 if (VisitedRegs.count(ScaledReg)) {
1519 RatePrimaryRegister(F, ScaledReg, Regs, LoserRegs);
1703 if (F.ScaledReg) Key.push_back(F.ScaledReg);
1727 if (F.ScaledReg) Key.push_back(F.ScaledReg);
1735 assert((!F.ScaledReg || !F.ScaledReg->isZero()) &&
1747 if (F.ScaledReg)
1748 Regs.insert(F.ScaledReg);
1766 if (F.ScaledReg) Regs.insert(F.ScaledReg);
1914 // scaling factor is profitable before computing the actual ScaledReg for
2875 F.ScaledReg == OrigF.ScaledReg &&
3679 if (F.ScaledReg)
3680 RegUses.countRegister(F.ScaledReg, LUIdx);
3919 const SCEV *BaseReg = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
3978 F.ScaledReg = nullptr;
3982 F.ScaledReg = InnerSum;
4097 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
4106 F.ScaledReg = G;
4144 F.ScaledReg = nullptr;
4149 F.ScaledReg = NewG;
4157 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
4196 F.ScaledReg = G;
4200 // related with current loop while F.ScaledReg is not.
4238 if (Base.ScaledReg && Base.ScaledReg->getType()->isPointerTy())
4298 if (F.ScaledReg) {
4299 F.ScaledReg = SE.getMulExpr(F.ScaledReg, FactorS);
4300 if (getExactSDiv(F.ScaledReg, FactorS, SE) != Base.ScaledReg)
4373 F.ScaledReg = Quotient;
4382 // non canonical Formula with ScaledReg's loop not being L.
4426 // It is invalid to extend a pointer type so exit early if ScaledReg or
4428 if (Base.ScaledReg && Base.ScaledReg->getType()->isPointerTy())
4446 if (F.ScaledReg) {
4448 getAnyExtendConsideringPostIncUses(Loops, F.ScaledReg, SrcTy, SE);
4451 F.ScaledReg = NewScaledReg;
4623 if (F.ScaledReg == OrigReg) {
4636 NewF.ScaledReg = SE.getAddExpr(NegImmS, NewF.ScaledReg);
4641 if (const SCEVConstant *C = dyn_cast<SCEVConstant>(NewF.ScaledReg)) {
4799 if (F.ScaledReg &&
4800 RegUses.isRegUsedByUsesOtherThan(F.ScaledReg, LUIdx))
4801 Key.push_back(F.ScaledReg);
5016 /// If a LSRUse has multiple formulae with the same ScaledReg and Scale.
5019 /// Scale and ScaledReg pair as possible while narrowing the search space.
5021 /// from a formulae set with more Scale and ScaledReg variations than
5022 /// a formulae set with the same Scale and ScaledReg. The picking winner
5024 /// ScaledReg and filter others, and we want to avoid that if possible.
5032 "from the Formulae with the same Scale and ScaledReg.\n");
5034 // Map the "Scale * ScaledReg" pair to the best formula of current LSRUse.
5083 if (!F.ScaledReg)
5085 auto P = BestFormulae.insert({{F.ScaledReg, F.Scale}, FIdx});
5265 if (const SCEV *ScaledReg = F.ScaledReg) {
5266 if (!UniqRegs.count(ScaledReg)) {
5268 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg);
5269 if (isa<SCEVAddRecExpr>(ScaledReg))
5271 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg);
5296 if (F.ScaledReg)
5297 UniqRegs.insert(F.ScaledReg);
5462 if ((F.ScaledReg && F.ScaledReg == Reg) ||
5487 VisitedRegs.insert(F.ScaledReg ? F.ScaledReg : F.BaseRegs[0]);
5724 // Expand the ScaledReg portion.
5727 const SCEV *ScaledS = F.ScaledReg;