Thread (35 messages) flat view 35 messages, 5 authors, 2017-07-11

Re: [PATCH v6 2/7] perf/x86/intel: Record branch type

From: Jin, Yao <hidden>
Date: 2017-05-08 00:49:49
Also in: lkml


On 4/24/2017 8:47 AM, Jin, Yao wrote:

On 4/23/2017 9:55 PM, Jiri Olsa wrote:
quoted
On Thu, Apr 20, 2017 at 08:07:50PM +0800, Jin Yao wrote:

SNIP
quoted
  +#define X86_BR_TYPE_MAP_MAX    16
+
+static int
+common_branch_type(int type)
+{
+    int i, mask;
+    const int branch_map[X86_BR_TYPE_MAP_MAX] = {
+        PERF_BR_CALL,        /* X86_BR_CALL */
+        PERF_BR_RET,        /* X86_BR_RET */
+        PERF_BR_SYSCALL,    /* X86_BR_SYSCALL */
+        PERF_BR_SYSRET,        /* X86_BR_SYSRET */
+        PERF_BR_INT,        /* X86_BR_INT */
+        PERF_BR_IRET,        /* X86_BR_IRET */
+        PERF_BR_JCC,        /* X86_BR_JCC */
+        PERF_BR_JMP,        /* X86_BR_JMP */
+        PERF_BR_IRQ,        /* X86_BR_IRQ */
+        PERF_BR_IND_CALL,    /* X86_BR_IND_CALL */
+        PERF_BR_NONE,        /* X86_BR_ABORT */
+        PERF_BR_NONE,        /* X86_BR_IN_TX */
+        PERF_BR_NONE,        /* X86_BR_NO_TX */
+        PERF_BR_CALL,        /* X86_BR_ZERO_CALL */
+        PERF_BR_NONE,        /* X86_BR_CALL_STACK */
+        PERF_BR_IND_JMP,    /* X86_BR_IND_JMP */
+    };
+
+    type >>= 2; /* skip X86_BR_USER and X86_BR_KERNEL */
+    mask = ~(~0 << 1);
is that a fancy way to get 1 into the mask? what do I miss?
quoted
+
+    for (i = 0; i < X86_BR_TYPE_MAP_MAX; i++) {
+        if (type & mask)
+            return branch_map[i];
I wonder some bit search would be faster in here, but maybe not big deal

jirka
I just think the branch_map[] doesn't contain many entries (16 entries 
here), so maybe checking 1 bit one time should be acceptable. I just 
want to keep the code simple.

But if the number of entries is more (e.g. 64), maybe it'd better 
check 2 or 4 bits one time.

Thanks
Jin Yao
Hi,

Is this explanation OK? Since for tools part, it's Acked-by: Jiri Olsa. 
I just want to know  if the kernel part is OK either?

Thanks
Jin Yao
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help