|
@@ -858,6 +858,55 @@ struct sort_entry sort_mem_snoop = {
|
|
|
.se_width_idx = HISTC_MEM_SNOOP,
|
|
|
};
|
|
|
|
|
|
+static int64_t
|
|
|
+sort__abort_cmp(struct hist_entry *left, struct hist_entry *right)
|
|
|
+{
|
|
|
+ return left->branch_info->flags.abort !=
|
|
|
+ right->branch_info->flags.abort;
|
|
|
+}
|
|
|
+
|
|
|
+static int hist_entry__abort_snprintf(struct hist_entry *self, char *bf,
|
|
|
+ size_t size, unsigned int width)
|
|
|
+{
|
|
|
+ static const char *out = ".";
|
|
|
+
|
|
|
+ if (self->branch_info->flags.abort)
|
|
|
+ out = "A";
|
|
|
+ return repsep_snprintf(bf, size, "%-*s", width, out);
|
|
|
+}
|
|
|
+
|
|
|
+struct sort_entry sort_abort = {
|
|
|
+ .se_header = "Transaction abort",
|
|
|
+ .se_cmp = sort__abort_cmp,
|
|
|
+ .se_snprintf = hist_entry__abort_snprintf,
|
|
|
+ .se_width_idx = HISTC_ABORT,
|
|
|
+};
|
|
|
+
|
|
|
+static int64_t
|
|
|
+sort__in_tx_cmp(struct hist_entry *left, struct hist_entry *right)
|
|
|
+{
|
|
|
+ return left->branch_info->flags.in_tx !=
|
|
|
+ right->branch_info->flags.in_tx;
|
|
|
+}
|
|
|
+
|
|
|
+static int hist_entry__in_tx_snprintf(struct hist_entry *self, char *bf,
|
|
|
+ size_t size, unsigned int width)
|
|
|
+{
|
|
|
+ static const char *out = ".";
|
|
|
+
|
|
|
+ if (self->branch_info->flags.in_tx)
|
|
|
+ out = "T";
|
|
|
+
|
|
|
+ return repsep_snprintf(bf, size, "%-*s", width, out);
|
|
|
+}
|
|
|
+
|
|
|
+struct sort_entry sort_in_tx = {
|
|
|
+ .se_header = "Branch in transaction",
|
|
|
+ .se_cmp = sort__in_tx_cmp,
|
|
|
+ .se_snprintf = hist_entry__in_tx_snprintf,
|
|
|
+ .se_width_idx = HISTC_IN_TX,
|
|
|
+};
|
|
|
+
|
|
|
struct sort_dimension {
|
|
|
const char *name;
|
|
|
struct sort_entry *entry;
|
|
@@ -888,6 +937,8 @@ static struct sort_dimension bstack_sort_dimensions[] = {
|
|
|
DIM(SORT_SYM_FROM, "symbol_from", sort_sym_from),
|
|
|
DIM(SORT_SYM_TO, "symbol_to", sort_sym_to),
|
|
|
DIM(SORT_MISPREDICT, "mispredict", sort_mispredict),
|
|
|
+ DIM(SORT_IN_TX, "in_tx", sort_in_tx),
|
|
|
+ DIM(SORT_ABORT, "abort", sort_abort),
|
|
|
};
|
|
|
|
|
|
#undef DIM
|