Lines Matching defs:BoUpSLP
1336 class BoUpSLP {
1358 BoUpSLP(Function *Func, ScalarEvolution *Se, TargetTransformInfo *Tti,
1669 const BoUpSLP::EdgeInfo &EI) {
1690 const BoUpSLP &R;
1696 ScalarEvolution &SE, const BoUpSLP &R, int NumLanes,
2058 const BoUpSLP &R;
2592 const BoUpSLP &R)
2837 /// is delayed until BoUpSLP is destructed.
2966 ~BoUpSLP();
3021 return const_cast<BoUpSLP *>(this)->getVectorizedOperand(
3076 return const_cast<BoUpSLP *>(this)->getMatchedVectorizedOperand(E, NodeIdx);
3187 collectUserStores(const BoUpSLP::TreeEntry *TE) const;
3378 void setOperand(const BoUpSLP &R, bool RequireReorder = false) {
3855 /// eventually when the BoUpSLP is destructed. The deferral is required to
4071 const BoUpSLP::ScheduleData &SD) {
4077 friend struct GraphTraits<BoUpSLP *>;
4078 friend struct DOTGraphTraits<BoUpSLP *>;
4282 tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP,
4304 BoUpSLP *SLP);
4439 template <> struct GraphTraits<BoUpSLP *> {
4440 using TreeEntry = BoUpSLP::TreeEntry;
4445 using ContainerTy = BoUpSLP::TreeEntry::VecTreeTy;
4451 ChildIteratorType, SmallVector<BoUpSLP::EdgeInfo, 1>::iterator> {
4454 ChildIteratorType(SmallVector<BoUpSLP::EdgeInfo, 1>::iterator W,
4461 static NodeRef getEntryNode(BoUpSLP &R) {
4489 static nodes_iterator nodes_begin(BoUpSLP *R) {
4493 static nodes_iterator nodes_end(BoUpSLP *R) {
4497 static unsigned size(BoUpSLP *R) { return R->VectorizableTree.size(); }
4500 template <> struct DOTGraphTraits<BoUpSLP *> : public DefaultDOTGraphTraits {
4501 using TreeEntry = BoUpSLP::TreeEntry;
4505 std::string getNodeLabel(const TreeEntry *Entry, const BoUpSLP *R) {
4513 if (llvm::any_of(R->ExternalUses, [&](const BoUpSLP::ExternalUser &EU) {
4523 const BoUpSLP *) {
4535 BoUpSLP::~BoUpSLP() {
4634 std::optional<BoUpSLP::OrdersType>
4635 BoUpSLP::findReusedOrderedScalars(const BoUpSLP::TreeEntry &TE) {
5032 BoUpSLP::LoadsState
5033 BoUpSLP::canVectorizeLoads(ArrayRef<Value *> VL, const Value *VL0,
5483 std::optional<BoUpSLP::OrdersType>
5484 BoUpSLP::findPartiallyOrderedLoads(const BoUpSLP::TreeEntry &TE) {
5500 BoUpSLP::OrdersType Order;
5559 std::optional<BoUpSLP::OrdersType>
5560 BoUpSLP::getReorderingData(const TreeEntry &TE, bool TopToBottom) {
5897 void BoUpSLP::reorderNodeWithReuses(TreeEntry &TE, ArrayRef<int> Mask) const {
5946 void BoUpSLP::reorderTopToBottom() {
6223 bool BoUpSLP::canReorderOperands(
6278 void BoUpSLP::reorderBottomToTop(bool IgnoreReorder) {
6546 Instruction *BoUpSLP::getRootEntryInstruction(const TreeEntry &Entry) const {
6555 void BoUpSLP::buildExternalUses(
6641 BoUpSLP::collectUserStores(const BoUpSLP::TreeEntry *TE) const {
6696 bool BoUpSLP::canFormVector(ArrayRef<StoreInst *> StoresVec,
6750 LLVM_DUMP_METHOD static void dumpOrder(const BoUpSLP::OrdersType &Order) {
6757 SmallVector<BoUpSLP::OrdersType, 1>
6758 BoUpSLP::findExternalStoreUsersReorderIndices(TreeEntry *TE) const {
6787 void BoUpSLP::buildTree(ArrayRef<Value *> Roots,
6796 void BoUpSLP::buildTree(ArrayRef<Value *> Roots) {
6806 const BoUpSLP &R, ArrayRef<Value *> VL, const DataLayout &DL,
6958 void BoUpSLP::tryToVectorizeGatheredLoads(
6986 BoUpSLP::ValueSet &VectorizedLoads,
7180 BoUpSLP::ValueSet VectorizedLoads;
7524 bool BoUpSLP::areAltOperandsProfitable(const InstructionsState &S,
7637 BoUpSLP::TreeEntry::EntryState BoUpSLP::getScalarsVectorizationState(
8096 void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
8893 unsigned BoUpSLP::canMapToVector(Type *T) const {
8926 bool BoUpSLP::canReuseExtract(ArrayRef<Value *> VL,
9011 bool BoUpSLP::areAllUsersVectorized(
9048 void BoUpSLP::TreeEntry::buildAltOpShuffleMask(
9108 TTI::OperandValueInfo BoUpSLP::getOperandInfo(ArrayRef<Value *> Ops) {
9583 void BoUpSLP::reorderGatherNode(TreeEntry &TE) {
9755 void BoUpSLP::transformNodes() {
10118 class BoUpSLP::ShuffleCostEstimator : public BaseShuffleAnalysis {
10125 BoUpSLP &R;
10648 ArrayRef<Value *> VectorizedVals, BoUpSLP &R,
11017 const BoUpSLP::TreeEntry *BoUpSLP::getOperandEntry(const TreeEntry *E,
11032 TTI::CastContextHint BoUpSLP::getCastContextHint(const TreeEntry &TE) const {
11073 BoUpSLP::getEntryCost(const TreeEntry *E, ArrayRef<Value *> VectorizedVals,
11935 bool BoUpSLP::isFullyVectorizableTinyTree(bool ForReduction) const {
12028 bool BoUpSLP::isLoadCombineReductionCandidate(RecurKind RdxKind) const {
12038 bool BoUpSLP::isLoadCombineCandidate(ArrayRef<Value *> Stores) const {
12051 bool BoUpSLP::isTreeTinyAndNotFullyVectorizable(bool ForReduction) const {
12135 bool BoUpSLP::isTreeNotExtendable() const {
12163 InstructionCost BoUpSLP::getSpillCost() const {
12443 InstructionCost BoUpSLP::getTreeCost(ArrayRef<Value *> VectorizedVals) {
12944 BoUpSLP::tryToGatherSingleRegisterExtractElements(
13046 BoUpSLP::tryToGatherExtractElements(SmallVectorImpl<Value *> &VL,
13072 BoUpSLP::isGatherShuffledSingleRegisterEntry(
13585 BoUpSLP::isGatherShuffledEntry(
13658 InstructionCost BoUpSLP::getGatherCost(ArrayRef<Value *> VL, bool ForPoisonSrc,
13726 Instruction &BoUpSLP::getLastInstructionInBundle(const TreeEntry *E) {
13895 void BoUpSLP::setInsertPointAfterBundle(const TreeEntry *E) {
13916 Value *BoUpSLP::gather(
14076 class BoUpSLP::ShuffleInstructionBuilder final : public BaseShuffleAnalysis {
14088 BoUpSLP &R;
14202 ShuffleInstructionBuilder(Type *ScalarTy, IRBuilderBase &Builder, BoUpSLP &R)
14607 BoUpSLP::TreeEntry *BoUpSLP::getMatchedVectorizedOperand(const TreeEntry *E,
14637 Value *BoUpSLP::vectorizeOperand(TreeEntry *E, unsigned NodeIdx,
14735 ResTy BoUpSLP::processBuildVector(const TreeEntry *E, Type *ScalarTy,
15225 Value *BoUpSLP::createBuildVector(const TreeEntry *E, Type *ScalarTy,
15243 Value *BoUpSLP::vectorizeTree(TreeEntry *E, bool PostponedPHIs) {
16275 Value *BoUpSLP::vectorizeTree() {
16281 BoUpSLP::vectorizeTree(const ExtraValueToDebugLocsMap &ExternallyUsedValues,
16929 void BoUpSLP::optimizeGatherSequence() {
17079 BoUpSLP::ScheduleData *
17080 BoUpSLP::BlockScheduling::buildBundle(ArrayRef<Value *> VL) {
17108 std::optional<BoUpSLP::ScheduleData *>
17109 BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP,
17206 void BoUpSLP::BlockScheduling::cancelScheduling(ArrayRef<Value *> VL,
17241 BoUpSLP::ScheduleData *BoUpSLP::BlockScheduling::allocateScheduleDataChunks() {
17250 bool BoUpSLP::BlockScheduling::extendSchedulingRegion(
17320 void BoUpSLP::BlockScheduling::initScheduleData(Instruction *FromI,
17364 void BoUpSLP::BlockScheduling::calculateDependencies(ScheduleData *SD,
17366 BoUpSLP *SLP) {
17538 void BoUpSLP::BlockScheduling::resetSchedule() {
17552 void BoUpSLP::scheduleBlock(BlockScheduling *BS) {
17635 unsigned BoUpSLP::getVectorElementSize(Value *V) {
17718 bool BoUpSLP::collectValuesToDemote(
18011 std::bind(&BoUpSLP::getOperandEntry, this, &E, _1));
18110 void BoUpSLP::computeMinimumValueSizes() {
18517 BoUpSLP R(&F, SE, TTI, TLI, AA, LI, DT, AC, DB, DL, ORE_);
18519 // A general note: the vectorizer must use BoUpSLP::eraseInstruction() to
18562 SLPVectorizerPass::vectorizeStoreChain(ArrayRef<Value *> Chain, BoUpSLP &R,
18685 ArrayRef<StoreInst *> Stores, BoUpSLP &R,
18690 BoUpSLP::ValueSet VectorizedStores;
18705 BoUpSLP::ValueList Operands;
19121 bool SLPVectorizerPass::tryToVectorizeList(ArrayRef<Value *> VL, BoUpSLP &R,
19265 bool SLPVectorizerPass::tryToVectorize(Instruction *I, BoUpSLP &R) {
19650 bool matchAssociativeReduction(BoUpSLP &R, Instruction *Root,
19813 Value *tryToReduce(BoUpSLP &V, const DataLayout &DL, TargetTransformInfo *TTI,
20024 BoUpSLP::ExtraValueToDebugLocsMap ExternallyUsedValues;
20153 BoUpSLP::ExtraValueToDebugLocsMap LocalExternallyUsedValues(
20509 const BoUpSLP &R) {
20697 emitReusedOps(Value *VectorizedValue, IRBuilderBase &Builder, BoUpSLP &R,
20831 unsigned OperandOffset, const BoUpSLP &R) {
20870 const BoUpSLP &R) {
21007 PHINode *P, Instruction *Root, BasicBlock *BB, BoUpSLP &R,
21107 BasicBlock *BB, BoUpSLP &R) {
21115 BoUpSLP &R) {
21124 BasicBlock *BB, BoUpSLP &R,
21148 BasicBlock *BB, BoUpSLP &R,
21175 bool MaxVFOnly, BoUpSLP &R) {
21366 BasicBlock *BB, BoUpSLP &R) {
21425 BasicBlock *BB, BoUpSLP &R) {
21463 bool SLPVectorizerPass::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &R) {
21787 bool SLPVectorizerPass::vectorizeGEPIndices(BasicBlock *BB, BoUpSLP &R) {
21887 bool SLPVectorizerPass::vectorizeStoreChains(BoUpSLP &R) {