Lines Matching refs:BoUpSLP
839 class BoUpSLP { class
852 BoUpSLP(Function *Func, ScalarEvolution *Se, TargetTransformInfo *Tti, in BoUpSLP() function in llvm::slpvectorizer::BoUpSLP
1040 const BoUpSLP::EdgeInfo &EI) { in operator <<()
1057 const BoUpSLP &R;
1063 const BoUpSLP &R, int NumLanes, int MaxLevel) in LookAheadHeuristics()
1386 const BoUpSLP &R;
1810 ScalarEvolution &SE, const BoUpSLP &R) in VLOperands()
2084 ~BoUpSLP();
2118 return const_cast<BoUpSLP *>(this)->getVectorizedOperand( in getVectorizedOperand()
2192 const BoUpSLP &R);
2198 collectUserStores(const BoUpSLP::TreeEntry *TE) const;
2867 const BoUpSLP::ScheduleData &SD) { in operator <<()
2873 friend struct GraphTraits<BoUpSLP *>;
2874 friend struct DOTGraphTraits<BoUpSLP *>;
3108 tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP,
3130 BoUpSLP *SLP);
3253 template <> struct GraphTraits<BoUpSLP *> {
3254 using TreeEntry = BoUpSLP::TreeEntry;
3259 using ContainerTy = BoUpSLP::TreeEntry::VecTreeTy;
3265 ChildIteratorType, SmallVector<BoUpSLP::EdgeInfo, 1>::iterator> {
3268 ChildIteratorType(SmallVector<BoUpSLP::EdgeInfo, 1>::iterator W, in ChildIteratorType()
3275 static NodeRef getEntryNode(BoUpSLP &R) { in getEntryNode()
3303 static nodes_iterator nodes_begin(BoUpSLP *R) { in nodes_begin()
3307 static nodes_iterator nodes_end(BoUpSLP *R) { in nodes_end()
3311 static unsigned size(BoUpSLP *R) { return R->VectorizableTree.size(); } in size()
3314 template <> struct DOTGraphTraits<BoUpSLP *> : public DefaultDOTGraphTraits {
3315 using TreeEntry = BoUpSLP::TreeEntry;
3319 std::string getNodeLabel(const TreeEntry *Entry, const BoUpSLP *R) { in getNodeLabel()
3326 if (llvm::any_of(R->ExternalUses, [&](const BoUpSLP::ExternalUser &EU) { in getNodeLabel()
3336 const BoUpSLP *) { in getNodeAttributes()
3345 BoUpSLP::~BoUpSLP() { in ~BoUpSLP()
3410 Optional<BoUpSLP::OrdersType>
3411 BoUpSLP::findReusedOrderedScalars(const BoUpSLP::TreeEntry &TE) { in findReusedOrderedScalars()
3639 Optional<BoUpSLP::OrdersType>
3640 BoUpSLP::findPartiallyOrderedLoads(const BoUpSLP::TreeEntry &TE) { in findPartiallyOrderedLoads()
3653 BoUpSLP::OrdersType Order; in findPartiallyOrderedLoads()
3659 Optional<BoUpSLP::OrdersType> BoUpSLP::getReorderingData(const TreeEntry &TE, in getReorderingData()
3706 void BoUpSLP::reorderTopToBottom() { in reorderTopToBottom()
3922 bool BoUpSLP::canReorderOperands( in canReorderOperands()
3973 void BoUpSLP::reorderBottomToTop(bool IgnoreReorder) { in reorderBottomToTop()
4224 void BoUpSLP::buildExternalUses( in buildExternalUses()
4285 BoUpSLP::collectUserStores(const BoUpSLP::TreeEntry *TE) const { in collectUserStores()
4325 bool BoUpSLP::CanFormVector(const SmallVector<StoreInst *, 4> &StoresVec, in CanFormVector()
4390 LLVM_DUMP_METHOD static void dumpOrder(const BoUpSLP::OrdersType &Order) { in dumpOrder()
4397 SmallVector<BoUpSLP::OrdersType, 1>
4398 BoUpSLP::findExternalStoreUsersReorderIndices(TreeEntry *TE) const { in findExternalStoreUsersReorderIndices()
4429 void BoUpSLP::buildTree(ArrayRef<Value *> Roots, in buildTree()
4438 void BoUpSLP::buildTree(ArrayRef<Value *> Roots) { in buildTree()
4550 void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth, in buildTree_rec()
5533 unsigned BoUpSLP::canMapToVector(Type *T, const DataLayout &DL) const { in canMapToVector()
5564 bool BoUpSLP::canReuseExtract(ArrayRef<Value *> VL, Value *OpValue, in canReuseExtract()
5645 bool BoUpSLP::areAllUsersVectorized(Instruction *I, in areAllUsersVectorized()
5811 InstructionCost BoUpSLP::getEntryCost(const TreeEntry *E, in getEntryCost()
5990 BoUpSLP::ValueSet VectorizedLoads; in getEntryCost()
6608 bool BoUpSLP::isFullyVectorizableTinyTree(bool ForReduction) const { in isFullyVectorizableTinyTree()
6700 bool BoUpSLP::isLoadCombineReductionCandidate(RecurKind RdxKind) const { in isLoadCombineReductionCandidate()
6710 bool BoUpSLP::isLoadCombineCandidate() const { in isLoadCombineCandidate()
6723 bool BoUpSLP::isTreeTinyAndNotFullyVectorizable(bool ForReduction) const { in isTreeTinyAndNotFullyVectorizable()
6752 InstructionCost BoUpSLP::getSpillCost() const { in getSpillCost()
7035 InstructionCost BoUpSLP::getTreeCost(ArrayRef<Value *> VectorizedVals) { in getTreeCost()
7247 BoUpSLP::isGatherShuffledEntry(const TreeEntry *TE, SmallVectorImpl<int> &Mask, in isGatherShuffledEntry()
7385 InstructionCost BoUpSLP::getGatherCost(FixedVectorType *Ty, in getGatherCost()
7396 InstructionCost BoUpSLP::getGatherCost(ArrayRef<Value *> VL) const { in getGatherCost()
7426 void BoUpSLP::reorderInputsAccordingToOpcode(ArrayRef<Value *> VL, in reorderInputsAccordingToOpcode()
7431 const BoUpSLP &R) { in reorderInputsAccordingToOpcode()
7441 void BoUpSLP::setInsertPointAfterBundle(const TreeEntry *E) { in setInsertPointAfterBundle()
7570 Value *BoUpSLP::gather(ArrayRef<Value *> VL) { in gather()
7695 Value *BoUpSLP::vectorizeTree(ArrayRef<Value *> VL) { in vectorizeTree()
7763 Value *BoUpSLP::createBuildVector(ArrayRef<Value *> VL) { in createBuildVector()
7826 Value *BoUpSLP::vectorizeTree(TreeEntry *E) { in vectorizeTree()
8420 Value *BoUpSLP::vectorizeTree() { in vectorizeTree()
8437 BoUpSLP::vectorizeTree(ExtraValueToDebugLocsMap &ExternallyUsedValues) { in vectorizeTree()
8901 void BoUpSLP::optimizeGatherSequence() { in optimizeGatherSequence()
9049 BoUpSLP::ScheduleData *
9050 BoUpSLP::BlockScheduling::buildBundle(ArrayRef<Value *> VL) { in buildBundle()
9078 Optional<BoUpSLP::ScheduleData *>
9079 BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *> VL, BoUpSLP *SLP, in tryScheduleBundle()
9175 void BoUpSLP::BlockScheduling::cancelScheduling(ArrayRef<Value *> VL, in cancelScheduling()
9210 BoUpSLP::ScheduleData *BoUpSLP::BlockScheduling::allocateScheduleDataChunks() { in allocateScheduleDataChunks()
9219 bool BoUpSLP::BlockScheduling::extendSchedulingRegion(Value *V, in extendSchedulingRegion()
9297 void BoUpSLP::BlockScheduling::initScheduleData(Instruction *FromI, in initScheduleData()
9342 void BoUpSLP::BlockScheduling::calculateDependencies(ScheduleData *SD, in calculateDependencies()
9344 BoUpSLP *SLP) { in calculateDependencies()
9524 void BoUpSLP::BlockScheduling::resetSchedule() { in resetSchedule()
9538 void BoUpSLP::scheduleBlock(BlockScheduling *BS) { in scheduleBlock()
9623 unsigned BoUpSLP::getVectorElementSize(Value *V) { in getVectorElementSize()
9774 void BoUpSLP::computeMinimumValueSizes() { in computeMinimumValueSizes()
10020 BoUpSLP R(&F, SE, TTI, TLI, AA, LI, DT, AC, DB, DL, ORE_); in runImpl()
10061 bool SLPVectorizerPass::vectorizeStoreChain(ArrayRef<Value *> Chain, BoUpSLP &R, in vectorizeStoreChain()
10107 BoUpSLP &R) { in vectorizeStores()
10110 BoUpSLP::ValueSet VectorizedStores; in vectorizeStores()
10177 BoUpSLP::ValueList Operands; in vectorizeStores()
10279 bool SLPVectorizerPass::tryToVectorizePair(Value *A, Value *B, BoUpSLP &R) { in tryToVectorizePair()
10288 bool SLPVectorizerPass::tryToVectorizeList(ArrayRef<Value *> VL, BoUpSLP &R, in tryToVectorizeList()
10422 bool SLPVectorizerPass::tryToVectorize(Instruction *I, BoUpSLP &R) { in tryToVectorize()
10993 Value *tryToReduce(BoUpSLP &V, TargetTransformInfo *TTI) { in tryToReduce()
11011 BoUpSLP::ExtraValueToDebugLocsMap ExternallyUsedValues; in tryToReduce()
11170 BoUpSLP::ExtraValueToDebugLocsMap LocalExternallyUsedValues( in tryToReduce()
11675 PHINode *P, Instruction *Root, BasicBlock *BB, BoUpSLP &R, in tryToVectorizeHorReductionOrInstOperands()
11678 const function_ref<bool(Instruction *, BoUpSLP &)> Vectorize) { in tryToVectorizeHorReductionOrInstOperands()
11784 BasicBlock *BB, BoUpSLP &R, in vectorizeRootInstruction()
11793 auto &&ExtraVectorization = [this](Instruction *I, BoUpSLP &R) -> bool { in vectorizeRootInstruction()
11801 BasicBlock *BB, BoUpSLP &R) { in vectorizeInsertValueInst()
11817 BasicBlock *BB, BoUpSLP &R) { in vectorizeInsertElementInst()
11958 SmallVectorImpl<Instruction *> &Instructions, BasicBlock *BB, BoUpSLP &R, in vectorizeSimpleInstructions()
12035 bool SLPVectorizerPass::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &R) { in vectorizeChainsInBlock()
12277 bool SLPVectorizerPass::vectorizeGEPIndices(BasicBlock *BB, BoUpSLP &R) { in vectorizeGEPIndices()
12369 bool SLPVectorizerPass::vectorizeStoreChains(BoUpSLP &R) { in vectorizeStoreChains()