forked from OSchip/llvm-project
[SLP] fix formatting; NFC
Also move variable declarations closer to usage and add code comments.
This commit is contained in:
parent
4dd9c709ef
commit
24238f09ed
|
@ -6805,10 +6805,6 @@ public:
|
|||
if (NumReducedVals < 4)
|
||||
return false;
|
||||
|
||||
unsigned ReduxWidth = PowerOf2Floor(NumReducedVals);
|
||||
|
||||
Value *VectorizedTree = nullptr;
|
||||
|
||||
// FIXME: Fast-math-flags should be set based on the instructions in the
|
||||
// reduction (not all of 'fast' are required).
|
||||
IRBuilder<> Builder(cast<Instruction>(ReductionRoot));
|
||||
|
@ -6842,7 +6838,9 @@ public:
|
|||
for (ReductionOpsType &RdxOp : ReductionOps)
|
||||
IgnoreList.append(RdxOp.begin(), RdxOp.end());
|
||||
|
||||
Value *VectorizedTree = nullptr;
|
||||
unsigned i = 0;
|
||||
unsigned ReduxWidth = PowerOf2Floor(NumReducedVals);
|
||||
while (i < NumReducedVals - ReduxWidth + 1 && ReduxWidth > 2) {
|
||||
ArrayRef<Value *> VL = makeArrayRef(&ReducedVals[i], ReduxWidth);
|
||||
V.buildTree(VL, ExternallyUsedValues, IgnoreList);
|
||||
|
@ -6867,25 +6865,25 @@ public:
|
|||
int ReductionCost = getReductionCost(TTI, ReducedVals[i], ReduxWidth);
|
||||
int Cost = TreeCost + ReductionCost;
|
||||
if (Cost >= -SLPCostThreshold) {
|
||||
V.getORE()->emit([&]() {
|
||||
return OptimizationRemarkMissed(
|
||||
SV_NAME, "HorSLPNotBeneficial", cast<Instruction>(VL[0]))
|
||||
<< "Vectorizing horizontal reduction is possible"
|
||||
<< "but not beneficial with cost "
|
||||
<< ore::NV("Cost", Cost) << " and threshold "
|
||||
<< ore::NV("Threshold", -SLPCostThreshold);
|
||||
});
|
||||
break;
|
||||
V.getORE()->emit([&]() {
|
||||
return OptimizationRemarkMissed(SV_NAME, "HorSLPNotBeneficial",
|
||||
cast<Instruction>(VL[0]))
|
||||
<< "Vectorizing horizontal reduction is possible"
|
||||
<< "but not beneficial with cost " << ore::NV("Cost", Cost)
|
||||
<< " and threshold "
|
||||
<< ore::NV("Threshold", -SLPCostThreshold);
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
LLVM_DEBUG(dbgs() << "SLP: Vectorizing horizontal reduction at cost:"
|
||||
<< Cost << ". (HorRdx)\n");
|
||||
V.getORE()->emit([&]() {
|
||||
return OptimizationRemark(
|
||||
SV_NAME, "VectorizedHorizontalReduction", cast<Instruction>(VL[0]))
|
||||
<< "Vectorized horizontal reduction with cost "
|
||||
<< ore::NV("Cost", Cost) << " and with tree size "
|
||||
<< ore::NV("TreeSize", V.getTreeSize());
|
||||
return OptimizationRemark(SV_NAME, "VectorizedHorizontalReduction",
|
||||
cast<Instruction>(VL[0]))
|
||||
<< "Vectorized horizontal reduction with cost "
|
||||
<< ore::NV("Cost", Cost) << " and with tree size "
|
||||
<< ore::NV("TreeSize", V.getTreeSize());
|
||||
});
|
||||
|
||||
// Vectorize a tree.
|
||||
|
@ -6902,15 +6900,19 @@ public:
|
|||
|
||||
Value *ReducedSubTree =
|
||||
emitReduction(VectorizedRoot, Builder, ReduxWidth, TTI);
|
||||
if (VectorizedTree) {
|
||||
|
||||
if (!VectorizedTree) {
|
||||
// Initialize the final value in the reduction.
|
||||
VectorizedTree = ReducedSubTree;
|
||||
} else {
|
||||
// Update the final value in the reduction.
|
||||
Builder.SetCurrentDebugLocation(Loc);
|
||||
OperationData VectReductionData(ReductionData.getOpcode(),
|
||||
VectorizedTree, ReducedSubTree,
|
||||
ReductionData.getKind());
|
||||
VectorizedTree =
|
||||
VectReductionData.createOp(Builder, "op.rdx", ReductionOps);
|
||||
} else
|
||||
VectorizedTree = ReducedSubTree;
|
||||
}
|
||||
i += ReduxWidth;
|
||||
ReduxWidth = PowerOf2Floor(NumReducedVals - i);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue