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

From: Jin, Yao
Date: Tue Jul 11 2017 - 08:29:47 EST




On 7/11/2017 8:06 PM, Peter Zijlstra wrote:
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.

OK, I will change it to PERF_BR_UNKNOWN.

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:

Sorry, I don't say this clearly.

We has defined 11 branch types (from PERF_BR_UNKNOWN to PERF_BR_COND_RET), so we can define 5 new types in future.

Thanks
Jin Yao

@@ -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;
};