• Jin Yao's avatar
    perf annotate: Implement visual marker for macro fusion · 7e63a13a
    Jin Yao authored
    For marking fused instructions clearly this patch adds a line before the
    first instruction of pair and joins it with the arrow of the jump to its
    target.
    
    For example, when "je" is selected in annotate view, the line before
    cmpl is displayed and joins the arrow of "je".
    
           │   ┌──cmpl   $0x0,argp_program_version_hook
     81.93 │   ├──je     20
           │   │  lock   cmpxchg %esi,0x38a9a4(%rip)
           │   │↓ jne    29
           │   │↓ jmp    43
     11.47 │20:└─→cmpxch %esi,0x38a999(%rip)
    
    That means the cmpl+je is a fused instruction pair and they should be
    considered together.
    
    Changelog:
    
    v3: Use Arnaldo's fix to improve the arrow origin rendering.  To get the
        evsel->evlist->env->cpuid, save the evsel in annotate_browser.
    
    v2: new function "ins__is_fused" to check if the instructions are fused.
    Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1499403995-19857-3-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    7e63a13a
annotate.h 5.59 KB