]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf script: Add not taken event for branch stack
authorLeo Yan <leo.yan@arm.com>
Tue, 4 Mar 2025 11:12:33 +0000 (11:12 +0000)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 5 Mar 2025 17:13:19 +0000 (09:13 -0800)
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>
tools/perf/builtin-script.c
tools/perf/util/branch.h

index 8ca04293d335dd0aca5eb6d2fae2c9848153855e..d931c971a100100e4651ff7691da6e9ff438a7c6 100644 (file)
@@ -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,
index b80c12c74bbbe66d76d47be1c53beba61566adfe..7429530fa7749096fb7f7277efe5cdd308d18d32 100644 (file)
@@ -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;
                };
        };
 };