Skip to content

Commit 7179326

Browse files
committed
buildTree_rec(): Move common code to newGatherTreeEntry() function
1 parent 6df22ca commit 7179326

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)