[PATCH] D112042: [llvm-profgen] Skip duplication factor outside of body sample computation
Wenlei He via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 19 23:18:39 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGe8c245dcd3b9: [llvm-profgen] Skip duplication factor outside of body sample computation (authored by wenlei).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112042/new/
https://reviews.llvm.org/D112042
Files:
llvm/test/tools/llvm-profgen/inline-noprobe2.test
llvm/tools/llvm-profgen/ProfileGenerator.cpp
Index: llvm/tools/llvm-profgen/ProfileGenerator.cpp
===================================================================
--- llvm/tools/llvm-profgen/ProfileGenerator.cpp
+++ llvm/tools/llvm-profgen/ProfileGenerator.cpp
@@ -274,6 +274,12 @@
uint64_t Count) {
// Use the maximum count of samples with same line location
uint32_t Discriminator = getBaseDiscriminator(LeafLoc.Location.Discriminator);
+
+ // Use duplication factor to compensated for loop unroll/vectorization.
+ // Note that this is only needed when we're taking MAX of the counts at
+ // the location instead of SUM.
+ Count *= getDuplicationFactor(LeafLoc.Location.Discriminator);
+
ErrorOr<uint64_t> R =
FunctionProfile.findSamplesAt(LeafLoc.Location.LineOffset, Discriminator);
@@ -384,12 +390,10 @@
const SampleContextFrameVector &FrameVec =
Binary->getFrameLocationStack(Offset);
if (!FrameVec.empty()) {
- uint64_t DC = Count * getDuplicationFactor(
- FrameVec.back().Location.Discriminator);
FunctionSamples &FunctionProfile =
- getLeafProfileAndAddTotalSamples(FrameVec, DC);
+ getLeafProfileAndAddTotalSamples(FrameVec, Count);
updateBodySamplesforFunctionProfile(FunctionProfile, FrameVec.back(),
- DC);
+ Count);
}
// Move to next IP within the range.
IP.advance();
@@ -430,7 +434,6 @@
const SampleContextFrameVector &FrameVec =
Binary->getFrameLocationStack(SourceOffset);
if (!FrameVec.empty()) {
- Count *= getDuplicationFactor(FrameVec.back().Location.Discriminator);
FunctionSamples &FunctionProfile =
getLeafProfileAndAddTotalSamples(FrameVec, Count);
FunctionProfile.addCalledTargetSamples(
@@ -545,10 +548,8 @@
auto LeafLoc = Binary->getInlineLeafFrameLoc(Offset);
if (LeafLoc.hasValue()) {
// Recording body sample for this specific context
- uint64_t DC =
- Count * getDuplicationFactor(LeafLoc->Location.Discriminator);
- updateBodySamplesforFunctionProfile(FunctionProfile, *LeafLoc, DC);
- FunctionProfile.addTotalSamples(DC);
+ updateBodySamplesforFunctionProfile(FunctionProfile, *LeafLoc, Count);
+ FunctionProfile.addTotalSamples(Count);
}
// Move to next IP within the range
@@ -575,7 +576,6 @@
auto LeafLoc = Binary->getInlineLeafFrameLoc(SourceOffset);
if (!LeafLoc.hasValue())
continue;
- Count *= getDuplicationFactor(LeafLoc->Location.Discriminator);
FunctionProfile.addCalledTargetSamples(
LeafLoc->Location.LineOffset,
getBaseDiscriminator(LeafLoc->Location.Discriminator), CalleeName,
Index: llvm/test/tools/llvm-profgen/inline-noprobe2.test
===================================================================
--- llvm/test/tools/llvm-profgen/inline-noprobe2.test
+++ llvm/test/tools/llvm-profgen/inline-noprobe2.test
@@ -46,7 +46,7 @@
;CHECK-NEXT: 1: 6
;CHECK-NEXT: 2: 6
;CHECK-NEXT: 3: 6
-;CHECK-NEXT: partition_pivot_last:647:7
+;CHECK-NEXT: partition_pivot_last:389:7
;CHECK-NEXT: 1: 6
;CHECK-NEXT: 2: 6
;CHECK-NEXT: 3: 6
@@ -62,7 +62,7 @@
;CHECK-NEXT: 6: 5
;CHECK-NEXT: 7: 5
-;CHECK-NEXT: 5: swap:116
+;CHECK-NEXT: 5: swap:61
;w/o duplication factor : 1: 9
;w/o duplication factor : 2: 9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112042.380860.patch
Type: text/x-patch
Size: 3438 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211020/3693b1ca/attachment.bin>
More information about the llvm-commits
mailing list