Home | History | Annotate | Download | only in Scalar

Lines Matching defs:TTI

784 static bool isAddressUse(const TargetTransformInfo &TTI,
807 if (TTI.getTgtMemIntrinsic(II, IntrInfo)) {
824 static MemAccessTy getAccessType(const TargetTransformInfo &TTI,
850 if (TTI.getTgtMemIntrinsic(II, IntrInfo) && IntrInfo.PtrVal) {
993 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
997 static unsigned getScalingFactorCost(const TargetTransformInfo &TTI,
1019 bool isLess(Cost &Other, const TargetTransformInfo &TTI);
1038 void RateFormula(const TargetTransformInfo &TTI,
1055 const TargetTransformInfo &TTI);
1061 const TargetTransformInfo &TTI);
1200 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
1211 const TargetTransformInfo &TTI) {
1234 if (TTI.shouldFavorPostInc()) {
1238 if (TTI.isIndexedLoadLegal(TTI.MIM_PostInc, AR->getType()) ||
1239 TTI.isIndexedStoreLegal(TTI.MIM_PostInc, AR->getType())) {
1253 RateRegister(AR->getOperand(1), Regs, L, SE, DT, TTI);
1282 const TargetTransformInfo &TTI) {
1288 RateRegister(Reg, Regs, L, SE, DT, TTI);
1294 void Cost::RateFormula(const TargetTransformInfo &TTI,
1312 RatePrimaryRegister(ScaledReg, Regs, L, SE, DT, LoserRegs, TTI);
1321 RatePrimaryRegister(BaseReg, Regs, L, SE, DT, LoserRegs, TTI);
1332 NumBaseParts - (1 + (F.Scale && isAMCompletelyFolded(TTI, LU, F)));
1336 C.ScaleCost += getScalingFactorCost(TTI, LU, F, *L);
1351 !isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV,
1362 // Treat every new register that exceeds TTI.getNumberOfRegisters() - 1 as
1364 unsigned TTIRegNum = TTI.getNumberOfRegisters(false) - 1;
1384 if (LU.Kind == LSRUse::ICmpZero && !F.hasZeroEnd() && !TTI.canMacroFuseCmp())
1408 bool Cost::isLess(Cost &Other, const TargetTransformInfo &TTI) {
1412 return TTI.isLSRCostLess(C, Other.C);
1600 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
1607 return TTI.isLegalAddressingMode(AccessTy.MemTy, BaseGV, BaseOffset,
1636 return TTI.isLegalICmpImmediate(BaseOffset);
1654 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
1669 return isAMCompletelyFolded(TTI, Kind, AccessTy, BaseGV, MinOffset,
1671 isAMCompletelyFolded(TTI, Kind, AccessTy, BaseGV, MaxOffset,
1675 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
1687 return isAMCompletelyFolded(TTI, MinOffset, MaxOffset, Kind, AccessTy,
1692 static bool isLegalUse(const TargetTransformInfo &TTI, int64_t MinOffset,
1697 return isAMCompletelyFolded(TTI, MinOffset, MaxOffset, Kind, AccessTy, BaseGV,
1702 isAMCompletelyFolded(TTI, MinOffset, MaxOffset, Kind, AccessTy,
1706 static bool isLegalUse(const TargetTransformInfo &TTI, int64_t MinOffset,
1709 return isLegalUse(TTI, MinOffset, MaxOffset, Kind, AccessTy, F.BaseGV,
1713 static bool isAMCompletelyFolded(const TargetTransformInfo &TTI,
1716 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) {
1718 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV,
1725 return isAMCompletelyFolded(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind,
1730 static unsigned getScalingFactorCost(const TargetTransformInfo &TTI,
1738 if (!isAMCompletelyFolded(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind,
1745 int ScaleCostMinOffset = TTI.getScalingFactorCost(
1748 int ScaleCostMaxOffset = TTI.getScalingFactorCost(
1767 static bool isAlwaysFoldable(const TargetTransformInfo &TTI,
1785 return isAMCompletelyFolded(TTI, Kind, AccessTy, BaseGV, BaseOffset,
1789 static bool isAlwaysFoldable(const TargetTransformInfo &TTI,
1812 return isAMCompletelyFolded(TTI, MinOffset, MaxOffset, Kind, AccessTy, BaseGV,
1886 const TargetTransformInfo &TTI;
2023 LoopInfo &LI, const TargetTransformInfo &TTI);
2075 if (!TTI.isTypeLegal(DestTy)) continue;
2418 if (isAddressUse(TTI, UI->getUser(), UI->getOperandValToReplace())) {
2420 TTI, UI->getUser(), UI->getOperandValToReplace());
2422 if (TTI.isLegalAddressingMode(AccessTy.MemTy, /*BaseGV=*/nullptr,
2428 if (TTI.isLegalAddressingMode(AccessTy.MemTy, /*BaseGV=*/nullptr,
2511 if (!isAlwaysFoldable(TTI, Kind, NewAccessTy, /*BaseGV=*/nullptr,
2516 if (!isAlwaysFoldable(TTI, Kind, NewAccessTy, /*BaseGV=*/nullptr,
2539 if (!isAlwaysFoldable(TTI, Kind, AccessTy, /*BaseGV=*/ nullptr,
2802 ScalarEvolution &SE, const TargetTransformInfo &TTI) {
3062 ChainUsersVec[UsersIdx].FarUsers, SE, TTI))
3087 Value *Operand, const TargetTransformInfo &TTI) {
3089 if (!IncConst || !isAddressUse(TTI, UserInst, Operand))
3095 MemAccessTy AccessTy = getAccessType(TTI, UserInst, Operand);
3097 if (!isAlwaysFoldable(TTI, LSRUse::Address, AccessTy, /*BaseGV=*/nullptr,
3167 if (!canFoldIVIncExpr(LeftOverExpr, Inc.UserInst, Inc.IVOperand, TTI)) {
3221 if (isAddressUse(TTI, UserInst, U.getOperandValToReplace())) {
3223 AccessTy = getAccessType(TTI, UserInst, U.getOperandValToReplace());
3332 assert(isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F) &&
3502 static bool mayUsePostIncMode(const TargetTransformInfo &TTI,
3518 if (TTI.isIndexedLoadLegal(TTI.MIM_PostInc, AR->getType()) ||
3519 TTI.isIndexedStoreLegal(TTI.MIM_PostInc, AR->getType())) {
3537 if (TTI.shouldFavorPostInc() && mayUsePostIncMode(TTI, LU, BaseReg, L, SE))
3557 if (isAlwaysFoldable(TTI, SE, LU.MinOffset, LU.MaxOffset, LU.Kind,
3570 isAlwaysFoldable(TTI, SE, LU.MinOffset, LU.MaxOffset, LU.Kind,
3582 TTI.isLegalAddImmediate((uint64_t)F.UnfoldedOffset +
3598 TTI.isLegalAddImmediate((uint64_t)F.UnfoldedOffset +
3680 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F))
3710 if (isLegalUse(TTI, LU.MinOffset - Offset, LU.MaxOffset - Offset, LU.Kind,
3736 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F))
3813 if (!isLegalUse(TTI, Offset, Offset, LU.Kind, LU.AccessTy, F))
3874 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy,
3879 isLegalUse(TTI
3933 if (SrcTy != DstTy && TTI.isTruncateFree(SrcTy, DstTy)) {
4087 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy,
4112 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset,
4114 if (TTI.shouldFavorPostInc() &&
4115 mayUsePostIncMode(TTI, LU, OrigReg, this->L, SE))
4117 if (!TTI.isLegalAddImmediate((uint64_t)NewF.UnfoldedOffset + Imm))
4219 CostF.RateFormula(TTI, F, Regs, VisitedRegs, L, SE, DT, LU, &LoserRegs);
4252 CostBest.RateFormula(TTI, Best, Regs, VisitedRegs, L, SE, DT, LU);
4253 if (CostF.isLess(CostBest, TTI))
4410 if (!isLegalUse(TTI, LUThatHas->MinOffset, LUThatHas->MaxOffset,
4506 CostFA.RateFormula(TTI, FA, Regs, VisitedRegs, L, SE, DT, LU);
4508 CostFB.RateFormula(TTI, FB, Regs, VisitedRegs, L, SE, DT, LU);
4509 return CostFA.isLess(CostFB, TTI);
4819 NewCost.RateFormula(TTI, F, NewRegs, VisitedRegs, L, SE, DT, LU);
4820 if (NewCost.isLess(SolutionCost, TTI)) {
5072 isAMCompletelyFolded(TTI, LU, F)) {
5331 const TargetTransformInfo &TTI)
5332 : IU(IU), SE(SE), DT(DT), LI(LI), TTI(TTI), L(L) {
5431 assert(isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy,
5537 const TargetTransformInfo &TTI) {
5541 Changed |= LSRInstance(L, IU, SE, DT, LI, TTI).getChanged();
5552 unsigned numFolded = Rewriter.replaceCongruentIVs(L, &DT, DeadInsts, &TTI);
5570 const auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
5572 return ReduceLoopStrength(L, IU, SE, DT, LI, TTI);
5579 AR.DT, AR.LI, AR.TTI))