Skip to content

Commit

Permalink
perf script: Add not taken event for branch stack
Browse files Browse the repository at this point in the history
The branch stack has an existed field for printing mispredict, extend
the field for printing events and add support not-taken event.

Reviewed-by: Ian Rogers <irogers@google.com>
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Leo Yan <leo.yan@arm.com>
Link: https://lore.kernel.org/r/20250304111240.3378214-6-leo.yan@arm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
  • Loading branch information
Leo Yan authored and Namhyung Kim committed Mar 5, 2025
1 parent 4caa971 commit 1e66dcf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
20 changes: 13 additions & 7 deletions tools/perf/builtin-script.c
Original file line number Diff line number Diff line change
Expand Up @@ -935,19 +935,25 @@ static int perf_sample__fprintf_start(struct perf_script *script,
return printed;
}

static inline char
mispred_str(struct branch_entry *br)
static inline size_t
bstack_event_str(struct branch_entry *br, char *buf, size_t sz)
{
if (!(br->flags.mispred || br->flags.predicted))
return '-';
if (!(br->flags.mispred || br->flags.predicted || br->flags.not_taken))
return snprintf(buf, sz, "-");

return br->flags.predicted ? 'P' : 'M';
return snprintf(buf, sz, "%s%s",
br->flags.predicted ? "P" : "M",
br->flags.not_taken ? "N" : "");
}

static int print_bstack_flags(FILE *fp, struct branch_entry *br)
{
return fprintf(fp, "/%c/%c/%c/%d/%s/%s ",
mispred_str(br),
char events[16] = { 0 };
size_t pos;

pos = bstack_event_str(br, events, sizeof(events));
return fprintf(fp, "/%s/%c/%c/%d/%s/%s ",
pos < 0 ? "-" : events,
br->flags.in_tx ? 'X' : '-',
br->flags.abort ? 'A' : '-',
br->flags.cycles,
Expand Down
3 changes: 2 additions & 1 deletion tools/perf/util/branch.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ struct branch_flags {
u64 spec:2;
u64 new_type:4;
u64 priv:3;
u64 reserved:31;
u64 not_taken:1;
u64 reserved:30;
};
};
};
Expand Down

0 comments on commit 1e66dcf

Please sign in to comment.