Lines Matching defs:CurrentOrder
3057 /// vector) and sets \p CurrentOrder to the identity permutation; otherwise
3058 /// returns false, setting \p CurrentOrder to either an empty vector or a
3063 SmallVectorImpl<unsigned> &CurrentOrder,
3761 OrdersType &CurrentOrder,
4657 OrdersType CurrentOrder(NumScalars, NumScalars);
4663 std::iota(CurrentOrder.begin(), CurrentOrder.end(), 0);
4664 return CurrentOrder;
4681 auto TransformMaskToOrder = [&](MutableArrayRef<unsigned> CurrentOrder,
4690 unsigned Limit = getNumElems(CurrentOrder.size(), PartSz, I);
4691 MutableArrayRef<unsigned> Slice = CurrentOrder.slice(I * PartSz, Limit);
4735 if (CurrentOrder[I * PartSz + Idx] >
4737 CurrentOrder[I * PartSz + Idx] !=
4739 CurrentOrder[I * PartSz + Idx] = I * PartSz + K;
4752 CurrentOrder, ExtractMask, PartSz, NumParts, [&](unsigned I) {
4785 TransformMaskToOrder(CurrentOrder, Mask, PartSz, NumParts, [&](unsigned I) {
4792 count_if(CurrentOrder, [&](int Idx) { return Idx == NumScalars; });
4795 return std::move(CurrentOrder);
5579 if (std::optional<OrdersType> CurrentOrder =
5582 fixupOrderingIndices(*CurrentOrder);
5583 inversePermutation(*CurrentOrder, Mask);
5668 OrdersType CurrentOrder(TE.ReorderIndices);
5672 reorderOrder(CurrentOrder, SubMask);
5673 transform(CurrentOrder, It, [K](unsigned Pos) { return Pos + K; });
5814 OrdersType CurrentOrder;
5816 canReuseExtract(TE.Scalars, CurrentOrder, /*ResizeAllowed=*/true);
5817 if (Reuse || !CurrentOrder.empty())
5818 return std::move(CurrentOrder);
5867 OrdersType CurrentOrder;
5869 CurrentOrder, PointerOps);
5871 return std::move(CurrentOrder);
5876 if (std::optional<OrdersType> CurrentOrder = findReusedOrderedScalars(TE))
5877 return CurrentOrder;
5994 if (std::optional<OrdersType> CurrentOrder =
6020 GathersToOrders.try_emplace(TE.get(), *CurrentOrder);
6023 PhisToOrders.try_emplace(TE.get(), *CurrentOrder);
6099 OrdersType CurrentOrder(E, E);
6100 transform(Mask, CurrentOrder.begin(), [E](int Idx) {
6103 fixupOrderingIndices(CurrentOrder);
6104 ++OrdersUses.insert(std::make_pair(CurrentOrder, 0)).first->second;
6212 OrdersType CurrentOrder;
6213 reorderOrder(CurrentOrder, MaskOrder);
6215 inversePermutation(CurrentOrder, NewReuses);
6289 if (std::optional<OrdersType> CurrentOrder =
6384 OrdersType CurrentOrder(E, E);
6385 transform(Mask, CurrentOrder.begin(), [E](int Idx) {
6388 fixupOrderingIndices(CurrentOrder);
6389 OrdersUses.insert(std::make_pair(CurrentOrder, 0)).first->second +=
7076 OrdersType CurrentOrder;
7080 LoadsState LS = canVectorizeLoads(Values, Slice.front(), CurrentOrder,
7639 bool IsScatterVectorizeUserTE, OrdersType &CurrentOrder,
7671 bool Reuse = canReuseExtract(VL, CurrentOrder);
7676 if (Reuse || !CurrentOrder.empty())
7719 switch (canVectorizeLoads(VL, VL0, CurrentOrder, PointerOps)) {
7895 if (llvm::sortPtrAccesses(PointerOps, ScalarTy, *DL, *SE, CurrentOrder)) {
7898 if (CurrentOrder.empty()) {
7902 Ptr0 = PointerOps[CurrentOrder.front()];
7903 PtrN = PointerOps[CurrentOrder.back()];
8414 OrdersType CurrentOrder;
8417 S, VL, IsScatterVectorizeUserTE, CurrentOrder, PointerOps);
8491 if (CurrentOrder.empty()) {
8497 for (unsigned Idx : CurrentOrder)
8501 fixupOrderingIndices(CurrentOrder);
8506 ReuseShuffleIndices, CurrentOrder);
8529 OrdersType CurrentOrder(VL.size(), VL.size());
8532 CurrentOrder[Indices.top().second] = I;
8537 CurrentOrder.clear();
8539 {}, CurrentOrder);
8555 fixupOrderingIndices(CurrentOrder);
8559 ReuseShuffleIndices, CurrentOrder, InterleaveFactor);
8560 if (CurrentOrder.empty())
8571 UserTreeIdx, ReuseShuffleIndices, CurrentOrder);
8792 bool Consecutive = CurrentOrder.empty();
8794 fixupOrderingIndices(CurrentOrder);
8796 ReuseShuffleIndices, CurrentOrder);
8927 SmallVectorImpl<unsigned> &CurrentOrder,
8939 CurrentOrder.clear();
8992 // element of CurrentOrder still has value E + 1.
8993 CurrentOrder.assign(E, E);
8998 if (CurrentOrder[ExtIdx] != E) {
8999 CurrentOrder.clear();
9003 CurrentOrder[ExtIdx] = I;
9006 CurrentOrder.clear();