Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2367486pxa; Mon, 17 Aug 2020 07:59:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy3PItHS9x+oGY5uuqqRZUPbuWJjcdZGUjA4JtB0ONVPme9+ovqzjxiZc/8R+eKozmrVyhw X-Received: by 2002:a17:906:5a8a:: with SMTP id l10mr14844994ejq.397.1597676379648; Mon, 17 Aug 2020 07:59:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597676379; cv=none; d=google.com; s=arc-20160816; b=i0j8VrxAgHGpA4wwa7xG1PCGBs8wmItZozJ9Wd8GpBD9jvrFjMFKGyRFho4v9+Ijbj MOxfV/eqJglE/6HZvgE4IYXhyOxxs1Vr4Cjq7sMBjBYaVB7liWm0pW3yt13wHjl+TbdH 35tcQe4pqG3W2u99MaJ+UusJ47RaKxNQsOUJGGI119otLCHCob4uugiOct8H57cFtcOl ht7JguN5ooXlvTyzzF5imXiMQYvkVSYXPUSup4++dR2IxOR9M85J7VKzhYZ0RDIzdL46 ZDzzc276XwwMlNYDt3cygs1Xuya6yN3mO+DjCac4Wu1CscrD4aG3RmsNMX0oXR7L64CC hRfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:to:from:dkim-signature; bh=/J6XwtP+H4HpYFvHEI0FwKaKGsrsWXlEj5IBcsGoHk8=; b=SWCgdDc68IwnpLPqB0cB7KjZYkTTURs1L89NdYmaXBH+Sbrgg3kQxDEH7FP4QHvKqc kr9OUySB27QlXoenLPje5vl0cWMPXxIchWDq0bBIAjzB8eeAPIvzOmB5HnEsiwxt39kQ azyZ1jYw8yqnx3TvGK64RUiGXIB5iJCKtkRElwVKAPFGQQt6DvB5rgLP4aKyuApDwJBo oOB+7PeY/+T2VjEadMO3gdRu4c64VEkeQjcUuKhrsZkXyvqgMoHYYibFr0UD3YbTfMin avOYuOycyqulOgseoBJllbb5+iWZqIqQZcuGX91LrL/0qlnLiWzDkqDTabMn/mLhJrn5 O+5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=YRHy6Ddk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u29si12331552edd.533.2020.08.17.07.59.15; Mon, 17 Aug 2020 07:59:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=YRHy6Ddk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729167AbgHQOzh (ORCPT + 99 others); Mon, 17 Aug 2020 10:55:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729092AbgHQOya (ORCPT ); Mon, 17 Aug 2020 10:54:30 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D087C061389 for ; Mon, 17 Aug 2020 07:54:29 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id p14so13473103wmg.1 for ; Mon, 17 Aug 2020 07:54:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references; bh=/J6XwtP+H4HpYFvHEI0FwKaKGsrsWXlEj5IBcsGoHk8=; b=YRHy6DdkOBrydyJjMgR/tIuZqPnHdhXI4rbPEwUh0BoaW4p//1RIH3SJ2ozRK59b29 2ayzTb/MUSKZY8qxncecsYuce0C+DpTmKETrKJoZficx7SbMiyUwnnbdlQ3JabqvGHZU xjgpy+MuB/ItMuHXOuW5GGYhDcHat1b8XA1+4vsHKfcfIIgmc1WujUKHiOBkF1q8dres psFDVcupFPjKV6jnrtG2h0l6cHvZkHBZz0l/Xx425RvRdH2fq6DYvZo8aeU5HXO4TNHI fBh6XqdlQPKWS5pvo+vL9I2hxjKgewC3uKtfqvNqT6RfsQI87OpRV3XkCX0zFfnQH5SH vMeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=/J6XwtP+H4HpYFvHEI0FwKaKGsrsWXlEj5IBcsGoHk8=; b=ZsphUZP7UBgccgUVq1HmaoE3IizQpNtsn9bWJgNIirpgFMQS1qTTcEwNZqx6qKmMSp WrZHbbRF/VzufJldVMMZavoNvOMixwY9IUs76lpU28D2O8twWWqkpLoMZUQIEXdZbiyQ BYx1LhqN+J1ljMMdDWdKg2zI1/+F2bnfo9AVBoyB2Chjkmu/SgbUbF/pvrB3nN7h/u7R ahQLM8Zif6EX+PeTFlIzOaohwnWDoAQ9C9i/wKK/tP0c40kkLkPr/TDZML0cwyZv/BOA c3Mj9ma3iN/wxT8I8ga7efW89x97+GSOTyXYp69SEFQ+BdYx5YxMxAZ0SypNjwKZJuFS mx+Q== X-Gm-Message-State: AOAM53172l7v6mM9pq8HMV6PiOUPUPSfpWKJwNjuvODZDNOnRrQNgWv/ 01ONRjyaLWF3+1+DHTxcxY25tqooRE/IxUFw X-Received: by 2002:a1c:a553:: with SMTP id o80mr14735459wme.50.1597676068187; Mon, 17 Aug 2020 07:54:28 -0700 (PDT) Received: from hackbox2.linaro.org ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id r16sm35005678wrr.13.2020.08.17.07.54.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2020 07:54:27 -0700 (PDT) From: Leo Yan To: Arnaldo Carvalho de Melo , James Clark , Will Deacon , Al Grant , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Wei Li , linux-kernel@vger.kernel.org, Mathieu Poirier , Mike Leach Subject: [PATCH RESEND v1 13/13] perf arm-spe: Add support for ARMv8.3-SPE Date: Mon, 17 Aug 2020 15:53:48 +0100 Message-Id: <20200817145348.14461-14-leo.yan@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200817145348.14461-1-leo.yan@linaro.org> References: <20200817145348.14461-1-leo.yan@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wei Li This patch is to support Armv8.3 extension for SPE, it adds alignment field in the Events packet and it supports the Scalable Vector Extension (SVE) for Operation packet and Events packet with two additions: - The vector length for SVE operations in the Operation Type packet; - The incomplete predicate and empty predicate fields in the Events packet. Signed-off-by: Wei Li --- .../arm-spe-decoder/arm-spe-pkt-decoder.c | 95 ++++++++++++++++++- .../arm-spe-decoder/arm-spe-pkt-decoder.h | 6 ++ 2 files changed, 98 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 095f344ee26c..637655e28b9f 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -346,14 +346,77 @@ int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, blen -= ret; } } + + if (idx > 2) { + if (payload & SPE_EVT_PKT_ALIGNMENT) { + ret = snprintf(buf, buf_len, " ALIGNMENT"); + if (ret < 0) + return ret; + buf += ret; + blen -= ret; + } + if (payload & SPE_EVT_PKT_SVE_PARTIAL_PREDICATE) { + ret = snprintf(buf, buf_len, " SVE-PARTIAL-PRED"); + if (ret < 0) + return ret; + buf += ret; + blen -= ret; + } + if (payload & SPE_EVT_PKT_SVE_EMPTY_PREDICATE) { + ret = snprintf(buf, buf_len, " SVE-EMPTY-PRED"); + if (ret < 0) + return ret; + buf += ret; + blen -= ret; + } + } + return buf_len - blen; } case ARM_SPE_OP_TYPE: switch (idx) { case SPE_OP_PKT_HDR_CLASS_OTHER: - return snprintf(buf, buf_len, "%s", - payload & SPE_OP_PKT_OTHER_SUBCLASS_COND ? - "COND-SELECT" : "INSN-OTHER"); + blen = buf_len; + + if ((payload & SPE_OP_PKT_OTHER_SVE_SUBCLASS_MASK) == + SPE_OP_PKT_OTHER_SUBCLASS_SVG_OP) { + ret = snprintf(buf, buf_len, "SVE-OTHER"); + buf += ret; + blen -= ret; + + /* Effective Venctor Length */ + ret = snprintf(buf, buf_len, " EVL %d", + 32 << ((payload & SPE_OP_PKT_SVE_EVL_MASK) >> + SPE_OP_PKT_SVE_EVL_SHIFT)); + buf += ret; + blen -= ret; + + if (payload & SPE_OP_PKT_SVE_FP) { + ret = snprintf(buf, buf_len, " FP"); + buf += ret; + blen -= ret; + } + if (payload & SPE_OP_PKT_SVE_PRED) { + ret = snprintf(buf, buf_len, " PRED"); + buf += ret; + blen -= ret; + } + } else { + ret = snprintf(buf, buf_len, "OTHER"); + buf += ret; + blen -= ret; + + ret = snprintf(buf, buf_len, " %s", + payload & SPE_OP_PKT_OTHER_SUBCLASS_COND ? + "COND-SELECT" : "UNCOND"); + buf += ret; + blen -= ret; + } + + if (ret < 0) + return ret; + return buf_len - blen; + case SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC: blen = buf_len; @@ -416,6 +479,32 @@ int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, return ret; buf += ret; blen -= ret; + } else if ((payload & SPE_OP_PKT_LDST_SUBCLASS_SVE_MASK) == + SPE_OP_PKT_LDST_SUBCLASS_SVE) { + /* Effective Venctor Length */ + ret = snprintf(buf, buf_len, " EVL %d", + 32 << ((payload & SPE_OP_PKT_SVE_EVL_MASK) >> + SPE_OP_PKT_SVE_EVL_SHIFT)); + if (ret < 0) + return ret; + + buf += ret; + blen -= ret; + + if (payload & SPE_OP_PKT_SVE_PRED) { + ret = snprintf(buf, buf_len, " PRED"); + if (ret < 0) + return ret; + buf += ret; + blen -= ret; + } + if (payload & SPE_OP_PKT_SVE_SG) { + ret = snprintf(buf, buf_len, " SG"); + if (ret < 0) + return ret; + buf += ret; + blen -= ret; + } } return buf_len - blen; case SPE_OP_PKT_HDR_CLASS_BR_ERET: diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index 295ff8779ce4..1a917a11b395 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -140,6 +140,12 @@ struct arm_spe_pkt { #define SPE_OP_PKT_LDST_SUBCLASS_SVE_MASK (0xa) #define SPE_OP_PKT_LDST_SUBCLASS_SVE (0x8) +#define SPE_OP_PKT_SVE_SG BIT(7) +#define SPE_OP_PKT_SVE_EVL_MASK (0x70) +#define SPE_OP_PKT_SVE_EVL_SHIFT (4) +#define SPE_OP_PKT_SVE_PRED BIT(2) +#define SPE_OP_PKT_SVE_FP BIT(1) + #define SPE_OP_PKT_AR BIT(4) #define SPE_OP_PKT_EXCL BIT(3) #define SPE_OP_PKT_AT BIT(2) -- 2.17.1