Re: [PATCH v7 1/7] perf/core: Define the common branch type classification

From: Peter Zijlstra
Date: Tue Jul 11 2017 - 08:06:59 EST


On Tue, Jul 11, 2017 at 11:00:57PM +0800, Jin Yao wrote:
> PERF_BR_NONE : unknown

I would suggest PERF_BR_UNKNOWN or PERF_BR_MISC, since PERF_BR_NONE
reads like it wasn't a branch at all.

> PERF_BR_COND ïconditional
> PERF_BR_UNCOND : unconditional
> PERF_BR_IND : indirect
> PERF_BR_CALL : function call
> PERF_BR_IND_CALL : indirect function call
> PERF_BR_RET : function return
> PERF_BR_SYSCALL : syscall
> PERF_BR_SYSRET : syscall return
> PERF_BR_COND_CALL : conditional function call
> PERF_BR_COND_RET : conditional function return
>
> The patch also adds a new field type (4 bits) in perf_branch_entry
> to record the branch type (reserve 5 for future branch types)

What's up with that 5 ? I can't see anything like that in the patch
itself:

> @@ -1024,7 +1048,8 @@ struct perf_branch_entry {
> in_tx:1, /* in transaction */
> abort:1, /* transaction abort */
> cycles:16, /* cycle count to last branch */
> - reserved:44;
> + type:4, /* branch type */
> + reserved:40;
> };