• Andi Kleen's avatar
    perf script: Add capstone support for '-F +brstackdisasm' · d8120446
    Andi Kleen authored
    Support capstone output for the '-F +brstackinsn' branch dump.
    
    The new output is enabled with the new field 'brstackdisasm'.
    
    This was possible before with --xed, but now also allow it for users
    that don't have xed using the builtin capstone support.
    
    Before:
    
      perf record -b emacs -Q --batch '()'
      perf script -F +brstackinsn
      ...
                emacs   55778 1814366.755945:     151564 cycles:P:      7f0ab2d17192 intel_check_word.constprop.0+0x162 (/usr/lib64/ld-linux-x86-64.s>        intel_check_word.constprop.0+237:
              00007f0ab2d1711d        insn: 75 e6                     # PRED 3 cycles [3]
              00007f0ab2d17105        insn: 73 51
              00007f0ab2d17107        insn: 48 89 c1
              00007f0ab2d1710a        insn: 48 39 ca
              00007f0ab2d1710d        insn: 73 96
              00007f0ab2d1710f        insn: 48 8d 04 11
              00007f0ab2d17113        insn: 48 d1 e8
              00007f0ab2d17116        insn: 49 8d 34 c1
              00007f0ab2d1711a        insn: 44 3a 06
              00007f0ab2d1711d        insn: 75 e6                     # PRED 3 cycles [6] 3.00 IPC
              00007f0ab2d17105        insn: 73 51                     # PRED 1 cycles [7] 1.00 IPC
              00007f0ab2d17158        insn: 48 8d 50 01
              00007f0ab2d1715c        insn: eb 92                     # PRED 1 cycles [8] 2.00 IPC
              00007f0ab2d170f0        insn: 48 39 ca
              00007f0ab2d170f3        insn: 73 b0                     # PRED 1 cycles [9] 2.00 IPC
    
    After (perf must be compiled with capstone):
    
      perf script -F +brstackdisasm
    
      ...
                 emacs   55778 1814366.755945:     151564 cycles:P:      7f0ab2d17192 intel_check_word.constprop.0+0x162 (/usr/lib64/ld-linux-x86-64.s>        intel_check_word.constprop.0+237:
              00007f0ab2d1711d        jne intel_check_word.constprop.0+0xd5   # PRED 3 cycles [3]
              00007f0ab2d17105        jae intel_check_word.constprop.0+0x128
              00007f0ab2d17107        movq %rax, %rcx
              00007f0ab2d1710a        cmpq %rcx, %rdx
              00007f0ab2d1710d        jae intel_check_word.constprop.0+0x75
              00007f0ab2d1710f        leaq (%rcx, %rdx), %rax
              00007f0ab2d17113        shrq $1, %rax
              00007f0ab2d17116        leaq (%r9, %rax, 8), %rsi
              00007f0ab2d1711a        cmpb (%rsi), %r8b
              00007f0ab2d1711d        jne intel_check_word.constprop.0+0xd5   # PRED 3 cycles [6] 3.00 IPC
              00007f0ab2d17105        jae intel_check_word.constprop.0+0x128  # PRED 1 cycles [7] 1.00 IPC
              00007f0ab2d17158        leaq 1(%rax), %rdx
              00007f0ab2d1715c        jmp intel_check_word.constprop.0+0xc0   # PRED 1 cycles [8] 2.00 IPC
              00007f0ab2d170f0        cmpq %rcx, %rdx
              00007f0ab2d170f3        jae intel_check_word.constprop.0+0x75   # PRED 1 cycles [9] 2.00 IPC
    Reviewed-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Link: https://lore.kernel.org/r/20240401210925.209671-3-ak@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d8120446
print_insn.c 5.13 KB