Skip to content

Commit b6ed2af

Browse files
committed
[SLP] Normalize debug messages for newTreeEntry.
A debug message should follow after newTreeEntry. Make ExtractValueInst and ExtractElementInst use setOperand directly.
1 parent 2f18b5e commit b6ed2af

File tree

1 file changed

+34
-20
lines changed

1 file changed

+34
-20
lines changed

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8388,7 +8388,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
83888388

83898389
TreeEntry *TE =
83908390
newTreeEntry(VL, Bundle, S, UserTreeIdx, ReuseShuffleIndices);
8391-
LLVM_DEBUG(dbgs() << "SLP: added a vector of PHINodes.\n");
8391+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (PHINode).\n");
83928392

83938393
// Keeps the reordered operands to avoid code duplication.
83948394
PHIHandler Handler(*DT, PH, VL);
@@ -8417,13 +8417,13 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
84178417
}
84188418
// Insert new order with initial value 0, if it does not exist,
84198419
// otherwise return the iterator to the existing one.
8420-
newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
8421-
ReuseShuffleIndices, CurrentOrder);
8420+
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
8421+
ReuseShuffleIndices, CurrentOrder);
8422+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry "
8423+
"(ExtractValueInst/ExtractElementInst).\n");
84228424
// This is a special case, as it does not gather, but at the same time
84238425
// we are not extending buildTree_rec() towards the operands.
8424-
ValueList Op0;
8425-
Op0.assign(VL.size(), VL0->getOperand(0));
8426-
VectorizableTree.back()->setOperand(0, Op0);
8426+
TE->setOperand(*this);
84278427
return;
84288428
}
84298429
case Instruction::InsertElement: {
@@ -8451,7 +8451,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
84518451
CurrentOrder.clear();
84528452
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
84538453
{}, CurrentOrder);
8454-
LLVM_DEBUG(dbgs() << "SLP: added inserts bundle.\n");
8454+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (InsertElementInst).\n");
84558455

84568456
TE->setOperand(*this);
84578457
buildTree_rec(TE->getOperand(1), Depth + 1, {TE, 1});
@@ -8471,21 +8471,25 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
84718471
TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
84728472
ReuseShuffleIndices, CurrentOrder, InterleaveFactor);
84738473
if (CurrentOrder.empty())
8474-
LLVM_DEBUG(dbgs() << "SLP: added a vector of loads.\n");
8474+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (LoadInst).\n");
84758475
else
8476-
LLVM_DEBUG(dbgs() << "SLP: added a vector of jumbled loads.\n");
8476+
LLVM_DEBUG(dbgs()
8477+
<< "SLP: added a new TreeEntry (jumbled LoadInst).\n");
84778478
break;
84788479
case TreeEntry::StridedVectorize:
84798480
// Vectorizing non-consecutive loads with `llvm.masked.gather`.
84808481
TE = newTreeEntry(VL, TreeEntry::StridedVectorize, Bundle, S,
84818482
UserTreeIdx, ReuseShuffleIndices, CurrentOrder);
8482-
LLVM_DEBUG(dbgs() << "SLP: added a vector of strided loads.\n");
8483+
LLVM_DEBUG(
8484+
dbgs() << "SLP: added a new TreeEntry (strided LoadInst).\n");
84838485
break;
84848486
case TreeEntry::ScatterVectorize:
84858487
// Vectorizing non-consecutive loads with `llvm.masked.gather`.
84868488
TE = newTreeEntry(VL, TreeEntry::ScatterVectorize, Bundle, S,
84878489
UserTreeIdx, ReuseShuffleIndices);
8488-
LLVM_DEBUG(dbgs() << "SLP: added a vector of non-consecutive loads.\n");
8490+
LLVM_DEBUG(
8491+
dbgs()
8492+
<< "SLP: added a new TreeEntry (non-consecutive LoadInst).\n");
84898493
break;
84908494
case TreeEntry::CombinedVectorize:
84918495
case TreeEntry::NeedToGather:
@@ -8529,7 +8533,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
85298533
}
85308534
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
85318535
ReuseShuffleIndices);
8532-
LLVM_DEBUG(dbgs() << "SLP: added a vector of casts.\n");
8536+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (CastInst).\n");
85338537

