reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Vectorize/SLPVectorizer.cpp
 1199       if (VL.size() == Scalars.size())
 1200         return std::equal(VL.begin(), VL.end(), Scalars.begin());
 1204                  [this](Value *V, unsigned Idx) { return V == Scalars[Idx]; });
 1253       Operands[OpIdx].resize(Scalars.size());
 1254       for (unsigned Lane = 0, E = Scalars.size(); Lane != E; ++Lane)
 1261       auto *I0 = cast<Instruction>(Scalars[0]);
 1263       unsigned NumLanes = Scalars.size();
 1268           auto *I = cast<Instruction>(Scalars[Lane]);
 1339       InstructionsState S = getSameOpcode(Scalars, ReorderIndices.front());
 1354       for (Value *V : Scalars)
 1394     Last->Scalars.insert(Last->Scalars.begin(), VL.begin(), VL.end());
 1394     Last->Scalars.insert(Last->Scalars.begin(), VL.begin(), VL.end());
 2049     if (isSplat(Entry->Scalars)) {
 2050       OS << "<splat> " << *Entry->Scalars[0];
 2053     for (auto V : Entry->Scalars) {
 2122     for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) {
 2123       Value *Scalar = Entry->Scalars[Lane];
 2147           Value *UseScalar = UseEntry->Scalars[0];
 2908   ArrayRef<Value*> VL = E->Scalars;
 3285       (allConstant(VectorizableTree[1]->Scalars) ||
 3286        isSplat(VectorizableTree[1]->Scalars)))
 3300   unsigned NumElts = VectorizableTree[0]->Scalars.size();
 3301   Value *FirstReduced = VectorizableTree[0]->Scalars[0];
 3358   unsigned BundleWidth = VectorizableTree.front()->Scalars.size();
 3365     Instruction *Inst = dyn_cast<Instruction>(TEPtr->Scalars[0]);
 3427   unsigned BundleWidth = VectorizableTree[0]->Scalars.size();
 3448               return EntryPtr->NeedToGather && EntryPtr->isSame(TE.Scalars);
 3454                       << " for bundle that starts with " << *TE.Scalars[0]
 3476     auto *ScalarRoot = VectorizableTree[0]->Scalars[0];
 3559   assert(llvm::all_of(make_range(E->Scalars.begin(), E->Scalars.end()),
 3559   assert(llvm::all_of(make_range(E->Scalars.begin(), E->Scalars.end()),
 3574         BlocksSchedules[BB]->getScheduleData(E->isOneOf(E->Scalars.back()));
 3600     SmallPtrSet<Value *, 16> Bundle(E->Scalars.begin(), E->Scalars.end());
 3600     SmallPtrSet<Value *, 16> Bundle(E->Scalars.begin(), E->Scalars.end());
 3629         for (unsigned Lane = 0, LE = E->Scalars.size(); Lane != LE; ++Lane) {
 3631           if (E->Scalars[Lane] == VL[i]) {
 3656         if (VL.size() == E->Scalars.size() && !E->ReuseShuffleIndices.empty()) {
 3726     LLVM_DEBUG(dbgs() << "SLP: Diamond merged for " << *E->Scalars[0] << ".\n");
 3734   VectorType *VecTy = VectorType::get(ScalarTy, E->Scalars.size());
 3740     auto *V = Gather(E->Scalars, VecTy);
 3813       auto *V = Gather(E->Scalars, VecTy);
 3832         Value *NewV = propagateMetadata(V, E->Scalars);
 3848       auto *V = Gather(E->Scalars, VecTy);
 3910       propagateIRFlags(V, E->Scalars, VL0);
 3952       propagateIRFlags(V, E->Scalars, VL0);
 3954         V = propagateMetadata(I, E->Scalars);
 3996       propagateIRFlags(V, E->Scalars, VL0);
 3998         V = propagateMetadata(I, E->Scalars);
 4036       Value *V = propagateMetadata(LI, E->Scalars);
 4074       Value *V = propagateMetadata(ST, E->Scalars);
 4098         V = propagateMetadata(I, E->Scalars);
 4137       Type *Tys[] = { VectorType::get(CI->getType(), E->Scalars.size()) };
 4149       propagateIRFlags(V, E->Scalars, VL0);
 4198       unsigned e = E->Scalars.size();
 4201         auto *OpInst = cast<Instruction>(E->Scalars[i]);
 4205           AltScalars.push_back(E->Scalars[i]);
 4208           OpScalars.push_back(E->Scalars[i]);
 4218         V = propagateMetadata(I, E->Scalars);
 4252   auto *ScalarRoot = VectorizableTree[0]->Scalars[0];
 4256     auto BundleWidth = VectorizableTree[0]->Scalars.size();
 4366     for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) {
 4367       Value *Scalar = Entry->Scalars[Lane];
 5060   auto &TreeRoot = VectorizableTree[0]->Scalars;
 5082     Expr.insert(EntryPtr->Scalars.begin(), EntryPtr->Scalars.end());
 5082     Expr.insert(EntryPtr->Scalars.begin(), EntryPtr->Scalars.end());