• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Transforms/Vectorize/

Lines Matching defs:Scalar

476 static bool InTreeUserNeedToExtract(Value *Scalar, Instruction *UserInst,
482 return (LI->getPointerOperand() == Scalar);
486 return (SI->getPointerOperand() == Scalar);
493 return (CI->getArgOperand(i) == Scalar);
1665 assert(!getTreeEntry(VL[i]) && "Scalar already in tree!");
1728 : Scalar(S), User(U), Lane(L) {}
1731 Value *Scalar;
1786 /// This list holds pairs of (Internal Scalar : External User). External User
1787 /// can be nullptr, it means that this Internal Scalar will be used later,
2337 [&](const BoUpSLP::ExternalUser &EU) { return EU.Scalar == V; }))
2404 Value *Scalar = Entry->Scalars[Lane];
2413 auto ExtI = ExternallyUsedValues.find(Scalar);
2416 << Lane << " from " << *Scalar << ".\n");
2417 ExternalUses.emplace_back(Scalar, nullptr, FoundLane);
2419 for (User *U : Scalar->users()) {
2433 !InTreeUserNeedToExtract(Scalar, UserInst, TLI)) {
2446 << Lane << " from " << *Scalar << ".\n");
2447 ExternalUses.push_back(ExternalUser(Scalar, U, FoundLane));
2568 LLVM_DEBUG(dbgs() << "SLP: Scalar used twice in bundle.\n");
3730 for (Value *Scalar : VectorizableTree[0]->Scalars) {
3732 if (!match(Scalar, m_Store(m_Value(X), m_Value())) ||
3870 if (!ExtractCostCalculated.insert(EU.Scalar).second)
3882 auto *VecTy = FixedVectorType::get(EU.Scalar->getType(), BundleWidth);
3889 ExtractCost += TTI->getExtractWithExtendCost(Extend, EU.Scalar->getType(),
4687 Value *Scalar = ExternalUse.Scalar;
4692 if (User && !is_contained(Scalar->users(), User))
4694 TreeEntry *E = getTreeEntry(Scalar);
4702 // If User == nullptr, the Scalar is used as extra arg. Generate
4706 assert(ExternallyUsedValues.count(Scalar) &&
4707 "Scalar with nullptr as an external user must be registered in "
4716 Ex = extend(ScalarRoot, Ex, Scalar->getType());
4717 CSEBlocks.insert(cast<Instruction>(Scalar)->getParent());
4718 auto &Locs = ExternallyUsedValues[Scalar];
4720 ExternallyUsedValues.erase(Scalar);
4722 Scalar->replaceAllUsesWith(Ex);
4731 if (PH->getIncomingValue(i) == Scalar) {
4741 Ex = extend(ScalarRoot, Ex, Scalar->getType());
4749 Ex = extend(ScalarRoot, Ex, Scalar->getType());
4751 User->replaceUsesOfWith(Scalar, Ex);
4756 Ex = extend(ScalarRoot, Ex, Scalar->getType());
4758 User->replaceUsesOfWith(Scalar, Ex);
4776 Value *Scalar = Entry->Scalars[Lane];
4779 Type *Ty = Scalar->getType();
4781 for (User *U : Scalar->users()) {
4790 LLVM_DEBUG(dbgs() << "SLP: \tErasing scalar:" << *Scalar << ".\n");
4791 eraseInstruction(cast<Instruction>(Scalar));
5492 if (!Expr.erase(EU.Scalar))
5561 for (auto *Scalar : ToDemote) {
5562 auto NumSignBits = ComputeNumSignBits(Scalar, *DL, 0, AC, nullptr, DT);
5563 auto NumTypeBits = DL->getTypeSizeInBits(Scalar->getType());
5602 for (auto *Scalar : ToDemote)
5603 MinBWs[Scalar] = std::make_pair(MaxBitWidth, !IsKnownPositive);