From patchwork Fri Jan 20 19:55:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46609 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp396154wrn; Fri, 20 Jan 2023 11:56:13 -0800 (PST) X-Google-Smtp-Source: AMrXdXs7E0QsboJfOeCQDGauoaDusFmx+m+1BrxKeuJ3En+zYcgjRx9DNKct73qYVorlvWNKD6y9 X-Received: by 2002:a17:907:3e18:b0:84d:3403:f4f2 with SMTP id hp24-20020a1709073e1800b0084d3403f4f2mr22238051ejc.62.1674244573229; Fri, 20 Jan 2023 11:56:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244573; cv=none; d=google.com; s=arc-20160816; b=qylNLgIveE4uAdGLha44HIiy8QahPp1M6hXTyo6/XC2HzYH3Xbo3fUI0MDTxcdfr8o D9HwFDIOPAPz9IgyYFe1lXHs2SW08tc8CimN1UtdeYzKe1DAkAjavLWF3Q8CmbgpQHOF tGIDZN3Ud+TQrxBtiDN8JPSH76ffWQxH8eyhvyYPVj24D91anP4i8+qOdV/JUski6aPm q5Olfa7N+OVQb9bJZzFaellNgEGfTmgj8Znyke3fvZLgbILwhvhFThLBFb+QznKXs0VN g9WXF/oMOsL0sVx10lcui2rb5CeKp5boaHEmlIBDeAH/404GH4Lo5CcaLraIpgLZfQ/Y B0iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=gBv88OW7AKLcrt4adjFtkpqiFwETC7jfNCWgf9YKKxg=; b=Ya3PnAKfg1Bt/KzmzxZmj0n6kpLPHcDc53rX0XAI8FpZadhc/GTrHk9wSF56zLhLkd X/mMcbdPhxYJ9M4BFhcdqlIDNoqDfj3sbmTC/j3HmCDtvdGa2eQdAWE/5Z4mxoynikkS kpV4xCaECgpuZeZHcOv5daCIP+1Ywo/iHoKyj+KOKmSIx5UFojRztTxi77QOA0QJzOLG qmKSd2RXjoTgyxA/0gZphZUd3i56aGEEC7imGKNjwPuQrK9RMIJMhylzKk4rVNPAKPXa y2Q1JdQmYDxCUdiXeQBgXJua1XGjD0DsuDGofxj4Ow6q8HhRfbcahA4VfhDMFULRkLC2 WRJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=RMhSJTWZ; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id l5-20020a170906794500b007adcc8fb7a0si49893819ejo.399.2023.01.20.11.56.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:56:13 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=RMhSJTWZ; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4098738543B0 for ; Fri, 20 Jan 2023 19:55:54 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by sourceware.org (Postfix) with ESMTPS id 560843858C39 for ; Fri, 20 Jan 2023 19:55:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 560843858C39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x329.google.com with SMTP id g10so4898240wmo.1 for ; Fri, 20 Jan 2023 11:55:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gBv88OW7AKLcrt4adjFtkpqiFwETC7jfNCWgf9YKKxg=; b=RMhSJTWZ7189bD+/8rIDpkQ3SNiZFLJM7utdPP9IfJ4n7iv9f+wLM0kKs1U30Opk/b Amh7VYg+oopKPxGXoIsJSBfGD6yYcIhIQ7NpcILJwBTcFgkRSE/UcYBMOYBzoOTPhRDX 97meT74zmRS400iJEmsie560jSchORxHY9qdewDU2VKVb6gmn+WZbdcrlq/c33lbCVVf ZQerPnaILSSEGJXx64NlggAgQFXyjZ8wrgc/R7RLu3PBoD5owPeuUjZHLVzIXMwVg7XN oO1FBRrdfpYoP3HReNYXrLgQk+i6ZgQTvhzxL14AB0Zr6wHks1xOITjgXWkJEHg4zXqj vTOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gBv88OW7AKLcrt4adjFtkpqiFwETC7jfNCWgf9YKKxg=; b=vU4yhflH66gxZFR7Y/S/es62bOW9wLSz1BvUHw09KNYQsnrTAglWxcbsXPNjKuka4q LO+vCRi/jE+vhk8KAnyLGcol5tXH8RJG7GsDT3oNhTYv5vxgZ1tsBqYtBnUxwwUmGaBL FF8fD93PJor3cHrs8rjjtu2N+gVpgRHj795ML9f61l7PMHwAHCtYN1qhFMffEb+olQRe l0fOwFoIycwa9HKeBOA4Nm67trUWUuWjwPkgwXUUqVsDu3Hm5vUGlU4/+IMgdaeMErdy EV4hMIbkK+Nb8uHODah8Xg6HiWzyPUR4N2JM3HaNOHeO1RLKwmbu8G1oW4zhBi/hAfGe ZiNA== X-Gm-Message-State: AFqh2kpAwi/uKEP1S/ZaXes2ra2L6l4/Qi9LcULj2k77ycdmQktg/tHN Te2X7aXB3NQ5P7YeyDgDwggsoV58kGJdsYIc X-Received: by 2002:a05:600c:6011:b0:3cf:85f7:bbc4 with SMTP id az17-20020a05600c601100b003cf85f7bbc4mr15485139wmb.2.1674244536547; Fri, 20 Jan 2023 11:55:36 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:36 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 1/6] RISC-V: Add Zvkb ISA extension support Date: Fri, 20 Jan 2023 20:55:27 +0100 Message-Id: <20230120195532.917113-2-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572677913037926?= X-GMAIL-MSGID: =?utf-8?q?1755572677913037926?= From: Christoph Müllner This commit adds the Zvkb ISA extension instructions, which are part of the vector crypto extensions. Changes in v2: - Adjusted code following 6eb099ae9324 (expr_end -> expr_parse_end) Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 5 ++++ gas/config/tc-riscv.c | 13 ++++++++++ gas/testsuite/gas/riscv/zvkb.d | 36 ++++++++++++++++++++++++++++ gas/testsuite/gas/riscv/zvkb.s | 28 ++++++++++++++++++++++ include/opcode/riscv-opc.h | 44 ++++++++++++++++++++++++++++++++++ include/opcode/riscv.h | 5 ++++ opcodes/riscv-dis.c | 4 ++++ opcodes/riscv-opc.c | 16 +++++++++++++ 8 files changed, 151 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvkb.d create mode 100644 gas/testsuite/gas/riscv/zvkb.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 19391d94e30..c9952a51c3c 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1205,6 +1205,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zve64x", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zve64f", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zve64d", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvkb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2355,6 +2356,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, || riscv_subset_supports (rps, "zve64d") || riscv_subset_supports (rps, "zve64f") || riscv_subset_supports (rps, "zve32f")); + case INSN_CLASS_ZVKB: + return riscv_subset_supports (rps, "zvkb"); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2513,6 +2516,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("v' or `zve64x' or `zve32x"); case INSN_CLASS_ZVEF: return _("v' or `zve64d' or `zve64f' or `zve32f"); + case INSN_CLASS_ZVKB: + return _("zvkb"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index 3ec474c9295..487c0cc5be2 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -1324,6 +1324,7 @@ validate_riscv_insn (const struct riscv_opcode *opc, int length) case 'i': case 'j': case 'k': USE_BITS (OP_MASK_VIMM, OP_SH_VIMM); break; + case 'l': used_bits |= ENCODE_RVV_VI_UIMM6(-1U); break; case 'm': USE_BITS (OP_MASK_VMASK, OP_SH_VMASK); break; case 'M': break; /* Macro operand, must be a mask register. */ case 'T': break; /* Macro operand, must be a vector register. */ @@ -2985,6 +2986,18 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr, asarg = expr_parse_end; continue; + case 'l': /* 6-bit vector arith unsigned immediate */ + my_getExpression (imm_expr, asarg); + check_absolute_expr (ip, imm_expr, FALSE); + if (imm_expr->X_add_number < 0 + || imm_expr->X_add_number >= 64) + as_bad (_("bad value for vector immediate field, " + "value must be 0...63")); + ip->insn_opcode |= ENCODE_RVV_VI_UIMM6 (imm_expr->X_add_number); + imm_expr->X_op = O_absent; + asarg = expr_parse_end; + continue; + case 'm': /* optional vector mask */ if (*asarg == '\0') { diff --git a/gas/testsuite/gas/riscv/zvkb.d b/gas/testsuite/gas/riscv/zvkb.d new file mode 100644 index 00000000000..63aacba951c --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkb.d @@ -0,0 +1,36 @@ +#as: -march=rv64gc_zvkb +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+32862257[ ]+vclmul.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+30862257[ ]+vclmul.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+3285e257[ ]+vclmul.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+3085e257[ ]+vclmul.vx[ ]+v4,v8,a1,v0.t +[ ]+[0-9a-f]+:[ ]+36862257[ ]+vclmulh.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+34862257[ ]+vclmulh.vv[ ]+v4,v8,v12,v0.t +[ ]+[0-9a-f]+:[ ]+3685e257[ ]+vclmulh.vx[ ]+v4,v8,a1 +[ ]+[0-9a-f]+:[ ]+3485e257[ ]+vclmulh.vx[ ]+v4,v8,a1,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]+:[ ]+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]+:[ ]+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]+:[ ]+0687b257[ ]+vandn.vi[ ]+v4,v8,15 +[ ]+[0-9a-f]+:[ ]+04883257[ ]+vandn.vi[ ]+v4,v8,-16,v0.t diff --git a/gas/testsuite/gas/riscv/zvkb.s b/gas/testsuite/gas/riscv/zvkb.s new file mode 100644 index 00000000000..fd741505883 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkb.s @@ -0,0 +1,28 @@ + vclmul.vv v4, v8, v12 + vclmul.vv v4, v8, v12, v0.t + vclmul.vx v4, v8, a1 + vclmul.vx v4, v8, a1, v0.t + vclmulh.vv v4, v8, v12 + vclmulh.vv v4, v8, v12, v0.t + vclmulh.vx v4, v8, a1 + vclmulh.vx v4, v8, a1, 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 + vbrev8.v v4, v8 + vbrev8.v v4, v8, v0.t + vrev8.v v4, v8 + vrev8.v v4, v8, v0.t + vandn.vv v4, v8, v12 + vandn.vv v4, v8, v12, v0.t + vandn.vx v4, v8, a1 + vandn.vx v4, v8, a1, v0.t + vandn.vi v4, v8, 15 + vandn.vi v4, v8, -16, v0.t diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index 85d35c1efc9..bdcb3e442f8 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2055,6 +2055,35 @@ #define MASK_VDOTUVV 0xfc00707f #define MATCH_VFDOTVV 0xe4001057 #define MASK_VFDOTVV 0xfc00707f +/* Zvkb instructions. */ +#define MATCH_VCLMULVV 0x30002057 +#define MASK_VCLMULVV 0xfc00707f +#define MATCH_VCLMULVX 0x30006057 +#define MASK_VCLMULVX 0xfc00707f +#define MATCH_VCLMULHVV 0x34002057 +#define MASK_VCLMULHVV 0xfc00707f +#define MATCH_VCLMULHVX 0x34006057 +#define MASK_VCLMULHVX 0xfc00707f +#define MATCH_VROLVV 0x54000057 +#define MASK_VROLVV 0xfc00707f +#define MATCH_VROLVX 0x54004057 +#define MASK_VROLVX 0xfc00707f +#define MATCH_VRORVV 0x50000057 +#define MASK_VRORVV 0xfc00707f +#define MATCH_VRORVX 0x50004057 +#define MASK_VRORVX 0xfc00707f +#define MATCH_VRORVI 0x50003057 +#define MASK_VRORVI 0xf800707f +#define MATCH_VBREV8V 0x48042057 +#define MASK_VBREV8V 0xfc0ff07f +#define MATCH_VREV8V 0x4804a057 +#define MASK_VREV8V 0xfc0ff07f +#define MATCH_VANDNVV 0x04000057 +#define MASK_VANDNVV 0xfc00707f +#define MATCH_VANDNVX 0x04004057 +#define MASK_VANDNVX 0xfc00707f +#define MATCH_VANDNVI 0x04003057 +#define MASK_VANDNVI 0xfc00707f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3118,6 +3147,21 @@ DECLARE_INSN(cbo_zero, MATCH_CBO_ZERO, MASK_CBO_ZERO); /* Zawrs instructions. */ DECLARE_INSN(wrs_nto, MATCH_WRS_NTO, MASK_WRS_NTO) DECLARE_INSN(wrs_sto, MATCH_WRS_STO, MASK_WRS_STO) +/* Zvkb instructions. */ +DECLARE_INSN(vclmulvv, MATCH_VCLMULVV, MASK_VCLMULVV) +DECLARE_INSN(vclmulvx, MATCH_VCLMULVX, MASK_VCLMULVX) +DECLARE_INSN(vclmulhvv, MATCH_VCLMULHVV, MASK_VCLMULHVV) +DECLARE_INSN(vclmulhvx, MATCH_VCLMULHVX, MASK_VCLMULHVX) +DECLARE_INSN(vrolvv, MATCH_VROLVV, MASK_VROLVV) +DECLARE_INSN(vrolvx, MATCH_VROLVX, MASK_VROLVX) +DECLARE_INSN(vrorvv, MATCH_VRORVV, MASK_VRORVV) +DECLARE_INSN(vrorvx, MATCH_VRORVX, MASK_VRORVX) +DECLARE_INSN(vrorvi, MATCH_VRORVI, MASK_VRORVI) +DECLARE_INSN(vbrev8v, MATCH_VBREV8V, MASK_VBREV8V) +DECLARE_INSN(vrev8v, MATCH_VREV8V, MASK_VREV8V) +DECLARE_INSN(vandnvv, MATCH_VANDNVV, MASK_VANDNVV) +DECLARE_INSN(vandnvx, MATCH_VANDNVX, MASK_VANDNVX) +DECLARE_INSN(vandnvi, MATCH_VANDNVI, MASK_VANDNVI) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index b4ae55249bb..cc3950f56b8 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -100,6 +100,8 @@ static inline unsigned int riscv_insn_length (insn_t insn) (RV_X(x, 15, 5) | (-RV_X(x, 19, 1) << 5)) #define EXTRACT_RVV_VI_UIMM(x) \ (RV_X(x, 15, 5)) +#define EXTRACT_RVV_VI_UIMM6(x) \ + (RV_X(x, 15, 5) | (RV_X(x, 26, 1) << 5)) #define EXTRACT_RVV_OFFSET(x) \ (RV_X(x, 29, 3)) #define EXTRACT_RVV_VB_IMM(x) \ @@ -151,6 +153,8 @@ static inline unsigned int riscv_insn_length (insn_t insn) (RV_X(x, 0, 10) << 20) #define ENCODE_RVV_VC_IMM(x) \ (RV_X(x, 0, 11) << 20) +#define ENCODE_RVV_VI_UIMM6(x) \ + (RV_X(x, 0, 5) << 15 | RV_X(x, 5, 1) << 26) #define VALID_ITYPE_IMM(x) (EXTRACT_ITYPE_IMM(ENCODE_ITYPE_IMM(x)) == (x)) #define VALID_STYPE_IMM(x) (EXTRACT_STYPE_IMM(ENCODE_STYPE_IMM(x)) == (x)) @@ -405,6 +409,7 @@ enum riscv_insn_class INSN_CLASS_ZKND_OR_ZKNE, INSN_CLASS_V, INSN_CLASS_ZVEF, + INSN_CLASS_ZVKB, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-dis.c b/opcodes/riscv-dis.c index 7c9b228e778..481e8ea906b 100644 --- a/opcodes/riscv-dis.c +++ b/opcodes/riscv-dis.c @@ -397,6 +397,10 @@ print_insn_args (const char *oparg, insn_t l, bfd_vma pc, disassemble_info *info print (info->stream, dis_style_immediate, "%d", (int)EXTRACT_RVV_OFFSET (l)); break; + case 'l': + print (info->stream, dis_style_immediate, "%d", + (int)EXTRACT_RVV_VI_UIMM6 (l)); + break; case 'm': if (!EXTRACT_OPERAND (VMASK, l)) { diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 6b65296a3f2..0b76bff2617 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1815,6 +1815,22 @@ const struct riscv_opcode riscv_opcodes[] = {"vmv4r.v", 0, INSN_CLASS_V, "Vd,Vt", MATCH_VMV4RV, MASK_VMV4RV, match_opcode, 0}, {"vmv8r.v", 0, INSN_CLASS_V, "Vd,Vt", MATCH_VMV8RV, MASK_VMV8RV, match_opcode, 0}, +/* Zvkb instructions. */ +{"vclmul.vv", 0, INSN_CLASS_ZVKB, "Vd,Vt,VsVm", MATCH_VCLMULVV, MASK_VCLMULVV, match_opcode, 0}, +{"vclmul.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VCLMULVX, MASK_VCLMULVX, match_opcode, 0}, +{"vclmulh.vv", 0, INSN_CLASS_ZVKB, "Vd,Vt,VsVm", MATCH_VCLMULHVV, MASK_VCLMULHVV, match_opcode, 0}, +{"vclmulh.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VCLMULHVX, MASK_VCLMULHVX, match_opcode, 0}, +{"vrol.vv", 0, INSN_CLASS_ZVKB, "Vd,Vt,VsVm", MATCH_VROLVV, MASK_VROLVV, match_opcode, 0}, +{"vrol.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VROLVX, MASK_VROLVX, match_opcode, 0}, +{"vror.vv", 0, INSN_CLASS_ZVKB, "Vd,Vt,VsVm", MATCH_VRORVV, MASK_VRORVV, match_opcode, 0}, +{"vror.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VRORVX, MASK_VRORVX, match_opcode, 0}, +{"vror.vi", 0, INSN_CLASS_ZVKB, "Vd,Vt,VlVm", MATCH_VRORVI, MASK_VRORVI, match_opcode, 0}, +{"vbrev8.v", 0, INSN_CLASS_ZVKB, "Vd,VtVm", MATCH_VBREV8V, MASK_VBREV8V, match_opcode, 0}, +{"vrev8.v", 0, INSN_CLASS_ZVKB, "Vd,VtVm", MATCH_VREV8V, MASK_VREV8V, match_opcode, 0}, +{"vandn.vv", 0, INSN_CLASS_ZVKB, "Vd,Vt,VsVm", MATCH_VANDNVV, MASK_VANDNVV, match_opcode, 0}, +{"vandn.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VANDNVX, MASK_VANDNVX, match_opcode, 0}, +{"vandn.vi", 0, INSN_CLASS_ZVKB, "Vd,Vt,ViVm", MATCH_VANDNVI, MASK_VANDNVI, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS }, From patchwork Fri Jan 20 19:55:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46608 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp395983wrn; Fri, 20 Jan 2023 11:55:50 -0800 (PST) X-Google-Smtp-Source: AMrXdXsVUPmco066x+Tk2PXRSbFZp7tdV+n4kq9I5knXZvG5LV+3KKn1a/EYPHqXhEOdNVkyzqnM X-Received: by 2002:a05:6402:642:b0:496:d2f7:77a2 with SMTP id u2-20020a056402064200b00496d2f777a2mr27242867edx.18.1674244550675; Fri, 20 Jan 2023 11:55:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244550; cv=none; d=google.com; s=arc-20160816; b=AwYO3YSpEK30DUUIu+q3Ms+xQxioWGdQCGlBa/GcfMv2z637ao11kLDOz3jPAgV/Og GxLsFMA7G+1DGrrWy9RKZZb25wUf/pgupj2wEwc0c29H1BNFG1TOkKUm/OglSwqwOgeD beOEXbjsPctCjT7fLzfFqQdh4yWlzTKqNDrmDQxmPhgnpbGb3k27tyv+PXs19Z/gyh4z gnjXluzDO2dVGXsaOBLsNqakJpl94OnOIWv8tHo37Nu9xCnAvI5l16eAwYgmi/g2GuL6 clQhlWYG10y0aCuvSi+C1WwHGya8/lkY+gLG6/kGgwClS24ru3upkMXlsYHKiFj9opTU WDkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=0hDnzwAQaMOlQierEepKHI3Ku2jqmnk+QSl6XiBK1Qs=; b=JWYl3XSdSzitJ87QDqZes9d5eQskia2p25uFqLXEWYJbpwNaW9EeO9gyBaFb+oe3tO AUJUXU/XNn4JvL5gnyPAORVSiBmGRUony5MifwpGVwgeb4ToFNfZTJeHBQ+TJQmFhJLW wSaoCp+RKAJj/a0Je0nFEdF+1hOFLhWZNckljAsoTVTkxbRuq22o5uJmbvfLJSsPzfR1 0I8+tZad6+5sK0HkyDSxntny7tPhwSFTbBOjV4RtQ3ljPsy5aEVeEKFUwUQ/Q+aOyqs2 D2bL83gW57Fdbs43gQAmH6N5/fQMw5WKaqxmiYRhXgW/EguHBvrpIoJHmpS2brUwSFVV xjMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=VXhcmMae; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id z9-20020a056402274900b0048612395228si28192661edd.44.2023.01.20.11.55.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:50 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=VXhcmMae; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 428C33858D33 for ; Fri, 20 Jan 2023 19:55:46 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by sourceware.org (Postfix) with ESMTPS id 55E093858C36 for ; Fri, 20 Jan 2023 19:55:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 55E093858C36 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x334.google.com with SMTP id d4-20020a05600c3ac400b003db1de2aef0so4484814wms.2 for ; Fri, 20 Jan 2023 11:55:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0hDnzwAQaMOlQierEepKHI3Ku2jqmnk+QSl6XiBK1Qs=; b=VXhcmMaeRoear7cjkd/9RiH1dQByf5Gv5UfzSwmMZaGj13abBrQdPWceOE5kUP7CRP EGfoQnDvh3wBw4jhViqyr3OPu2izZoscmqQvFre/sRa3VtJUJWfZIjr8JnOHV///LzTv T4O9heaNMJMEUOfkH9zhYMVkXQQI9AfwAds1oT9ZuLsL0//ql+KH3cEnAMCuuDDGBLYq Se6akm5svrvbGpVtlnIa9KTeyxPtJ/ExW7SnT6HkDx0MWxeuWmlqWjkY97elgXcq5I7m btd28e9hbRgB+1+FulKVjeLkrUb/Kn40N2yt5NgRFZkQmwKppUAcqa5R7NDVM6vOECYf tGNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0hDnzwAQaMOlQierEepKHI3Ku2jqmnk+QSl6XiBK1Qs=; b=4BDlei7MBZ/vTY3amxiiXL0LYaeRr/JRNE+YObfg9FFHUdUCro+T22kHo/oVEO6rkG zyZ0TDuI8zYDhYdMAx18uQlbeZ5ACkcjIb5POgLLLEstnK9fCFvzhEOw8taa5jKBIt6e vqH70Url3tT/uF9AGQvH3FU6j/OtS9tYo/AyTZFjh1wNcIt/o4oBGIY7Nvh0zXanKgTx Gxrqd+0KfGSDwsIMJV396mAdMrU0ApRcsuXmSPB4wDDB+wXolGfFSD94SuSYzU1NyszU kuoyixE8klQRQ3IY6PP/Lgkh78lO18JSnY87sJYopTr/+xVlhFqfpA3X11BCH14VIzXt ChkA== X-Gm-Message-State: AFqh2krZzWfurKD3mrZGIERNqOdi/RZcGVd/ZyqTzFnxW5I6zLqabe18 ZMdMSZEihKUa2qhvOPNVfbbKRqCuRl3+kROc X-Received: by 2002:a05:600c:4a27:b0:3db:3ef:2369 with SMTP id c39-20020a05600c4a2700b003db03ef2369mr15627572wmp.40.1674244537912; Fri, 20 Jan 2023 11:55:37 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:37 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 2/6] RISC-V: Add Zvkg ISA extension support Date: Fri, 20 Jan 2023 20:55:28 +0100 Message-Id: <20230120195532.917113-3-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572654413399269?= X-GMAIL-MSGID: =?utf-8?q?1755572654413399269?= From: Christoph Müllner This commit adds the Zvkg ISA extension instruction, which is part of the vector crypto extensions. Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 5 +++++ gas/testsuite/gas/riscv/zvkg.d | 9 +++++++++ gas/testsuite/gas/riscv/zvkg.s | 1 + include/opcode/riscv-opc.h | 5 +++++ include/opcode/riscv.h | 1 + opcodes/riscv-opc.c | 3 +++ 6 files changed, 24 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvkg.d create mode 100644 gas/testsuite/gas/riscv/zvkg.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index c9952a51c3c..9e0dee9cc72 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1206,6 +1206,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zve64f", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zve64d", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvkg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2358,6 +2359,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, || riscv_subset_supports (rps, "zve32f")); case INSN_CLASS_ZVKB: return riscv_subset_supports (rps, "zvkb"); + case INSN_CLASS_ZVKG: + return riscv_subset_supports (rps, "zvkg"); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2518,6 +2521,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("v' or `zve64d' or `zve64f' or `zve32f"); case INSN_CLASS_ZVKB: return _("zvkb"); + case INSN_CLASS_ZVKG: + return _("zvkg"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/testsuite/gas/riscv/zvkg.d b/gas/testsuite/gas/riscv/zvkg.d new file mode 100644 index 00000000000..abca83ea3a8 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkg.d @@ -0,0 +1,9 @@ +#as: -march=rv64gc_zvkg +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+b2862277[ ]+vghmac.vv[ ]+v4,v8,v12 diff --git a/gas/testsuite/gas/riscv/zvkg.s b/gas/testsuite/gas/riscv/zvkg.s new file mode 100644 index 00000000000..7c97108a396 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkg.s @@ -0,0 +1 @@ + vghmac.vv v4, v8, v12 diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index bdcb3e442f8..cfe4f12d7e4 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2084,6 +2084,9 @@ #define MASK_VANDNVX 0xfc00707f #define MATCH_VANDNVI 0x04003057 #define MASK_VANDNVI 0xfc00707f +/* Zvkg instructions. */ +#define MATCH_VGHMACVV 0xb2002077 +#define MASK_VGHMACVV 0xfe00707f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3162,6 +3165,8 @@ DECLARE_INSN(vrev8v, MATCH_VREV8V, MASK_VREV8V) DECLARE_INSN(vandnvv, MATCH_VANDNVV, MASK_VANDNVV) DECLARE_INSN(vandnvx, MATCH_VANDNVX, MASK_VANDNVX) DECLARE_INSN(vandnvi, MATCH_VANDNVI, MASK_VANDNVI) +/* Zvkg instructions. */ +DECLARE_INSN(vghmacvv, MATCH_VGHMACVV, MASK_VGHMACVV) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index cc3950f56b8..9e883f030d6 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -410,6 +410,7 @@ enum riscv_insn_class INSN_CLASS_V, INSN_CLASS_ZVEF, INSN_CLASS_ZVKB, + INSN_CLASS_ZVKG, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 0b76bff2617..9992b11f94c 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1831,6 +1831,9 @@ const struct riscv_opcode riscv_opcodes[] = {"vandn.vx", 0, INSN_CLASS_ZVKB, "Vd,Vt,sVm", MATCH_VANDNVX, MASK_VANDNVX, match_opcode, 0}, {"vandn.vi", 0, INSN_CLASS_ZVKB, "Vd,Vt,ViVm", MATCH_VANDNVI, MASK_VANDNVI, match_opcode, 0}, +/* Zvkg instructions. */ +{"vghmac.vv", 0, INSN_CLASS_ZVKG, "Vd,Vt,Vs", MATCH_VGHMACVV, MASK_VGHMACVV, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS }, From patchwork Fri Jan 20 19:55:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46612 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp396726wrn; Fri, 20 Jan 2023 11:57:59 -0800 (PST) X-Google-Smtp-Source: AMrXdXu/NGOngkkysMV02a7RHUb2AVY0A7MnFS1w2lL7trrxCVKLswO7vG4ie+ZVhqMQ9YzqF1P5 X-Received: by 2002:a17:907:6d87:b0:84d:3fa7:12e5 with SMTP id sb7-20020a1709076d8700b0084d3fa712e5mr21867070ejc.32.1674244679223; Fri, 20 Jan 2023 11:57:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244679; cv=none; d=google.com; s=arc-20160816; b=pw7kduvRFLH6P72shZC8RQsCXvEU5aCLfSJarmYVa/uAgxj2eiKlDH1Jk/90syO8St kb3YFphSz6Dc+U3S5lTLPQ05Ky6R/CAj0gZnOfQVf6IKxx1nrXV00ySYa1IDrLvWogiK 1uSnWdCrdWw9awX44nVAiTMG3Gub3iFVNOXGJTuXmnpE0d4p8/S6+t5giVdC7v6yD1O7 TeJMOxORYSj3FD+D/kSNEXsGifnXpsqS2BMHi+u/XHCP6DQYK+55yM2GoeGq7C06K1BC GDEDi/qNypu33e81xS+4EIO0oh7ds+ZGA327S2pz1BjiRrPwhUWtvihAGRjxXsbuTNxT 1xqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=AAfV+1+oBgVlhs8l7ms4+Zw5RQz3zXAUbjoquYcYEGo=; b=YlF4s73YZiiAV/kvAzmHiiftjtDcH3GQoHIRQMxLBDyKl/f4c8ngcO1m342za+VmsQ a4Tf+m9lXokbGbO5Lz5zopMKuSI8bd26Zc8jjC5ctoaK6qUsevqG2gaeubZMuOka1eYB 1Qn49tB6Sr6nbdh8j6vztk3AyrQRUZSxdYepAgMbwugSQWIokiinMYYUu7TcI+n0bvwg NN5CNo3Y1KUfAIVtuX9+Swcpv1r/4ZFMEBl08ZVVKSBjN8aqbk3ObW8B5XRK2oF9keBG KUwaByISBl5H4ejrVsREUcXFJ806gegWmqRQxlYUbtf2TIkr3WiEwu/NIqHqQM3ak6Xh EW2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=D19GlTev; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id go11-20020a1709070d8b00b0087784d21e5asi5176570ejc.721.2023.01.20.11.57.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:57:59 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=D19GlTev; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8D86A3893675 for ; Fri, 20 Jan 2023 19:56:21 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by sourceware.org (Postfix) with ESMTPS id BA351385841E for ; Fri, 20 Jan 2023 19:55:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BA351385841E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x335.google.com with SMTP id q8so4869495wmo.5 for ; Fri, 20 Jan 2023 11:55:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AAfV+1+oBgVlhs8l7ms4+Zw5RQz3zXAUbjoquYcYEGo=; b=D19GlTevdb0wYa436BqrNcnRtrAluNRb0Q1IZVIW3csY8OHJpLTZm4n67iqdM1ZJ2E U2geIg5H+lr+Cxw6mS4bGkRaNR1trFlgzUnZ8Jk2T+lPxUqetb2TDj+FdW768HKvcIS4 YpFlgbe3bHIK7E2lCT0bZujmPuORxZuRAV6DSl/QZi566Hs+TwsIMrzEl7kZh+N0cIn8 URzs+HAjzofUztGyurKJ9kZOe5N7Alow1xnE7XIvkL/oCg5RpdHen5zmsEvHOx9XI7ie Uq7VYufsiRwiGhgt6/t4vAmoliAbWXf5J2t0xnbmQZRcy7JLN/cop6Z0VhQOeuuHMCqT wsjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AAfV+1+oBgVlhs8l7ms4+Zw5RQz3zXAUbjoquYcYEGo=; b=k7JrRGz5KkRkA0zyXGQmeBGeusqnYYPcXm/S80uXgjRS0qmAZpb1QemM02iMiwk/xo ZlLCCeA/h2vktj0IefIYmNw1o47po3yKdJlAah5hpfzx+lXrS/ngNbCX0RhPOrzQJapX rU3ANutfrBCt9TF8U3GcdFOAlFkH4aI02b7OfKOIDa/C0V+i+/HD4X+QxnUaiuTbOb0M WYCARx6I4cFg4VBhwFlUVQjVHvT1NrqGCN6TIQZKzfZ4eBQnIqWBgD/9cgRj/5Fh4eLm 9SyRum167FuWIR+sC2PU4lvEPq+2+BWfwD99GOPare5H9yCGw5VWmk+Wg7fNxJIV4W7H fvlQ== X-Gm-Message-State: AFqh2kq/Cf8YN9IZo5PDqxSYVjKFX7u9uCyLtx5c/QEQIlMZ6bJ4XJm0 XeiSyrlFKYwRJBGc2hcOlLMwt1ZEF9+JH6G/ X-Received: by 2002:a05:600c:c8d:b0:3da:fcee:2ef1 with SMTP id fj13-20020a05600c0c8d00b003dafcee2ef1mr15309610wmb.32.1674244539158; Fri, 20 Jan 2023 11:55:39 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:38 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 3/6] RISC-V: Add Zvknh[a,b] ISA extension support Date: Fri, 20 Jan 2023 20:55:29 +0100 Message-Id: <20230120195532.917113-4-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572788782312415?= X-GMAIL-MSGID: =?utf-8?q?1755572788782312415?= From: Christoph Müllner This commit adds the Zvknh[a,b] ISA extension instructions, which are part of the vector crypto extensions. Changes in v2: - Rename Zvkh[a,b] -> Zvknh[a,b] Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 13 +++++++++++++ gas/testsuite/gas/riscv/zvknha.d | 12 ++++++++++++ gas/testsuite/gas/riscv/zvknha_zvknhb.s | 3 +++ gas/testsuite/gas/riscv/zvknhb.d | 12 ++++++++++++ include/opcode/riscv-opc.h | 11 +++++++++++ include/opcode/riscv.h | 3 +++ opcodes/riscv-opc.c | 5 +++++ 7 files changed, 59 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvknha.d create mode 100644 gas/testsuite/gas/riscv/zvknha_zvknhb.s create mode 100644 gas/testsuite/gas/riscv/zvknhb.d diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 9e0dee9cc72..b61c73569d3 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1207,6 +1207,8 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zve64d", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvknha", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvknhb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2361,6 +2363,13 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "zvkb"); case INSN_CLASS_ZVKG: return riscv_subset_supports (rps, "zvkg"); + case INSN_CLASS_ZVKNHA: + return riscv_subset_supports (rps, "zvknha"); + case INSN_CLASS_ZVKNHB: + return riscv_subset_supports (rps, "zvknhb"); + case INSN_CLASS_ZVKNHA_OR_ZVKNHB: + return (riscv_subset_supports (rps, "zvknha") + || riscv_subset_supports (rps, "zvknhb")); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2523,6 +2532,10 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("zvkb"); case INSN_CLASS_ZVKG: return _("zvkg"); + case INSN_CLASS_ZVKNHA: + return _("zvknha"); + case INSN_CLASS_ZVKNHB: + return _("zvknhb"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/testsuite/gas/riscv/zvknha.d b/gas/testsuite/gas/riscv/zvknha.d new file mode 100644 index 00000000000..36d660f634f --- /dev/null +++ b/gas/testsuite/gas/riscv/zvknha.d @@ -0,0 +1,12 @@ +#as: -march=rv64gc_zvknha +#source: zvknha_zvknhb.s +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+ba862277[ ]+vsha2ch.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+be862277[ ]+vsha2cl.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+b6862277[ ]+vsha2ms.vv[ ]+v4,v8,v12 diff --git a/gas/testsuite/gas/riscv/zvknha_zvknhb.s b/gas/testsuite/gas/riscv/zvknha_zvknhb.s new file mode 100644 index 00000000000..d20e6310531 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvknha_zvknhb.s @@ -0,0 +1,3 @@ + vsha2ch.vv v4, v8, v12 + vsha2cl.vv v4, v8, v12 + vsha2ms.vv v4, v8, v12 diff --git a/gas/testsuite/gas/riscv/zvknhb.d b/gas/testsuite/gas/riscv/zvknhb.d new file mode 100644 index 00000000000..ab0f035889e --- /dev/null +++ b/gas/testsuite/gas/riscv/zvknhb.d @@ -0,0 +1,12 @@ +#as: -march=rv64gc_zvknhb +#source: zvknha_zvknhb.s +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+ba862277[ ]+vsha2ch.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+be862277[ ]+vsha2cl.vv[ ]+v4,v8,v12 +[ ]+[0-9a-f]+:[ ]+b6862277[ ]+vsha2ms.vv[ ]+v4,v8,v12 diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index cfe4f12d7e4..29b45adb010 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2087,6 +2087,13 @@ /* Zvkg instructions. */ #define MATCH_VGHMACVV 0xb2002077 #define MASK_VGHMACVV 0xfe00707f +/* Zvknh[a,b] instructions. */ +#define MATCH_VSHA2CHVV 0xba002077 +#define MASK_VSHA2CHVV 0xfe00707f +#define MATCH_VSHA2CLVV 0xbe002077 +#define MASK_VSHA2CLVV 0xfe00707f +#define MATCH_VSHA2MSVV 0xb6002077 +#define MASK_VSHA2MSVV 0xfe00707f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3167,6 +3174,10 @@ DECLARE_INSN(vandnvx, MATCH_VANDNVX, MASK_VANDNVX) DECLARE_INSN(vandnvi, MATCH_VANDNVI, MASK_VANDNVI) /* Zvkg instructions. */ DECLARE_INSN(vghmacvv, MATCH_VGHMACVV, MASK_VGHMACVV) +/* Zvknh[a,b] instructions. */ +DECLARE_INSN(vsha2chvv, MATCH_VSHA2CHVV, MASK_VSHA2CHVV) +DECLARE_INSN(vsha2clvv, MATCH_VSHA2CLVV, MASK_VSHA2CLVV) +DECLARE_INSN(vsha2msvv, MATCH_VSHA2MSVV, MASK_VSHA2MSVV) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index 9e883f030d6..55fefa40ae2 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -411,6 +411,9 @@ enum riscv_insn_class INSN_CLASS_ZVEF, INSN_CLASS_ZVKB, INSN_CLASS_ZVKG, + INSN_CLASS_ZVKNHA, + INSN_CLASS_ZVKNHB, + INSN_CLASS_ZVKNHA_OR_ZVKNHB, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 9992b11f94c..8de7610573e 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1834,6 +1834,11 @@ const struct riscv_opcode riscv_opcodes[] = /* Zvkg instructions. */ {"vghmac.vv", 0, INSN_CLASS_ZVKG, "Vd,Vt,Vs", MATCH_VGHMACVV, MASK_VGHMACVV, match_opcode, 0}, +/* Zvknh[a,b] instructions. */ +{"vsha2ch.vv", 0, INSN_CLASS_ZVKNHA_OR_ZVKNHB, "Vd,Vt,Vs", MATCH_VSHA2CHVV, MASK_VSHA2CHVV, match_opcode, 0}, +{"vsha2cl.vv", 0, INSN_CLASS_ZVKNHA_OR_ZVKNHB, "Vd,Vt,Vs", MATCH_VSHA2CLVV, MASK_VSHA2CLVV, match_opcode, 0}, +{"vsha2ms.vv", 0, INSN_CLASS_ZVKNHA_OR_ZVKNHB, "Vd,Vt,Vs", MATCH_VSHA2MSVV, MASK_VSHA2MSVV, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS }, From patchwork Fri Jan 20 19:55:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46611 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp396624wrn; Fri, 20 Jan 2023 11:57:42 -0800 (PST) X-Google-Smtp-Source: AMrXdXsQfLPgu/D1ghBqHhMEg68Fux13zC78rrGILks8zHsx1sq6QJZTQGf9JDwrABdePKYlZ5wq X-Received: by 2002:aa7:dcd0:0:b0:49e:c9f4:1e5b with SMTP id w16-20020aa7dcd0000000b0049ec9f41e5bmr3134115edu.7.1674244662772; Fri, 20 Jan 2023 11:57:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244662; cv=none; d=google.com; s=arc-20160816; b=DMR5lmtlAY4wJZdORPosu2sHJbqqHE7msO75eSo9QqwGNxLev2lU0evtPMKv730XBa +x0FYV4Eyl9i1gUwF1Oz+9CVrs41NeMcHtuvcn/OPGpg+9Z++7jRVWEyx7+v05612v0J GKzS5BYM3qvmwWn69REf3MMQDdZ+uInDgaFVcP5aiKKpEdqdfJsiSkt5f8ZqGsR2+0pj iyDukNajJgHkqlRSncxl2gDcuX+OuZxMpJt5AnHzWbJJxIyI2qrDxxaJ6FjumORSj3Kh qnx2ms9JlLLhol58Lz7d3chLMgUlaF3/5Tglj1hJ82B5UpKj07B8G7OgloF8yZcxcPyo HKug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=UG0Yfbu6MRgcfUg5fX1nRhsInwTx4BagEQ2ggz2Qe5I=; b=AoRGE9iqJyxIhgtYt1wuN/aZtkdpRJOWxYrmwJbLJue2KL7PGTehCuF0HKJrrM6g7C MyS+GMk+oAZ/3QPvu20fGW8+OFe5o3JcQOjV+LBO/XHdc+Qqv5tiW+QICXp+xDA41Nq1 FoBKO1OqoXuLakzlepgGVcQ89eqqa7HcfZlO7DLh6DCq6tcJo3pz2MXRf8bwbdNwXkRG PWmQ0RcyNXgB5n9oVxbxYNozjCqr7dl2Z0xOSAk7PZ+IhUb70lso7+XpFeKdTScklGlx QiMWTf0+50sPx7pQHYizJdUWm9COcGCEbrhAROwJgAnYCl0vb09rqSVX6LQNGVFTUliU Ophw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=hwA5zxy2; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id j9-20020a05640211c900b0047338d1bfcfsi22214882edw.166.2023.01.20.11.57.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:57:42 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=hwA5zxy2; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 133733887F7A for ; Fri, 20 Jan 2023 19:56:18 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id F33A23858C00 for ; Fri, 20 Jan 2023 19:55:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F33A23858C00 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x330.google.com with SMTP id e19-20020a05600c439300b003db1cac0c1fso5094806wmn.5 for ; Fri, 20 Jan 2023 11:55:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UG0Yfbu6MRgcfUg5fX1nRhsInwTx4BagEQ2ggz2Qe5I=; b=hwA5zxy2JC0Agdq1YxlTCQCr/UAD7rbm0R84U8UnlvduL4AeL9DOrtgWPAKHpNRrMR ar7TvhAt5j2n1ZYvx3yGxK+y1SpeyI0D+TF2s4N3y7JE8YZx1ZZcuwRcJLFXeWiMVJgP xNVlfwH5/ts1b84HQcTzCk7BFjfU1mBhLSC35NS/JmOky+N32Nq7KxmD681Gi7iP26CE qmZdnKfUBqbUZf7P2URGBPSHWgq02dUd+pWKIzx0a4w0kX8j+QLLr1mropOGdNNCUMW+ cJwJRa7x6Ma1SAeWnw3oIiSH/V8Dm5/18X6uVvDHWNKx261c8312aJq9nAWLmWfX89eu oP8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UG0Yfbu6MRgcfUg5fX1nRhsInwTx4BagEQ2ggz2Qe5I=; b=3juJfsJ5WIuQ1vhpqu7u+mh/M5P5+L4aUsygMwt2YxFgGLU712niHND9L98u/S6fYe jGWOR29977F7WGvWP5BmftwQKYGoiDdMJLDVKXMymUamBbCWxzJHhqCL4yzX1OZm1LNK cy+teYCUyc+hbR7FzBNsr8AQn4UE3neJIjutiNrFOHuVSrJEl8MDHxNZ6nyRrRDKunvD 5cDLVA5bJJfcn1ORAw0e05lu4hyOdZHg+X02bo37HRSZXffuh9j7CDsBIlQ1iJYPNAG6 YIqmK2cgC82IVQgB8+R1wB0hF7XOYNK1kKwR1H9s+0YYl9v5kVGhEA3//cFP5YhNkNUo vxQg== X-Gm-Message-State: AFqh2kqm6iEuWyKjY4xj+XCo1rlawEHS/wc/Kvbzr5PveW5wFo3y1bP4 FAK7kIWXVI6G5d+yZ09CZHN2Gpf1dRrfRzkg X-Received: by 2002:a05:600c:1c01:b0:3da:fc07:5e80 with SMTP id j1-20020a05600c1c0100b003dafc075e80mr18515929wms.12.1674244540351; Fri, 20 Jan 2023 11:55:40 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:39 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 4/6] RISC-V: Add Zvkns ISA extension support Date: Fri, 20 Jan 2023 20:55:30 +0100 Message-Id: <20230120195532.917113-5-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572771125110017?= X-GMAIL-MSGID: =?utf-8?q?1755572771125110017?= From: Christoph Müllner This commit adds the Zvkns ISA extension instructions, which are part of the vector crypto extensions. Changes in v2: - Rename Zvkn -> Zvkns Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 5 +++++ gas/testsuite/gas/riscv/zvkns.d | 21 ++++++++++++++++++++ gas/testsuite/gas/riscv/zvkns.s | 13 ++++++++++++ include/opcode/riscv-opc.h | 35 +++++++++++++++++++++++++++++++++ include/opcode/riscv.h | 1 + opcodes/riscv-opc.c | 13 ++++++++++++ 6 files changed, 88 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvkns.d create mode 100644 gas/testsuite/gas/riscv/zvkns.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index b61c73569d3..790585ccdd9 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1209,6 +1209,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zvkg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvknha", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvknhb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvkns", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2370,6 +2371,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, case INSN_CLASS_ZVKNHA_OR_ZVKNHB: return (riscv_subset_supports (rps, "zvknha") || riscv_subset_supports (rps, "zvknhb")); + case INSN_CLASS_ZVKNS: + return riscv_subset_supports (rps, "zvkns"); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2536,6 +2539,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("zvknha"); case INSN_CLASS_ZVKNHB: return _("zvknhb"); + case INSN_CLASS_ZVKNS: + return _("zvkns"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/testsuite/gas/riscv/zvkns.d b/gas/testsuite/gas/riscv/zvkns.d new file mode 100644 index 00000000000..3d4687c2140 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkns.d @@ -0,0 +1,21 @@ +#as: -march=rv64gc_zvkns +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+a280a277[ ]+vaesdf.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a680a277[ ]+vaesdf.vs[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a2802277[ ]+vaesdm.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a6802277[ ]+vaesdm.vs[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a281a277[ ]+vaesef.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a681a277[ ]+vaesef.vs[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a2812277[ ]+vaesem.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a6812277[ ]+vaesem.vs[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+8a812277[ ]+vaeskf1.vi[ ]+v4,v8,2 +[ ]+[0-9a-f]+:[ ]+8a872277[ ]+vaeskf1.vi[ ]+v4,v8,14 +[ ]+[0-9a-f]+:[ ]+aa812277[ ]+vaeskf2.vi[ ]+v4,v8,2 +[ ]+[0-9a-f]+:[ ]+aa872277[ ]+vaeskf2.vi[ ]+v4,v8,14 +[ ]+[0-9a-f]+:[ ]+a683a277[ ]+vaesz.vs[ ]+v4,v8 diff --git a/gas/testsuite/gas/riscv/zvkns.s b/gas/testsuite/gas/riscv/zvkns.s new file mode 100644 index 00000000000..f0f3811eaec --- /dev/null +++ b/gas/testsuite/gas/riscv/zvkns.s @@ -0,0 +1,13 @@ + vaesdf.vv v4, v8 + vaesdf.vs v4, v8 + vaesdm.vv v4, v8 + vaesdm.vs v4, v8 + vaesef.vv v4, v8 + vaesef.vs v4, v8 + vaesem.vv v4, v8 + vaesem.vs v4, v8 + vaeskf1.vi v4, v8, 2 + vaeskf1.vi v4, v8, 14 + vaeskf2.vi v4, v8, 2 + vaeskf2.vi v4, v8, 14 + vaesz.vs v4, v8 diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index 29b45adb010..e04169b5343 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2094,6 +2094,29 @@ #define MASK_VSHA2CLVV 0xfe00707f #define MATCH_VSHA2MSVV 0xb6002077 #define MASK_VSHA2MSVV 0xfe00707f +/* Zvkns instructions. */ +#define MATCH_VAESDFVV 0xa200a077 +#define MASK_VAESDFVV 0xfe0ff07f +#define MATCH_VAESDFVS 0xa600a077 +#define MASK_VAESDFVS 0xfe0ff07f +#define MATCH_VAESDMVV 0xa2002077 +#define MASK_VAESDMVV 0xfe0ff07f +#define MATCH_VAESDMVS 0xa6002077 +#define MASK_VAESDMVS 0xfe0ff07f +#define MATCH_VAESEFVV 0xa201a077 +#define MASK_VAESEFVV 0xfe0ff07f +#define MATCH_VAESEFVS 0xa601a077 +#define MASK_VAESEFVS 0xfe0ff07f +#define MATCH_VAESEMVV 0xa2012077 +#define MASK_VAESEMVV 0xfe0ff07f +#define MATCH_VAESEMVS 0xa6012077 +#define MASK_VAESEMVS 0xfe0ff07f +#define MATCH_VAESKF1VI 0x8a002077 +#define MASK_VAESKF1VI 0xfe00707f +#define MATCH_VAESKF2VI 0xaa002077 +#define MASK_VAESKF2VI 0xfe00707f +#define MATCH_VAESZVS 0xa603a077 +#define MASK_VAESZVS 0xfe0ff07f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3178,6 +3201,18 @@ DECLARE_INSN(vghmacvv, MATCH_VGHMACVV, MASK_VGHMACVV) DECLARE_INSN(vsha2chvv, MATCH_VSHA2CHVV, MASK_VSHA2CHVV) DECLARE_INSN(vsha2clvv, MATCH_VSHA2CLVV, MASK_VSHA2CLVV) DECLARE_INSN(vsha2msvv, MATCH_VSHA2MSVV, MASK_VSHA2MSVV) +/* Zvkns instructions. */ +DECLARE_INSN(vaesdfvv, MATCH_VAESDFVV, MASK_VAESDFVV) +DECLARE_INSN(vaesdfvs, MATCH_VAESDFVS, MASK_VAESDFVS) +DECLARE_INSN(vaesdmvv, MATCH_VAESDMVV, MASK_VAESDMVV) +DECLARE_INSN(vaesdmvs, MATCH_VAESDMVS, MASK_VAESDMVS) +DECLARE_INSN(vaesefvv, MATCH_VAESEFVV, MASK_VAESEFVV) +DECLARE_INSN(vaesefvs, MATCH_VAESEFVS, MASK_VAESEFVS) +DECLARE_INSN(vaesemvv, MATCH_VAESEMVV, MASK_VAESEMVV) +DECLARE_INSN(vaesemvs, MATCH_VAESEMVS, MASK_VAESEMVS) +DECLARE_INSN(vaeskf1vi, MATCH_VAESKF1VI, MASK_VAESKF1VI) +DECLARE_INSN(vaeskf2vi, MATCH_VAESKF2VI, MASK_VAESKF2VI) +DECLARE_INSN(vaeszvs, MATCH_VAESZVS, MASK_VAESZVS) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index 55fefa40ae2..48db408f303 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -414,6 +414,7 @@ enum riscv_insn_class INSN_CLASS_ZVKNHA, INSN_CLASS_ZVKNHB, INSN_CLASS_ZVKNHA_OR_ZVKNHB, + INSN_CLASS_ZVKNS, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 8de7610573e..a7f79f8fe68 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1839,6 +1839,19 @@ const struct riscv_opcode riscv_opcodes[] = {"vsha2cl.vv", 0, INSN_CLASS_ZVKNHA_OR_ZVKNHB, "Vd,Vt,Vs", MATCH_VSHA2CLVV, MASK_VSHA2CLVV, match_opcode, 0}, {"vsha2ms.vv", 0, INSN_CLASS_ZVKNHA_OR_ZVKNHB, "Vd,Vt,Vs", MATCH_VSHA2MSVV, MASK_VSHA2MSVV, match_opcode, 0}, +/* Zvkns instructions. */ +{"vaesdf.vv", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESDFVV, MASK_VAESDFVV, match_opcode, 0}, +{"vaesdf.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESDFVS, MASK_VAESDFVV, match_opcode, 0}, +{"vaesdm.vv", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESDMVV, MASK_VAESDMVV, match_opcode, 0}, +{"vaesdm.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESDMVS, MASK_VAESDMVV, match_opcode, 0}, +{"vaesef.vv", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESEFVV, MASK_VAESEFVV, match_opcode, 0}, +{"vaesef.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESEFVS, MASK_VAESEFVV, match_opcode, 0}, +{"vaesem.vv", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESEMVV, MASK_VAESEMVV, match_opcode, 0}, +{"vaesem.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESEMVS, MASK_VAESEMVV, match_opcode, 0}, +{"vaeskf1.vi", 0, INSN_CLASS_ZVKNS, "Vd,Vt,Vj", MATCH_VAESKF1VI, MASK_VAESKF1VI, match_opcode, 0}, +{"vaeskf2.vi", 0, INSN_CLASS_ZVKNS, "Vd,Vt,Vj", MATCH_VAESKF2VI, MASK_VAESKF2VI, match_opcode, 0}, +{"vaesz.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESZVS, MASK_VAESZVS, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS }, From patchwork Fri Jan 20 19:55:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46610 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp396339wrn; Fri, 20 Jan 2023 11:56:49 -0800 (PST) X-Google-Smtp-Source: AMrXdXtsGc/5YzvH7x8RKg7Pbtnjqr2FZbo7tVB7wnUzmyDV7WC3H/JDl99fnjbDcWFClRoRV1nJ X-Received: by 2002:a05:6402:1748:b0:497:c96b:4ded with SMTP id v8-20020a056402174800b00497c96b4dedmr15820161edx.34.1674244609596; Fri, 20 Jan 2023 11:56:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244609; cv=none; d=google.com; s=arc-20160816; b=vg9Pfxa2DOrFkOaarXENf4Pt+qEjH0DUhmddhkZc3SDOifv3l86G9oJhtYq161C4TS uhldiZGQoyQCYkNvB31XZGNSAW7FJwQgSV9jJvCzrQ0lZGa4D3cXOOAxtzyIx7ihIbAv eVrIDdtxiu6RBV0IIa2BYyNQjdxKWvRSD7yEvA53St0fN7kmQc1M1Km3i7kn+ZQm1awC MR4MleK0UeKWlLwGkW/GKHS8Dy6pRT02ySbsVIwDfSi143X/jbduvEv/dLHrfoTwtwql lbPoOLRw61GyZs6Ux1Y7pniACuojPquJ7IMRYYLpKLR9P6pZSaqdUpMGMTHP0o6wROzw WnIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=vs3sQwuFKfm+ok5B/2mSjDbNvFYIzGTRZa60bhv7rPE=; b=yj73VKlw3ppEntQBZmFBbLPmU3q9cn2HKPYYEEt55xCuZkVciFaOvLbHQ+PtMLDn/u POAA8RWtF8Ddud3ySk27RIP2pTWaqeaDQhECfj9qPZlfNETH0gdXJqIKKU4Jf8UZt0sP EKX6aI9w1pTCjj3r4JEA2Uqy7OZgqL9kysTKU+0Skez6qc9gNCoMYMruzB1ajwMqQLEv H9i+thdDpMcsNrezJn7EcMMrKxyc/au/2HSTD3OJoE+f0FDeJ9xS90Z/y8d83vs0EF9P 9+7GHgiidFBFa9rcN1OThZHyPWysjuo9f3nrOf7VPhTcJNZJp8Fve3Ye+YfJkGuhkKf0 kivg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=NPoGwNRL; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id r15-20020a05640251cf00b0049e2f51f81asi16302899edd.621.2023.01.20.11.56.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:56:49 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=NPoGwNRL; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 09B3E383FB95 for ; Fri, 20 Jan 2023 19:56:07 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 3BC703858022 for ; Fri, 20 Jan 2023 19:55:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BC703858022 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x32c.google.com with SMTP id f25-20020a1c6a19000000b003da221fbf48so4484752wmc.1 for ; Fri, 20 Jan 2023 11:55:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vs3sQwuFKfm+ok5B/2mSjDbNvFYIzGTRZa60bhv7rPE=; b=NPoGwNRLdpOAqVNcNc+LnvwQxr2Fe03++xaNtLTsuKTtyeBFz/hwl7e6uTo4h7SCnz bLElSwQ4Iscohe8mPW7nPIMMD+2M9rn1jTx0Wvb4bPR0dd72noUgLMoYI9Y/xj2mrOVb jLv5SW3JvGLtnp3rym0hgvxKtiFRm5oCJZYLv5CdA9HILjm/a7KD8+UnyFbnP5mIpbuu hjC8kbAbYvOCB7mDOCBKe3wEM1yTpGi7C1mOoNaHwEmV2pYFhFr/mO5ucsAH6HOXayuA 5av0JEKWvmYwT7oZbUsiFNBUqLHubRw5Ojeewt5iX2a+WfmCmlbL+XTs/iM7vFYAdaMQ elkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vs3sQwuFKfm+ok5B/2mSjDbNvFYIzGTRZa60bhv7rPE=; b=65NcLQVmrup1fiHZym39cSaVEvjByZ+LJGuINjI62ZKmRcWCZJ7MSIxTARm3Y+5Db2 FEWahf+AY66JFc/9Wx3/AjzqtIgD8NTIlqNSdl0NsR+0Vaz5uE3TZsZ9MinO+C0EAfnJ ZxZK61/Eg3V/WNGlb3kOdmZaB2P43vfyxxMEwRwWJ1oTjSH/FUaT+9FknW6IvKm7XgBL iXkYnrdLSsG0Vpu8SRe/11z12nUNB9lO+0+eraGidTczbNjhouwDWdnQDlcbD+dMfnWc SF/758nThiGhHaN4QB+ehoqBd8UjJ5s0EkvLLidOlxutmU8Bz7HMc04tIzAmYPjc8puQ KBbg== X-Gm-Message-State: AFqh2koQnLNFXpOohsU2hs/EW9e9pvnCirXoOwimDEFMdGsdjL9uj6+g JKPQ027kK9gkZfKcxSWehl850gXLaBXBUQbL X-Received: by 2002:a05:600c:3b91:b0:3d3:5c9e:6b27 with SMTP id n17-20020a05600c3b9100b003d35c9e6b27mr11861659wms.12.1674244541627; Fri, 20 Jan 2023 11:55:41 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:41 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 5/6] RISC-V: Add Zvksed ISA extension support Date: Fri, 20 Jan 2023 20:55:31 +0100 Message-Id: <20230120195532.917113-6-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572715972523404?= X-GMAIL-MSGID: =?utf-8?q?1755572715972523404?= From: Christoph Müllner This commit adds the Zvksed ISA extension instructions, which are part of the vector crypto extensions. Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 5 +++++ gas/testsuite/gas/riscv/zvksed.d | 12 ++++++++++++ gas/testsuite/gas/riscv/zvksed.s | 4 ++++ include/opcode/riscv-opc.h | 11 +++++++++++ include/opcode/riscv.h | 1 + opcodes/riscv-opc.c | 5 +++++ 6 files changed, 38 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvksed.d create mode 100644 gas/testsuite/gas/riscv/zvksed.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 790585ccdd9..08f892ed987 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1210,6 +1210,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zvknha", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvknhb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkns", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvksed", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2373,6 +2374,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, || riscv_subset_supports (rps, "zvknhb")); case INSN_CLASS_ZVKNS: return riscv_subset_supports (rps, "zvkns"); + case INSN_CLASS_ZVKSED: + return riscv_subset_supports (rps, "zvksed"); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2541,6 +2544,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("zvknhb"); case INSN_CLASS_ZVKNS: return _("zvkns"); + case INSN_CLASS_ZVKSED: + return _("zvksed"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/testsuite/gas/riscv/zvksed.d b/gas/testsuite/gas/riscv/zvksed.d new file mode 100644 index 00000000000..48b4aafdbb1 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvksed.d @@ -0,0 +1,12 @@ +#as: -march=rv64gc_zvksed +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+86802277[ ]+vsm4k.vi[ ]+v4,v8,0 +[ ]+[0-9a-f]+:[ ]+8683a277[ ]+vsm4k.vi[ ]+v4,v8,7 +[ ]+[0-9a-f]+:[ ]+a2882277[ ]+vsm4r.vv[ ]+v4,v8 +[ ]+[0-9a-f]+:[ ]+a6882277[ ]+vsm4r.vs[ ]+v4,v8 diff --git a/gas/testsuite/gas/riscv/zvksed.s b/gas/testsuite/gas/riscv/zvksed.s new file mode 100644 index 00000000000..754b4646adf --- /dev/null +++ b/gas/testsuite/gas/riscv/zvksed.s @@ -0,0 +1,4 @@ + vsm4k.vi v4, v8, 0 + vsm4k.vi v4, v8, 7 + vsm4r.vv v4, v8 + vsm4r.vs v4, v8 diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index e04169b5343..0a1fd0b69e8 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2117,6 +2117,13 @@ #define MASK_VAESKF2VI 0xfe00707f #define MATCH_VAESZVS 0xa603a077 #define MASK_VAESZVS 0xfe0ff07f +/* Zvksed instructions. */ +#define MATCH_VSM4KVI 0x86002077 +#define MASK_VSM4KVI 0xfe00707f +#define MATCH_VSM4RVV 0xa2082077 +#define MASK_VSM4RVV 0xfe0ff07f +#define MATCH_VSM4RVS 0xa6082077 +#define MASK_VSM4RVS 0xfe0ff07f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3213,6 +3220,10 @@ DECLARE_INSN(vaesemvs, MATCH_VAESEMVS, MASK_VAESEMVS) DECLARE_INSN(vaeskf1vi, MATCH_VAESKF1VI, MASK_VAESKF1VI) DECLARE_INSN(vaeskf2vi, MATCH_VAESKF2VI, MASK_VAESKF2VI) DECLARE_INSN(vaeszvs, MATCH_VAESZVS, MASK_VAESZVS) +/* Zvksed instructions. */ +DECLARE_INSN(vsm4kvi, MATCH_VSM4KVI, MASK_VSM4KVI) +DECLARE_INSN(vsm4rvv, MATCH_VSM4RVV, MASK_VSM4RVV) +DECLARE_INSN(vsm4rvs, MATCH_VSM4RVS, MASK_VSM4RVS) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index 48db408f303..c2d70728749 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -415,6 +415,7 @@ enum riscv_insn_class INSN_CLASS_ZVKNHB, INSN_CLASS_ZVKNHA_OR_ZVKNHB, INSN_CLASS_ZVKNS, + INSN_CLASS_ZVKSED, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index a7f79f8fe68..1a4b3738744 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1852,6 +1852,11 @@ const struct riscv_opcode riscv_opcodes[] = {"vaeskf2.vi", 0, INSN_CLASS_ZVKNS, "Vd,Vt,Vj", MATCH_VAESKF2VI, MASK_VAESKF2VI, match_opcode, 0}, {"vaesz.vs", 0, INSN_CLASS_ZVKNS, "Vd,Vt", MATCH_VAESZVS, MASK_VAESZVS, match_opcode, 0}, +/* Zvksed instructions. */ +{"vsm4k.vi", 0, INSN_CLASS_ZVKSED, "Vd,Vt,Vj", MATCH_VSM4KVI, MASK_VSM4KVI, match_opcode, 0}, +{"vsm4r.vv", 0, INSN_CLASS_ZVKSED, "Vd,Vt", MATCH_VSM4RVV, MASK_VSM4RVV, match_opcode, 0}, +{"vsm4r.vs", 0, INSN_CLASS_ZVKSED, "Vd,Vt", MATCH_VSM4RVS, MASK_VSM4RVS, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS }, From patchwork Fri Jan 20 19:55:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 46613 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp397266wrn; Fri, 20 Jan 2023 11:59:40 -0800 (PST) X-Google-Smtp-Source: AMrXdXt51bzIQFW095/m35Hws5Wh4oPX8989U7xClE4nLHnx8c1DLBePeHbmBwqLSWMHz0b4bUUf X-Received: by 2002:a17:906:e2cd:b0:870:2aa7:6509 with SMTP id gr13-20020a170906e2cd00b008702aa76509mr16923093ejb.43.1674244780247; Fri, 20 Jan 2023 11:59:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674244780; cv=none; d=google.com; s=arc-20160816; b=hzCYYR5vacSPUza8sBWrmtgz9XQfB0Z04k+FSkP+gFcXZRoyyZ3CYf84HlLq5EdnHC sLH4OLdMvedBCC27IYHaXrSpM98ULpjpgTX0hPvhLIUPO9aQGyaYgQQAoX3TrjV0XzGA lhQRB2DwSaKXB4x83deast8eJ1q7xifG1hb5qm8xOoXE4bibOxqQqlMEIkgeRQQzkNeC 5n6I85poIGnJjmbFL9+R9kZGn7fV+Rql1EwdQHV4kYeaLxaVOJWHf0sm/0ub0Iay8MFm nQZksolnBaACOyeN9F1lhkbMbjtIrhcgTRR2dtUw5dg4Ll1Nwg2SvtxZkXAb76depgg1 q2Lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=KbWFc2ONNfYfF31B/9UpkaQzf1bQUdj7pLgmP4O9eGU=; b=EbG7jnB6gTjtzmFtq6H8Emng/VWMRVIdxUkEpJ5asbBEhLjZSr7p8ytHdAWietps9z /sO6S3lYyZN/Iro8foMuqauyE/GJVC7pOGrx9J1eAkJkIlpKLit5XmVpbO12vY/UsJ6r sSWreFQZWEsAqVwZIF+QyAgIkeI9ByZ1JuohQl8JttGZwhx/OkPbYyJwBLs8QVjo85II Etl9QoXAkMW0biOrQHwzyzf0hxWlgZOsg3V5YueviTWYxDjhNb9JFRIo1FBgRuCSjpGl Pm/jtWajKu849YpoxKvOSwtgOceaJsWKH3KBsOVVShV2gCayApmD8tJPej44vfCBxSFC o03A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b="BqIq/XNN"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id dp17-20020a170906c15100b00871119f4594si18464552ejc.304.2023.01.20.11.59.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:59:40 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b="BqIq/XNN"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0DA363854386 for ; Fri, 20 Jan 2023 19:56:50 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 6E4663858000 for ; Fri, 20 Jan 2023 19:55:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6E4663858000 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-wm1-x332.google.com with SMTP id o17-20020a05600c511100b003db021ef437so4470381wms.4 for ; Fri, 20 Jan 2023 11:55:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KbWFc2ONNfYfF31B/9UpkaQzf1bQUdj7pLgmP4O9eGU=; b=BqIq/XNNuy7PSxZB0IQrJo7rfn+hE6Mp/W5VcoG7mSJnqAZ3IKi3NJxyYnQnFHdG0o d3+RGLwTHNPZlA4kJ1OJvG9AN58qNlwxQPFlFojhOqreu2QCEbkyKZF45oRu5YU9Uwt+ y7qAsGFxVEZlxv4gDQYAZnmzlz+phLiRZa0qhjsaa9e2zN0H6QkIL6txVXNQTQrgvObB P+dXXxvbaV+UzLOKDq5Fx/lCw7pGWggu2c1FA8AsZP/ua/8aIkqbVi4nYKLl987Q7pho qeIq9UGVOcG3bS3vK8AkTpvnNuyVzuXqEu0dCSWNdGFHVEpOOOPWlcXoBlJ7TFBcpKI8 k0ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KbWFc2ONNfYfF31B/9UpkaQzf1bQUdj7pLgmP4O9eGU=; b=54eAJSvuVz742Gm/h/MOJBn/NfvBIhvy2q5cqMaIn4TWX0FlVHQxQEDYz9EQiFqgSo DX/RWF1rVjgnO1JTkyq01/tE+zINH3mM0spovZWnets67v5irVUNCR0Z22LQ8KwkLIr9 /1WG1VEqsDSkVGqu0PT1P2nv34tsXRdWEcPKaN87N+FPK6i/ENQmV4G5dQFDfAr8OP1J /RtkGmOh5ZdEWMXJehoGFFZF9j4J4Ih4WESuaP64Lf/TjbDE84807mbElY0dIjfdcvIi SjCS1Ptj9bwUNuSFd+aTF5knRe9hgi47eJldE4tgEx9PFY8zgAQLQ0RbDmHM+uaVSOQe /i8A== X-Gm-Message-State: AFqh2kpxauj9S3VaFM2E+QuQYL84UBrLpnZA2EFMoNNyn+T7U/r6s9Bu QMVo+QQxpnVNA8e/otCjJonMoPBBblS/3ffX X-Received: by 2002:a05:600c:4256:b0:3da:2a78:d7a3 with SMTP id r22-20020a05600c425600b003da2a78d7a3mr14826283wmm.33.1674244542917; Fri, 20 Jan 2023 11:55:42 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id m9-20020a7bca49000000b003c65c9a36dfsm3050553wml.48.2023.01.20.11.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jan 2023 11:55:42 -0800 (PST) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich , Elda Kuka , Aaron Durbin , Andrew de los Reyes , Eric Gouriou , Barna Ibrahim , Jeff Law Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [RFC PATCH v2 6/6] RISC-V: Add Zvksh ISA extension support Date: Fri, 20 Jan 2023 20:55:32 +0100 Message-Id: <20230120195532.917113-7-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120195532.917113-1-christoph.muellner@vrull.eu> References: <20230120195532.917113-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755572894953759254?= X-GMAIL-MSGID: =?utf-8?q?1755572894953759254?= From: Christoph Müllner This commit adds the Zvksh ISA extension instructions, which are part of the vector crypto extensions. Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 5 +++++ gas/testsuite/gas/riscv/zvksh.d | 11 +++++++++++ gas/testsuite/gas/riscv/zvksh.s | 3 +++ include/opcode/riscv-opc.h | 8 ++++++++ include/opcode/riscv.h | 1 + opcodes/riscv-opc.c | 4 ++++ 6 files changed, 32 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zvksh.d create mode 100644 gas/testsuite/gas/riscv/zvksh.s diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 08f892ed987..ac388bc1287 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1211,6 +1211,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zvknhb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvkns", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvksed", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zvksh", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl32b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl64b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zvl128b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2376,6 +2377,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "zvkns"); case INSN_CLASS_ZVKSED: return riscv_subset_supports (rps, "zvksed"); + case INSN_CLASS_ZVKSH: + return riscv_subset_supports (rps, "zvksh"); case INSN_CLASS_SVINVAL: return riscv_subset_supports (rps, "svinval"); case INSN_CLASS_H: @@ -2546,6 +2549,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _("zvkns"); case INSN_CLASS_ZVKSED: return _("zvksed"); + case INSN_CLASS_ZVKSH: + return _("zvksh"); case INSN_CLASS_SVINVAL: return "svinval"; case INSN_CLASS_H: diff --git a/gas/testsuite/gas/riscv/zvksh.d b/gas/testsuite/gas/riscv/zvksh.d new file mode 100644 index 00000000000..b24d126ed7b --- /dev/null +++ b/gas/testsuite/gas/riscv/zvksh.d @@ -0,0 +1,11 @@ +#as: -march=rv64gc_zvksh +#objdump: -dr + +.*:[ ]+file format .* + + +Disassembly of section .text: +0+000 <.text>: +[ ]+[0-9a-f]+:[ ]+ae802277[ ]+vsm3c.vi[ ]+v4,v8,0 +[ ]+[0-9a-f]+:[ ]+ae8fa277[ ]+vsm3c.vi[ ]+v4,v8,31 +[ ]+[0-9a-f]+:[ ]+82862277[ ]+vsm3me.vv[ ]+v4,v8,v12 diff --git a/gas/testsuite/gas/riscv/zvksh.s b/gas/testsuite/gas/riscv/zvksh.s new file mode 100644 index 00000000000..bde705c5e33 --- /dev/null +++ b/gas/testsuite/gas/riscv/zvksh.s @@ -0,0 +1,3 @@ + vsm3c.vi v4, v8, 0 + vsm3c.vi v4, v8, 31 + vsm3me.vv v4, v8, v12 diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index 0a1fd0b69e8..2ba138c00f4 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2124,6 +2124,11 @@ #define MASK_VSM4RVV 0xfe0ff07f #define MATCH_VSM4RVS 0xa6082077 #define MASK_VSM4RVS 0xfe0ff07f +/* Zvksh instructions. */ +#define MATCH_VSM3CVI 0xae002077 +#define MASK_VSM3CVI 0xfe00707f +#define MATCH_VSM3MEVV 0x82002077 +#define MASK_VSM3MEVV 0xfe00707f /* Svinval instruction. */ #define MATCH_SINVAL_VMA 0x16000073 #define MASK_SINVAL_VMA 0xfe007fff @@ -3224,6 +3229,9 @@ DECLARE_INSN(vaeszvs, MATCH_VAESZVS, MASK_VAESZVS) DECLARE_INSN(vsm4kvi, MATCH_VSM4KVI, MASK_VSM4KVI) DECLARE_INSN(vsm4rvv, MATCH_VSM4RVV, MASK_VSM4RVV) DECLARE_INSN(vsm4rvs, MATCH_VSM4RVS, MASK_VSM4RVS) +/* Zvksh instructions. */ +DECLARE_INSN(vsm3cvi, MATCH_VSM3CVI, MASK_VSM3CVI) +DECLARE_INSN(vsm3mevv, MATCH_VSM3MEVV, MASK_VSM3MEVV) /* Vendor-specific (T-Head) XTheadBa instructions. */ DECLARE_INSN(th_addsl, MATCH_TH_ADDSL, MASK_TH_ADDSL) /* Vendor-specific (T-Head) XTheadBb instructions. */ diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index c2d70728749..52a7dc63e11 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -416,6 +416,7 @@ enum riscv_insn_class INSN_CLASS_ZVKNHA_OR_ZVKNHB, INSN_CLASS_ZVKNS, INSN_CLASS_ZVKSED, + INSN_CLASS_ZVKSH, INSN_CLASS_SVINVAL, INSN_CLASS_ZICBOM, INSN_CLASS_ZICBOP, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 1a4b3738744..ed26232c90a 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -1857,6 +1857,10 @@ const struct riscv_opcode riscv_opcodes[] = {"vsm4r.vv", 0, INSN_CLASS_ZVKSED, "Vd,Vt", MATCH_VSM4RVV, MASK_VSM4RVV, match_opcode, 0}, {"vsm4r.vs", 0, INSN_CLASS_ZVKSED, "Vd,Vt", MATCH_VSM4RVS, MASK_VSM4RVS, match_opcode, 0}, +/* Zvksh instructions. */ +{"vsm3c.vi", 0, INSN_CLASS_ZVKSH, "Vd,Vt,Vj", MATCH_VSM3CVI, MASK_VSM3CVI, match_opcode, 0}, +{"vsm3me.vv", 0, INSN_CLASS_ZVKSH, "Vd,Vt,Vs", MATCH_VSM3MEVV, MASK_VSM3MEVV, match_opcode, 0}, + /* Supervisor instructions. */ {"csrr", 0, INSN_CLASS_ZICSR, "d,E", MATCH_CSRRS, MASK_CSRRS|MASK_RS1, match_opcode, INSN_ALIAS }, {"csrw", 0, INSN_CLASS_ZICSR, "E,s", MATCH_CSRRW, MASK_CSRRW|MASK_RD, match_opcode, INSN_ALIAS },