Lines Matching refs:Chain

148   getBoundaryInstrs(ArrayRef<Instruction *> Chain);
151 void eraseInstructions(ArrayRef<Instruction *> Chain);
158 splitOddVectorElts(ArrayRef<Instruction *> Chain, unsigned ElementSizeBits);
166 ArrayRef<Instruction *> getVectorizablePrefix(ArrayRef<Instruction *> Chain);
180 vectorizeLoadChain(ArrayRef<Instruction *> Chain,
185 vectorizeStoreChain(ArrayRef<Instruction *> Chain,
620 Vectorizer::getBoundaryInstrs(ArrayRef<Instruction *> Chain) { in getBoundaryInstrs() argument
621 Instruction *C0 = Chain[0]; in getBoundaryInstrs()
628 if (!is_contained(Chain, &I)) in getBoundaryInstrs()
635 if (NumFound == Chain.size()) { in getBoundaryInstrs()
645 void Vectorizer::eraseInstructions(ArrayRef<Instruction *> Chain) { in eraseInstructions() argument
647 for (Instruction *I : Chain) { in eraseInstructions()
662 Vectorizer::splitOddVectorElts(ArrayRef<Instruction *> Chain, in splitOddVectorElts() argument
665 unsigned SizeBytes = ElementSizeBytes * Chain.size(); in splitOddVectorElts()
667 if (NumLeft == Chain.size()) { in splitOddVectorElts()
674 return std::make_pair(Chain.slice(0, NumLeft), Chain.slice(NumLeft)); in splitOddVectorElts()
678 Vectorizer::getVectorizablePrefix(ArrayRef<Instruction *> Chain) { in getVectorizablePrefix() argument
683 bool IsLoadChain = isa<LoadInst>(Chain[0]); in getVectorizablePrefix()
685 for (Instruction *I : Chain) { in getVectorizablePrefix()
695 for (Instruction &I : make_range(getBoundaryInstrs(Chain))) { in getVectorizablePrefix()
696 if ((isa<LoadInst>(I) || isa<StoreInst>(I)) && is_contained(Chain, &I)) { in getVectorizablePrefix()
789 for (unsigned ChainLen = Chain.size(); ChainIdx < ChainLen; ++ChainIdx) { in getVectorizablePrefix()
790 if (!VectorizableChainInstrs.count(Chain[ChainIdx])) in getVectorizablePrefix()
793 return Chain.slice(0, ChainIdx); in getVectorizablePrefix()
908 for (const std::pair<ChainID, InstrList> &Chain : Map) { in vectorizeChains() local
909 unsigned Size = Chain.second.size(); in vectorizeChains()
918 ArrayRef<Instruction *> Chunk(&Chain.second[CI], Len); in vectorizeChains()
996 ArrayRef<Instruction *> Chain, in vectorizeStoreChain() argument
998 StoreInst *S0 = cast<StoreInst>(Chain[0]); in vectorizeStoreChain()
1002 for (Instruction *I : Chain) { in vectorizeStoreChain()
1019 unsigned ChainSize = Chain.size(); in vectorizeStoreChain()
1023 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeStoreChain()
1027 ArrayRef<Instruction *> NewChain = getVectorizablePrefix(Chain); in vectorizeStoreChain()
1030 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeStoreChain()
1040 Chain = NewChain; in vectorizeStoreChain()
1041 ChainSize = Chain.size(); in vectorizeStoreChain()
1052 Chain.size() * VecStoreTy->getNumElements()); in vectorizeStoreChain()
1054 VecTy = FixedVectorType::get(StoreTy, Chain.size()); in vectorizeStoreChain()
1064 vectorizeStoreChain(Chain.slice(0, TargetVF), InstructionsProcessed); in vectorizeStoreChain()
1066 vectorizeStoreChain(Chain.slice(TargetVF), InstructionsProcessed); in vectorizeStoreChain()
1072 for (Instruction *I : Chain) in vectorizeStoreChain()
1078 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeStoreChain()
1083 auto Chains = splitOddVectorElts(Chain, Sz); in vectorizeStoreChain()
1100 auto Chains = splitOddVectorElts(Chain, Sz); in vectorizeStoreChain()
1108 std::tie(First, Last) = getBoundaryInstrs(Chain); in vectorizeStoreChain()
1115 for (unsigned I = 0, E = Chain.size(); I != E; ++I) { in vectorizeStoreChain()
1116 StoreInst *Store = cast<StoreInst>(Chain[I]); in vectorizeStoreChain()
1130 for (unsigned I = 0, E = Chain.size(); I != E; ++I) { in vectorizeStoreChain()
1131 StoreInst *Store = cast<StoreInst>(Chain[I]); in vectorizeStoreChain()
1147 propagateMetadata(SI, Chain); in vectorizeStoreChain()
1149 eraseInstructions(Chain); in vectorizeStoreChain()
1151 NumScalarsVectorized += Chain.size(); in vectorizeStoreChain()
1156 ArrayRef<Instruction *> Chain, in vectorizeLoadChain() argument
1158 LoadInst *L0 = cast<LoadInst>(Chain[0]); in vectorizeLoadChain()
1162 for (const auto &V : Chain) { in vectorizeLoadChain()
1179 unsigned ChainSize = Chain.size(); in vectorizeLoadChain()
1183 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeLoadChain()
1187 ArrayRef<Instruction *> NewChain = getVectorizablePrefix(Chain); in vectorizeLoadChain()
1190 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeLoadChain()
1200 Chain = NewChain; in vectorizeLoadChain()
1201 ChainSize = Chain.size(); in vectorizeLoadChain()
1211 Chain.size() * VecLoadTy->getNumElements()); in vectorizeLoadChain()
1213 VecTy = FixedVectorType::get(LoadTy, Chain.size()); in vectorizeLoadChain()
1223 vectorizeLoadChain(Chain.slice(0, TargetVF), InstructionsProcessed); in vectorizeLoadChain()
1225 vectorizeLoadChain(Chain.slice(TargetVF), InstructionsProcessed); in vectorizeLoadChain()
1231 InstructionsProcessed->insert(Chain.begin(), Chain.end()); in vectorizeLoadChain()
1236 auto Chains = splitOddVectorElts(Chain, Sz); in vectorizeLoadChain()
1253 auto Chains = splitOddVectorElts(Chain, Sz); in vectorizeLoadChain()
1262 for (Instruction *I : Chain) in vectorizeLoadChain()
1270 std::tie(First, Last) = getBoundaryInstrs(Chain); in vectorizeLoadChain()
1277 propagateMetadata(LI, Chain); in vectorizeLoadChain()
1279 for (unsigned I = 0, E = Chain.size(); I != E; ++I) { in vectorizeLoadChain()
1280 Value *CV = Chain[I]; in vectorizeLoadChain()
1311 eraseInstructions(Chain); in vectorizeLoadChain()
1314 NumScalarsVectorized += Chain.size(); in vectorizeLoadChain()