Lines Matching defs:const

56   explicit NoTTIImpl(const DataLayout &DL)
66 if (containsIrreducibleCFG<const BasicBlock *>(RPOT, LI))
72 Intrinsic::ID Id, const CallBase &CI, InstructionCost ScalarizationCost,
77 if (const auto *FPMO = dyn_cast<FPMathOperator>(&CI))
89 const IntrinsicInst *I,
96 ArrayRef<const Value *> Args)
101 for (const Value *Argument : Arguments)
106 ArrayRef<const Value *> Args,
109 const IntrinsicInst *I,
139 const SCEV *EC = SE.getExitCount(L, BB);
142 if (const SCEVConstant *ConstEC = dyn_cast<SCEVConstant>(EC)) {
203 TargetTransformInfo::TargetTransformInfo(const DataLayout &DL)
216 unsigned TargetTransformInfo::getInliningThresholdMultiplier() const {
221 TargetTransformInfo::getInliningCostBenefitAnalysisSavingsMultiplier() const {
227 const {
232 TargetTransformInfo::adjustInliningThreshold(const CallBase *CB) const {
236 unsigned TargetTransformInfo::getCallerAllocaCost(const CallBase *CB,
237 const AllocaInst *AI) const {
241 int TargetTransformInfo::getInlinerVectorBonusPercent() const {
246 Type *PointeeType, const Value *Ptr, ArrayRef<const Value *> Operands,
247 Type *AccessType, TTI::TargetCostKind CostKind) const {
252 ArrayRef<const Value *> Ptrs, const Value *Base,
253 const TTI::PointersChainInfo &Info, Type *AccessTy,
254 TTI::TargetCostKind CostKind) const {
261 const SwitchInst &SI, unsigned &JTSize, ProfileSummaryInfo *PSI,
262 BlockFrequencyInfo *BFI) const {
267 TargetTransformInfo::getInstructionCost(const User *U,
268 ArrayRef<const Value *> Operands,
269 enum TargetCostKind CostKind) const {
276 BranchProbability TargetTransformInfo::getPredictableBranchThreshold() const {
282 InstructionCost TargetTransformInfo::getBranchMispredictPenalty() const {
286 bool TargetTransformInfo::hasBranchDivergence(const Function *F) const {
290 bool TargetTransformInfo::isSourceOfDivergence(const Value *V) const {
294 bool llvm::TargetTransformInfo::isAlwaysUniform(const Value *V) const {
299 unsigned ToAS) const {
304 unsigned ToAS) const {
308 unsigned TargetTransformInfo::getFlatAddressSpace() const {
313 SmallVectorImpl<int> &OpIndexes, Intrinsic::ID IID) const {
318 unsigned ToAS) const {
323 unsigned AS) const {
327 unsigned TargetTransformInfo::getAssumedAddrSpace(const Value *V) const {
331 bool TargetTransformInfo::isSingleThreaded() const {
335 std::pair<const Value *, unsigned>
336 TargetTransformInfo::getPredicatedAddrSpace(const Value *V) const {
341 IntrinsicInst *II, Value *OldV, Value *NewV) const {
345 bool TargetTransformInfo::isLoweredToCall(const Function *F) const {
351 TargetLibraryInfo *LibInfo, HardwareLoopInfo &HWLoopInfo) const {
356 TailFoldingInfo *TFI) const {
361 bool IVUpdateMayOverflow) const {
367 IntrinsicInst &II) const {
373 bool &KnownBitsComputed) const {
382 SimplifyAndSetOp) const {
390 OptimizationRemarkEmitter *ORE) const {
395 PeelingPreferences &PP) const {
399 bool TargetTransformInfo::isLegalAddImmediate(int64_t Imm) const {
403 bool TargetTransformInfo::isLegalAddScalableImmediate(int64_t Imm) const {
407 bool TargetTransformInfo::isLegalICmpImmediate(int64_t Imm) const {
416 int64_t ScalableOffset) const {
421 bool TargetTransformInfo::isLSRCostLess(const LSRCost &C1,
422 const LSRCost &C2) const {
426 bool TargetTransformInfo::isNumRegsMajorCostOfLSR() const {
430 bool TargetTransformInfo::shouldFoldTerminatingConditionAfterLSR() const {
434 bool TargetTransformInfo::shouldDropLSRSolutionIfLessProfitable() const {
438 bool TargetTransformInfo::isProfitableLSRChainElement(Instruction *I) const {
442 bool TargetTransformInfo::canMacroFuseCmp() const {
449 TargetLibraryInfo *LibInfo) const {
454 TargetTransformInfo::getPreferredAddressingMode(const Loop *L,
455 ScalarEvolution *SE) const {
460 Align Alignment) const {
465 Align Alignment) const {
470 Align Alignment) const {
474 bool TargetTransformInfo::isLegalNTLoad(Type *DataType, Align Alignment) const {
479 ElementCount NumElements) const {
484 Align Alignment) const {
490 const SmallBitVector &OpcodeMask) const {
495 Align Alignment) const {
500 Align Alignment) const {
505 Align Alignment) const {
510 Align Alignment) const {
515 Align Alignment) const {
520 Align Alignment) const {
525 Type *DataType) const {
529 bool TargetTransformInfo::enableOrderedReductions() const {
533 bool TargetTransformInfo::hasDivRemOp(Type *DataType, bool IsSigned) const {
538 unsigned AddrSpace) const {
542 bool TargetTransformInfo::prefersVectorizedAddressing() const {
548 int64_t Scale, unsigned AddrSpace) const {
555 bool TargetTransformInfo::LSRWithInstrQueries() const {
559 bool TargetTransformInfo::isTruncateFree(Type *Ty1, Type *Ty2) const {
563 bool TargetTransformInfo::isProfitableToHoist(Instruction *I) const {
567 bool TargetTransformInfo::useAA() const { return TTIImpl->useAA(); }
569 bool TargetTransformInfo::isTypeLegal(Type *Ty) const {
573 unsigned TargetTransformInfo::getRegUsageForType(Type *Ty) const {
577 bool TargetTransformInfo::shouldBuildLookupTables() const {
582 Constant *C) const {
586 bool TargetTransformInfo::shouldBuildRelLookupTables() const {
590 bool TargetTransformInfo::useColdCCForColdCall(Function &F) const {
595 VectorType *Ty, const APInt &DemandedElts, bool Insert, bool Extract,
596 TTI::TargetCostKind CostKind) const {
602 ArrayRef<const Value *> Args, ArrayRef<Type *> Tys,
603 TTI::TargetCostKind CostKind) const {
607 bool TargetTransformInfo::supportsEfficientVectorElementLoadStore() const {
611 bool TargetTransformInfo::supportsTailCalls() const {
615 bool TargetTransformInfo::supportsTailCallFor(const CallBase *CB) const {
620 bool LoopHasReductions) const {
625 TargetTransformInfo::enableMemCmpExpansion(bool OptSize, bool IsZeroCmp) const {
629 bool TargetTransformInfo::enableSelectOptimize() const {
634 const Instruction *I) const {
638 bool TargetTransformInfo::enableInterleavedAccessVectorization() const {
642 bool TargetTransformInfo::enableMaskedInterleavedAccessVectorization() const {
646 bool TargetTransformInfo::isFPVectorizationPotentiallyUnsafe() const {
655 unsigned *Fast) const {
661 TargetTransformInfo::getPopcntSupport(unsigned IntTyWidthInBit) const {
665 bool TargetTransformInfo::haveFastSqrt(Type *Ty) const {
670 const Instruction *I) const {
674 bool TargetTransformInfo::isFCmpOrdCheaperThanFCmpZero(Type *Ty) const {
678 InstructionCost TargetTransformInfo::getFPOpCost(Type *Ty) const {
686 const APInt &Imm,
687 Type *Ty) const {
694 TargetTransformInfo::getIntImmCost(const APInt &Imm, Type *Ty,
695 TTI::TargetCostKind CostKind) const {
702 unsigned Opcode, unsigned Idx, const APInt &Imm, Type *Ty,
703 TTI::TargetCostKind CostKind, Instruction *Inst) const {
712 const APInt &Imm, Type *Ty,
713 TTI::TargetCostKind CostKind) const {
721 const Instruction &Inst, const Function &Fn) const {
725 unsigned TargetTransformInfo::getNumberOfRegisters(unsigned ClassID) const {
729 bool TargetTransformInfo::hasConditionalLoadStoreForType(Type *Ty) const {
734 Type *Ty) const {
738 const char *TargetTransformInfo::getRegisterClassName(unsigned ClassID) const {
743 TargetTransformInfo::RegisterKind K) const {
747 unsigned TargetTransformInfo::getMinVectorRegisterBitWidth() const {
751 std::optional<unsigned> TargetTransformInfo::getMaxVScale() const {
755 std::optional<unsigned> TargetTransformInfo::getVScaleForTuning() const {
759 bool TargetTransformInfo::isVScaleKnownToBeAPowerOfTwo() const {
764 TargetTransformInfo::RegisterKind K) const {
769 bool IsScalable) const {
774 unsigned Opcode) const {
779 Type *ScalarValTy) const {
784 const Instruction &I, bool &AllowPromotionWithoutCommonHeader) const {
789 unsigned TargetTransformInfo::getCacheLineSize() const {
795 TargetTransformInfo::getCacheSize(CacheLevel Level) const {
800 TargetTransformInfo::getCacheAssociativity(CacheLevel Level) const {
804 std::optional<unsigned> TargetTransformInfo::getMinPageSize() const {
809 unsigned TargetTransformInfo::getPrefetchDistance() const {
815 unsigned NumPrefetches, bool HasCall) const {
820 unsigned TargetTransformInfo::getMaxPrefetchIterationsAhead() const {
824 bool TargetTransformInfo::enableWritePrefetching() const {
828 bool TargetTransformInfo::shouldPrefetchAddressSpace(unsigned AS) const {
832 unsigned TargetTransformInfo::getMaxInterleaveFactor(ElementCount VF) const {
837 TargetTransformInfo::getOperandInfo(const Value *V) {
842 if (const auto *CI = dyn_cast<ConstantInt>(V)) {
854 if (const auto *ShuffleInst = dyn_cast<ShuffleVectorInst>(V))
858 const Value *Splat = getSplatValue(V);
872 } else if (const auto *CDS = dyn_cast<ConstantDataSequential>(V)) {
900 ArrayRef<const Value *> Args, const Instruction *CxtI,
901 const TargetLibraryInfo *TLibInfo) const {
926 const SmallBitVector &OpcodeMask, TTI::TargetCostKind CostKind) const {
936 ArrayRef<const Value *> Args, const Instruction *CxtI) const {
944 TargetTransformInfo::getCastContextHint(const Instruction *I) {
948 auto getLoadStoreKind = [](const Value *V, unsigned LdStOp, unsigned MaskedOp,
950 const Instruction *I = dyn_cast<Instruction>(V);
957 if (const IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) {
989 TTI::TargetCostKind CostKind, const Instruction *I) const {
999 unsigned Opcode, Type *Dst, VectorType *VecTy, unsigned Index) const {
1007 unsigned Opcode, TTI::TargetCostKind CostKind, const Instruction *I) const {
1017 TTI::TargetCostKind CostKind, const Instruction *I) const {
1028 Value *Op0, Value *Op1) const {
1039 TargetTransformInfo::getVectorInstrCost(const Instruction &I, Type *Val,
1041 unsigned Index) const {
1051 Type *EltTy, int ReplicationFactor, int VF, const APInt &DemandedDstElts,
1052 TTI::TargetCostKind CostKind) const {
1062 const Instruction *I) const {
1073 TTI::TargetCostKind CostKind) const {
1081 unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask,
1082 Align Alignment, TTI::TargetCostKind CostKind, const Instruction *I) const {
1091 unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask,
1092 Align Alignment, TTI::TargetCostKind CostKind, const Instruction *I) const {
1102 bool UseMaskForCond, bool UseMaskForGaps) const {
1111 TargetTransformInfo::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
1112 TTI::TargetCostKind CostKind) const {
1121 TTI::TargetCostKind CostKind) const {
1127 unsigned TargetTransformInfo::getNumberOfParts(Type *Tp) const {
1133 const SCEV *Ptr) const {
1139 InstructionCost TargetTransformInfo::getMemcpyCost(const Instruction *I) const {
1145 uint64_t TargetTransformInfo::getMaxMemIntrinsicInlineSizeThreshold() const {
1151 TTI::TargetCostKind CostKind) const {
1160 TTI::TargetCostKind CostKind) const {
1169 FastMathFlags FMF, TTI::TargetCostKind CostKind) const {
1176 TTI::TargetCostKind CostKind) const {
1181 TargetTransformInfo::getCostOfKeepingLiveOverCall(ArrayRef<Type *> Tys) const {
1186 MemIntrinsicInfo &Info) const {
1190 unsigned TargetTransformInfo::getAtomicMemIntrinsicMaxElementSize() const {
1195 IntrinsicInst *Inst, Type *ExpectedType) const {
1202 std::optional<uint32_t> AtomicElementSize) const {
1212 std::optional<uint32_t> AtomicCpySize) const {
1218 bool TargetTransformInfo::areInlineCompatible(const Function *Caller,
1219 const Function *Callee) const {
1224 TargetTransformInfo::getInlineCallPenalty(const Function *F,
1225 const CallBase &Call,
1226 unsigned DefaultCallPenalty) const {
1231 const Function *Caller, const Function *Callee,
1232 const ArrayRef<Type *> &Types) const {
1237 Type *Ty) const {
1242 Type *Ty) const {
1246 unsigned TargetTransformInfo::getLoadStoreVecRegBitWidth(unsigned AS) const {
1250 bool TargetTransformInfo::isLegalToVectorizeLoad(LoadInst *LI) const {
1254 bool TargetTransformInfo::isLegalToVectorizeStore(StoreInst *SI) const {
1259 unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const {
1265 unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const {
1271 const RecurrenceDescriptor &RdxDesc, ElementCount VF) const {
1275 bool TargetTransformInfo::isElementTypeLegalForScalableVector(Type *Ty) const {
1282 VectorType *VecTy) const {
1289 VectorType *VecTy) const {
1293 bool TargetTransformInfo::preferFixedOverScalableIfEqualCost() const {
1298 ReductionFlags Flags) const {
1303 unsigned Opcode, Type *Ty, ReductionFlags Flags) const {
1307 bool TargetTransformInfo::preferEpilogueVectorization() const {
1312 TargetTransformInfo::getVPLegalizationStrategy(const VPIntrinsic &VPI) const {
1316 bool TargetTransformInfo::hasArmWideBranch(bool Thumb) const {
1320 unsigned TargetTransformInfo::getMaxNumArgs() const {
1324 bool TargetTransformInfo::shouldExpandReduction(const IntrinsicInst *II) const {
1330 const IntrinsicInst *II) const {
1334 unsigned TargetTransformInfo::getGISelRematGlobalCost() const {
1338 unsigned TargetTransformInfo::getMinTripCountTailFoldingThreshold() const {
1342 bool TargetTransformInfo::supportsScalableVectors() const {
1346 bool TargetTransformInfo::enableScalableVectorization() const {
1351 Align Alignment) const {
1360 std::function<Result(const Function &)> TTICallback)
1363 TargetIRAnalysis::Result TargetIRAnalysis::run(const Function &F,
1370 TargetIRAnalysis::Result TargetIRAnalysis::getDefaultTTI(const Function &F) {
1394 TargetTransformInfo &TargetTransformInfoWrapperPass::getTTI(const Function &F) {