From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by sourceware.org (Postfix) with ESMTPS id EB86E3858D35 for ; Thu, 29 Jun 2023 17:18:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EB86E3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=flex--nhuck.bounces.google.com Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-c361777c7f7so1446637276.0 for ; Thu, 29 Jun 2023 10:18:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1688059138; x=1690651138; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=0c2LUfZBHmU7KXqghLD2DzL5hkGzjrASMsFduZMLWcE=; b=qgSPVysbVcwPSi+zVAdbrr31adq5NhKhG5hvEeTXOphTLeiOasc5D/wS2voVrB5w89 Wk3ctpKutF1/GDTiGhFYFH3fATeN+vj39QwAC6byH9X8zsf+/sioGshsdIAKgKa0b48j WojDqH2IVuNqa6tBr/GzoDU9rRckKn5sdoh9WKTAIfYH2wCROIWNmsDg6uDICXj7dYJ5 JKU2YWt4cL6o8xPV3mzcJlS4FDJIWxG0sikY8GUQjqunKnQSJ7zpCISjUmaKbH1gNhDC Q9cSg5XbkFFPZRARPIRUt5Y6a4tlFo1ZfcsbwZm58ns2HZFH99WSpDxREwIhvUBQVZE5 k38A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688059138; x=1690651138; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=0c2LUfZBHmU7KXqghLD2DzL5hkGzjrASMsFduZMLWcE=; b=CSnCwphcHNNKTmERIhJntbzOZSdfwI3KsOBFrp3PKq4m9AWL8q9Jcr3N1H69Xr1yQe hWx5CDyJmwbQS+MEo2PhLsvS2QPeHyBJ7/pi9fo7foiAkvMELoC1kqzVQdFA6Ps7T4Ns rwzbqWYrR5zsaRennbshrHenhz2Fcjem+k8scl8X/Ql+JjzpQPhkY9fylabXsmxafJiw MGxOIkpB2rTXMlV7mky9MMH1ICy7izKsNhblcpFGuLPPBfloA2NH3i1iI+Kkr3wGpmwc o1TqGEr1Eu+dKYw+m9lWmk7qYcCY2VY8mDwa9MCSkqIgHE+8P+Ik4vNjhtyBkZlRqF+n CZIg== X-Gm-Message-State: ABy/qLa6BZAsFUoT6JwhhdrOeVf213a4DpZ60d7ak0J2B1i10Be7+NnU RmyoNBBKtOyAQ4j65mzZq8CV7gDXVLXafJzfcu+y+Z0hTZYwsqUh/MQy8eA/OBO/s/LnpYSeuGA JbJb6LpcsZXmOtSrUEMaTzbEGGqqiH8tzIBWyubEPBHcud1cndgQYWBf9Aozi X-Google-Smtp-Source: APBJJlGk1Mp+h2l7SM0txxj6sSRsSkptxsyR/iPOFX9WD7nftT46xkd/4Gs+Z3C0fdVZXrIKaCkd5bLCEw== X-Received: from nhuck.c.googlers.com ([fda3:e722:ac3:cc00:14:4d90:c0a8:39cc]) (user=nhuck job=sendgmr) by 2002:a25:e795:0:b0:c38:993b:3be5 with SMTP id e143-20020a25e795000000b00c38993b3be5mr8213ybh.0.1688059138291; Thu, 29 Jun 2023 10:18:58 -0700 (PDT) Date: Thu, 29 Jun 2023 10:18:33 -0700 In-Reply-To: <20230629171839.573187-1-nhuck@google.com> Mime-Version: 1.0 References: <20230629171839.573187-1-nhuck@google.com> X-Mailer: git-send-email 2.41.0.255.g8b1d071c50-goog Message-ID: <20230629171839.573187-9-nhuck@google.com> Subject: [PATCH 08/14] Add support for the Zvkn ISA extension. From: Nathan Huckleberry To: binutils@sourceware.org Cc: nhuck@pmull.org, "=?UTF-8?q?Christoph=20M=C3=BCllner?=" , Nathan Huckleberry Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-21.0 required=5.0 tests=BAYES_00,DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Christoph M=C3=BCllner Zvkn is part of the vector crypto extensions. Zvkn is shorthand for the following set of extensions: - Zvkned - Zvknhb - Zvbb - Zvkt Signed-off-by: Christoph M=C3=BCllner [Updated to newest version of RISC-V spec] Signed-off-by: Nathan Huckleberry --- bfd/elfxx-riscv.c | 5 ++++ gas/testsuite/gas/riscv/zvkn.d | 45 ++++++++++++++++++++++++++++++++++ gas/testsuite/gas/riscv/zvkn.s | 36 +++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvkn.d create mode 100644 gas/testsuite/gas/riscv/zvkn.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 77ef99d02cf..890e10d1812 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1155,6 +1155,10 @@ static struct riscv_implicit_subset riscv_implicit_s= ubsets[] =3D {"zks", "zbkx", check_implicit_always}, {"zks", "zksed", check_implicit_always}, {"zks", "zksh", check_implicit_always}, + {"zvkn", "zvkned", check_implicit_always}, + {"zvkn", "zvknha", check_implicit_always}, + {"zvkn", "zvknhb", check_implicit_always}, + {"zvkn", "zvbb", check_implicit_always}, {"smaia", "ssaia", check_implicit_always}, {"smstateen", "ssstateen", check_implicit_always}, {"smepmp", "zicsr", check_implicit_always}, @@ -1262,6 +1266,7 @@ static struct riscv_supported_ext riscv_supported_std= _z_ext[] =3D {"zvbb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvbc", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvkn", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkned", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvknha", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvknhb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, diff --git a/gas/testsuite/gas/riscv/zvkn.d b/gas/testsuite/gas/riscv/zvkn.= d new file mode 100644 index 00000000000..abb92b9f001 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkn.d @@ -0,0 +1,45 @@ +#as: -march=3Drv64gc_zvkn +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+a280a277[ ]+vaesdf.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+ba862277[ ]+vsha2ch.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+06860257[ ]+vandn.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+04860257[ ]+vandn.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+0685c257[ ]+vandn.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+0485c257[ ]+vandn.vx[ ]+v4,v8,a1,v0.t +[ ]+[0-9a-f]+:[ ]+4a852257[ ]+vbrev.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+48852257[ ]+vbrev.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a842257[ ]+vbrev8.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+48842257[ ]+vbrev8.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a84a257[ ]+vrev8.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+4884a257[ ]+vrev8.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a84a257[ ]+vrev8.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+4884a257[ ]+vrev8.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a862257[ ]+vclz.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+48862257[ ]+vclz.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a86a257[ ]+vctz.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+4886a257[ ]+vctz.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+4a872257[ ]+vcpop.v[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+48872257[ ]+vcpop.v[ ]+v4,v8,v0.t +[ ]+[0-9a-f]+:[ ]+56860257[ ]+vrol.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+54860257[ ]+vrol.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+5685c257[ ]+vrol.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+5485c257[ ]+vrol.vx[ ]+v4,v8,a1,v0.t +[ ]+[0-9a-f]+:[ ]+52860257[ ]+vror.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+50860257[ ]+vror.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+5285c257[ ]+vror.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+5085c257[ ]+vror.vx[ ]+v4,v8,a1,v0.t +[ ]+[0-9a-f]+:[ ]+52803257[ ]+vror.vi[ ]+v4,v8,0 +[ ]+[0-9a-f]+:[ ]+548fb257[ ]+vror.vi[ ]+v4,v8,63,v0.t +[ ]+[0-9a-f]+:[ ]+d6860257[ ]+vwsll.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+d4860257[ ]+vwsll.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+d685c257[ ]+vwsll.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+d485c257[ ]+vwsll.vx[ ]+v4,v8,a1,v0.t +[ ]+[0-9a-f]+:[ ]+d6803257[ ]+vwsll.vi[ ]+v4,v8,0 +[ ]+[0-9a-f]+:[ ]+d48fb257[ ]+vwsll.vi[ ]+v4,v8,31,v0.t + diff --git a/gas/testsuite/gas/riscv/zvkn.s b/gas/testsuite/gas/riscv/zvkn.= s new file mode 100644 index 00000000000..44e8f1769ce --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkn.s @@ -0,0 +1,36 @@ + vaesdf.vv v4, v8 + vsha2ch.vv v4, v8, v12 + vandn.vv v4, v8, v12 + vandn.vv v4, v8, v12, v0.t + vandn.vx v4, v8, a1 + vandn.vx v4, v8, a1, v0.t + vbrev.v v4, v8 + vbrev.v v4, v8, v0.t + vbrev8.v v4, v8 + vbrev8.v v4, v8, v0.t + vrev8.v v4, v8 + vrev8.v v4, v8, v0.t + vrev8.v v4, v8 + vrev8.v v4, v8, v0.t + vclz.v v4, v8 + vclz.v v4, v8, v0.t + vctz.v v4, v8 + vctz.v v4, v8, v0.t + vcpop.v v4, v8 + vcpop.v v4, v8, v0.t + vrol.vv v4, v8, v12 + vrol.vv v4, v8, v12, v0.t + vrol.vx v4, v8, a1 + vrol.vx v4, v8, a1, v0.t + vror.vv v4, v8, v12 + vror.vv v4, v8, v12, v0.t + vror.vx v4, v8, a1 + vror.vx v4, v8, a1, v0.t + vror.vi v4, v8, 0 + vror.vi v4, v8, 63, v0.t + vwsll.vv v4, v8, v12 + vwsll.vv v4, v8, v12, v0.t + vwsll.vx v4, v8, a1 + vwsll.vx v4, v8, a1, v0.t + vwsll.vi v4, v8, 0 + vwsll.vi v4, v8, 31, v0.t --=20 2.41.0.255.g8b1d071c50-goog