@@ -4063,6 +4063,15 @@ class BoUpSLP {
40634063 }
40644064#endif
40654065
4066+ /// Create a new gather TreeEntry
4067+ TreeEntry *newGatherTreeEntry(ArrayRef<Value *> VL,
4068+ const InstructionsState &S,
4069+ const EdgeInfo &UserTreeIdx,
4070+ ArrayRef<int> ReuseShuffleIndices = {}) {
4071+ auto Invalid = ScheduleBundle::invalid();
4072+ return newTreeEntry(VL, Invalid, S, UserTreeIdx, ReuseShuffleIndices);
4073+ }
4074+
40664075 /// Create a new VectorizableTree entry.
40674076 TreeEntry *newTreeEntry(ArrayRef<Value *> VL, ScheduleBundle &Bundle,
40684077 const InstructionsState &S,
@@ -10076,9 +10085,7 @@ void BoUpSLP::buildTreeRec(ArrayRef<Value *> VLRef, unsigned Depth,
1007610085 if (TryToPackDuplicates)
1007710086 tryToFindDuplicates(VL, ReuseShuffleIndices, *TTI, *TLI, S, UserTreeIdx);
1007810087
10079- auto Invalid = ScheduleBundle::invalid();
10080- newTreeEntry(VL, Invalid /*not vectorized*/, S, UserTreeIdx,
10081- ReuseShuffleIndices);
10088+ newGatherTreeEntry(VL, S, UserTreeIdx, ReuseShuffleIndices);
1008210089 return;
1008310090 }
1008410091
@@ -10089,9 +10096,7 @@ void BoUpSLP::buildTreeRec(ArrayRef<Value *> VLRef, unsigned Depth,
1008910096 // Check that every instruction appears once in this bundle.
1009010097 if (!tryToFindDuplicates(VL, ReuseShuffleIndices, *TTI, *TLI, S, UserTreeIdx,
1009110098 /*TryPad=*/true)) {
10092- auto Invalid = ScheduleBundle::invalid();
10093- newTreeEntry(VL, Invalid /*not vectorized*/, S, UserTreeIdx,
10094- ReuseShuffleIndices);
10099+ newGatherTreeEntry(VL, S, UserTreeIdx, ReuseShuffleIndices);
1009510100 return;
1009610101 }
1009710102
@@ -10104,9 +10109,7 @@ void BoUpSLP::buildTreeRec(ArrayRef<Value *> VLRef, unsigned Depth,
1010410109 TreeEntry::EntryState State = getScalarsVectorizationState(
1010510110 S, VL, IsScatterVectorizeUserTE, CurrentOrder, PointerOps);
1010610111 if (State == TreeEntry::NeedToGather) {
10107- auto Invalid = ScheduleBundle::invalid();
10108- newTreeEntry(VL, Invalid /*not vectorized*/, S, UserTreeIdx,
10109- ReuseShuffleIndices);
10112+ newGatherTreeEntry(VL, S, UserTreeIdx, ReuseShuffleIndices);
1011010113 return;
1011110114 }
1011210115
@@ -10130,9 +10133,7 @@ void BoUpSLP::buildTreeRec(ArrayRef<Value *> VLRef, unsigned Depth,
1013010133 // Last chance to try to vectorize alternate node.
1013110134 if (S.isAltShuffle() && ReuseShuffleIndices.empty() && TrySplitNode(S))
1013210135 return;
10133- auto Invalid = ScheduleBundle::invalid();
10134- newTreeEntry(VL, Invalid /*not vectorized*/, S, UserTreeIdx,
10135- ReuseShuffleIndices);
10136+ newGatherTreeEntry(VL, S, UserTreeIdx, ReuseShuffleIndices);
1013610137 NonScheduledFirst.insert(VL.front());
1013710138 if (S.getOpcode() == Instruction::Load &&
1013810139 BS.ScheduleRegionSize < BS.ScheduleRegionSizeLimit)
0 commit comments