Skip to content

Commit 63dd08b

Browse files
[llvm-exegesis] Add branch miss validation counter (#81094)
This patch adds a branch miss validation counter so that it is easy to quantify the number of missed branches when using the loop repetition mode.
1 parent 6d7de46 commit 63dd08b

File tree

5 files changed

+14
-4
lines changed

5 files changed

+14
-4
lines changed

llvm/include/llvm/Target/TargetPfmCounters.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def L1ICacheLoadMiss : ValidationEvent<3>;
4242
def DataTLBLoadMiss : ValidationEvent<4>;
4343
def DataTLBStoreMiss : ValidationEvent<5>;
4444
def InstructionTLBLoadMiss : ValidationEvent<6>;
45+
def BranchPredictionMiss : ValidationEvent<7>;
4546

4647

4748
// PfmValidationCounter provides a mapping between the events that are

llvm/lib/Target/X86/X86PfmCounters.td

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ defvar DefaultIntelPfmValidationCounters = [
2424
PfmValidationCounter<L1ICacheLoadMiss, "L1-ICACHE-LOAD-MISSES">,
2525
PfmValidationCounter<DataTLBLoadMiss, "DTLB_LOAD_MISSES:MISS_CAUSES_A_WALK">,
2626
PfmValidationCounter<DataTLBStoreMiss, "DTLB_STORE_MISSES:MISS_CAUSES_A_WALK">,
27-
PfmValidationCounter<InstructionTLBLoadMiss, "ITLB_MISSES:MISS_CAUSES_A_WALK">
27+
PfmValidationCounter<InstructionTLBLoadMiss, "ITLB_MISSES:MISS_CAUSES_A_WALK">,
28+
PfmValidationCounter<BranchPredictionMiss, "BRANCH-MISSES">
2829
];
2930

3031
def PentiumPfmCounters : ProcPfmCounters {
@@ -210,7 +211,8 @@ defvar DefaultAMDPfmValidationCounters = [
210211
PfmValidationCounter<L1DCacheStoreMiss, "L1-DCACHE-STORE-MISSES">,
211212
PfmValidationCounter<L1ICacheLoadMiss, "L1-ICACHE-LOAD-MISSES">,
212213
PfmValidationCounter<DataTLBLoadMiss, "DTLB-LOAD-MISSES">,
213-
PfmValidationCounter<InstructionTLBLoadMiss, "ITLB-LOAD-MISSES">
214+
PfmValidationCounter<InstructionTLBLoadMiss, "ITLB-LOAD-MISSES">,
215+
PfmValidationCounter<BranchPredictionMiss, "BRANCH-MISSES">
214216
];
215217

216218
// Set basic counters for AMD cpus that we know libpfm4 supports.

llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ const char *validationEventToString(exegesis::ValidationEvent VE) {
209209
return "data-tlb-store-misses";
210210
case exegesis::ValidationEvent::InstructionTLBLoadMiss:
211211
return "instruction-tlb-load-misses";
212+
case exegesis::ValidationEvent::BranchPredictionMiss:
213+
return "branch-prediction-misses";
212214
}
213215
llvm_unreachable("Unhandled exegesis::ValidationEvent enum");
214216
}
@@ -228,6 +230,8 @@ Expected<exegesis::ValidationEvent> stringToValidationEvent(StringRef Input) {
228230
return exegesis::ValidationEvent::DataTLBStoreMiss;
229231
else if (Input == "instruction-tlb-load-misses")
230232
return exegesis::ValidationEvent::InstructionTLBLoadMiss;
233+
else if (Input == "branch-prediction-misses")
234+
return exegesis::ValidationEvent::BranchPredictionMiss;
231235
else
232236
return make_error<StringError>("Invalid validation event string",
233237
errc::invalid_argument);

llvm/tools/llvm-exegesis/lib/BenchmarkResult.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ enum ValidationEvent {
3939
L1ICacheLoadMiss,
4040
DataTLBLoadMiss,
4141
DataTLBStoreMiss,
42-
InstructionTLBLoadMiss
42+
InstructionTLBLoadMiss,
43+
BranchPredictionMiss
4344
};
4445

4546
enum class BenchmarkPhaseSelectorE {

llvm/tools/llvm-exegesis/llvm-exegesis.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,9 @@ static cl::list<ValidationEvent> ValidationCounters(
293293
clEnumValN(ValidationEvent::DataTLBStoreMiss, "data-tlb-store-misses",
294294
"Count DTLB store misses"),
295295
clEnumValN(ValidationEvent::InstructionTLBLoadMiss,
296-
"instruction-tlb-load-misses", "Count ITLB load misses")));
296+
"instruction-tlb-load-misses", "Count ITLB load misses"),
297+
clEnumValN(ValidationEvent::BranchPredictionMiss,
298+
"branch-prediction-misses", "Branch prediction misses")));
297299

298300
static ExitOnError ExitOnErr("llvm-exegesis error: ");
299301

0 commit comments

Comments
 (0)