From nobody Tue Feb 10 05:45:47 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4234932695D; Tue, 6 Jan 2026 11:57:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700653; cv=none; b=u88vWdl9WxaCaDpFEfT4yMyDrZp9P9/srC9+xISBn5MVIf/ARCm6cd6PvcSsuzeCBnXZM+kDK+cTq8AT7mE8yyJo4NSbGT53t9UXOdTJ7lAP1UUDkNFNoAdA8MhxNtuzNkYph+dvyBFVqOl+aiubmzJOFGdeiw8968JCTbiLA3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700653; c=relaxed/simple; bh=OlYIb8cc4V9RmgLF3Zyiwupb6WwcLfvDpHSGDNTzc3A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uV4IrtxIkjv/CcTf0TaN+rZ9A9CWjQepjcQbiLWk/WBQ7nEmFQ9wQqWhcyJgiAtdYfW5F3bii/UEoQ0cAGLppzzz/0WudhMdfYtrjuaBd6+jxEaCN6D7xAN/ShVXpt9hnzEEZghConI+vxILYvrdROD6NF8QuGlmyFHYpzyuhbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id ED47B497; Tue, 6 Jan 2026 03:57:24 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9D8FA3F5A1; Tue, 6 Jan 2026 03:57:29 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:51 +0000 Subject: [PATCH v4 6/8] perf sort: Sort disabled and full predicated flags Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260106-perf_support_arm_spev1-3-v4-6-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767700634; l=2803; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=OlYIb8cc4V9RmgLF3Zyiwupb6WwcLfvDpHSGDNTzc3A=; b=YOwoCLpBqU43lDpyl3Ju8+ZQeyZIlTD+KPvRhY/54roDCLWK5CgDRhepLAEtYawUM9AGT+DTs VPDDufTUA1GDR5j+cXPYun6kbEJ26pzW0kyLvcMLdc8ltAHwKjvUgTI X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= According to the Arm ARM (ARM DDI 0487, L.a), section D18.2.6 "Events packet", apart from the empty predicate and partial predicates, an SVE or SME operation can be predicate-disabled or full predicated. To provide complete results, introduce two predicate types for these cases. Signed-off-by: Leo Yan --- tools/perf/util/sample.h | 13 +++++++++---- tools/perf/util/sort.c | 15 ++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/perf/util/sample.h b/tools/perf/util/sample.h index 504256474f22fa8ec647429d182a6d04f8d05c39..c0ba8dc6c055597e6b01c28eab7= 178d5c2b3c3ed 100644 --- a/tools/perf/util/sample.h +++ b/tools/perf/util/sample.h @@ -68,8 +68,8 @@ struct aux_sample { =20 struct simd_flags { u8 arch: 2, /* architecture (isa) */ - pred: 2, /* predication */ - resv: 4; /* reserved */ + pred: 3, /* predication */ + resv: 3; /* reserved */ }; =20 /* simd architecture flags */ @@ -81,8 +81,13 @@ enum simd_op_flags { }; =20 /* simd predicate flags */ -#define SIMD_OP_FLAGS_PRED_PARTIAL 0x01 /* partial predicate */ -#define SIMD_OP_FLAGS_PRED_EMPTY 0x02 /* empty predicate */ +enum simd_pred_flags { + SIMD_OP_FLAGS_PRED_NONE =3D 0x0, /* Not available */ + SIMD_OP_FLAGS_PRED_PARTIAL, /* partial predicate */ + SIMD_OP_FLAGS_PRED_EMPTY, /* empty predicate */ + SIMD_OP_FLAGS_PRED_FULL, /* full predicate */ + SIMD_OP_FLAGS_PRED_DISABLED, /* disabled predicate */ +}; =20 struct perf_sample { u64 ip; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index e8f793eed33f78b7688b3f949e8254cbb64c3709..72ad35559bc2ff89ba65208bb18= d4db3224be034 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -207,18 +207,23 @@ static int hist_entry__simd_snprintf(struct hist_entr= y *he, char *bf, size_t size, unsigned int width __maybe_unused) { const char *name; + const char *pred_str =3D "."; =20 if (!he->simd_flags.arch) return repsep_snprintf(bf, size, ""); =20 name =3D hist_entry__get_simd_name(&he->simd_flags); =20 - if (he->simd_flags.pred & SIMD_OP_FLAGS_PRED_EMPTY) - return repsep_snprintf(bf, size, "[e] %s", name); - else if (he->simd_flags.pred & SIMD_OP_FLAGS_PRED_PARTIAL) - return repsep_snprintf(bf, size, "[p] %s", name); + if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_EMPTY) + pred_str =3D "e"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_PARTIAL) + pred_str =3D "p"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_DISABLED) + pred_str =3D "d"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_FULL) + pred_str =3D "f"; =20 - return repsep_snprintf(bf, size, "[.] %s", name); + return repsep_snprintf(bf, size, "[%s] %s", pred_str, name); } =20 struct sort_entry sort_simd =3D { --=20 2.34.1