Lines Matching defs:LUIdx

143   void CountRegister(const SCEV *Reg, size_t LUIdx);
144 void DropRegister(const SCEV *Reg, size_t LUIdx);
145 void SwapAndDropUse(size_t LUIdx, size_t LastLUIdx);
147 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
164 RegUseTracker::CountRegister(const SCEV *Reg, size_t LUIdx) {
170 RSD.UsedByIndices.resize(std::max(RSD.UsedByIndices.size(), LUIdx + 1));
171 RSD.UsedByIndices.set(LUIdx);
175 RegUseTracker::DropRegister(const SCEV *Reg, size_t LUIdx) {
179 assert(RSD.UsedByIndices.size() > LUIdx);
180 RSD.UsedByIndices.reset(LUIdx);
184 RegUseTracker::SwapAndDropUse(size_t LUIdx, size_t LastLUIdx) {
185 assert(LUIdx <= LastLUIdx);
192 if (LUIdx < UsedByIndices.size())
193 UsedByIndices[LUIdx] =
200 RegUseTracker::isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const {
207 if ((size_t)i != LUIdx) return true;
279 bool hasRegsUsedByUsesOtherThan(size_t LUIdx,
442 bool Formula::hasRegsUsedByUsesOtherThan(size_t LUIdx,
445 if (RegUses.isRegUsedByUsesOtherThan(ScaledReg, LUIdx))
449 if (RegUses.isRegUsedByUsesOtherThan(*I, LUIdx))
1103 /// LUIdx - The index of the LSRUse describing the expression which
1105 size_t LUIdx;
1123 : UserInst(nullptr), OperandValToReplace(nullptr), LUIdx(~size_t(0)),
1161 if (LUIdx != ~size_t(0))
1162 OS << ", LUIdx=" << LUIdx;
1265 void RecomputeRegs(size_t LUIdx, RegUseTracker &Reguses);
1328 void LSRUse::RecomputeRegs(size_t LUIdx, RegUseTracker &RegUses) {
1343 RegUses.DropRegister(*I, LUIdx);
1728 void DeleteUse(LSRUse &LU, size_t LUIdx);
1732 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
1733 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
1734 void CountRegisters(const Formula &F, size_t LUIdx);
1735 bool InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F);
1739 void GenerateReassociations(LSRUse &LU, unsigned LUIdx, Formula Base,
1742 void GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
1745 void GenerateCombinations(LSRUse &LU, unsigned LUIdx, Formula Base);
1746 void GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
1749 void GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
1750 void GenerateConstantOffsetsImpl(LSRUse &LU, unsigned LUIdx,
1754 void GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
1755 void GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, Formula Base);
1756 void GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base);
1757 void GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base);
2305 size_t LUIdx = P.first->second;
2306 LSRUse &LU = Uses[LUIdx];
2309 return std::make_pair(LUIdx, Offset);
2313 size_t LUIdx = Uses.size();
2314 P.first->second = LUIdx;
2316 LSRUse &LU = Uses[LUIdx];
2325 return std::make_pair(LUIdx, Offset);
2329 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) {
2335 RegUses.SwapAndDropUse(LUIdx, Uses.size());
2344 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
2345 LSRUse &LU = Uses[LUIdx];
3045 LF.LUIdx = P.first;
3047 LSRUse &LU = Uses[LF.LUIdx];
3056 InsertInitialFormula(S, LU, LF.LUIdx);
3057 CountRegisters(LU.Formulae.back(), LF.LUIdx);
3068 LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx) {
3075 bool Inserted = InsertFormula(LU, LUIdx, F);
3083 LSRUse &LU, size_t LUIdx) {
3087 bool Inserted = InsertFormula(LU, LUIdx, F);
3093 void LSRInstance::CountRegisters(const Formula &F, size_t LUIdx) {
3095 RegUses.CountRegister(F.ScaledReg, LUIdx);
3098 RegUses.CountRegister(*I, LUIdx);
3103 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) {
3110 CountRegisters(F, LUIdx);
3184 LF.LUIdx = P.first;
3186 LSRUse &LU = Uses[LF.LUIdx];
3192 InsertSupplementalFormula(US, LU, LF.LUIdx);
3263 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
3338 if (InsertFormula(LU, LUIdx, F))
3341 GenerateReassociations(LU, LUIdx, LU.Formulae.back(), Depth + 1);
3347 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx,
3355 GenerateReassociationsImpl(LU, LUIdx, Base, Depth, i);
3358 GenerateReassociationsImpl(LU, LUIdx, Base, Depth,
3364 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx,
3393 (void)InsertFormula(LU, LUIdx, F);
3399 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
3414 (void)InsertFormula(LU, LUIdx, F);
3418 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx,
3424 GenerateSymbolicOffsetsImpl(LU, LUIdx, Base, i);
3426 GenerateSymbolicOffsetsImpl(LU, LUIdx, Base, /* Idx */ -1,
3432 LSRUse &LU, unsigned LUIdx, const Formula &Base,
3457 (void)InsertFormula(LU, LUIdx, F);
3472 (void)InsertFormula(LU, LUIdx, F);
3476 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx,
3486 GenerateConstantOffsetsImpl(LU, LUIdx, Base, Worklist, i);
3488 GenerateConstantOffsetsImpl(LU, LUIdx, Base, Worklist, /* Idx */ -1,
3494 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx,
3576 (void)InsertFormula(LU, LUIdx, F);
3583 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) {
3639 (void)InsertFormula(LU, LUIdx, F);
3646 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) {
3668 if (!F.hasRegsUsedByUsesOtherThan(LUIdx, RegUses))
3671 (void)InsertFormula(LU, LUIdx, F);
3682 size_t LUIdx;
3687 : LUIdx(LI), Imm(I), OrigReg(R) {}
3696 OS << "in formulae referencing " << *OrigReg << " in use " << LUIdx
3774 for (int LUIdx = UsedByIndices.find_first(); LUIdx != -1;
3775 LUIdx = UsedByIndices.find_next(LUIdx))
3777 if (UniqueItems.insert(std::make_pair(LUIdx, Imm)))
3778 WorkItems.push_back(WorkItem(LUIdx, Imm, OrigReg));
3792 size_t LUIdx = WI.LUIdx;
3793 LSRUse &LU = Uses[LUIdx];
3835 (void)InsertFormula(LU, LUIdx, NewF);
3869 (void)InsertFormula(LU, LUIdx, NewF);
3883 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
3884 LSRUse &LU = Uses[LUIdx];
3886 GenerateReassociations(LU, LUIdx, LU.Formulae[i]);
3888 GenerateCombinations(LU, LUIdx, LU.Formulae[i]);
3890 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
3891 LSRUse &LU = Uses[LUIdx];
3893 GenerateSymbolicOffsets(LU, LUIdx, LU.Formulae[i]);
3895 GenerateConstantOffsets(LU, LUIdx, LU.Formulae[i]);
3897 GenerateICmpZeroScales(LU, LUIdx, LU.Formulae[i]);
3899 GenerateScales(LU, LUIdx, LU.Formulae[i]);
3901 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
3902 LSRUse &LU = Uses[LUIdx];
3904 GenerateTruncates(LU, LUIdx, LU.Formulae[i]);
3930 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
3931 LSRUse &LU = Uses[LUIdx];
3965 if (RegUses.isRegUsedByUsesOtherThan(Reg, LUIdx))
3969 RegUses.isRegUsedByUsesOtherThan(F.ScaledReg, LUIdx))
4004 LU.RecomputeRegs(LUIdx, RegUses);
4052 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
4053 LSRUse &LU = Uses[LUIdx];
4096 LU.RecomputeRegs(LUIdx, RegUses);
4117 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
4118 LSRUse &LU = Uses[LUIdx];
4141 if (Fixup.LUIdx == LUIdx) {
4142 Fixup.LUIdx = LUThatHas - &Uses.front();
4154 if (Fixup.LUIdx == NumUses-1)
4155 Fixup.LUIdx = LUIdx;
4177 DeleteUse(LU, LUIdx);
4178 --LUIdx;
4243 for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
4244 LSRUse &LU = Uses[LUIdx];
4262 LU.RecomputeRegs(LUIdx, RegUses);
4528 const LSRUse &LU = Uses[LF.LUIdx];
4810 if (Uses[LF.LUIdx].Kind == LSRUse::ICmpZero)
4848 Rewrite(Fixup, *Solution[Fixup.LUIdx], Rewriter, DeadInsts, P);