From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754200AbdFNCvI (ORCPT ); Tue, 13 Jun 2017 22:51:08 -0400 Received: from mga04.intel.com ([192.55.52.120]:27920 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753103AbdFNCvG (ORCPT ); Tue, 13 Jun 2017 22:51:06 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,340,1493708400"; d="scan'208";a="1182176060" 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 v1 0/2] perf report: Implement visual marker for macro fusion in annotate Date: Wed, 14 Jun 2017 10:53:39 +0800 Message-Id: <1497408821-3211-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) Jin Yao (2): perf report: Check for fused instruction pair perf report: Implement visual marker for macro fusion in annotate tools/perf/arch/x86/util/Build | 1 + tools/perf/arch/x86/util/fused.c | 20 ++++++++++++++++++++ tools/perf/ui/browser.c | 27 +++++++++++++++++++++++++++ tools/perf/ui/browser.h | 2 ++ tools/perf/ui/browsers/annotate.c | 30 ++++++++++++++++++++++++++++++ tools/perf/util/Build | 1 + tools/perf/util/annotate.c | 5 +++++ tools/perf/util/annotate.h | 1 + tools/perf/util/fused.c | 11 +++++++++++ tools/perf/util/fused.h | 8 ++++++++ 10 files changed, 106 insertions(+) create mode 100644 tools/perf/arch/x86/util/fused.c create mode 100644 tools/perf/util/fused.c create mode 100644 tools/perf/util/fused.h -- 2.7.4