85348538
TE->setOperand(*this);
85358539
for (unsigned I : seq<unsigned>(VL0->getNumOperands()))
@@ -8556,7 +8560,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
85568560
CmpInst::Predicate P0 = cast<CmpInst>(VL0)->getPredicate();
85578561
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
85588562
ReuseShuffleIndices);
8559-
LLVM_DEBUG(dbgs() << "SLP: added a vector of compares.\n");
8563+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (CmpInst).\n");
85608564

85618565
ValueList Left, Right;
85628566
VLOperands Ops(VL, VL0, *this);
@@ -8626,7 +8630,9 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
86268630
case Instruction::Freeze: {
86278631
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
86288632
ReuseShuffleIndices);
8629-
LLVM_DEBUG(dbgs() << "SLP: added a vector of un/bin op.\n");
8633+
LLVM_DEBUG(
8634+
dbgs() << "SLP: added a new TreeEntry "
8635+
"(SelectInst/UnaryOperator/BinaryOperator/FreezeInst).\n");
86308636

86318637
TE->setOperand(*this, isa<BinaryOperator>(VL0) && isCommutative(VL0));
86328638
for (unsigned I : seq<unsigned>(VL0->getNumOperands()))
@@ -8636,7 +8642,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
86368642
case Instruction::GetElementPtr: {
86378643
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
86388644
ReuseShuffleIndices);
8639-
LLVM_DEBUG(dbgs() << "SLP: added a vector of GEPs.\n");
8645+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (GetElementPtrInst).\n");
86408646
SmallVector<ValueList, 2> Operands(2);
86418647
// Prepare the operand vector for pointer operands.
86428648
for (Value *V : VL) {
@@ -8694,12 +8700,13 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
86948700
fixupOrderingIndices(CurrentOrder);
86958701
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
86968702
ReuseShuffleIndices, CurrentOrder);
8697-
TE->setOperand(*this);
8698-
buildTree_rec(TE->getOperand(0), Depth + 1, {TE, 0});
86998703
if (Consecutive)
8700-
LLVM_DEBUG(dbgs() << "SLP: added a vector of stores.\n");
8704+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (StoreInst).\n");
87018705
else
8702-
LLVM_DEBUG(dbgs() << "SLP: added a vector of jumbled stores.\n");
8706+
LLVM_DEBUG(
8707+
dbgs() << "SLP: added a new TreeEntry (jumbled StoreInst).\n");
8708+
TE->setOperand(*this);
8709+
buildTree_rec(TE->getOperand(0), Depth + 1, {TE, 0});
87038710
return;
87048711
}
87058712
case Instruction::Call: {
@@ -8710,6 +8717,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
87108717

87118718
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
87128719
ReuseShuffleIndices);
8720+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (CallInst).\n");
87138721
TE->setOperand(*this, isCommutative(VL0));
87148722
for (unsigned I : seq<unsigned>(CI->arg_size())) {
87158723
// For scalar operands no need to create an entry since no need to
@@ -8723,7 +8731,13 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
87238731
case Instruction::ShuffleVector: {
87248732
TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
87258733
ReuseShuffleIndices);
8726-
LLVM_DEBUG(dbgs() << "SLP: added a ShuffleVector op.\n");
8734+
if (S.isAltShuffle()) {
8735+
LLVM_DEBUG(dbgs() << "SLP: added a new TreeEntry (alternate op).\n");
8736+
} else {
8737+
assert(SLPReVec && "Only supported by REVEC.");
8738+
LLVM_DEBUG(
8739+
dbgs() << "SLP: added a new TreeEntry (ShuffleVectorInst).\n");
8740+
}
87278741

87288742
// Reorder operands if reordering would enable vectorization.
87298743
auto *CI = dyn_cast<CmpInst>(VL0);

0 commit comments

Comments
 (0)