From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753368AbdFSCxS (ORCPT ); Sun, 18 Jun 2017 22:53:18 -0400 Received: from mga09.intel.com ([134.134.136.24]:35827 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753258AbdFSCxR (ORCPT ); Sun, 18 Jun 2017 22:53:17 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,359,1493708400"; d="scan'208";a="275825835" From: Jin Yao To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com, Jin Yao Subject: [PATCH v2 0/3] perf report: Implement visual marker for macro fusion in annotate Date: Mon, 19 Jun 2017 10:55:55 +0800 Message-Id: <1497840958-4759-1-git-send-email-yao.jin@linux.intel.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Macro fusion merges two instructions to a single micro-op. Intel core platform performs this hardware optimization under limited circumstances. For example, CMP + JCC can be "fused" and executed /retired together. While with sampling this can result in the sample sometimes being on the JCC and sometimes on the CMP. So for the fused instruction pair, they could be considered together. In general, the fused instruction pairs are: cmp/test/add/sub/and/inc/dec + jcc. This patch series marks the case clearly by joining the fused instruction pair in the arrow of the jump. For example: │ ┌──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) Change-log: ----------- v2: According to Arnaldo's comments, remove the weak function and use an arch-specific function instead to check fused instruction pair. v1: Inital post Jin Yao (3): perf util: Return arch from symbol__disassemble and save it in browser perf util: Check for fused instruction perf report: Implement visual marker for macro fusion in annotate tools/perf/arch/x86/annotate/instructions.c | 18 ++++++++++++++++ tools/perf/builtin-top.c | 2 +- tools/perf/ui/browser.c | 27 ++++++++++++++++++++++++ tools/perf/ui/browser.h | 2 ++ tools/perf/ui/browsers/annotate.c | 32 ++++++++++++++++++++++++++++- tools/perf/ui/gtk/annotate.c | 3 ++- tools/perf/util/annotate.c | 25 ++++++++++++++++++++-- tools/perf/util/annotate.h | 6 +++++- 8 files changed, 109 insertions(+), 6 deletions(-) -- 2.7.4