From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315292; cv=none; d=zohomail.com; s=zohoarc; b=k8JHO9elDK9AbT2AZutMxUMv3L3aaYYu0L4NAusulRV28HQ/e2MtmenTJ6mK7DyXAcG9EsH/OUlRR9PMhwTwmu2TTk909HD4spoQ/chKWniYhcGcYeP68oABjcjkOK28icZ4JwCBl9t1EoSPzzWMdTJHndNWmjr4+TT5s4eupqU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315292; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CPPVWOn9FFFAX/5uoowVC89T9mkv6F2/lyFHUHqzSYE=; b=PBT7FOWvi5wSGF3YOSD5DRATpDnbdaOiyCJYxUEsE+cn1uQiepdnFb3G92KevpO8yO/9TMr07hEHJD5i+HmETxpGTRwzm0r5n7hz6ADRIKs6H0mcbaTv10uLXKepivOZMwiKppgpPxx67JTmk5rw+EchNUSjq6HtuOatEcxxsoE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315292157537.1967639919519; Sun, 9 Aug 2026 15:41:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7V-0000eA-F3; Sun, 09 Aug 2026 18:35:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7T-0000d8-G6 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:51 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7R-0007GA-9t for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:51 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ceaf8a1265so19850315ad.2 for ; Sun, 09 Aug 2026 15:35:48 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314948; x=1786919748; darn=nongnu.org; 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:content-type; bh=CPPVWOn9FFFAX/5uoowVC89T9mkv6F2/lyFHUHqzSYE=; b=o7KPsRsZhI8zMcRKiortqf9NKV5WP04e+4JFmQr0CTDQXkRru/urgrZEG8XVZl5Imo 5zDCtknjJaYnP2vZLEB6Qrh4PR5rf8aWsKttG/HHIGHGV1fNFRxyTZdf1GjXvS/Qzufu pOvdS4JoyNanE/mwKAAieCjs0uBTue1pBLWe5U4ioPnvpbPvYnt/lGpp8NeE4lr+JcA3 pbjXimNEjOliaZG79L9bEbfE6Q7GxWmRwQeT3Cu/U9reBX8RamW9FxEHW2yUQDUWkT32 dZDh2Fi7rCVhABzG+Ub/nx+yUfyb2qyYQediw43pvTzu9WrQe9MXNwzVJGFDo56Xpda7 TIQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314948; x=1786919748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=CPPVWOn9FFFAX/5uoowVC89T9mkv6F2/lyFHUHqzSYE=; b=MI7QRuAI+fIeFPVFOJoTRMN4yh7fhFOUi/T/nUXJAFulM5K3oB6IPfBMWsMa6VKNLr WMulP/X1jaxVQaD0ostJF0eOK5jYq3IyIs49YYVLMjmUpq/Ub1Tg05Baht+EhZDjTeZs z6kH0aO0S25OYx4eaNSqwg46dvIfFPkTwvJdENj6zis4JUBqpcSnUB/c/xqhUxOkR0yT sPpyoZEYVSxTYNSf9wNRJn4VhvtdCWhZOBDcuyxo/fbGzIS1xxLQryrgXIqv3g8MzoP5 fg5hzRXPky7la4PhMCKdLwV8k+NJJrtibX38odsd1qCK0Oi3NKmDzPXQRPk0Bd9BxOIe j7YQ== X-Gm-Message-State: AOJu0Yzxq2zlMXVS1GoM5K1g3KBz1fAaFjzmj5zi7vlospnEWsvqQrh6 kYp/WpAkZicKPkovlxmaQYLU3e8h1Xqt6UufsRLJRMSZz9qFVhAi+vTdKLCpCLadbBt7MejiH6E UVjTE X-Gm-Gg: AR+sD12YAViHthnfp3UaDv3GRGaeUgR2Iu3KAXjYKrxPQWzF2v4W8iJXHyryl3OZiGW mdQb5l55zU336q/ajA32dCIBvzjLTNbjsuk6DuB4DwLjGXSqH0MN6LmNAj+NKBb0eUPLM0XGRT6 ar4XrXtfWZ7iaENx1Db6FY/PW/WN2S6vWbEHqmkXD/aLeKayX3v/YDk3Cwx77JDFSvnK4rKN/IW WiFXlpVe8EilrX6y+NYVrcT7B5Wk32Lo88d2mb5+nLRrb68DbqpmJIqnHUzaAUxxH7tYM3HyCZW aQ5QwPIbHEmlcgTxkM1/VNPykwsSiyZ7EZnQsVZy64bGC16SCsxZG5JeopGdhELxlo6wLZCTDxh JR86erTg+4ogxfRMODheaMNBjPwHSbn4GNUpDY+OrmoLTTU9KxrRzcvCDT8diGyUbYt2BBnvhu7 gmjRMnPZGP9QHqStydywMqoALSzHX7XrHIy2D5kFOwOT8Piy5Ix9xTTZptpapiqbzinXIo8spF+ QOaQgDDrt5qIqi5m//P/0TC5nGhe8o= X-Received: by 2002:a05:6a20:d48f:b0:3bf:d487:4b42 with SMTP id adf61e73a8af0-3cb86027257mr47336051637.35.1786314947826; Sun, 09 Aug 2026 15:35:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, TANG Tiancheng , LIU Zhiwei , Daniel Henrique Barboza Subject: [PATCH 01/56] disas/riscv: Fix th.srri decoding Date: Sun, 9 Aug 2026 15:34:50 -0700 Message-ID: <20260809223545.730664-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315294220158501 Content-Type: text/plain; charset="utf-8" From: TANG Tiancheng target/riscv/xthead.decode defines th.srri as funct6=3D000100 in bits 31:26, with the 6-bit immediate in bits 25:20. decode_xtheadbb() switches on bits 31:25, i.e. funct6 plus imm[5]. Therefore valid th.srri encodings are 0001000 and 0001001. The current 0000100 and 0000101 cases use the wrong funct6 value and decode valid th.srri instructions as illegal. Fix the cases to match funct6=3D000100 with both imm[5] values. Fixes: 318df7238b9f ("disas/riscv: Add support for XThead* instructions") Signed-off-by: TANG Tiancheng Reviewed-by: LIU Zhiwei Reviewed-by: Daniel Henrique Barboza Message-Id: <20260703-b4-disas-xthead-fix-riscv-next-v4-1-84c566330bc7@linu= x.alibaba.com> Reviewed-by: Alistair Francis --- disas/riscv-xthead.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index fcca326d1c..2f2ddb8dd9 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -315,8 +315,10 @@ void decode_xtheadbb(rv_decode *dec, rv_isa isa) op =3D rv_op_th_revw; } break; - case 0b0000100: - case 0b0000101: op =3D rv_op_th_srri; break; + case 0b0001000: + case 0b0001001: + op =3D rv_op_th_srri; + break; } break; case 2: op =3D rv_op_th_ext; break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315000; cv=none; d=zohomail.com; s=zohoarc; b=jSmEPxdIvGpDEWao5uvgLqdfPaZVY7PSFI/iNyKA8FQTs/fbnaxk8Q1CHvRcfERPHmgxxuq2ZoKHLTKQsioz+ZqMMps38UBesRqdA7WjL6OFpPu1OERYLAshU3ZMSqYObPAxZaQrKRe6XPB/AQPzAdpKD5pjt6qylfP3cVk+mnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315000; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+47W1dMYD4zx8+XNZWBhMOb1gbJPKHgkxxVD63BRs5o=; b=GMnZoXJQpbe6DCiq6xqPB8yFn7R5d2lR8Wf+jMLHUzxVqdWZp4Lf0IZwGVPNjZzWoE0ke1K+wEM3N+0sju7VsomJHV4JuI9bNzgreJ1GJtZP/Dzi9GHl2vu3D61/I52qMCc+4iGS/kMpUcQywnNbANZGicmPLUKwQQBDMGBGyjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786314999973492.16462105964365; Sun, 9 Aug 2026 15:36:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7X-0000fe-C7; Sun, 09 Aug 2026 18:35:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7U-0000e0-LX for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:52 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7S-0007GN-Kn for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:52 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-cbb8b54fcf8so872000a12.0 for ; Sun, 09 Aug 2026 15:35:50 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314949; x=1786919749; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=+47W1dMYD4zx8+XNZWBhMOb1gbJPKHgkxxVD63BRs5o=; b=fkALENKKNGDgvym3w6UxOleaazz3KgwAykMI8oWQyN0H/XdMV+eE3NXKb/6N2Djtt+ vvNguf+qd7He9Pc1JVnMF4j/CjsE0IETOJA9zbDI+M21Pcxytz1mAHBskobj/+aK1z/g WkcpmVicE/EVeXujKPtTKFD9eoXzUyy27F7M0ukqnAqt5aq/o3JbP8imdcO87e7heUnO +w7YyWh2VyF8YFZtajaafeZDpiCCsBC43CX4iijyyZeNZnUTORBrHwje33kDAWzPvT/l 9InMTytAj2E3+3t69EqnJ3t9IIWq9XMFAdGMw2O6TinICSthrgK6GwgOh9K7nfbtpkMT ctYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314949; x=1786919749; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+47W1dMYD4zx8+XNZWBhMOb1gbJPKHgkxxVD63BRs5o=; b=WYojP2iJlNE+Q+ruWkHpEMzGpayV2b7+G7PnDu8YFA9CcVJT379zUJrTsechFJ32g8 +iqZmU5O4HIzMIFWrLcxobj5vPmGdK9f2EXCj2B3GmNWVuLN3Ys0CNdRq2cWG9W9oQNe 9DcSRg/2wl7ttNW7jJ6g4sDdjJYuRNGhVR9prs6qid/E2DfcMB5vSQq/6sAghI+P0CsM BYtW5WktJTV0+iaJS8SUKwfyrK04J8Hp3Slxg+hQjbpWACb20hk8xHqbgLpD5W0Qy1PU bNMkIphVI5VknviAmKXuDPd9O2mNeUEU45Q/FvIeHsgb2yoZkHcTRL2f3J0ihjcAgzcI Tidw== X-Gm-Message-State: AOJu0YwuufQ82k1AVXfRGZK3wNJ5fkw44ndAE9/SOld5WGiXZ+fz5toh fJ1kZ6ra0DWvyFsA3BjzVYqMWdpOfZJEhwIYSDT7qIsLvL4jH5jdfNnRrhTs+981Ge/ZdHzwQRQ EaL8Y X-Gm-Gg: AR+sD12TVbD4Qm0xkPXp8WlMROfACLQzxS4kb8Nzr54zx3qeVrMCrYwD/ahUTwb1fhb iJ+Y1X++fWxHA9yU/ee89oL8Zk/9fk5ETZUygZGrTRBXEbZlyQyD4G48paY+9iK1LYtgNfr5hrv 5pKIV7klXvEkxSwlp8bDsy+MQr4YNIZN5TFyi1WfuUrHbBWYm4WKBkHxoe7kYbaYFghTVRu4Ajz EDNBnhc6k2AuowoMibHr2yzlcK0DLMRIWij0TJaRV4yrs+ScJeyqcxiU4CNdLMJG7aTdNsvZtfm NaAgUcWzOXYKgoWWvS4iobuBteVdVhkHLs9KVd5d+/gpCUCk9I/Dw/hBFgycwBotsJD9paHvglY fwu0d+fDEgbHxQPzXreaqXfUR9UN6lBS7ILhbmV9EelzrHoV0Qew8EI5rNxdo/8iXqygLIFWS6C gfPFY+CGwM/XYyAd3+5qndGaRjRpJR52bmk9MrkV2QHN2jCbIWRbCICZCYtzD0wyYBuQeiB+CgB nZRiPi7vUR2BPr4O6jI X-Received: by 2002:a05:6a20:3d1a:b0:3c3:719d:dfe2 with SMTP id adf61e73a8af0-3cb85f4e179mr42084703637.36.1786314949015; Sun, 09 Aug 2026 15:35:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, TANG Tiancheng , =?UTF-8?q?Alex=20Benn=C3=A9e?= , LIU Zhiwei , Daniel Henrique Barboza Subject: [PATCH 02/56] disas/riscv: Fix 6-bit immediate extraction Date: Sun, 9 Aug 2026 15:34:51 -0700 Message-ID: <20260809223545.730664-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315001563158500 From: TANG Tiancheng rv_codec_r2_imm6 is used for XThead instructions whose 6-bit immediate field is encoded in bits 25:20. The old expression left-shifted by 38 and then right-shifted by 60, so it kept only bits 25:22. Use extract32() to decode bits 25:20 directly. This fixes the immediate printed for th.srri and th.tst. Fixes: 318df7238b9f ("disas/riscv: Add support for XThead* instructions") Suggested-by: Alex Benn=C3=A9e Signed-off-by: TANG Tiancheng Reviewed-by: LIU Zhiwei Reviewed-by: Daniel Henrique Barboza Message-Id: <20260703-b4-disas-xthead-fix-riscv-next-v4-2-84c566330bc7@linu= x.alibaba.com> Reviewed-by: Alistair Francis --- disas/riscv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disas/riscv.c b/disas/riscv.c index 7f1b262773..fdf75a12ef 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -4546,7 +4546,7 @@ static uint32_t operand_zcmp_rlist(rv_inst inst) =20 static uint32_t operand_imm6(rv_inst inst) { - return (inst << 38) >> 60; + return extract32(inst, 20, 6); } =20 static uint32_t operand_imm2(rv_inst inst) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786314986; cv=none; d=zohomail.com; s=zohoarc; b=n7WMB2g+XBWmfwOgCLByTFKENrpkREcUh7zNgz1KNYfEE1mgBEleFyn2mEbxgcA0pwndVw9ahWZ9iuSPeG7oru4l2geRmahiUX3Aa+JP18Rp1hc1P31wwHsWowC9tiBhO3XdrB4i0Cf7RbJDBd4NkBIT6xgU8Y09KcMFaToX8gg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786314986; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N8nB778mxKXBFIQx5c1AJr7lK8xWaRtXPXn1L5JIuWU=; b=Kt1O0XkgL7BEwqKu9WMJ+5Ijwlmj1q9Jq0q18ZQ+gLa0tGQwMmukeLwGUy45eatr8QRJ25xVfeX0QI95xs8xh5xFKoUz/bZsUnDATFXYuR4eRudSFf69fpNMm4altHBFyUgJuCijK4L9ZeJ2rqerlqXQIV2hHGUpp3zLptBG1+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786314986607339.83043917103646; Sun, 9 Aug 2026 15:36:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7X-0000fy-Tq; Sun, 09 Aug 2026 18:35:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7V-0000eQ-Lf for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:53 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7T-0007Gl-U2 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:53 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-84a4d8fd6ecso1332895b3a.1 for ; Sun, 09 Aug 2026 15:35:51 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314950; x=1786919750; darn=nongnu.org; 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:content-type; bh=N8nB778mxKXBFIQx5c1AJr7lK8xWaRtXPXn1L5JIuWU=; b=N7WLcGXKDcgYSQaX1QZ5n7LSk4FD7DGzyhLQWPhuAVdxUBcWQ6bAGwDFSAQjSKkyPd c15eUbFGz7/WawCKHJsRYusflOAvV/Kqyb2ytupvIVAB5thl7Vhw9BVMGxDl2Vtj53tv HqMqM9NWGJEruci1p7dZzhqZ4+t2AfxDaor+cdspARo920G4BwT4qiQ+0OYzCIN8ZGVp 1iHzYc2oZDiUVyLSijxZ0cIrV946v/VsFgFCrf9VoaPHDZ0l/MGCKh5iL17ZgAgHuJlp 5cPTd+Phq/GYBjmAeJa8G77zEv4PkjqAzsdrhRppSqT2pKw4akxAzFeDsS6JBy0uEzQD Xcmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314950; x=1786919750; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=N8nB778mxKXBFIQx5c1AJr7lK8xWaRtXPXn1L5JIuWU=; b=jLeFPL5tFmltzrGts/a/U3Zxwqy/+S/Waf9O5Ufaoi0U0pbCTbSQ5IeHj/WPwmoYL7 Wpxkz2aAWscsQH8NJOT4ccq60YSNpEwtv/Daao8qGOSttELy/gcnji0Wy2GjQMapOp/0 s6QnNq7+Kl+nugsFeyIdA+WBSCuwH8lZbJ7U3zfw0kflBcPiX1oNwOVPLdPH3u4XSYGD RaVjtAKxO+COaVIVno/Qm1ExIaoCuZbAWvNrobV+Lxlpmgcrr8y8QBjH0NaJIcuGSN/g GycRzeNpECf3CMU6T6dL68J9Y4o1+JAkwg7bwxStSb6jQa8gT/oBNzlnb2FY0KaUnFNf cQQw== X-Gm-Message-State: AOJu0YzSnTPXJB11P2TYNxIqadhWSK5MipSZYWnpjNEjKkTd6Yzr5Qag x64+XWyHupqB3kzMtcJoDIfql7HljwtlcEZ4SaIuoCx2FUA+es68eOGXAh+4ef/0qsNInL+vJAe 4x2XF X-Gm-Gg: AR+sD113Hg7HJfLIpCtaZesS+BrDcPVN4Y4vyVxV4TwAwP2qEmYqFMK1hopqYKjYiaw nh15HbMENeocm52tZk3WCWgl+YhUfnvRnG/77D8iPmYkVq5NXT7rQQ/0m40hERe2kYT9bEcZ201 X1c6afaO48VSW7SqPvzrM4DPy8v9fy06W/A6Vzdc/aDdZuJWDzQZACbVFsICqEAiE9pJsSI6Den OgtUVHRpdrBwXmcKYYXAR+b/OCiRaxhq4M9jTfiWJh5150HkDaeTmDTM3g/5pCtVFRiew2X0Kx6 ubpbjMd5ztjjm0H1AqASB+bBL3UXP56C0NruMZJdYcfPWCprOKqOcSFWIk6/GhNv6HPMMN4tgWH sKnS1UmbcVPkiwxpcbTRVGPr2uGuMih+VuoaAO6ZomKHACQ/SsOHrlCCdicw9OBnworN+x6J9us cT1WOoiGBtCBEcYkw+6Bq7GNkEoV751TDmUU05j98CwyF6sQj2xjAWq2Kd2TM6rAWyC5QRv8yeX lV6oiP2j5tJ/n5gKCE/ X-Received: by 2002:a05:6a00:398b:b0:842:5da3:9b89 with SMTP id d2e1a72fcca58-84f697a6761mr15500918b3a.38.1786314950456; Sun, 09 Aug 2026 15:35:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, TANG Tiancheng , LIU Zhiwei Subject: [PATCH 03/56] disas/riscv: Use signed type for vector immediates Date: Sun, 9 Aug 2026 15:34:52 -0700 Message-ID: <20260809223545.730664-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786314990084158500 Content-Type: text/plain; charset="utf-8" From: TANG Tiancheng operand_vimm() sign-extends the 5-bit vector immediate field in bits 19:15, but returns uint32_t. This sends negative immediates through an unsigned type before they are assigned to rv_decode.imm. Return int32_t to match the signed value extracted by the helper. Signed-off-by: TANG Tiancheng Reviewed-by: LIU Zhiwei Message-Id: <20260703-b4-disas-xthead-fix-riscv-next-v4-3-84c566330bc7@linu= x.alibaba.com> Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disas/riscv.c b/disas/riscv.c index fdf75a12ef..967739bdbb 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -4487,7 +4487,7 @@ static uint32_t operand_cimmq(rv_inst inst) ((inst << 57) >> 62) << 6; } =20 -static uint32_t operand_vimm(rv_inst inst) +static int32_t operand_vimm(rv_inst inst) { return (int64_t)(inst << 44) >> 59; } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315010; cv=none; d=zohomail.com; s=zohoarc; b=Sw0bhva2zYnCXCxjHnEn9amHV0OTBvdslGcVzxhHnj9e0etJ6j8aK52DX2PM0DR38y4qtwDO+v1s+ZyOS4RBtRTX+i6j/Jmvmi+XmJwab9GFSwUuSV8ssYW3NxNgM/6VvCp6W/aghnpHZwBt4fDO/5T0yZQgTlaFwTp8pB6jS9w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315010; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t/Qxcz2btKv/Jlv8Q59q1Tcr9ftaoSWR1K6PGxnzQFs=; b=KowPEmPkcN5GajkVxqC2zyayqozEhplPA0CSy4NM7gPJQKxLmhZM1cao/86/UJS81h//xdu9/wmzH87kGEJz5+Ko7QdDt53Ya8f+Eux9l8Yp0kIBk40ulx68iFeK6IiPbuD0N4LZP+Yf59a+XabK3tmNb/uvEj01Q8+/jnGAtfA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315009891861.5790029270327; Sun, 9 Aug 2026 15:36:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7a-0000go-0p; Sun, 09 Aug 2026 18:35:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7Y-0000g0-Gd for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:56 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7V-0007HO-NU for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:56 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84f3ab8750cso1140136b3a.0 for ; Sun, 09 Aug 2026 15:35:53 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314952; x=1786919752; darn=nongnu.org; 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:content-type; bh=t/Qxcz2btKv/Jlv8Q59q1Tcr9ftaoSWR1K6PGxnzQFs=; b=FrpagPtZyPAmIYCzK3OsaQn9WgiPuSqrKNJ0lk5S3LmV0y+V6E5pKrupV84SAuV0xP ewTnK7V8N/T1STx7kPqHztIluVVthMR48Av1ZGs1NMlMQmnxGsHgnnNHl/3KEINFkVXz t4bK1+EiPtLmVGvG4JZ5CqvyCapiS34T1ubgNuVyW+c1eNUSJ8j0sPlmOkI6kwkTV7cQ d10zS3LjUzEzByXO97sOVw1vQfx8aRnSIexQrFCjdjElWr5SKpAjGPat8gCKWKv2EcpR gkkB1CIIqObPS1d4SR/XZxzxb/ug8/piJROJhMb7hLS8m6Onmo5kcX3FDARyaQENzavc vG5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314952; x=1786919752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=t/Qxcz2btKv/Jlv8Q59q1Tcr9ftaoSWR1K6PGxnzQFs=; b=Yv+UdS/bWR/Ip54J6KMRn3LZq4IDwIktzRQZuDXIIT5XcZHcOaHD/eZIHyoQBbWZjx BelIkWL/WWKovC3VPFAaeTQXheM02xGt8FXSmBE/iRr89m4k9bAHz6LHCPH9DGQbauaw kWSLGfphuwkleah88B6GQ1JgtGsU5b395WYJpjuflDvW8SgnngpokUO8U/9Vq6SXzD+V c4xPKo99KU9zyYaY1BdSMhp5P7gAlUjCAV7Bpd/9SCrKKmn7h7IqHdSAycEFa9TJV5bt hHYGPLJSsiwksFqAJZfCNtjqLhbAqXMkeSf6rMvrJa8xtNZunlOrfK1P1iIDHzqMqI+u wmSQ== X-Gm-Message-State: AOJu0Yx+WxZlUC77SF74UZUGyNUeJBZ3ZG1bsnRz5yOXcIgxhb6tuXYZ f0it0tjuK+sUkHVVvtT/l9TCXqm9/WKe9IQ/PGvzEF36d4Jv+FEkMns+IK+S7gbM+nvdGkRIH9o dJSiZ X-Gm-Gg: AR+sD11PU3MNlULl063b4SuJ7MlIczK8lyhZEi6EjXBZtrUTeDlSXftqgFhQdmazFIe DY+8nI6Q/ARIyozNANZSLBFEdDJ+nvcrPxwsfN0JNx7i1gvv68eF2crqXUQRKdUF7z95HJjqzy9 dpil9ebdWM59i9sx5EWLNSTeCKzhqEaz9guoCUHdJx6rChm4/GYjtGG2ayt8y45GsHO9fGyA/Oj Ixi9P94PVvE0UG5OcGFVppbQ4uSq0MI5ei21D7qMNPj9RW1mwEAWEeQLysExJ3v/C+9L6cMEMmI JFR9OkgEd4oTIHDJsdvHnx/e4BzBRlfsTMhD3OYQTgf5/5s4hWe3H5JDa84ZRMDep/2cBg05rwx isK8+4qxYSippOhK6q8j4bdX41PWMGSg8Sujs5tDqlLC1SMU14s9xJXK8hf6CZ/sd93zKUR8Lht JRvPAC1XrIgf0q7klCI9KjXQeFv0VkVYuIOXwspJD9b+eKbmeP7B8JxBQPcaPrGFy6f6bvtBk/+ LjDm/dGakBryL98fkAj X-Received: by 2002:a05:6a00:2d0b:b0:848:4d1a:9554 with SMTP id d2e1a72fcca58-84f2e0ed972mr39534878b3a.38.1786314951828; Sun, 09 Aug 2026 15:35:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, TANG Tiancheng , LIU Zhiwei Subject: [PATCH 04/56] disas/riscv: Decode unsigned vector immediates as unsigned Date: Sun, 9 Aug 2026 15:34:53 -0700 Message-ID: <20260809223545.730664-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315011293158500 Content-Type: text/plain; charset="utf-8" From: TANG Tiancheng rv_codec_v_i decodes all .vi operands with operand_vimm(), which sign-extends bits 19:15. That matches spec operands named imm, but not the .vi forms whose operand is uimm; uimm=3D31 is decoded as -1 and printed by the shared 6-bit 'u' formatter as 63. Add rv_codec_v_i_u/operand_vuimm() for the 5-bit uimm forms: vsll.vi, vsrl.vi, vsra.vi, vnsrl.wi, vnsra.wi, vssrl.vi, vssra.vi, vnclipu.wi, vnclip.wi, vslideup.vi, vslidedown.vi, vrgather.vi, vaeskf1.vi, vaeskf2.vi, vsm3c.vi, vsm4k.vi and vwsll.vi. The remaining rv_codec_v_i entries are the signed imm forms. Fixes: 07f4964d1785 ("disas/riscv.c: rvv: Add disas support for vector inst= ructions") Fixes: 9d92f56d4a44 ("disas/riscv: Add support for vector crypto extensions= ") Signed-off-by: TANG Tiancheng Reviewed-by: LIU Zhiwei Message-Id: <20260703-b4-disas-xthead-fix-riscv-next-v4-4-84c566330bc7@linu= x.alibaba.com> Reviewed-by: Alistair Francis --- disas/riscv.h | 1 + disas/riscv.c | 45 ++++++++++++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 379e642ec8..91ada8b531 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -149,6 +149,7 @@ typedef enum { rv_codec_v_r, rv_codec_v_ldst, rv_codec_v_i, + rv_codec_v_i_u, rv_codec_vsetvli, rv_codec_vsetivli, rv_codec_vror_vi, diff --git a/disas/riscv.c b/disas/riscv.c index 967739bdbb..82b962dc71 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1803,19 +1803,19 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, { "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsll.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnsrl.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnsra.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, { "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, @@ -1909,16 +1909,16 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, { "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssrl.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssra.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnclipu.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnclip.wi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, { "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, @@ -2048,15 +2048,15 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2, NULL, 0, 0, 0 }, { "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, 0, 0, 0 }, { "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vslideup.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 = }, { "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, { "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vslidedown.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 = }, + { "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, = 0 }, { "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 = }, { "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0= }, { "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vrgather.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 = }, { "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, { "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, @@ -2144,8 +2144,8 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaeskf1.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, - { "vaeskf2.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, + { "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, + { "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, { "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, @@ -2169,14 +2169,14 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, { "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, { "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsm3c.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, + { "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, { "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsm4k.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, + { "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, { "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, { "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, { "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsll.vi", rv_codec_v_i, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, + { "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, { "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, { "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, { "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, @@ -4492,6 +4492,11 @@ static int32_t operand_vimm(rv_inst inst) return (int64_t)(inst << 44) >> 59; } =20 +static uint32_t operand_vuimm(rv_inst inst) +{ + return extract32(inst, 15, 5); +} + static uint32_t operand_vzimm11(rv_inst inst) { return (inst << 33) >> 53; @@ -4895,6 +4900,12 @@ static void decode_inst_operands(rv_decode *dec, rv_= isa isa) dec->imm =3D operand_vimm(inst); dec->vm =3D operand_vm(inst); break; + case rv_codec_v_i_u: + dec->rd =3D operand_rd(inst); + dec->rs2 =3D operand_rs2(inst); + dec->imm =3D operand_vuimm(inst); + dec->vm =3D operand_vm(inst); + break; case rv_codec_vror_vi: dec->rd =3D operand_rd(inst); dec->rs2 =3D operand_rs2(inst); --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315312; cv=none; d=zohomail.com; s=zohoarc; b=kuLTBVTOjKm+OWips+xZnMsx2P3mnkknVjQtgwFfuNX59PTxssfIxy9Td7c4SY7vznCPnoMrEaICzejXJCT7feGzoUVjALuDVbkTBFmYpGUZx+97V68uckzi7WkzZ6fI3AmAW4T26PQgW+Qg66iHXWUHW0lEmEITbM4NERA2Zzw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315312; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0mC50S6yIIwsC5xKG82e1/tHDZvDIpdT0oKSFQ7hroc=; b=nkFiMiDBUA9GaCU0XK5a5PAbxKPEKKtDNXX7fye+FJq2Hh2S/jsjgxsAZbXEvaJWpIvuGUjSxAgoW8kRIH5fNRftEWZp7AeCx/MVI6DosY8D2gi2YfNz2DJUd5zNWLTW3xsjw2zYfHl05GeFdv+IXKklwElJ6hxeEDIMA0J0dyk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315312431679.6296981159996; Sun, 9 Aug 2026 15:41:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7b-0000hY-Nd; Sun, 09 Aug 2026 18:35:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7a-0000gr-8x for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:58 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7X-0007Hr-Lp for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:58 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8487214ad2bso1682057b3a.1 for ; Sun, 09 Aug 2026 15:35:55 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314954; x=1786919754; darn=nongnu.org; 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:content-type; bh=0mC50S6yIIwsC5xKG82e1/tHDZvDIpdT0oKSFQ7hroc=; b=YTZmIHPhMCayvOYwfhPqGdLUw/lQbYmoKhlu1KFmQj3Ew3Pm8Lay4jeeE0fQY3CtYC 08bEt+jmw3dyLR1qu8SoQSK3462slzT3PR5A6av2z1hlelEpDdhi8EXQ49Xh4hcH0jhk 4zONQxoBIgTZtZbq+7PtYHgqwzGjYejCDZeWVCRotlnoxIEWzLs7Vg0xfcBjLedGPrE0 8r0LMgMMurW29QNeVCJ6lZtjGII2LvmnnmbyWtQqfVUVv9uzcCnRAWMP2UCi7R6+WXba GFrSyhWGOY3l9sCLT1AcD/nCl02YeNQk+Y78BILGEiDJchOS+OpiwUwUXrzgMtl0HMd8 LpPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314954; x=1786919754; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0mC50S6yIIwsC5xKG82e1/tHDZvDIpdT0oKSFQ7hroc=; b=iHmNtVm4a8m7B129jpo/VUC70j3BDBX7euwCKKcf/LqB+R6apv/PXEzcQzVp3iMb9k g7AKs7jOOa9IqklB3ImsAJMBSzXDDkbEhNSagoFo/JycOvuta/Yuq8HVWU1Ib7GEaFzS PJelt9RACjQZ+3PYHnOVTbXHr1hQSnYMg8Op9HglVphdnk6hJmOhY5IkkBKwUoLDltq9 NHy98LefhcWMfK4afqjBRLOlXDmEh9IyMaPYbkFgujxltGY1imJlzAr9Vqo+r2s7qkPz tDDWQGJIonuaXJNMjhTjW98YJg5DmE5YPdssTPS0VaEUP8Ljb2arbulweP4UXlLNDE/R 8nxA== X-Gm-Message-State: AOJu0YxPjVjYWzni75HGWYixNpc9HGzaMlKjHM1dDSKTQok6zXJadTQL CQXm0ZsYJCcasU4D+i8skeR5qpTtkQws/xA3S09JCp/Fr0FcNJUsZ9ch1gea50hULiHbAAFSz3M xZZb8 X-Gm-Gg: AR+sD11J590d1BAF0hq5HBe3HiY8U5RZmrw5pAAuJLTwTWgWVo5Xi/k7wTXu753tUgX HaJDddW0VYfjWDv+9a03L44NcEDeUh+MyLFZQhkS71vC967toXBpwt1W6l1njkcv4j1FBbSTdAR oqveLb18RMCtGPvHi61EBewH4L2qWj4ePpCNT8tQPrKuYTJcZGmAoTqgjwuqPQu08MIUUod5o2i opnkxFukgESfMW+MJPrLMjwEQAKxREbZHQ2Tp6yMOBF6r1xtJFQZSGsoJxP0WAoi9xN/NvP9lIn 1PTpV7QHB27sEWcKC37VL4FulZ3dsSvi5milGeeJx6g1RayDLsFqv/gEHIN/cXXAxekTGPGrKQg w+D+aUPyZGz73gczbDw7Q2LEGYJ1rwd1SkjYp2zRBchdCv5ow01+C5EVfJ3fKUCj2s8fZ/yBJtm /5kxwIqk3ufBj8jelaouzTevERc4RtVWnoY93YSBquvG5t2y0Tsyl2ttw9XZdPeugGZWWOm6cN2 iBVP9cTP/1jZfc6adoD X-Received: by 2002:a05:6a00:1da0:b0:848:77b2:20a with SMTP id d2e1a72fcca58-84f5e1530d9mr22484714b3a.39.1786314953593; Sun, 09 Aug 2026 15:35:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, TANG Tiancheng , LIU Zhiwei Subject: [PATCH 05/56] disas/riscv: Use extract helpers for operand fields Date: Sun, 9 Aug 2026 15:34:54 -0700 Message-ID: <20260809223545.730664-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315314408158500 Content-Type: text/plain; charset="utf-8" From: TANG Tiancheng Replace shift-based operand extraction with extract32() and sextract32(). For signed immediates, use sextract32() on the field that carries the sign bit and combine it with the remaining extract32() fields. The RISC-V disassembler currently follows target/riscv/internals.h: insn_len() and decodes only 16-bit or 32-bit instruction lengths, so the converted fields are all in the low 32 bits of rv_inst. Suggested-by: Richard Henderson Signed-off-by: TANG Tiancheng Reviewed-by: LIU Zhiwei Message-Id: <20260703-b4-disas-xthead-fix-riscv-next-v4-5-84c566330bc7@linu= x.alibaba.com> Reviewed-by: Alistair Francis --- disas/riscv.c | 214 +++++++++++++++++++++++++------------------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 82b962dc71..2ba0a6a73a 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -4202,82 +4202,82 @@ static void decode_inst_opcode(rv_decode *dec, rv_i= sa isa) =20 static uint32_t operand_rd(rv_inst inst) { - return (inst << 52) >> 59; + return extract32(inst, 7, 5); } =20 static uint32_t operand_rs1(rv_inst inst) { - return (inst << 44) >> 59; + return extract32(inst, 15, 5); } =20 static uint32_t operand_rs2(rv_inst inst) { - return (inst << 39) >> 59; + return extract32(inst, 20, 5); } =20 static uint32_t operand_rs3(rv_inst inst) { - return (inst << 32) >> 59; + return extract32(inst, 27, 5); } =20 static uint32_t operand_aq(rv_inst inst) { - return (inst << 37) >> 63; + return extract32(inst, 26, 1); } =20 static uint32_t operand_rl(rv_inst inst) { - return (inst << 38) >> 63; + return extract32(inst, 25, 1); } =20 static uint32_t operand_pred(rv_inst inst) { - return (inst << 36) >> 60; + return extract32(inst, 24, 4); } =20 static uint32_t operand_succ(rv_inst inst) { - return (inst << 40) >> 60; + return extract32(inst, 20, 4); } =20 static uint32_t operand_rm(rv_inst inst) { - return (inst << 49) >> 61; + return extract32(inst, 12, 3); } =20 static uint32_t operand_shamt5(rv_inst inst) { - return (inst << 39) >> 59; + return extract32(inst, 20, 5); } =20 static uint32_t operand_shamt6(rv_inst inst) { - return (inst << 38) >> 58; + return extract32(inst, 20, 6); } =20 static uint32_t operand_shamt7(rv_inst inst) { - return (inst << 37) >> 57; + return extract32(inst, 20, 7); } =20 static uint32_t operand_crdq(rv_inst inst) { - return (inst << 59) >> 61; + return extract32(inst, 2, 3); } =20 static uint32_t operand_crs1q(rv_inst inst) { - return (inst << 54) >> 61; + return extract32(inst, 7, 3); } =20 static uint32_t operand_crs1rdq(rv_inst inst) { - return (inst << 54) >> 61; + return extract32(inst, 7, 3); } =20 static uint32_t operand_crs2q(rv_inst inst) { - return (inst << 59) >> 61; + return extract32(inst, 2, 3); } =20 static uint32_t calculate_xreg(uint32_t sreg) @@ -4287,80 +4287,80 @@ static uint32_t calculate_xreg(uint32_t sreg) =20 static uint32_t operand_sreg1(rv_inst inst) { - return calculate_xreg((inst << 54) >> 61); + return calculate_xreg(extract32(inst, 7, 3)); } =20 static uint32_t operand_sreg2(rv_inst inst) { - return calculate_xreg((inst << 59) >> 61); + return calculate_xreg(extract32(inst, 2, 3)); } =20 static uint32_t operand_crd(rv_inst inst) { - return (inst << 52) >> 59; + return extract32(inst, 7, 5); } =20 static uint32_t operand_crs1(rv_inst inst) { - return (inst << 52) >> 59; + return extract32(inst, 7, 5); } =20 static uint32_t operand_crs1rd(rv_inst inst) { - return (inst << 52) >> 59; + return extract32(inst, 7, 5); } =20 static uint32_t operand_crs2(rv_inst inst) { - return (inst << 57) >> 59; + return extract32(inst, 2, 5); } =20 static uint32_t operand_cimmsh5(rv_inst inst) { - return (inst << 57) >> 59; + return extract32(inst, 2, 5); } =20 static uint32_t operand_csr12(rv_inst inst) { - return (inst << 32) >> 52; + return extract32(inst, 20, 12); } =20 static int32_t operand_imm12(rv_inst inst) { - return ((int64_t)inst << 32) >> 52; + return sextract32(inst, 20, 12); } =20 static int32_t operand_imm20(rv_inst inst) { - return (((int64_t)inst << 32) >> 44) << 12; + return sextract32(inst, 12, 20) << 12; } =20 static int32_t operand_jimm20(rv_inst inst) { - return (((int64_t)inst << 32) >> 63) << 20 | - ((inst << 33) >> 54) << 1 | - ((inst << 43) >> 63) << 11 | - ((inst << 44) >> 56) << 12; + return sextract32(inst, 31, 1) << 20 | + extract32(inst, 21, 10) << 1 | + extract32(inst, 20, 1) << 11 | + extract32(inst, 12, 8) << 12; } =20 static int32_t operand_simm12(rv_inst inst) { - return (((int64_t)inst << 32) >> 57) << 5 | - (inst << 52) >> 59; + return sextract32(inst, 25, 7) << 5 | + extract32(inst, 7, 5); } =20 static int32_t operand_sbimm12(rv_inst inst) { - return (((int64_t)inst << 32) >> 63) << 12 | - ((inst << 33) >> 58) << 5 | - ((inst << 52) >> 60) << 1 | - ((inst << 56) >> 63) << 11; + return sextract32(inst, 31, 1) << 12 | + extract32(inst, 25, 6) << 5 | + extract32(inst, 8, 4) << 1 | + extract32(inst, 7, 1) << 11; } =20 static uint32_t operand_cimmshl6(rv_inst inst, rv_isa isa) { - int imm =3D ((inst << 51) >> 63) << 5 | - (inst << 57) >> 59; + int imm =3D extract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); if (isa =3D=3D rv128) { imm =3D imm ? imm : 64; } @@ -4369,8 +4369,8 @@ static uint32_t operand_cimmshl6(rv_inst inst, rv_isa= isa) =20 static uint32_t operand_cimmshr6(rv_inst inst, rv_isa isa) { - int imm =3D ((inst << 51) >> 63) << 5 | - (inst << 57) >> 59; + int imm =3D extract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); if (isa =3D=3D rv128) { imm =3D imm | (imm & 32) << 1; imm =3D imm ? imm : 64; @@ -4380,116 +4380,116 @@ static uint32_t operand_cimmshr6(rv_inst inst, rv= _isa isa) =20 static int32_t operand_cimmi(rv_inst inst) { - return (((int64_t)inst << 51) >> 63) << 5 | - (inst << 57) >> 59; + return sextract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); } =20 static int32_t operand_cimmui(rv_inst inst) { - return (((int64_t)inst << 51) >> 63) << 17 | - ((inst << 57) >> 59) << 12; + return sextract32(inst, 12, 1) << 17 | + extract32(inst, 2, 5) << 12; } =20 static uint32_t operand_cimmlwsp(rv_inst inst) { - return ((inst << 51) >> 63) << 5 | - ((inst << 57) >> 61) << 2 | - ((inst << 60) >> 62) << 6; + return extract32(inst, 12, 1) << 5 | + extract32(inst, 4, 3) << 2 | + extract32(inst, 2, 2) << 6; } =20 static uint32_t operand_cimmldsp(rv_inst inst) { - return ((inst << 51) >> 63) << 5 | - ((inst << 57) >> 62) << 3 | - ((inst << 59) >> 61) << 6; + return extract32(inst, 12, 1) << 5 | + extract32(inst, 5, 2) << 3 | + extract32(inst, 2, 3) << 6; } =20 static uint32_t operand_cimmlqsp(rv_inst inst) { - return ((inst << 51) >> 63) << 5 | - ((inst << 57) >> 63) << 4 | - ((inst << 58) >> 60) << 6; + return extract32(inst, 12, 1) << 5 | + extract32(inst, 6, 1) << 4 | + extract32(inst, 2, 4) << 6; } =20 static int32_t operand_cimm16sp(rv_inst inst) { - return (((int64_t)inst << 51) >> 63) << 9 | - ((inst << 57) >> 63) << 4 | - ((inst << 58) >> 63) << 6 | - ((inst << 59) >> 62) << 7 | - ((inst << 61) >> 63) << 5; + return sextract32(inst, 12, 1) << 9 | + extract32(inst, 6, 1) << 4 | + extract32(inst, 5, 1) << 6 | + extract32(inst, 3, 2) << 7 | + extract32(inst, 2, 1) << 5; } =20 static int32_t operand_cimmj(rv_inst inst) { - return (((int64_t)inst << 51) >> 63) << 11 | - ((inst << 52) >> 63) << 4 | - ((inst << 53) >> 62) << 8 | - ((inst << 55) >> 63) << 10 | - ((inst << 56) >> 63) << 6 | - ((inst << 57) >> 63) << 7 | - ((inst << 58) >> 61) << 1 | - ((inst << 61) >> 63) << 5; + return sextract32(inst, 12, 1) << 11 | + extract32(inst, 11, 1) << 4 | + extract32(inst, 9, 2) << 8 | + extract32(inst, 8, 1) << 10 | + extract32(inst, 7, 1) << 6 | + extract32(inst, 6, 1) << 7 | + extract32(inst, 3, 3) << 1 | + extract32(inst, 2, 1) << 5; } =20 static int32_t operand_cimmb(rv_inst inst) { - return (((int64_t)inst << 51) >> 63) << 8 | - ((inst << 52) >> 62) << 3 | - ((inst << 57) >> 62) << 6 | - ((inst << 59) >> 62) << 1 | - ((inst << 61) >> 63) << 5; + return sextract32(inst, 12, 1) << 8 | + extract32(inst, 10, 2) << 3 | + extract32(inst, 5, 2) << 6 | + extract32(inst, 3, 2) << 1 | + extract32(inst, 2, 1) << 5; } =20 static uint32_t operand_cimmswsp(rv_inst inst) { - return ((inst << 51) >> 60) << 2 | - ((inst << 55) >> 62) << 6; + return extract32(inst, 9, 4) << 2 | + extract32(inst, 7, 2) << 6; } =20 static uint32_t operand_cimmsdsp(rv_inst inst) { - return ((inst << 51) >> 61) << 3 | - ((inst << 54) >> 61) << 6; + return extract32(inst, 10, 3) << 3 | + extract32(inst, 7, 3) << 6; } =20 static uint32_t operand_cimmsqsp(rv_inst inst) { - return ((inst << 51) >> 62) << 4 | - ((inst << 53) >> 60) << 6; + return extract32(inst, 11, 2) << 4 | + extract32(inst, 7, 4) << 6; } =20 static uint32_t operand_cimm4spn(rv_inst inst) { - return ((inst << 51) >> 62) << 4 | - ((inst << 53) >> 60) << 6 | - ((inst << 57) >> 63) << 2 | - ((inst << 58) >> 63) << 3; + return extract32(inst, 11, 2) << 4 | + extract32(inst, 7, 4) << 6 | + extract32(inst, 6, 1) << 2 | + extract32(inst, 5, 1) << 3; } =20 static uint32_t operand_cimmw(rv_inst inst) { - return ((inst << 51) >> 61) << 3 | - ((inst << 57) >> 63) << 2 | - ((inst << 58) >> 63) << 6; + return extract32(inst, 10, 3) << 3 | + extract32(inst, 6, 1) << 2 | + extract32(inst, 5, 1) << 6; } =20 static uint32_t operand_cimmd(rv_inst inst) { - return ((inst << 51) >> 61) << 3 | - ((inst << 57) >> 62) << 6; + return extract32(inst, 10, 3) << 3 | + extract32(inst, 5, 2) << 6; } =20 static uint32_t operand_cimmq(rv_inst inst) { - return ((inst << 51) >> 62) << 4 | - ((inst << 53) >> 63) << 8 | - ((inst << 57) >> 62) << 6; + return extract32(inst, 11, 2) << 4 | + extract32(inst, 10, 1) << 8 | + extract32(inst, 5, 2) << 6; } =20 static int32_t operand_vimm(rv_inst inst) { - return (int64_t)(inst << 44) >> 59; + return sextract32(inst, 15, 5); } =20 static uint32_t operand_vuimm(rv_inst inst) @@ -4499,54 +4499,54 @@ static uint32_t operand_vuimm(rv_inst inst) =20 static uint32_t operand_vzimm11(rv_inst inst) { - return (inst << 33) >> 53; + return extract32(inst, 20, 11); } =20 static uint32_t operand_vzimm10(rv_inst inst) { - return (inst << 34) >> 54; + return extract32(inst, 20, 10); } =20 static uint32_t operand_vzimm6(rv_inst inst) { - return ((inst << 37) >> 63) << 5 | - ((inst << 44) >> 59); + return extract32(inst, 26, 1) << 5 | + extract32(inst, 15, 5); } =20 static uint32_t operand_bs(rv_inst inst) { - return (inst << 32) >> 62; + return extract32(inst, 30, 2); } =20 static uint32_t operand_rnum(rv_inst inst) { - return (inst << 40) >> 60; + return extract32(inst, 20, 4); } =20 static uint32_t operand_vm(rv_inst inst) { - return (inst << 38) >> 63; + return extract32(inst, 25, 1); } =20 static uint32_t operand_uimm_c_lb(rv_inst inst) { - return (((inst << 58) >> 63) << 1) | - ((inst << 57) >> 63); + return extract32(inst, 5, 1) << 1 | + extract32(inst, 6, 1); } =20 static uint32_t operand_uimm_c_lh(rv_inst inst) { - return (((inst << 58) >> 63) << 1); + return extract32(inst, 5, 1) << 1; } =20 static uint32_t operand_zcmp_spimm(rv_inst inst) { - return ((inst << 60) >> 62) << 4; + return extract32(inst, 2, 2) << 4; } =20 static uint32_t operand_zcmp_rlist(rv_inst inst) { - return ((inst << 56) >> 60); + return extract32(inst, 4, 4); } =20 static uint32_t operand_imm6(rv_inst inst) @@ -4556,17 +4556,17 @@ static uint32_t operand_imm6(rv_inst inst) =20 static uint32_t operand_imm2(rv_inst inst) { - return (inst << 37) >> 62; + return extract32(inst, 25, 2); } =20 static uint32_t operand_immh(rv_inst inst) { - return (inst << 32) >> 58; + return extract32(inst, 26, 6); } =20 static uint32_t operand_imml(rv_inst inst) { - return (inst << 38) >> 58; + return extract32(inst, 20, 6); } =20 static uint32_t calculate_stack_adj(rv_isa isa, uint32_t rlist, uint32_t s= pimm) @@ -4585,12 +4585,12 @@ static uint32_t operand_zcmp_stack_adj(rv_inst inst= , rv_isa isa) =20 static uint32_t operand_tbl_index(rv_inst inst) { - return ((inst << 54) >> 56); + return extract32(inst, 2, 8); } =20 static uint32_t operand_lpl(rv_inst inst) { - return inst >> 12; + return extract32(inst, 12, 20); } =20 /* decode operands */ --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315199; cv=none; d=zohomail.com; s=zohoarc; b=ILl4/bw7NGT3u6LHP2lQjGeYBrjZ3oxbSz7tFA3wFwrBHzHAKtPIcJ4t4Uhv0aClSac/F26uu2uKeGbjVoqqIZ4DOIszjXbJWBNvfO9ZWc1me5aQzuY9vPVLAm4B7IvEEKg4QqVbC/ULTglLAsBvbppwIzhAR28ykI53J654BwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315199; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fqB53fbpMvge/cZDT+9ONBIiuMNcRcnYnzh9EhoJ+Ks=; b=LyquS9BQ/DAQwwEsLcFnmzPkYJo1uWy9hqXWaQPjuG9oXOdP/LPUSLxceKqHUsvOQ+ihum/P0CXdCaGj8ZYoKbvFK2c23Pm179qXwFAK5ApCTu7ybj80ePSE4s13PFdX6C+5t9RiSk3TA3CiNYX3pftBc6rFC09TpwswhFNdI2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315199387294.42322788588444; Sun, 9 Aug 2026 15:39:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7c-0000iK-K8; Sun, 09 Aug 2026 18:36:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7b-0000hS-JI for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:59 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7Y-0007I4-ME for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:59 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-cb5a6aa8760so607847a12.1 for ; Sun, 09 Aug 2026 15:35:56 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314955; x=1786919755; darn=nongnu.org; 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:content-type; bh=fqB53fbpMvge/cZDT+9ONBIiuMNcRcnYnzh9EhoJ+Ks=; b=Ge3RhvRZZlhvcfiiqrY//7GO+Pu0YpyXL08MSffzI/XPrADEGCV5VGTkUlgeXF7VDb 6OFJWgzDbn5u14p04fKHV/wzYCJbxv1X86mDoABkis+Kpbgsru3HOI1ZnrqobTleZVKL 5ej0B8gO2rigq6OfDGqD9FriqJLevPw6dR+gwhoXvSBAqi3ljgWhA3t27HlahzG7D57p uQIrk1SbUmyFEY/tqRg9ptRucuztgQv9Pz+sg6TG6hyqTQZ7qsVQH/IRdLtcONHTw91u SpJD2OfhVr1XSOsIH0Koky5eKv80hv2WoGVNZ2+j5J1Mhovsk73cB/U1FLm0wXNM+y75 gMTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314955; x=1786919755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fqB53fbpMvge/cZDT+9ONBIiuMNcRcnYnzh9EhoJ+Ks=; b=X1t667TYEmmLYF3oRgujixqD5CPeexjiQ5tTKWHh4YbMgpv02XNv27tWV/oQw3RgE1 DxvK8lsotM+igzp8KoQZiVIzne133dYIshSRybz+7LNCCGeD3OUyEkUYBbIO5ZyfSv6g 6FXIlAgn4lMeKkQ2PER8nn0gTDzWBGHPYzoQQlhUPYzJI0KNGcN8+2LT4If55f5Wi+mU fKWqwhk40e7JJm0s0CxKe4bSrmRvNCQIgDsAkSuGxY/9elX4M/XcMBY+4oaz9ho8fzD0 /DUoo4NCRcKc3MX03kZ8GiEqYueW2Hz7KPWY+s5TKJRbPLnU+iwZA+ddOaEO1y3+WOc/ qvGg== X-Gm-Message-State: AOJu0YxaD24xO5QirDaxYFghOv9F1frnIYu+Xf0i8U7c5M1ygSLdsHET IDnad5DyhE49MkazsZMcwYQbL2JXg61pYEQGa4zJQ1E+XxFTJ8Nexv7FFD4Bijf/BS9eeB5vQcJ yz0PH X-Gm-Gg: AR+sD122uuPI7vZOzpqnuITK6Fi5qI9sy4/RiuE1M6XE4ib4RdLFxZ4VwDLomprlPf0 NdONsTQJmKllkJikRUoHNvBdtRgKklfcDTjEVmHdzaC7dhKP/LoZRelyOuGLSV3NLBEpTO6gSAR avYFYESuNBTOhosn8qmYd3AHa6lO7dlQwda2IBxfveTg4w8BsCBW1Ow7UScmCd0QrqJvGSvbcgo tm7HnlNMXRJ4GePbLQYeqWlLisgFvTeEq4KlQwsGL5UeQMBT8GLEtbf7sTQeN8pPRzMFIHvrHYB AKj1b2o5oGjuqoLFESS3/3appGT5FFv9OqlGrjBysakL8IB6CbvbV6uK/BIrmCvXZGVHM2aYdVn oWs9ppMISRB2wElpouKDDybMmZbH9uWI8prIi13TT4fMekBwQoT0x5OW85Hse0FZb9mdANl1bPP 6ffwtgCRW8Ze4w83cUVr0RzTWBsWK9sYM/JjOkxWw2FX3I6tfeqRH7S1+eX3YhkraksjNB3TKvW g/yj1TfzIs+LopG6DYC X-Received: by 2002:a05:6a21:9f17:b0:3bf:7994:ddca with SMTP id adf61e73a8af0-3cbadcb1d0fmr29497751637.29.1786314955163; Sun, 09 Aug 2026 15:35:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 06/56] disas/riscv: Move operand extractors earlier in file Date: Sun, 9 Aug 2026 15:34:55 -0700 Message-ID: <20260809223545.730664-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315199949158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 790 +++++++++++++++++++++++++------------------------- 1 file changed, 395 insertions(+), 395 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 2ba0a6a73a..e3fbc26626 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1259,6 +1259,401 @@ static const rv_comp_data rvcp_fsgnjx_q[] =3D { { rv_op_illegal, NULL } }; =20 +/* operand extractors */ + +static uint32_t operand_rd(rv_inst inst) +{ + return extract32(inst, 7, 5); +} + +static uint32_t operand_rs1(rv_inst inst) +{ + return extract32(inst, 15, 5); +} + +static uint32_t operand_rs2(rv_inst inst) +{ + return extract32(inst, 20, 5); +} + +static uint32_t operand_rs3(rv_inst inst) +{ + return extract32(inst, 27, 5); +} + +static uint32_t operand_aq(rv_inst inst) +{ + return extract32(inst, 26, 1); +} + +static uint32_t operand_rl(rv_inst inst) +{ + return extract32(inst, 25, 1); +} + +static uint32_t operand_pred(rv_inst inst) +{ + return extract32(inst, 24, 4); +} + +static uint32_t operand_succ(rv_inst inst) +{ + return extract32(inst, 20, 4); +} + +static uint32_t operand_rm(rv_inst inst) +{ + return extract32(inst, 12, 3); +} + +static uint32_t operand_shamt5(rv_inst inst) +{ + return extract32(inst, 20, 5); +} + +static uint32_t operand_shamt6(rv_inst inst) +{ + return extract32(inst, 20, 6); +} + +static uint32_t operand_shamt7(rv_inst inst) +{ + return extract32(inst, 20, 7); +} + +static uint32_t operand_crdq(rv_inst inst) +{ + return extract32(inst, 2, 3); +} + +static uint32_t operand_crs1q(rv_inst inst) +{ + return extract32(inst, 7, 3); +} + +static uint32_t operand_crs1rdq(rv_inst inst) +{ + return extract32(inst, 7, 3); +} + +static uint32_t operand_crs2q(rv_inst inst) +{ + return extract32(inst, 2, 3); +} + +static uint32_t calculate_xreg(uint32_t sreg) +{ + return sreg < 2 ? sreg + 8 : sreg + 16; +} + +static uint32_t operand_sreg1(rv_inst inst) +{ + return calculate_xreg(extract32(inst, 7, 3)); +} + +static uint32_t operand_sreg2(rv_inst inst) +{ + return calculate_xreg(extract32(inst, 2, 3)); +} + +static uint32_t operand_crd(rv_inst inst) +{ + return extract32(inst, 7, 5); +} + +static uint32_t operand_crs1(rv_inst inst) +{ + return extract32(inst, 7, 5); +} + +static uint32_t operand_crs1rd(rv_inst inst) +{ + return extract32(inst, 7, 5); +} + +static uint32_t operand_crs2(rv_inst inst) +{ + return extract32(inst, 2, 5); +} + +static uint32_t operand_cimmsh5(rv_inst inst) +{ + return extract32(inst, 2, 5); +} + +static uint32_t operand_csr12(rv_inst inst) +{ + return extract32(inst, 20, 12); +} + +static int32_t operand_imm12(rv_inst inst) +{ + return sextract32(inst, 20, 12); +} + +static int32_t operand_imm20(rv_inst inst) +{ + return sextract32(inst, 12, 20) << 12; +} + +static int32_t operand_jimm20(rv_inst inst) +{ + return sextract32(inst, 31, 1) << 20 | + extract32(inst, 21, 10) << 1 | + extract32(inst, 20, 1) << 11 | + extract32(inst, 12, 8) << 12; +} + +static int32_t operand_simm12(rv_inst inst) +{ + return sextract32(inst, 25, 7) << 5 | + extract32(inst, 7, 5); +} + +static int32_t operand_sbimm12(rv_inst inst) +{ + return sextract32(inst, 31, 1) << 12 | + extract32(inst, 25, 6) << 5 | + extract32(inst, 8, 4) << 1 | + extract32(inst, 7, 1) << 11; +} + +static uint32_t operand_cimmshl6(rv_inst inst, rv_isa isa) +{ + int imm =3D extract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); + if (isa =3D=3D rv128) { + imm =3D imm ? imm : 64; + } + return imm; +} + +static uint32_t operand_cimmshr6(rv_inst inst, rv_isa isa) +{ + int imm =3D extract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); + if (isa =3D=3D rv128) { + imm =3D imm | (imm & 32) << 1; + imm =3D imm ? imm : 64; + } + return imm; +} + +static int32_t operand_cimmi(rv_inst inst) +{ + return sextract32(inst, 12, 1) << 5 | + extract32(inst, 2, 5); +} + +static int32_t operand_cimmui(rv_inst inst) +{ + return sextract32(inst, 12, 1) << 17 | + extract32(inst, 2, 5) << 12; +} + +static uint32_t operand_cimmlwsp(rv_inst inst) +{ + return extract32(inst, 12, 1) << 5 | + extract32(inst, 4, 3) << 2 | + extract32(inst, 2, 2) << 6; +} + +static uint32_t operand_cimmldsp(rv_inst inst) +{ + return extract32(inst, 12, 1) << 5 | + extract32(inst, 5, 2) << 3 | + extract32(inst, 2, 3) << 6; +} + +static uint32_t operand_cimmlqsp(rv_inst inst) +{ + return extract32(inst, 12, 1) << 5 | + extract32(inst, 6, 1) << 4 | + extract32(inst, 2, 4) << 6; +} + +static int32_t operand_cimm16sp(rv_inst inst) +{ + return sextract32(inst, 12, 1) << 9 | + extract32(inst, 6, 1) << 4 | + extract32(inst, 5, 1) << 6 | + extract32(inst, 3, 2) << 7 | + extract32(inst, 2, 1) << 5; +} + +static int32_t operand_cimmj(rv_inst inst) +{ + return sextract32(inst, 12, 1) << 11 | + extract32(inst, 11, 1) << 4 | + extract32(inst, 9, 2) << 8 | + extract32(inst, 8, 1) << 10 | + extract32(inst, 7, 1) << 6 | + extract32(inst, 6, 1) << 7 | + extract32(inst, 3, 3) << 1 | + extract32(inst, 2, 1) << 5; +} + +static int32_t operand_cimmb(rv_inst inst) +{ + return sextract32(inst, 12, 1) << 8 | + extract32(inst, 10, 2) << 3 | + extract32(inst, 5, 2) << 6 | + extract32(inst, 3, 2) << 1 | + extract32(inst, 2, 1) << 5; +} + +static uint32_t operand_cimmswsp(rv_inst inst) +{ + return extract32(inst, 9, 4) << 2 | + extract32(inst, 7, 2) << 6; +} + +static uint32_t operand_cimmsdsp(rv_inst inst) +{ + return extract32(inst, 10, 3) << 3 | + extract32(inst, 7, 3) << 6; +} + +static uint32_t operand_cimmsqsp(rv_inst inst) +{ + return extract32(inst, 11, 2) << 4 | + extract32(inst, 7, 4) << 6; +} + +static uint32_t operand_cimm4spn(rv_inst inst) +{ + return extract32(inst, 11, 2) << 4 | + extract32(inst, 7, 4) << 6 | + extract32(inst, 6, 1) << 2 | + extract32(inst, 5, 1) << 3; +} + +static uint32_t operand_cimmw(rv_inst inst) +{ + return extract32(inst, 10, 3) << 3 | + extract32(inst, 6, 1) << 2 | + extract32(inst, 5, 1) << 6; +} + +static uint32_t operand_cimmd(rv_inst inst) +{ + return extract32(inst, 10, 3) << 3 | + extract32(inst, 5, 2) << 6; +} + +static uint32_t operand_cimmq(rv_inst inst) +{ + return extract32(inst, 11, 2) << 4 | + extract32(inst, 10, 1) << 8 | + extract32(inst, 5, 2) << 6; +} + +static int32_t operand_vimm(rv_inst inst) +{ + return sextract32(inst, 15, 5); +} + +static uint32_t operand_vuimm(rv_inst inst) +{ + return extract32(inst, 15, 5); +} + +static uint32_t operand_vzimm11(rv_inst inst) +{ + return extract32(inst, 20, 11); +} + +static uint32_t operand_vzimm10(rv_inst inst) +{ + return extract32(inst, 20, 10); +} + +static uint32_t operand_vzimm6(rv_inst inst) +{ + return extract32(inst, 26, 1) << 5 | + extract32(inst, 15, 5); +} + +static uint32_t operand_bs(rv_inst inst) +{ + return extract32(inst, 30, 2); +} + +static uint32_t operand_rnum(rv_inst inst) +{ + return extract32(inst, 20, 4); +} + +static uint32_t operand_vm(rv_inst inst) +{ + return extract32(inst, 25, 1); +} + +static uint32_t operand_uimm_c_lb(rv_inst inst) +{ + return extract32(inst, 5, 1) << 1 | + extract32(inst, 6, 1); +} + +static uint32_t operand_uimm_c_lh(rv_inst inst) +{ + return extract32(inst, 5, 1) << 1; +} + +static uint32_t operand_zcmp_spimm(rv_inst inst) +{ + return extract32(inst, 2, 2) << 4; +} + +static uint32_t operand_zcmp_rlist(rv_inst inst) +{ + return extract32(inst, 4, 4); +} + +static uint32_t operand_imm6(rv_inst inst) +{ + return extract32(inst, 20, 6); +} + +static uint32_t operand_imm2(rv_inst inst) +{ + return extract32(inst, 25, 2); +} + +static uint32_t operand_immh(rv_inst inst) +{ + return extract32(inst, 26, 6); +} + +static uint32_t operand_imml(rv_inst inst) +{ + return extract32(inst, 20, 6); +} + +static uint32_t calculate_stack_adj(rv_isa isa, uint32_t rlist, uint32_t s= pimm) +{ + int xlen_bytes_log2 =3D isa =3D=3D rv64 ? 3 : 2; + int regs =3D rlist =3D=3D 15 ? 13 : rlist - 3; + uint32_t stack_adj_base =3D ROUND_UP(regs << xlen_bytes_log2, 16); + return stack_adj_base + spimm; +} + +static uint32_t operand_zcmp_stack_adj(rv_inst inst, rv_isa isa) +{ + return calculate_stack_adj(isa, operand_zcmp_rlist(inst), + operand_zcmp_spimm(inst)); +} + +static uint32_t operand_tbl_index(rv_inst inst) +{ + return extract32(inst, 2, 8); +} + +static uint32_t operand_lpl(rv_inst inst) +{ + return extract32(inst, 12, 20); +} + /* instruction metadata */ =20 const rv_opcode_data rvi_opcode_data[] =3D { @@ -4198,401 +4593,6 @@ static void decode_inst_opcode(rv_decode *dec, rv_i= sa isa) dec->op =3D op; } =20 -/* operand extractors */ - -static uint32_t operand_rd(rv_inst inst) -{ - return extract32(inst, 7, 5); -} - -static uint32_t operand_rs1(rv_inst inst) -{ - return extract32(inst, 15, 5); -} - -static uint32_t operand_rs2(rv_inst inst) -{ - return extract32(inst, 20, 5); -} - -static uint32_t operand_rs3(rv_inst inst) -{ - return extract32(inst, 27, 5); -} - -static uint32_t operand_aq(rv_inst inst) -{ - return extract32(inst, 26, 1); -} - -static uint32_t operand_rl(rv_inst inst) -{ - return extract32(inst, 25, 1); -} - -static uint32_t operand_pred(rv_inst inst) -{ - return extract32(inst, 24, 4); -} - -static uint32_t operand_succ(rv_inst inst) -{ - return extract32(inst, 20, 4); -} - -static uint32_t operand_rm(rv_inst inst) -{ - return extract32(inst, 12, 3); -} - -static uint32_t operand_shamt5(rv_inst inst) -{ - return extract32(inst, 20, 5); -} - -static uint32_t operand_shamt6(rv_inst inst) -{ - return extract32(inst, 20, 6); -} - -static uint32_t operand_shamt7(rv_inst inst) -{ - return extract32(inst, 20, 7); -} - -static uint32_t operand_crdq(rv_inst inst) -{ - return extract32(inst, 2, 3); -} - -static uint32_t operand_crs1q(rv_inst inst) -{ - return extract32(inst, 7, 3); -} - -static uint32_t operand_crs1rdq(rv_inst inst) -{ - return extract32(inst, 7, 3); -} - -static uint32_t operand_crs2q(rv_inst inst) -{ - return extract32(inst, 2, 3); -} - -static uint32_t calculate_xreg(uint32_t sreg) -{ - return sreg < 2 ? sreg + 8 : sreg + 16; -} - -static uint32_t operand_sreg1(rv_inst inst) -{ - return calculate_xreg(extract32(inst, 7, 3)); -} - -static uint32_t operand_sreg2(rv_inst inst) -{ - return calculate_xreg(extract32(inst, 2, 3)); -} - -static uint32_t operand_crd(rv_inst inst) -{ - return extract32(inst, 7, 5); -} - -static uint32_t operand_crs1(rv_inst inst) -{ - return extract32(inst, 7, 5); -} - -static uint32_t operand_crs1rd(rv_inst inst) -{ - return extract32(inst, 7, 5); -} - -static uint32_t operand_crs2(rv_inst inst) -{ - return extract32(inst, 2, 5); -} - -static uint32_t operand_cimmsh5(rv_inst inst) -{ - return extract32(inst, 2, 5); -} - -static uint32_t operand_csr12(rv_inst inst) -{ - return extract32(inst, 20, 12); -} - -static int32_t operand_imm12(rv_inst inst) -{ - return sextract32(inst, 20, 12); -} - -static int32_t operand_imm20(rv_inst inst) -{ - return sextract32(inst, 12, 20) << 12; -} - -static int32_t operand_jimm20(rv_inst inst) -{ - return sextract32(inst, 31, 1) << 20 | - extract32(inst, 21, 10) << 1 | - extract32(inst, 20, 1) << 11 | - extract32(inst, 12, 8) << 12; -} - -static int32_t operand_simm12(rv_inst inst) -{ - return sextract32(inst, 25, 7) << 5 | - extract32(inst, 7, 5); -} - -static int32_t operand_sbimm12(rv_inst inst) -{ - return sextract32(inst, 31, 1) << 12 | - extract32(inst, 25, 6) << 5 | - extract32(inst, 8, 4) << 1 | - extract32(inst, 7, 1) << 11; -} - -static uint32_t operand_cimmshl6(rv_inst inst, rv_isa isa) -{ - int imm =3D extract32(inst, 12, 1) << 5 | - extract32(inst, 2, 5); - if (isa =3D=3D rv128) { - imm =3D imm ? imm : 64; - } - return imm; -} - -static uint32_t operand_cimmshr6(rv_inst inst, rv_isa isa) -{ - int imm =3D extract32(inst, 12, 1) << 5 | - extract32(inst, 2, 5); - if (isa =3D=3D rv128) { - imm =3D imm | (imm & 32) << 1; - imm =3D imm ? imm : 64; - } - return imm; -} - -static int32_t operand_cimmi(rv_inst inst) -{ - return sextract32(inst, 12, 1) << 5 | - extract32(inst, 2, 5); -} - -static int32_t operand_cimmui(rv_inst inst) -{ - return sextract32(inst, 12, 1) << 17 | - extract32(inst, 2, 5) << 12; -} - -static uint32_t operand_cimmlwsp(rv_inst inst) -{ - return extract32(inst, 12, 1) << 5 | - extract32(inst, 4, 3) << 2 | - extract32(inst, 2, 2) << 6; -} - -static uint32_t operand_cimmldsp(rv_inst inst) -{ - return extract32(inst, 12, 1) << 5 | - extract32(inst, 5, 2) << 3 | - extract32(inst, 2, 3) << 6; -} - -static uint32_t operand_cimmlqsp(rv_inst inst) -{ - return extract32(inst, 12, 1) << 5 | - extract32(inst, 6, 1) << 4 | - extract32(inst, 2, 4) << 6; -} - -static int32_t operand_cimm16sp(rv_inst inst) -{ - return sextract32(inst, 12, 1) << 9 | - extract32(inst, 6, 1) << 4 | - extract32(inst, 5, 1) << 6 | - extract32(inst, 3, 2) << 7 | - extract32(inst, 2, 1) << 5; -} - -static int32_t operand_cimmj(rv_inst inst) -{ - return sextract32(inst, 12, 1) << 11 | - extract32(inst, 11, 1) << 4 | - extract32(inst, 9, 2) << 8 | - extract32(inst, 8, 1) << 10 | - extract32(inst, 7, 1) << 6 | - extract32(inst, 6, 1) << 7 | - extract32(inst, 3, 3) << 1 | - extract32(inst, 2, 1) << 5; -} - -static int32_t operand_cimmb(rv_inst inst) -{ - return sextract32(inst, 12, 1) << 8 | - extract32(inst, 10, 2) << 3 | - extract32(inst, 5, 2) << 6 | - extract32(inst, 3, 2) << 1 | - extract32(inst, 2, 1) << 5; -} - -static uint32_t operand_cimmswsp(rv_inst inst) -{ - return extract32(inst, 9, 4) << 2 | - extract32(inst, 7, 2) << 6; -} - -static uint32_t operand_cimmsdsp(rv_inst inst) -{ - return extract32(inst, 10, 3) << 3 | - extract32(inst, 7, 3) << 6; -} - -static uint32_t operand_cimmsqsp(rv_inst inst) -{ - return extract32(inst, 11, 2) << 4 | - extract32(inst, 7, 4) << 6; -} - -static uint32_t operand_cimm4spn(rv_inst inst) -{ - return extract32(inst, 11, 2) << 4 | - extract32(inst, 7, 4) << 6 | - extract32(inst, 6, 1) << 2 | - extract32(inst, 5, 1) << 3; -} - -static uint32_t operand_cimmw(rv_inst inst) -{ - return extract32(inst, 10, 3) << 3 | - extract32(inst, 6, 1) << 2 | - extract32(inst, 5, 1) << 6; -} - -static uint32_t operand_cimmd(rv_inst inst) -{ - return extract32(inst, 10, 3) << 3 | - extract32(inst, 5, 2) << 6; -} - -static uint32_t operand_cimmq(rv_inst inst) -{ - return extract32(inst, 11, 2) << 4 | - extract32(inst, 10, 1) << 8 | - extract32(inst, 5, 2) << 6; -} - -static int32_t operand_vimm(rv_inst inst) -{ - return sextract32(inst, 15, 5); -} - -static uint32_t operand_vuimm(rv_inst inst) -{ - return extract32(inst, 15, 5); -} - -static uint32_t operand_vzimm11(rv_inst inst) -{ - return extract32(inst, 20, 11); -} - -static uint32_t operand_vzimm10(rv_inst inst) -{ - return extract32(inst, 20, 10); -} - -static uint32_t operand_vzimm6(rv_inst inst) -{ - return extract32(inst, 26, 1) << 5 | - extract32(inst, 15, 5); -} - -static uint32_t operand_bs(rv_inst inst) -{ - return extract32(inst, 30, 2); -} - -static uint32_t operand_rnum(rv_inst inst) -{ - return extract32(inst, 20, 4); -} - -static uint32_t operand_vm(rv_inst inst) -{ - return extract32(inst, 25, 1); -} - -static uint32_t operand_uimm_c_lb(rv_inst inst) -{ - return extract32(inst, 5, 1) << 1 | - extract32(inst, 6, 1); -} - -static uint32_t operand_uimm_c_lh(rv_inst inst) -{ - return extract32(inst, 5, 1) << 1; -} - -static uint32_t operand_zcmp_spimm(rv_inst inst) -{ - return extract32(inst, 2, 2) << 4; -} - -static uint32_t operand_zcmp_rlist(rv_inst inst) -{ - return extract32(inst, 4, 4); -} - -static uint32_t operand_imm6(rv_inst inst) -{ - return extract32(inst, 20, 6); -} - -static uint32_t operand_imm2(rv_inst inst) -{ - return extract32(inst, 25, 2); -} - -static uint32_t operand_immh(rv_inst inst) -{ - return extract32(inst, 26, 6); -} - -static uint32_t operand_imml(rv_inst inst) -{ - return extract32(inst, 20, 6); -} - -static uint32_t calculate_stack_adj(rv_isa isa, uint32_t rlist, uint32_t s= pimm) -{ - int xlen_bytes_log2 =3D isa =3D=3D rv64 ? 3 : 2; - int regs =3D rlist =3D=3D 15 ? 13 : rlist - 3; - uint32_t stack_adj_base =3D ROUND_UP(regs << xlen_bytes_log2, 16); - return stack_adj_base + spimm; -} - -static uint32_t operand_zcmp_stack_adj(rv_inst inst, rv_isa isa) -{ - return calculate_stack_adj(isa, operand_zcmp_rlist(inst), - operand_zcmp_spimm(inst)); -} - -static uint32_t operand_tbl_index(rv_inst inst) -{ - return extract32(inst, 2, 8); -} - -static uint32_t operand_lpl(rv_inst inst) -{ - return extract32(inst, 12, 20); -} - /* decode operands */ =20 static void decode_inst_operands(rv_decode *dec, rv_isa isa) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315360; cv=none; d=zohomail.com; s=zohoarc; b=JRhb0kXlWU3BQpSEEfFpWdBdkWMP3gcmyHASeE72ppiO8nozFDCmoiYRkpJH5A83NmHAkwqfXcB7xxh5uq0dRB6YmxdC1h7zEecIGVPNvEKrEZV/ADRX0sE3HzN7hWlJZZQKCwmAHEVfcHBNk1ALVCztjZPZozTZq+dfvUgkHxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315360; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AxawyJF+CxMbbSAkKOZ1E7lL9hppsqaxpuxPNg9KJhc=; b=b4Ww2MtNzuv8tPkurm7kP6eOSg7Rnsimp1KGReQJUFYOZ7CDBazEr1VW3QrllDhx3H5P16G9pWcQwZnW8c+i7hBU962H7Vwif/9Kg7DiPcSNfr8ydlSdHKtl7m0qQTh3gWY2qcAHriEMNPhsNME/DhDVrcNZJWgBvj3ka8y0dqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315360312618.6652999714563; Sun, 9 Aug 2026 15:42:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7e-0000jM-29; Sun, 09 Aug 2026 18:36:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7b-0000hN-FB for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:59 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7Z-0007IR-KL for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:35:59 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-cbb8b54fcf8so872049a12.0 for ; Sun, 09 Aug 2026 15:35:57 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314956; x=1786919756; darn=nongnu.org; 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:content-type; bh=AxawyJF+CxMbbSAkKOZ1E7lL9hppsqaxpuxPNg9KJhc=; b=KBlX4Yn3lhVbATv0LMArVnh7PyxytRQk1UEcnG9ykl+OENXxAXyA6LDVhYtNZOUSDV rMR0ciCmhTD4YguRA9WRXT8Xcpzg3EEhYeH3bY96HjeY8R1XaNA/V2XwfFg/L3MR97gP SfiFnMrql8fA+/8LgUURVtk15VsgNZF7SrLOCPsZbka71CFpeC1iJNyFofngZiAPvctA DLyP9RtDCXMhIpd1oZKB2uP2P9D2+JZAwl+e5X4rP7hrQuXVIjNykIWuNtXo3Ox50E4y ZDuBNGuXbvcw9Ru8atsUwRHv5HGXG5PhL75NQX5ynE3pf4K4hramu2NmEm8Wj5AQg5RU 31TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314956; x=1786919756; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=AxawyJF+CxMbbSAkKOZ1E7lL9hppsqaxpuxPNg9KJhc=; b=lqbHeabAr2UnkFaCwI2W0M9zh8RwVo/Li+N7fQIzsB15y9MTkpbJOX3lN+701Iqu88 ijmHHQBQPPtXmsycU0RmVKZvRc8NmqAsN0Vy55ZPuMxSRtf7kaDrcLrgj/QkV5E5RFE2 eUlhCX0sctrz51r3ectnrZbVIuxdb931rQraIT29R3H8s2yc6MnVW23PY1oMRnMxA3JU ZJzLAz/+yn1GOInMs/7F8QFqF1B61/lb+0bamUrsXC6gl/Fmj7eoO1hkNniX3HsL+BzX iX+Y3ALN8A4wcUsdG5LXZnILYQrC+cq68eFPCzKfflmIqmk4v2+nfndMzTPvTOVViXJo B6Sw== X-Gm-Message-State: AOJu0YzVPlB3wKxr2zZ9eAca/FcEGDpwCmfaOaNdlP/w8O8TTfNvdlK1 MamZE+MZWVyOPa05kAYhNwWobsn6lr0u5QcJ1nzxVmkRHlObFbd05t9A/mZJzKGRY+Jt/AWPNsh 8tfga X-Gm-Gg: AR+sD10H2sywSKn0TQCWHhNVXO+WRd9OXUWa7BMwf1pj0hWBuNYAbUul76JbA919PQH 0GS1LCaiP2cwQVJH4VLgQn5Jm3vB+z2xa+odTqpYsFFTx0FgztB0fyrgQD7lZAc3/9xSSkZFLyB L+h3dyYJOZIHi3bKKu6TsnLDLTfrOg1+/FmorF8kgFskOBhnkb4BMvU2RCT1LyM0Lt2A3HkvR0e XfYFuVxKVNzehDXj4T75gE8jPOBhpSf8QhGS3zg0knPw49koVIvvhPY7qfgYo8u3/gzYrSh7MZ/ YseO5xQf9z2jj2UAnxuZ+uToINQT60cT7zX+2ryKVGluA6Exnx47cAIeP747U3a+sAeRECj1TyC IN5NNRccwkVV0Ml0oblJA+xXmSqHXoi3DTjrcQF/9TeKmIrOoPHf2Kaj/xRG2HN27zQRMHhjDei Uq1gabzw1HXOoOHnu8P5+e2+SwNSZLWXs73oIrYwyrXDWQ9rWRNb+aiJk/OfLh/RciKqqenfD3F 7vGKofGfcJc2pUcTrRD X-Received: by 2002:a05:6a21:329d:b0:3a0:bc61:62e6 with SMTP id adf61e73a8af0-3cb85dec66bmr39506448637.8.1786314956275; Sun, 09 Aug 2026 15:35:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 07/56] disas/riscv: Reduce rv_insn to uint32_t Date: Sun, 9 Aug 2026 15:34:56 -0700 Message-ID: <20260809223545.730664-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315362416158500 Content-Type: text/plain; charset="utf-8" Since 758dce9c98a, the only possible values for instruction length are 2 and 4. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv.h | 2 +- disas/riscv.c | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 91ada8b531..eabe193b4f 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -11,7 +11,7 @@ =20 /* types */ =20 -typedef uint64_t rv_inst; +typedef uint32_t rv_inst; typedef uint16_t rv_opcode; =20 /* enums */ diff --git a/disas/riscv.c b/disas/riscv.c index e3fbc26626..012f90fce6 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5491,10 +5491,8 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc,= rv_inst inst, return format_inst(24, &dec); } =20 -#define INST_FMT_2 "%04" PRIx64 " " -#define INST_FMT_4 "%08" PRIx64 " " -#define INST_FMT_6 "%012" PRIx64 " " -#define INST_FMT_8 "%016" PRIx64 " " +#define INST_FMT_2 "%04x " +#define INST_FMT_4 "%08x " =20 static int print_insn_riscv(bfd_vma memaddr, struct disassemble_info *info, rv_isa is= a) @@ -5530,12 +5528,8 @@ print_insn_riscv(bfd_vma memaddr, struct disassemble= _info *info, rv_isa isa) case 4: (*info->fprintf_func)(info->stream, INST_FMT_4, inst); break; - case 6: - (*info->fprintf_func)(info->stream, INST_FMT_6, inst); - break; default: - (*info->fprintf_func)(info->stream, INST_FMT_8, inst); - break; + g_assert_not_reached(); } } =20 --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315543; cv=none; d=zohomail.com; s=zohoarc; b=PQWlLMqcesCVG1fL7l81Q8/efotSIrib/E4eCaLGJCwS8zO7C20N+Ew7aABb5us7Gboi1J7fIMEwCS3x1eACqRI8mBaslliys2umGRP8Cc5T+TyEUTy3oDgQgAxK3hrD+Lq43U/O+3RhO5swRSGQhyV07bts9RWegn25r51UCwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315543; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VukrFpkUNm4nthzSgzNlJ3ujYBfx48VnCBP4yqJMbWs=; b=Z9uqOfwkqz4tlEvernJa9S2g87aQCgr2+jfBnXoPTmO1ioY++MfAe7RUkQMOcHwSgHxzyjbqKkrCwjoO/mUyXPPVunuR9NvdQUVHU7pTdNuOKsaFU6pSZjHKLbFeWhJQmUewhP6t6LiPUjhME6/RVnFtuUvbiBW/fgS8Akf54YE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315543480333.6790495858414; Sun, 9 Aug 2026 15:45:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7h-0000m1-A6; Sun, 09 Aug 2026 18:36:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7c-0000iM-Ke for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:00 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7b-0007Ip-3V for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:00 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-ca97d139d5fso1042519a12.0 for ; Sun, 09 Aug 2026 15:35:58 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314958; x=1786919758; darn=nongnu.org; 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:content-type; bh=VukrFpkUNm4nthzSgzNlJ3ujYBfx48VnCBP4yqJMbWs=; b=LHvLMeq4ueUnTrcT4yo8HwxC8HkLHUT9VHeAl0WjTQruUFfKEaG+alZHccCxUZqBrQ mM0nyF0cUC+cBouio7n8VLbZB+w2kPB4b8zl/BDYPobhfLRPdeJLotwycse257rPheg4 Esp6cT/om37efUz+AZBJeNIHSeT3Vdz8xvAUDqC7hvHZd9ZGBJ0cEbsnvkT6mkXAA2wA bNsHdLkxtG/rEQZgbpxFrl4jt25XqKypQTuOtImDUHVWTjaoeyypmJnHL0TIH/2PuSCZ liqn3jpZQlTE9rwlKrlED8Ag1ECSVoq+joD86FkbDEGOvt52xkLv89/lU6tXaVgUBoZW cKeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314958; x=1786919758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VukrFpkUNm4nthzSgzNlJ3ujYBfx48VnCBP4yqJMbWs=; b=AQFl5RmbdvAX+v5h0/jsy1jX6NLEoSHPbD9w2cRKOoCOlGIQjKNwzxji9XqMUrCtK+ QJTPGXFhdby7m20+DxSsvVA3dDQr9k1gVmZoTxiBCfo/8tBs5kq6229j56TV7ZkWtM0c 9xgfvJmrLQ6cOlYhSXMLHhlYWlEG21DTplRUgKvJroLYkwX+LykDspcgRrYTNtZbwvjS Q+sqMbI9ytf7Zzf2DHKA55++5i+8T4Cv3E/fgAC3cf3llEqWD2/ORVOuJC6itrFNzPHw Jnc29EkEhkriQ7yI0E8D4ajpINrkUGi3loL9WNMSIzWz8HfDUE/MzN/2c26j2GLbb9Eg N5zA== X-Gm-Message-State: AOJu0YyeNH3/nw4B7GSxGO7YWac48tbLzb0Mhub4UZpeqOfjNs+/o67o MI5RLqZtdqttZyA5UJtOBYJ9B5AvK3CGCW2BBlVgaiUYRe682nh2JSPMlApwsXGBTo7Cp1Us6/G IItqu X-Gm-Gg: AR+sD10IV4zKWJdZ/JPeij6/L2CmTs2tBfLYK9Vzymni2PiB7T1EQnMly8BIspfLSOd 5U5YDOjripThHcSASPig+4e0J14qxE62CdCbGeCA0hPXCBJZhMgfyUMTitBkE1L17KwTMUC+XYm PwFqHbibqgWh6YVQDWUctaf8U0KkcYIaC6DAwRsOAVYmLNdgR7o57Q8spUUYu9qOCrUtFGAw0Kk 82oTDhfjjnzy+TctivZ2z6sl4ORa5tZ/TCL+SNjLP3iL1121zOehwn91HSd7+R3gclbO4Axollf +J+bCPd1ibr4G9o9crdJY5l8QuUa8eARTLrdA0fRD7LUykXxLSO8hqnH/eB9SxEVWnMv2c07KD6 Q8zSLkybLJVM0AeDWaNp1pojUS2guxI3MShJuJ8xG5ziExzKIhS22UlpNgbIfvgBrn8IigUOPAw VJPnW15Oe0bNyLyrygmpgFqoDCZ7T/aCWuM+Vg5l74RAnZ7kMj+5j8Rn45uHbEtS4dQ5Ohkt3mM iUKPcXLev0Grz0k6CL1 X-Received: by 2002:a05:6a00:4652:b0:848:51b3:f3c2 with SMTP id d2e1a72fcca58-84f2e0dd0a0mr39726423b3a.33.1786314957563; Sun, 09 Aug 2026 15:35:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 08/56] disas/riscv: Tidy dec initialization in disasm_inst Date: Sun, 9 Aug 2026 15:34:57 -0700 Message-ID: <20260809223545.730664-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315544987158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 012f90fce6..986dc6b752 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5441,10 +5441,11 @@ static void decode_inst_decompress(rv_decode *dec, = rv_isa isa) static GString *disasm_inst(rv_isa isa, uint64_t pc, rv_inst inst, const RISCVCPUConfig *cfg) { - rv_decode dec =3D { 0 }; - dec.pc =3D pc; - dec.inst =3D inst; - dec.cfg =3D cfg; + rv_decode dec =3D { + .pc =3D pc, + .inst =3D inst, + .cfg =3D cfg, + }; =20 static const struct { bool (*guard_func)(const RISCVCPUConfig *); --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315285; cv=none; d=zohomail.com; s=zohoarc; b=L7TTGqSPlnjuRLmKuhuq1RH1G5S6Bm8WV84DCeMbasswYrIYrLH05XCXnw9w3xIsfNoiTE15HhLvYN5xkQ+q4pUp2seCPFJcXaIxY0mZ/xTR5FSVx9rOeBZWN1HFajbycR2bNpf9rCcgJB2UvvcBfxmFOMmZwrF6olbF4xJVnVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315285; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HnLRGuMW42rvAMRt2MSYf/VtSYGI2TWo02Xgy50qrvY=; b=A5xW/5QX714ljvCdt+oxJw9LK9nXuXX8nuGMoYLFnJubFLOJxpqPT9INYJDzZYUEolhLzLkE85O+NTq0Ixr2yHuWe97KImeDqY3Bs5FWnVV56Ezag4T73Mg+V2LcuF8XGb9bimQif82WqPzHCCXgkOkUcj96qsMAV6XDjnatNfQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315285657244.37431363194685; Sun, 9 Aug 2026 15:41:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7f-0000kD-IN; Sun, 09 Aug 2026 18:36:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7e-0000jh-Ab for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:02 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7c-0007JM-Ob for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:02 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8486672f03cso1158324b3a.0 for ; Sun, 09 Aug 2026 15:36:00 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314959; x=1786919759; darn=nongnu.org; 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:content-type; bh=HnLRGuMW42rvAMRt2MSYf/VtSYGI2TWo02Xgy50qrvY=; b=YDOy3S0R2auLeuvEqbk2OOUVW2zB0U1lNI+yOrfpykAePLOULuEAhVvwpF7gaV9qps DsZyidAREN566i4iO4+7CxtdiXiR3Dz80TPX0lOlO6sxeAXX7buQDhxi+PUJXCptPu+i vc6cNxJGIAfBqgMgcVNbqz2iqJZH0gUzyEKvlAA1u3IA9jqSsLumIdvWwsXcM7bkFZ8Q M3PcG4H6bWyt3uUlUkikwRYX6Yl72BvJ5MSydLfKY72ZrgWBjw5RW2nfG35Z7s+h0Ybx 6+Isg+Zwz7ug+c4pLnig9HPoAJo8+o4G0RDBix0xseKWzqiUijXK1QR0ePQ3VrjdzDCZ xs/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314959; x=1786919759; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HnLRGuMW42rvAMRt2MSYf/VtSYGI2TWo02Xgy50qrvY=; b=NAdGH4D8nsnZSM2AtSy+t/Z4SKf3gJNrAcDM4IiOYB2ouvXv9IkiE/5dqfRvin+1kK YXeh+uKaqgrCau86KhAmL6sYnYqYMnThkWX9HqgcAB8AwY6MdgYCKUVV+95lPxgENDyt WATGbOXWlup4E0AVycItoSWc43mSS4VmK9smwglZZgyY+BWBSFJ9udhvOdJz1WLlvUDm IZOXJADEGX9NCeMLMA9HaC7C33HMIktYW5Y6Wg5oESl/HQvusy+QdfbLAC2Tu50z8F8b TN3WbFbeY01979vVpxRA6xiGBViZOz41ULr1/YL9rpCwrfvY9GYKI6l2xJeswN/Eu1Vh qiHg== X-Gm-Message-State: AOJu0YzMY/g9fwUC+/X3dVo0AISFNob4Q0s2pwJUdMeYyGtL1U+/4RN8 cN30VF6Z0QWts6gzryUiTVtiIPwwVadatHmV8dbMUnsPFkAYwdkpDAt2malTqHci//FzQSEY2V4 JGklc X-Gm-Gg: AR+sD12IjkbWDYjcBGSPxLnUJlira9dBlxDKQFU8S+UQPlALdtujOZpRg8DVCPDcz4T 0zpfUUNnuog7BNYAwZ7wz1r49XzmJXjrsk7I+QBgQEP0WdJZdU7XMzqsESaChU4aHoplNdO8r4y vQANolsoqso+qSC9j6QLUm8xKsr2fu9LTVR1QTcGs/OHxDCo0GKMUJBAsYuBr0a4EwxY0BwHg2i 4ya5QhHU39Ha2o+n87GsqVt/htt2aXfyZloxNp6PWqMVDz/OxWoAv05EYoicM/wVEcmQ+biJwqj JTnUHjnSCIjLAJ9drpYn/kg6iCUhXTkGFHwOFWRIWw3Edllqq/tPNjDpb/Y/6+eqAQxdVl52EYY 8USdDprXBK5EqXimLCbb5OhZdq3BeThYGNMH0Vi1f7BOC5M9DY6GS1d1mfoGdPSa9m5PbOm0oCQ 2xoW6x/tc4G1ZzCktO5eH4PTYUi2GRhWlsJpwJqSpCb4PY2EHOdQWtarSXlwQn0+i+TDbtp64fB kmIBjde2XLa7FBWy8eJ X-Received: by 2002:a05:6a00:8785:b0:84f:37c1:f887 with SMTP id d2e1a72fcca58-84f37c1fa4emr27054146b3a.12.1786314959056; Sun, 09 Aug 2026 15:35:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 09/56] disas/riscv: Pass rv_opcode_data pointer to decode_inst_operands Date: Sun, 9 Aug 2026 15:34:58 -0700 Message-ID: <20260809223545.730664-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315286095158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 986dc6b752..af43940732 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -4595,11 +4595,12 @@ static void decode_inst_opcode(rv_decode *dec, rv_i= sa isa) =20 /* decode operands */ =20 -static void decode_inst_operands(rv_decode *dec, rv_isa isa) +static void decode_inst_operands(rv_decode *dec, rv_isa isa, + const rv_opcode_data *op) { - const rv_opcode_data *opcode_data =3D dec->opcode_data; rv_inst inst =3D dec->inst; - dec->codec =3D opcode_data[dec->op].codec; + + dec->codec =3D op->codec; switch (dec->codec) { case rv_codec_none: dec->rd =3D dec->rs1 =3D dec->rs2 =3D rv_ireg_zero; @@ -5468,6 +5469,8 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, { has_xlrbr_p, rv_xlrbr_opcode_data, decode_xlrbr }, }; =20 + const rv_opcode_data *op; + for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { bool (*guard_func)(const RISCVCPUConfig *) =3D decoders[i].guard_f= unc; const rv_opcode_data *opcode_data =3D decoders[i].opcode_data; @@ -5486,7 +5489,8 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, dec.opcode_data =3D rvi_opcode_data; } =20 - decode_inst_operands(&dec, isa); + op =3D &dec.opcode_data[dec.op]; + decode_inst_operands(&dec, isa, op); decode_inst_decompress(&dec, isa); decode_inst_lift_pseudo(&dec); return format_inst(24, &dec); --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315432; cv=none; d=zohomail.com; s=zohoarc; b=CF5skLik6QL8GZsF4hgEohZb0AFMdD6var1g0fUngM3kjHP9tmg8Adp+z3L12PCWcoe68bIopzuGY4y4sLiKpgp1hW0epsCp1CetgZBTV0SRK3o/lK1ZIq6lOX3ZW/fnSNwt3g4AIH6+gog5/LsB1iY0e6dNrWfoPtqi893fYDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315432; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uxmlZCK7DL17d4NutzDtlfNr/qFd5kbUmapKHvQVXXc=; b=Pwjh1fLzqJo3h5jevn8gkAUMrdM/eBDatS6fvBHv+ItvwwaBJq160soHgaF4cX+ZS4v0SIcZ3nUzZ+4TgiD+VMK7yAUYjdqKcgb9JudJ1s+3+dcaEfv3u/r3DDXrq548Du9s+WQGNzrR50+cU3VjDUr20M24q/7yfhdiY/otRtg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315432187711.6061551468765; Sun, 9 Aug 2026 15:43:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7h-0000lp-1W; Sun, 09 Aug 2026 18:36:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7f-0000kA-CU for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:03 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7d-0007Jj-8F for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:03 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84e84a6c4bfso1099030b3a.1 for ; Sun, 09 Aug 2026 15:36:00 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:35:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314960; x=1786919760; darn=nongnu.org; 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:content-type; bh=uxmlZCK7DL17d4NutzDtlfNr/qFd5kbUmapKHvQVXXc=; b=WWcFLqra8Twumg/KnNZiKz6pECCd9VR1GpPG013uEf3uIvQL6/nBuKe8AxJWimjVpo YqeG0tTeKlwiDg3pHg+EuTKPDesTNcRxJyO3ckrjw/F3oY+rTq9h/ouhDIjeLnVIJ80q MLel3y/5U3dnVDjmz5QxfXrzq6AxPeXLPBrQkyi5CQhmjXNuQYzl+LYaOMKbGvAQGuh3 5ec6UMyMumagTOYUu1H23WOrUOVfh4vH3zzKs54vcTl34L5iI13wqerWd82eQrZ58yX5 sNmglxa+KraxbyQ6mgCuYP9aQ9DPSMoV0gvFA+FnXunxHA+KBxjvPOpoz2qqa8ACgWC7 xvbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314960; x=1786919760; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uxmlZCK7DL17d4NutzDtlfNr/qFd5kbUmapKHvQVXXc=; b=kY1az3kZmgIMds46t+lxX2unYSOB4+bsMZAirG/WY0JUgc2FXG45rtMN0gpiTWZxN+ KW7jWu2u5EJUG9GJqsR+Y2qtU0S41mFrrBttxZEcEjWJsaZUgP/20/T5A65NjwAFg/k9 pQ7SUgHIkTCqTR/+aWayJvP9CMFgXT/SULcyvU+e5LadYz+1oB3tE17zsP29+qa9s6TK vvHikrx1XF5FYtvh0ZlL3b4YiTRZDu5wbBy+UIRhZBKMEAvFwnymFXaNuoFY2AmiMD9W fMfbVjvg0844S7GX9ngqlZbpPM8SVTPuB8Nz/aNd+Noy5SST1ERuIrGrtQzIfcaLQwVK sJRQ== X-Gm-Message-State: AOJu0Yy0974X/qG3kTBz8Au2Wi9iFhDqqMjhp5vIQRDoFtKbx9HAEhNg e9O2194Sy7uF/43q4IriDpXWhixNRok37oZ+w0JuqkjNw5NI3jBz8S3KQrKDzzdxa3+i6+lVrDU zta45 X-Gm-Gg: AR+sD114N3S60svNWfr65dc+TEfnYqJvt7jHUPYjLw2H/6059lI6r3/Pk14dDC+noUF lAtdL0x6YH30BHZ4OHyZLp4jDAujWubNQRMzpM6q5Z7p2KUKnCkWEcO2PyQxH0XR9FhstM8dtUU LDvZN6/DDPVdcYUtfmJp1v0li1vEQQ0/zBWYFji39nTTm+0zTgeIorx6JZqmFLQxRQvnVvO+Yli I6Ftl+EuuwMAoqQ9int18XLfppLDMrFFQpW/AASjk+3OPmy68sxB+UcVaAieszYybME94c9k+u8 Ape4HjLcJPsOPy09cguE54ElhEMvgkq1EhMW/39hUmhVzvC7oLLH9o/sh6OeoF+DxxeQ4agUdd4 DCSr/fHzketKh+BIPiNy6wz4WiKlUz0enEhZ546zrSJHDdzue8kBLrsje7CckUgw/XqafB+Kz+8 D4BI6To5eiLTD7uN7b2deQQC4xwpaHeMxeIsbkeBZHvShadZKcWIjX8zRanJS0epjEn5Lu+/ueO EmbIrsHt/y+jKsEYlJb X-Received: by 2002:a05:6a00:4106:b0:837:f111:b70 with SMTP id d2e1a72fcca58-84f6b649b12mr15308396b3a.4.1786314959792; Sun, 09 Aug 2026 15:35:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 10/56] disas/riscv: Pass rv_opcode_data pointer to/from decode_inst_decompress Date: Sun, 9 Aug 2026 15:34:59 -0700 Message-ID: <20260809223545.730664-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315432571158500 Content-Type: text/plain; charset="utf-8" Unify 4 functions, sharing code. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 70 ++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 49 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index af43940732..47fae7316c 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5377,64 +5377,36 @@ static void decode_inst_lift_pseudo(rv_decode *dec) =20 /* decompress instruction */ =20 -static void decode_inst_decompress_rv32(rv_decode *dec) +static const rv_opcode_data *decode_inst_decompress(rv_decode *dec, rv_isa= isa, + const rv_opcode_data *= op) { - const rv_opcode_data *opcode_data =3D dec->opcode_data; - int decomp_op =3D opcode_data[dec->op].decomp_rv32; - if (decomp_op !=3D rv_op_illegal) { - if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) - && dec->imm =3D=3D 0) { - dec->op =3D rv_op_illegal; - } else { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; - } - } -} + int decomp_op; =20 -static void decode_inst_decompress_rv64(rv_decode *dec) -{ - const rv_opcode_data *opcode_data =3D dec->opcode_data; - int decomp_op =3D opcode_data[dec->op].decomp_rv64; - if (decomp_op !=3D rv_op_illegal) { - if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) - && dec->imm =3D=3D 0) { - dec->op =3D rv_op_illegal; - } else { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; - } - } -} - -static void decode_inst_decompress_rv128(rv_decode *dec) -{ - const rv_opcode_data *opcode_data =3D dec->opcode_data; - int decomp_op =3D opcode_data[dec->op].decomp_rv128; - if (decomp_op !=3D rv_op_illegal) { - if ((opcode_data[dec->op].decomp_data & rvcd_imm_nz) - && dec->imm =3D=3D 0) { - dec->op =3D rv_op_illegal; - } else { - dec->op =3D decomp_op; - dec->codec =3D opcode_data[decomp_op].codec; - } - } -} - -static void decode_inst_decompress(rv_decode *dec, rv_isa isa) -{ switch (isa) { case rv32: - decode_inst_decompress_rv32(dec); + decomp_op =3D op->decomp_rv32; break; case rv64: - decode_inst_decompress_rv64(dec); + decomp_op =3D op->decomp_rv64; break; case rv128: - decode_inst_decompress_rv128(dec); + decomp_op =3D op->decomp_rv128; break; + default: + g_assert_not_reached(); } + + if (decomp_op !=3D rv_op_illegal) { + if ((op->decomp_data & rvcd_imm_nz) && dec->imm =3D=3D 0) { + dec->opcode_data =3D rvi_opcode_data; + dec->op =3D rv_op_illegal; + } else { + dec->op =3D decomp_op; + } + op =3D &dec->opcode_data[decomp_op]; + dec->codec =3D op->codec; + } + return op; } =20 /* disassemble instruction */ @@ -5491,7 +5463,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, =20 op =3D &dec.opcode_data[dec.op]; decode_inst_operands(&dec, isa, op); - decode_inst_decompress(&dec, isa); + op =3D decode_inst_decompress(&dec, isa, op); decode_inst_lift_pseudo(&dec); return format_inst(24, &dec); } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315469; cv=none; d=zohomail.com; s=zohoarc; b=KuVKd6H0otiQ0S25wLhsy1ow/xda4Eh0Xn7OoiMRczodCAiTQRuxm+NAa86MB5vuQUVEN6zWG1L4iLduaUlS8/tToFD4gsOtXUxdfP30C2KS3mjaosl9F80gMTAw7xkVjxCUPKcuR6eg92P33s15J23p+PZBAbUQBmmbnuXKGMA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315469; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ojI3MxJHHeWD8C2qQpIjN6QY5DC1pEE2atzUlRgmXLI=; b=Fc4t/Wz4QFYREahR7776NsKmgWBZDm2vrl811cxwNfsDb2C6EFVvHkE639S8jrIhCT9wnc2SkkNGvzOypssrvavAj15kQgLd4u9kAuXAVmb04ZtKKAFdZ9vvvzt/pRLxrVHgIEdK29GuXzNa3QorQiaym+auK6NoRZ+K1OIL2NU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315469344527.350453877034; Sun, 9 Aug 2026 15:44:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7h-0000m3-Iw; Sun, 09 Aug 2026 18:36:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7g-0000lJ-JO for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:04 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7f-0007KG-2n for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:04 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-cbb662575d3so542454a12.0 for ; Sun, 09 Aug 2026 15:36:02 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314961; x=1786919761; darn=nongnu.org; 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:content-type; bh=ojI3MxJHHeWD8C2qQpIjN6QY5DC1pEE2atzUlRgmXLI=; b=Zkv/44tOV3UpU0SuWwDlympIFNabS1TK6ePYlR4igsy1Vyw/EI5nT7o5t4yHDewH8v 6hzl7Ehp2j81ERhOLK24OoVAh6vdwV1iItsm131PnAdLxRn/8FK5+XKog97hnhc9Vlqz 1n2JYXbxOg8In/CELaeBWE8/yA6Ouxlenkxla2jwpUyu+eAyHpm2sA5DR5xVxLnte6u6 P57Ei9MtoNqvBA+t9Qn7OvqHO1ZuY/UkrMlmLshBccQAXCREiUSt7u5U2p561B7chyBE pLFZ3g5Wd7j0kQhBPeERUfg8gBIheH0heVaxNPE1H77lnoysja9P31N/MEi62ATZGz7z mz7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314961; x=1786919761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ojI3MxJHHeWD8C2qQpIjN6QY5DC1pEE2atzUlRgmXLI=; b=Yx4ezDMA3OiM7b8VH2E+eg/PJ5ZNNEanXKYEIs68qkpZ+eNdie32TQRYNlkqGYeNuH PFRvBCkf1Y9+jgZnW29dbFOyWxfRrb4rcp8PO7rhqtOq73WzL5MEYsLSCjCfUfYWrP71 7W18KJXS7tQ4+CwLwZT906wf6A9Wfn3jx30g9mbOuPOT+h56O4BAZDuju4y98f5nhxLB y/LO7wgkRFDLUtlJGmBrgGBk8O8U2QrQUiG426qpFv/4LIM9PW/W5oRGxWzhlYOIk1MU jECRYjtoBL8P/9BgNabZW/oB/NmO5Ad8968gHUwQ13oZiG7d9XsFpOgPmbVoxBNdPBOV b/Mg== X-Gm-Message-State: AOJu0YwzU8o6lOjMZt96M7J/+Khbz75JCb8qE8/zl9jE9TME2wDY9QTS 8mgc7R2NA7iax0WAeVU7I7knbuTUjXb+e28sQpL6T9SB/DBa/Vd2kwP39anC92waWkGgRXZ70lT KQPSq X-Gm-Gg: AR+sD13ngWF0IENLR2kjW+lduAV0Z++uJIbqF+t2MDfyHAd6E8RUIynzmQrxelZrOds ECRf4OIPdTQv8kerfSEKiZDH5QH5fWVJ/xx19aQvmdoM69dLphF7TZ3CK4KStvNSx9w0dQTQ6nB 1SsFembVdr0YzvR1Q1U02j8IuOMhMS/SkDLUpTFO1Aruz9Q9reilffG1ELWF1Affgo/B4+RSj9E Pf3mvM1LGwHmxsbLPUZhxl76u12EkbYFK2qxch74knsN6prNDleAkDlEdR812jc8I2+BgW7veCh rlKY444u6iLA2+WZf9Xawaj/t6wkPWCSzpYNhY63fySjUNMuwTxUS9DnigVdoYt95ns+H72nFfG tcLNiJs63p32b/yA5rztJB9lisTRQ9Ux66fJltswYNGiD3PDyzM0+AP7latkaeq+yraEsaQDSFf MWeqkEKw1O6jMGxIdZUn6g5oZZ9CWs6Bz1j3sW1ul/H6+1IYFZaLnm5v0/dKnPGdGqKOicPJKlg 0TEtpHjIKStJMx6B43HwnNPNgy4pV8= X-Received: by 2002:a05:6a20:3ca5:b0:3c3:a31b:3949 with SMTP id adf61e73a8af0-3cbadaf4a67mr29455251637.11.1786314961269; Sun, 09 Aug 2026 15:36:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 11/56] disas/riscv: Pass rv_opcode_data pointer to/from decode_inst_lift_pseudo Date: Sun, 9 Aug 2026 15:35:00 -0700 Message-ID: <20260809223545.730664-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315470705158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 47fae7316c..0be2f07612 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5358,21 +5358,22 @@ static GString *format_inst(size_t tab, rv_decode *= dec) =20 /* lift instruction to pseudo-instruction */ =20 -static void decode_inst_lift_pseudo(rv_decode *dec) +static const rv_opcode_data *decode_inst_lift_pseudo(rv_decode *dec, + const rv_opcode_data = *op) { - const rv_opcode_data *opcode_data =3D dec->opcode_data; - const rv_comp_data *comp_data =3D opcode_data[dec->op].pseudo; - if (!comp_data) { - return; - } - while (comp_data->constraints) { - if (check_constraints(dec, comp_data->constraints)) { - dec->op =3D comp_data->op; - dec->codec =3D opcode_data[dec->op].codec; - return; + const rv_comp_data *comp_data =3D op->pseudo; + if (comp_data) { + while (comp_data->constraints) { + if (check_constraints(dec, comp_data->constraints)) { + dec->op =3D comp_data->op; + op =3D &dec->opcode_data[dec->op]; + dec->codec =3D op->codec; + break; + } + comp_data++; } - comp_data++; } + return op; } =20 /* decompress instruction */ @@ -5464,7 +5465,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, op =3D &dec.opcode_data[dec.op]; decode_inst_operands(&dec, isa, op); op =3D decode_inst_decompress(&dec, isa, op); - decode_inst_lift_pseudo(&dec); + op =3D decode_inst_lift_pseudo(&dec, op); return format_inst(24, &dec); } =20 --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315481; cv=none; d=zohomail.com; s=zohoarc; b=KCSQYd1Q1rhhOH15Kl57KN8Ye2l6Xf67k3nGsknjljMH/oxETGvEuPizWIVEqKk3AfZJbMQmYJw4n6usJcVq6k9fWUBluPtjvgeY62UXkZ3XV2qwbDorizTzo1aR9ohn9cwEylrqS68MzuM/OrXgGXWQSyRL8rm26CJj3wWQx4g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315481; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qgTTE57E6VDpc7y6ZZqT+hvgo0JgyQBjCGNKyS2wwVI=; b=mabUJFME5N/6KD7qPp+kSAOdToXTysrCe6cx2q+XMZ9ME9GrdRX+3EYHpbqiBI2hsmdYYe/jYoIHHwcMJsuRkB9JlPs18RLs2/TrF0MFwQOK89nfozvs9jzhnOK2ndOzK7MmKU+VQ8s2UXbPIkPbgwJ5xxwoR+XCAN/U7lMdNuI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315481536455.5084922299295; Sun, 9 Aug 2026 15:44:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7j-0000nE-AO; Sun, 09 Aug 2026 18:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7h-0000m7-LW for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:05 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7g-0007Kr-4Q for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:05 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8487b7b3fc8so1292966b3a.3 for ; Sun, 09 Aug 2026 15:36:03 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314963; x=1786919763; darn=nongnu.org; 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:content-type; bh=qgTTE57E6VDpc7y6ZZqT+hvgo0JgyQBjCGNKyS2wwVI=; b=KPKTP/NTrWJuo4h9+baebgxM9KUjafPlXPcXoVWdipQ5hUFSa6yunWI1k+ufn8Yi+b IW0PS+FC+SgQs1+ZZ38i6f40XuGmwvb+dE19XEYcwWDd8LcNu2vCqPlmKUH3dEWe2qCu PXn0z7cotum46lJ6ArIlueSDPWbf5RFPc8OgVwNtjeigyzM4rVzRDYaEmOfsLTnsapN4 hWc38B14xOtd1cqtvkEwt2L/XptboIXXmIg2rAZxJRZ7yDS3H06jMookmbGKUivlCDmU KCGCGShrhsYIE+IEIo4rqHP1PCjlNJwJBIdt7O8gLGQlmc5lfBjKEGxJQaZMVQROiS+v HD9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314963; x=1786919763; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=qgTTE57E6VDpc7y6ZZqT+hvgo0JgyQBjCGNKyS2wwVI=; b=Iuf4nfYFp2UIExkMgBv1lGeH8ywH5KX0oGj5ytM4wl68PimTiZ3GpgUQN25EV/OD6y 6zsRC2Nxj1olzI8+li1/Ykb8cOgAeSGxbWwP+qIvuNHaIK2tNDua/kyoqrYQBqgtw/Xz c7Ky8GB+HjEiy5qBGmnXFAr4AydPS9FYgjuzXpwFoUjv0hQUBN4aFQHScj5vEb/iLPU0 +iqApOYYyG/8fNJoBkMp42XpKrZlmXDxzjByCusYaDJNZw7EIta4KwU3zuMcMEQ3e774 npR8XSO+uzR/Ed49YuaeM8h4rxfJ9fRELSQ5N0pVkoZwBbPpd5vX9H21mbq32YIxXiyO U+6Q== X-Gm-Message-State: AOJu0YyhrU9zdfPI/ksUO3JfXqCFEyqiipvfonN6ep+rPTuy1wbT+FYf 3kusgwNoisvCGphvnk5JQVrBJ/3Hha/Gl55wV5RUXhDOXHsTYBsEqmUoW9hI+pYKs+RMb98BT2p ofp/Y X-Gm-Gg: AR+sD1165qWtZiDGI3o09/MfftmtHPfJbCHu7AaRNHoFLYLs9THE4cGK/HwnnmsM2u2 SQAOtt5l7Y2r/nyZoGxVUTgotGwulG7wU1haSTW2gNk/Bc83OghsVhjLr5evw6cN142LXazSMv/ XoHE2UFXGt9OJ8DDJ6GU3zqWdfOLhZ+YuNlyrBPEK7HSJ3NWEMeunEYXEXKgmbMTa7mLbAswa/P mC1DvxD7RCHSW4B2Wd73EDVfK1l7oqupopzvj+t+7fIjzpm5CIzHcR+ldgPSd4En+VFSRyfsV1a PXc+KCnbH8nfbGFGS5BUq8oe5F4XtXhuOd0K+wJV5MxDqA4GoiGYPPwVH16k0fZ7KjE7DGv5R45 b4ZStT6JDyJG/ssrUucZyhBAzfEn1p8WuxeFoyhA41uEqh2cYytjaCyarEkxt3GAFr212+lMFWF iREZIpnViYeSQBX9NB9nc8UxgfC42yxWNFzOcOniSE6NYJ6DYX9ujRs8KXd2YygvWE5f1MBBY3Z HGM4T7eL1aF5uCGDzQOZO+217t8Xns= X-Received: by 2002:a05:6a00:302a:b0:848:7443:f2de with SMTP id d2e1a72fcca58-84f2dff77cbmr44314020b3a.13.1786314962780; Sun, 09 Aug 2026 15:36:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 12/56] disas/riscv: Pass rv_opcode_data pointer to format_inst Date: Sun, 9 Aug 2026 15:35:01 -0700 Message-ID: <20260809223545.730664-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315482737158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 0be2f07612..70ea41f125 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5111,17 +5111,16 @@ static size_t inst_length(rv_inst inst) =20 /* format instruction */ =20 -static GString *format_inst(size_t tab, rv_decode *dec) +static GString *format_inst(size_t tab, rv_decode *dec, + const rv_opcode_data *op) { - const rv_opcode_data *opcode_data =3D dec->opcode_data; GString *buf =3D g_string_sized_new(64); - const char *fmt; + const char *fmt =3D op->format; =20 - fmt =3D opcode_data[dec->op].format; while (*fmt) { switch (*fmt) { case 'O': - g_string_append(buf, opcode_data[dec->op].name); + g_string_append(buf, op->name); break; case '(': case ',': @@ -5466,7 +5465,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, decode_inst_operands(&dec, isa, op); op =3D decode_inst_decompress(&dec, isa, op); op =3D decode_inst_lift_pseudo(&dec, op); - return format_inst(24, &dec); + return format_inst(24, &dec, op); } =20 #define INST_FMT_2 "%04x " --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315417; cv=none; d=zohomail.com; s=zohoarc; b=e4eJp1l22BSXBs7885BDMk/7bP0lS0kokRxcUQ1uH4c+Rx3HtGQ9Yx/QJLuSqInzZiv7v3ZeBmilNXqWbKfkJ6KUtwwiCH7uB/82/aj92JBJdY3/xiRCPaNkCwYM74E+xEyoaXEmFnE0lKaumRh2wlYqbxhkEpaGv7rjZgWOcL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315417; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3xN9uF24PxcjCHBEneq1+0Tduc7DpGTZFeyk6b0loig=; b=W8gL0VhUUR7PMs2EqNV+Ed4sITbQhtmSb8sZGDiS3IcoJsSDL9WxXi7VfNafhT09OrSLwNS/7+4z+GGEfW6nXasElZWolzDFwoLTLEQp9nQgwnA+yFIb+/QWVBOskHzSrls5DW8hgmnPlw0s0lTedBugJMvixJfkS+9rhKyIqCo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17863154170741011.3681432283569; Sun, 9 Aug 2026 15:43:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7l-0000oT-1P; Sun, 09 Aug 2026 18:36:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7j-0000nL-EO for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:07 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7h-0007LQ-Sf for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:07 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-cbe827e3cb4so1247952a12.3 for ; Sun, 09 Aug 2026 15:36:05 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314964; x=1786919764; darn=nongnu.org; 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:content-type; bh=3xN9uF24PxcjCHBEneq1+0Tduc7DpGTZFeyk6b0loig=; b=DJueIR4O1NmSmZa5qs7P7DHtp+7eA/5AlokZKCJlz5ZlVZ8nUYCnE0Pzes3BcfC06J 0xj1BCyhtjj1Ll8G4xVVL88cxwRrXzkjFDq4+OQAkb19C0Sfz0Swk86NtiPBPqCzlTY6 3QtG04iGVvR7sAREpRRQAn6wYnkW4xb5XRPBXaUZUVNIWG20ow73qvFX3vutD0Q6fwGb 7GPyg3tvv8YmHyIvW+1hpW75AK62RFo93F4DhJbimNQ24DDxJylUfY9wcYnofUOQxI+u g12Cz8oc2wA/kztHyfEAcwAg9PQePvZdK4CJClstVxPaUJUNWe9G77PilsvZAIoeNB4r /QLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314964; x=1786919764; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3xN9uF24PxcjCHBEneq1+0Tduc7DpGTZFeyk6b0loig=; b=Yx7wEIj0ivoqzjVw/Iowc0ALBYO9CeKPtLx6ctWvtY2iJUEWAjETT96eC+xbGzWVRR QUPY2AlpfnM0RvoqHkvrm95bv1bUla1dJZ3isGos+rsX/17vBsrQdpSYhuIP2iigST9I KzbGBg5xP2ZsQy6Aya4WXRZTA+8zn1oriSMmajbOFXfKL1bqCr2FUc/UvuaJ46G0U/fP STH0a1U+xLVklbZk0qf3c2Qo9srWmBeJigkniumYmG4C5VmT+k/I/AG1hWYmdaUK+Wu5 QfgbqW9AOkdkcVk/A+12xjCQBNyFGcVkR29WLWIp5sTetkipZDWGGce7xaAkFwDMZ5Z0 Ww9g== X-Gm-Message-State: AOJu0Yx+UVzMe9+OIQ6TRfwmIcFodzpFOwbaBu8sy1cgmBLWxMGBsECV Rw6WmG+NQv9glUxB8CyN3LoRAM401gsp5paS9vPfUZ6cfKdd+jtatszIcwacXxseepwHEf9tNJD nh64O X-Gm-Gg: AR+sD122ZF7iRI1tbDmNcUE/E4xUtuPiLrBO92kfhTER6agT8Q18uxHVIgOX4fvLOYr QPldoWuxQfaOyKCZIJD4JUtK+C2HBZFIM8KDS+1MC3eRvscj7ubWKkrNMZnF8EiisBR2tcU5Xgg zGtcb3Uvyydrl+S/9lQlsGJx3EMGOJHyyd9M3h8k+Jvds4gWTVe4uJUT//tcxt6rjx4uOls72Xe GL1MlDcZssIRt2y+9r2y4kEvAfYxk+XCvarOYAf9P75qcixOPWOWx/HKMj2UThVN5WUltMcKwxW sn8ukYZt2r61Swh6YAK3HfKouMQ+fL5x4Mxs0LN9J9cdn3lO9n7s0ajAEx960vXsWvf2+9U9yCB HtJbsV+Ylum2ipKtRgVqBEdKxYmsiH3eDL8ihF6aSvs6V4YA+d6ySkiKeP66dKAcwoW8C4szHZz lQeQhKX5m2Xz8vFohchPBXAMRSYoD6+KjA79PSXtaqW8T6Gh05bR6YlvOPtC5O0U/voL7CdXXMm orUa0pGVId1VNdFOOrj7lO0dUN9118= X-Received: by 2002:a05:6a00:a116:b0:846:bc60:5bf7 with SMTP id d2e1a72fcca58-84f2dfcf7f5mr42979532b3a.6.1786314964295; Sun, 09 Aug 2026 15:36:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 13/56] disas/riscv: Tidy disasm_inst main loop Date: Sun, 9 Aug 2026 15:35:02 -0700 Message-ID: <20260809223545.730664-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315418562158500 Content-Type: text/plain; charset="utf-8" Unroll first iteration, so that always_true_p is not used, Drop some local variables and use 'decoders' directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 63 +++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 70ea41f125..9880b8de20 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5419,41 +5419,40 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc= , rv_inst inst, .inst =3D inst, .cfg =3D cfg, }; - - static const struct { - bool (*guard_func)(const RISCVCPUConfig *); - const rv_opcode_data *opcode_data; - void (*decode_func)(rv_decode *, rv_isa); - } decoders[] =3D { - { always_true_p, rvi_opcode_data, decode_inst_opcode }, - { has_xtheadba_p, xthead_opcode_data, decode_xtheadba }, - { has_xtheadbb_p, xthead_opcode_data, decode_xtheadbb }, - { has_xtheadbs_p, xthead_opcode_data, decode_xtheadbs }, - { has_xtheadcmo_p, xthead_opcode_data, decode_xtheadcmo }, - { has_xtheadcondmov_p, xthead_opcode_data, decode_xtheadcondmov }, - { has_xtheadfmemidx_p, xthead_opcode_data, decode_xtheadfmemidx }, - { has_xtheadfmv_p, xthead_opcode_data, decode_xtheadfmv }, - { has_xtheadmac_p, xthead_opcode_data, decode_xtheadmac }, - { has_xtheadmemidx_p, xthead_opcode_data, decode_xtheadmemidx }, - { has_xtheadmempair_p, xthead_opcode_data, decode_xtheadmempair }, - { has_xtheadsync_p, xthead_opcode_data, decode_xtheadsync }, - { has_XVentanaCondOps_p, ventana_opcode_data, decode_xventanacondo= ps }, - { has_xlrbr_p, rv_xlrbr_opcode_data, decode_xlrbr }, - }; - const rv_opcode_data *op; =20 - for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { - bool (*guard_func)(const RISCVCPUConfig *) =3D decoders[i].guard_f= unc; - const rv_opcode_data *opcode_data =3D decoders[i].opcode_data; - void (*decode_func)(rv_decode *, rv_isa) =3D decoders[i].decode_fu= nc; + dec.opcode_data =3D rvi_opcode_data; + decode_inst_opcode(&dec, isa); =20 - /* always_true_p don't dereference cfg */ - if (((i =3D=3D 0) || cfg) && guard_func(cfg)) { - dec.opcode_data =3D opcode_data; - decode_func(&dec, isa); - if (dec.op !=3D rv_op_illegal) - break; + if (dec.op =3D=3D rv_op_illegal && cfg) { + static const struct { + bool (*guard_func)(const RISCVCPUConfig *); + const rv_opcode_data *opcode_data; + void (*decode_func)(rv_decode *, rv_isa); + } decoders[] =3D { + { has_xtheadba_p, xthead_opcode_data, decode_xtheadba }, + { has_xtheadbb_p, xthead_opcode_data, decode_xtheadbb }, + { has_xtheadbs_p, xthead_opcode_data, decode_xtheadbs }, + { has_xtheadcmo_p, xthead_opcode_data, decode_xtheadcmo }, + { has_xtheadcondmov_p, xthead_opcode_data, decode_xtheadcondmo= v }, + { has_xtheadfmemidx_p, xthead_opcode_data, decode_xtheadfmemid= x }, + { has_xtheadfmv_p, xthead_opcode_data, decode_xtheadfmv }, + { has_xtheadmac_p, xthead_opcode_data, decode_xtheadmac }, + { has_xtheadmemidx_p, xthead_opcode_data, decode_xtheadmemidx = }, + { has_xtheadmempair_p, xthead_opcode_data, decode_xtheadmempai= r }, + { has_xtheadsync_p, xthead_opcode_data, decode_xtheadsync }, + { has_XVentanaCondOps_p, ventana_opcode_data, decode_xventanac= ondops }, + { has_xlrbr_p, rv_xlrbr_opcode_data, decode_xlrbr }, + }; + + for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { + if (decoders[i].guard_func(cfg)) { + dec.opcode_data =3D decoders[i].opcode_data; + decoders[i].decode_func(&dec, isa); + if (dec.op !=3D rv_op_illegal) { + break; + } + } } } =20 --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315348; cv=none; d=zohomail.com; s=zohoarc; b=XC7WrzZ9XG1eiN4zwJPRxHZzcKZvGhj/IYUfeFyefrKnjsFZ+gavcylT3yAuebIzOZwy4wbtkeYUYJ2cc91wsskHGcmjuXHFncFck3F14YUVIcMHfbdcKD91kiEodeQVD0xj+JdfthJQo+o8yr9sxbGLrd7ve4S1m/MO7tTuJiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315348; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vBIaC0TEbddzk6bE4I0McVQv9S5gcFlTp0SCsfcdZA4=; b=NuuEiHgcMvKVbwYUiHuz7sOmRJZP3dpP3kHidanvPimBZlz33kb+tIviYufBGYEtLF3D2uXb3BIFD7jMPj3DLIy5jzakVcxb2IEwkmji4LGEhQ5i+BMGT3EoPw3LMTe0Jdo8hePUqYa3q2tgq9M59DlY+FlgtvxNCQRhsdZgzcA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631534868829.657479586080058; Sun, 9 Aug 2026 15:42:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7m-0000pL-Q0; Sun, 09 Aug 2026 18:36:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7l-0000oU-3g for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:09 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7i-0007Lq-I0 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:08 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2cea3004256so15063845ad.0 for ; Sun, 09 Aug 2026 15:36:06 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314965; x=1786919765; darn=nongnu.org; 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:content-type; bh=vBIaC0TEbddzk6bE4I0McVQv9S5gcFlTp0SCsfcdZA4=; b=yzqJ1Ty7A74ZQR6lsItE7a1rtwKcMzrPFpUBUfP8fl66VHbalvUyFvVNl92ORu1q2q 66qSknfjnORIeUJdMfmTBaMW15TEFTZG5ElkdMxsuAFWu7xC/Xq/9mnV5KevDYxzHBhv vRvNt3LZBGc0bY1mueYYV0cdMRVtIf1LI7mJwJRSuRliED+Z2S0IvUgiVu+Xb36ECM1Z /iYc+x2cDFv+i/t1EZ1CCn2pgPoYPXiaqFrrBzVCTQGEkwwypPZHU7HilG4Mw2tLLiS9 /HE8qPtPON3LGpFZoxutIhN9eNyuj6lMiOKq1TR+pQykj30k0lWXxodvhnhLH6+tysQw eApA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314965; x=1786919765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=vBIaC0TEbddzk6bE4I0McVQv9S5gcFlTp0SCsfcdZA4=; b=m3uv3Chw8WPxyNKWIPwBlj8RYwsc6mqcQAtqz/SuJLHfvFcwb6baOZNh+qadfBtpRE qrVdPwhTemeQxg3COtzM0H7LFCOjMMlx8p5HjkWVAotW/+7kMSpvZl7Iv8D/7YkWBm6m OC66xo3Ie9J8GzbPQOdA2uiZN0yw6BKG+fLmTImkRscdq4fuk2UcJ2P56xT4GOCllPEf FpkSD0wAzzR0cdu4OqYFdGy7GYIp57oVpwgVuQyt+0+EzfCePJ5nnJnmGbMI6/Q2dB/n ZY3s0X2FrnMYsmWkiV3cLeph/Rrn0iPJHhq/46cG8u0vm7PQXzjA6r2SFy7jvOUO1/mD y96w== X-Gm-Message-State: AOJu0Yy36dFA+w6Kw7RAnxGrEI68OBiw7JMgKuN3HwnE9cICAltug5BB O1UrdFj/QUy6cez1DUFDdVpGpAved4teSHZJY1YX6gyNVg0OJa51vZFMAgudZkf8L8gn3Sj2DND 7s3vv X-Gm-Gg: AR+sD100OV/R2U6eAEDqEtKMf2pOdPPHXUThFo6Wd2do8nKbI8K39wrdFm0O9rmcj2p 8HIO+U4zm84dxVFBv61U6toLfK05Tjyo+9sd5YhPk7qEiDaiq9LjUOf9Zn8I/rOr9R8npcMUWZk 5jwkYTblrV+WNjNs7W5VR/uBB0CVlg023Chs9L3uWBYjHYXsm6sP4xIYeWYeY/rVFnp0lgemZro frXWGE3HpwinYHy+qs+XpBr3+faVjqSSkW3uZlSsSIVKd0pvdy8q0pRCIH02qxe9ZAdBCRJg9zQ skW1eUSPXk3IhIplhu3jJ8xTM2NPcZvjJHvO3NHv87m31J28MxGkaokEBYlfifuFOPNs7cFRGUS QaoiIeFu2riwCJ6fmvlMm0XEGewqfRZMO4SuUOQZlSDi3M0f0JPVdy8weHh3/7O4CxjqWAqjFal cjZSLb7MXq5vAX2phpqGARkE+rcJ1odMz3qijfr0pM3F2FL8msXdojWrCZWL7Y8TOEUlVHG0bdN Pmzu0ChI+LfWsjEPRB9 X-Received: by 2002:a05:6a20:4309:b0:3c3:954d:278d with SMTP id adf61e73a8af0-3cb85df09e3mr41107323637.9.1786314965094; Sun, 09 Aug 2026 15:36:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 14/56] disas/riscv: Set dec->opcode_data in decode function Date: Sun, 9 Aug 2026 15:35:03 -0700 Message-ID: <20260809223545.730664-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315350272158500 Content-Type: text/plain; charset="utf-8" This allows each opcode table to be private to the decode file. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xlrbr.h | 2 -- disas/riscv-xthead.h | 2 -- disas/riscv-xventana.h | 2 -- disas/riscv-xlrbr.c | 4 +++- disas/riscv-xthead.c | 13 ++++++++++++- disas/riscv-xventana.c | 3 ++- disas/riscv.c | 34 +++++++++++++++++----------------- 7 files changed, 34 insertions(+), 26 deletions(-) diff --git a/disas/riscv-xlrbr.h b/disas/riscv-xlrbr.h index 939a69ea6d..ebf3d4c133 100644 --- a/disas/riscv-xlrbr.h +++ b/disas/riscv-xlrbr.h @@ -12,8 +12,6 @@ =20 #include "disas/riscv.h" =20 -extern const rv_opcode_data rv_xlrbr_opcode_data[]; - void decode_xlrbr(rv_decode *, rv_isa); =20 #endif /* DISAS_RISCV_XLRBR_H */ diff --git a/disas/riscv-xthead.h b/disas/riscv-xthead.h index fcd42746e7..0c65c8e0af 100644 --- a/disas/riscv-xthead.h +++ b/disas/riscv-xthead.h @@ -11,8 +11,6 @@ =20 #include "disas/riscv.h" =20 -extern const rv_opcode_data xthead_opcode_data[]; - void decode_xtheadba(rv_decode *, rv_isa); void decode_xtheadbb(rv_decode *, rv_isa); void decode_xtheadbs(rv_decode *, rv_isa); diff --git a/disas/riscv-xventana.h b/disas/riscv-xventana.h index 72be9ffa16..1006c3be00 100644 --- a/disas/riscv-xventana.h +++ b/disas/riscv-xventana.h @@ -11,8 +11,6 @@ =20 #include "disas/riscv.h" =20 -extern const rv_opcode_data ventana_opcode_data[]; - void decode_xventanacondops(rv_decode*, rv_isa); =20 #endif /* DISAS_RISCV_XVENTANA_H */ diff --git a/disas/riscv-xlrbr.c b/disas/riscv-xlrbr.c index 57cb434523..f61028fce9 100644 --- a/disas/riscv-xlrbr.c +++ b/disas/riscv-xlrbr.c @@ -24,7 +24,7 @@ typedef enum { rv_op_crc32c_d =3D 8, } rv_xlrbr_op; =20 -const rv_opcode_data rv_xlrbr_opcode_data[] =3D { +static const rv_opcode_data xlrbr_opcode_data[] =3D { { "illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, { "crc32.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, { "crc32.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, @@ -75,5 +75,7 @@ void decode_xlrbr(rv_decode *dec, rv_isa isa) } break; } + + dec->opcode_data =3D xlrbr_opcode_data; dec->op =3D op; } diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index 2f2ddb8dd9..96f80bc8e5 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -127,7 +127,7 @@ typedef enum { rv_op_th_sync_s, } rv_xthead_op; =20 -const rv_opcode_data xthead_opcode_data[] =3D { +static const rv_opcode_data xthead_opcode_data[] =3D { { "th.illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, /* XTheadBa */ { "th.addsl", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, @@ -272,6 +272,7 @@ void decode_xtheadba(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -330,6 +331,7 @@ void decode_xtheadbb(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -356,6 +358,7 @@ void decode_xtheadbs(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -434,6 +437,7 @@ void decode_xtheadcmo(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -461,6 +465,7 @@ void decode_xtheadcondmov(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -498,6 +503,7 @@ void decode_xtheadfmemidx(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -533,6 +539,7 @@ void decode_xtheadfmv(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -564,6 +571,7 @@ void decode_xtheadmac(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -638,6 +646,7 @@ void decode_xtheadmemidx(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -672,6 +681,7 @@ void decode_xtheadmempair(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } =20 @@ -706,5 +716,6 @@ void decode_xtheadsync(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D xthead_opcode_data; dec->op =3D op; } diff --git a/disas/riscv-xventana.c b/disas/riscv-xventana.c index cd694f15f3..4539173d95 100644 --- a/disas/riscv-xventana.c +++ b/disas/riscv-xventana.c @@ -14,7 +14,7 @@ typedef enum { ventana_op_vt_maskcn =3D 2, } rv_ventana_op; =20 -const rv_opcode_data ventana_opcode_data[] =3D { +static const rv_opcode_data ventana_opcode_data[] =3D { { "vt.illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, { "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, @@ -38,5 +38,6 @@ void decode_xventanacondops(rv_decode *dec, rv_isa isa) break; } =20 + dec->opcode_data =3D ventana_opcode_data; dec->op =3D op; } diff --git a/disas/riscv.c b/disas/riscv.c index 9880b8de20..eb6d132a2c 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1656,7 +1656,7 @@ static uint32_t operand_lpl(rv_inst inst) =20 /* instruction metadata */ =20 -const rv_opcode_data rvi_opcode_data[] =3D { +static const rv_opcode_data rvi_opcode_data[] =3D { { "illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, { "lui", rv_codec_u, rv_fmt_rd_uimm, NULL, 0, 0, 0 }, { "auipc", rv_codec_u, rv_fmt_rd_uoffset, NULL, 0, 0, 0 }, @@ -2948,6 +2948,7 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa= isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; + switch ((inst >> 0) & 0b11) { case 0: switch ((inst >> 13) & 0b111) { @@ -4590,6 +4591,8 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa= isa) } break; } + + dec->opcode_data =3D rvi_opcode_data; dec->op =3D op; } =20 @@ -5421,33 +5424,30 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc= , rv_inst inst, }; const rv_opcode_data *op; =20 - dec.opcode_data =3D rvi_opcode_data; decode_inst_opcode(&dec, isa); =20 if (dec.op =3D=3D rv_op_illegal && cfg) { static const struct { bool (*guard_func)(const RISCVCPUConfig *); - const rv_opcode_data *opcode_data; void (*decode_func)(rv_decode *, rv_isa); } decoders[] =3D { - { has_xtheadba_p, xthead_opcode_data, decode_xtheadba }, - { has_xtheadbb_p, xthead_opcode_data, decode_xtheadbb }, - { has_xtheadbs_p, xthead_opcode_data, decode_xtheadbs }, - { has_xtheadcmo_p, xthead_opcode_data, decode_xtheadcmo }, - { has_xtheadcondmov_p, xthead_opcode_data, decode_xtheadcondmo= v }, - { has_xtheadfmemidx_p, xthead_opcode_data, decode_xtheadfmemid= x }, - { has_xtheadfmv_p, xthead_opcode_data, decode_xtheadfmv }, - { has_xtheadmac_p, xthead_opcode_data, decode_xtheadmac }, - { has_xtheadmemidx_p, xthead_opcode_data, decode_xtheadmemidx = }, - { has_xtheadmempair_p, xthead_opcode_data, decode_xtheadmempai= r }, - { has_xtheadsync_p, xthead_opcode_data, decode_xtheadsync }, - { has_XVentanaCondOps_p, ventana_opcode_data, decode_xventanac= ondops }, - { has_xlrbr_p, rv_xlrbr_opcode_data, decode_xlrbr }, + { has_xtheadba_p, decode_xtheadba }, + { has_xtheadbb_p, decode_xtheadbb }, + { has_xtheadbs_p, decode_xtheadbs }, + { has_xtheadcmo_p, decode_xtheadcmo }, + { has_xtheadcondmov_p, decode_xtheadcondmov }, + { has_xtheadfmemidx_p, decode_xtheadfmemidx }, + { has_xtheadfmv_p, decode_xtheadfmv }, + { has_xtheadmac_p, decode_xtheadmac }, + { has_xtheadmemidx_p, decode_xtheadmemidx }, + { has_xtheadmempair_p, decode_xtheadmempair }, + { has_xtheadsync_p, decode_xtheadsync }, + { has_XVentanaCondOps_p, decode_xventanacondops }, + { has_xlrbr_p, decode_xlrbr }, }; =20 for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { if (decoders[i].guard_func(cfg)) { - dec.opcode_data =3D decoders[i].opcode_data; decoders[i].decode_func(&dec, isa); if (dec.op !=3D rv_op_illegal) { break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315368; cv=none; d=zohomail.com; s=zohoarc; b=c1w4FCBC5t8B6q9M3pxwKtEictQuzDUEVBe4b05aR97xuR3sPGc+p8aDqH6Koj2BP8D5TF3l+nFU40m0ZPWlVydn8p30n38ioF4vQv9vdwxteX7owtChls2uJ1EEpQFRKomtqZscVg7vdBlij5BPx29Xqxwc0NhL/G7tEzMNZsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315368; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bugJEOrGoA/Au1+EqKAT52Ov7J5RuHbhWtPd7gpjPfI=; b=VLCqfwwfBf4Twoz2ct3QJQOFrWypd40x7k4XiA5dmvmjxg5iUQrAhLZR8ZjSGqE4HLPUFeoP5cDgXXk06owezUUY4rDSxjl7KW66GTYqowjJZyi6T7ZtWo0giP8leSIg3UNQ9iSmY4ctPaxShSln9+G2k9kOyzii9JRxvHidhP0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315368486731.543199228765; Sun, 9 Aug 2026 15:42:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7v-0000vB-Bp; Sun, 09 Aug 2026 18:36:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7r-0000sR-HY for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:15 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7l-0007MV-F0 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:15 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c999f162c9aso691520a12.3 for ; Sun, 09 Aug 2026 15:36:09 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314968; x=1786919768; darn=nongnu.org; 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:content-type; bh=bugJEOrGoA/Au1+EqKAT52Ov7J5RuHbhWtPd7gpjPfI=; b=ZHpbYpUNYsDueGf7+UsNbwmdU0MG/XoUOGTbmbtBp5YtDFslW8OYMd+3Ij5GOPionw wwVAW0ouoLf+KHaLGjAwOGPByoP1RAFA/0HO68ZoVXtdOkB+5+fyqB8kqhFgzqoLDhzt oI7TVQQBdyQNzW0KHO0CrhUkJT6U3F0t/1Z6UA8O3cJnxACmo7ybvoQwZw8fQk9fnqGp J5QAkOpyxwtWd0ww/ts/R2uGDGd8Fnk+Buc/q4mt0i3azNGBtL2bLHMcIE5J/hmarL3W hY1K6lnNcgY5um8GruLkubwxGltCwa539KJQbO6dukJXl7qVMjlE4DtTKtOuL4HaCxDR DCxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314968; x=1786919768; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=bugJEOrGoA/Au1+EqKAT52Ov7J5RuHbhWtPd7gpjPfI=; b=dlEYEf9WuJmYj3mO5zmvcdf/983ftbewGnmCTM4odYR0iUQ7W4DXQwms/QXF29wnM9 VY8RGMOokUWibka2XEM6mvojUXPqlfP3xuzC9M8kZRC3/IpVrJbpZE3to+tp7BFL5WUh n2rf1HEOTsK/XdYehkCD91dnvsj6bBklQddHSQsPEsDL+2tciWwxFY4EyMiVmiBMGMpP D25Zq7iRmPCyhfnbA9tK56lSNPzlGRPX5T9ig9TdR9U8gaxYJfnXzTIokpa9YtVU66tD 6auFYuLITkg8II8pTbZ/1q5zaXaF7YQtZPfbSNrpVcXduiFuFA5bMtfwefdJGXHM1rKn LYjQ== X-Gm-Message-State: AOJu0Yy0EJpOhkmA0zWzKqB3lJLPF2zfB8vUt+wRtDUndv67HL+OPRsT Kn7qWRTyLk+ZwZXQYTQ7MWDL77Mb6nNRtZX0UegOfcd3TL1tzY4UTZYrSjpdcgiDyAz1WuGE/oO /6RbY X-Gm-Gg: AR+sD128nJzv1RL7kZDXJhqRmu8ca8e5ekXVUNEgosh8PW378tG/uJwV7q6cvI1uJm4 yyTGlQ239zTzCAmPpE7RvN/oHUHokqr7f4+jzXpPpLUdhT3JiYr7tr2BjhQ+sr3khGKn4uW6/uq jNX1QMbFYgn2jdM++wFUu9+aI49bWtlrCAVvP/w2LPdksG0BNCPUQ8ZZoi6XKlI1Llk8NE0lmMC y2TQsmKiu4Hn5tVALCVbi7Xq2UOH1rSDxE0R03nvVxuxbdwkLALw4MS8QABYTfcZ5WqAAW/Huo3 Nu7pEWhTlEXJ/EYPbyRccN4fT7jHNTsTlp3RNIR2AMvx2pTWrgSa5QyTkQXXsUiIK83tFAzCXqL 99AWmcl3vjc+khIOCU2srKRWMXKR56BSI7dsbtWIqnGlOlWFHivb+8vGEHlGf3IEjxs5eDpQU/b NjFnY8FY7dU04DMKgV/FPou3BGepVEvF1iCNKhN3TUnyzglV9T0VIN6Lfek0Obfhcz7k5R1Q+E6 FPKjaLYd8LrlPM8T9D+dHmGHHdSX6U= X-Received: by 2002:a05:6a20:6f02:b0:3c4:511e:26ab with SMTP id adf61e73a8af0-3cb85ded984mr50213374637.3.1786314966843; Sun, 09 Aug 2026 15:36:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 15/56] disas/riscv: Drop explicit zero of rv_opcode_data fields Date: Sun, 9 Aug 2026 15:35:04 -0700 Message-ID: <20260809223545.730664-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315370489158500 Content-Type: text/plain; charset="utf-8" Mechanical s/, NULL, 0, 0, 0 }/ }/ s/, 0, 0, 0 }/ }/ s/, NULL, 0, 0 }/ }/ s/, NULL, 0 }/ }/ Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xlrbr.c | 18 +- disas/riscv-xthead.c | 210 ++--- disas/riscv-xventana.c | 6 +- disas/riscv.c | 1826 ++++++++++++++++++++-------------------- 4 files changed, 1030 insertions(+), 1030 deletions(-) diff --git a/disas/riscv-xlrbr.c b/disas/riscv-xlrbr.c index f61028fce9..d0092e9edd 100644 --- a/disas/riscv-xlrbr.c +++ b/disas/riscv-xlrbr.c @@ -25,15 +25,15 @@ typedef enum { } rv_xlrbr_op; =20 static const rv_opcode_data xlrbr_opcode_data[] =3D { - { "illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, - { "crc32.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32.w", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32.d", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32c.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32c.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32c.w", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "crc32c.d", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "illegal", rv_codec_illegal, rv_fmt_none }, + { "crc32.b", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32.h", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32.w", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32.d", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32c.b", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32c.h", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32c.w", rv_codec_r, rv_fmt_rd_rs1 }, + { "crc32c.d", rv_codec_r, rv_fmt_rd_rs1 }, }; =20 void decode_xlrbr(rv_decode *dec, rv_isa isa) diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index 96f80bc8e5..757d6ff39f 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -128,122 +128,122 @@ typedef enum { } rv_xthead_op; =20 static const rv_opcode_data xthead_opcode_data[] =3D { - { "th.illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, + { "th.illegal", rv_codec_illegal, rv_fmt_none }, /* XTheadBa */ - { "th.addsl", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, + { "th.addsl", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, /* XTheadBb */ - { "th.srri", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "th.srriw", rv_codec_r2_imm5, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "th.ext", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml, NULL, 0, 0, 0 = }, - { "th.extu", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml, NULL, 0, 0, 0= }, - { "th.ff0", rv_codec_r2, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "th.ff1", rv_codec_r2, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "th.rev", rv_codec_r2, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "th.revw", rv_codec_r2, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "th.tstnbz", rv_codec_r2, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "th.srri", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm }, + { "th.srriw", rv_codec_r2_imm5, rv_fmt_rd_rs1_imm }, + { "th.ext", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml }, + { "th.extu", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml }, + { "th.ff0", rv_codec_r2, rv_fmt_rd_rs1 }, + { "th.ff1", rv_codec_r2, rv_fmt_rd_rs1 }, + { "th.rev", rv_codec_r2, rv_fmt_rd_rs1 }, + { "th.revw", rv_codec_r2, rv_fmt_rd_rs1 }, + { "th.tstnbz", rv_codec_r2, rv_fmt_rd_rs1 }, /* XTheadBs */ - { "th.tst", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, + { "th.tst", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm }, /* XTheadCmo */ - { "th.dcache.call", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.dcache.ciall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.dcache.iall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.dcache.cpa", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.cipa", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.ipa", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.cva", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.civa", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.iva", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.csw", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.cisw", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.isw", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.cpal1", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.dcache.cval1", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.icache.iall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.icache.ialls", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.icache.ipa", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.icache.iva", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "th.l2cache.call", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.l2cache.ciall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.l2cache.iall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, + { "th.dcache.call", rv_codec_none, rv_fmt_none }, + { "th.dcache.ciall", rv_codec_none, rv_fmt_none }, + { "th.dcache.iall", rv_codec_none, rv_fmt_none }, + { "th.dcache.cpa", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.cipa", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.ipa", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.cva", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.civa", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.iva", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.csw", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.cisw", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.isw", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.cpal1", rv_codec_r, rv_fmt_rs1 }, + { "th.dcache.cval1", rv_codec_r, rv_fmt_rs1 }, + { "th.icache.iall", rv_codec_none, rv_fmt_none }, + { "th.icache.ialls", rv_codec_none, rv_fmt_none }, + { "th.icache.ipa", rv_codec_r, rv_fmt_rs1 }, + { "th.icache.iva", rv_codec_r, rv_fmt_rs1 }, + { "th.l2cache.call", rv_codec_none, rv_fmt_none }, + { "th.l2cache.ciall", rv_codec_none, rv_fmt_none }, + { "th.l2cache.iall", rv_codec_none, rv_fmt_none }, /* XTheadCondMov */ - { "th.mveqz", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.mvnez", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, + { "th.mveqz", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.mvnez", rv_codec_r, rv_fmt_rd_rs1_rs2 }, /* XTheadFMemIdx */ - { "th.flrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.flrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.flurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.flurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.fsrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.fsrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.fsurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.fsurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm, NULL, 0, 0, 0 }, + { "th.flrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.flrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.flurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.flurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.fsrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.fsrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.fsurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, + { "th.fsurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, /* XTheadFmv */ - { "th.fmv.hw.x", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "th.fmv.x.hw", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, + { "th.fmv.hw.x", rv_codec_r, rv_fmt_rd_frs1 }, + { "th.fmv.x.hw", rv_codec_r, rv_fmt_rd_frs1 }, /* XTheadMac */ - { "th.mula", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.mulaw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.mulah", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.muls", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.mulsw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "th.mulsh", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, + { "th.mula", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.mulaw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.mulah", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.muls", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.mulsw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "th.mulsh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, /* XTheadMemIdx */ - { "th.lbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml, NULL, 0, = 0, 0 }, - { "th.lbuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.lbuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.lhia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lhib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lhuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.lhuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.lwia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lwib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lwuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.lwuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NUL= L, 0, 0, 0 }, - { "th.ldia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.ldib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.sbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.sbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.shia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.shib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.swia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.swib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.sdia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.sdib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr, NULL= , 0, 0, 0 }, - { "th.lrb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lrd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.srb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.srh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.srw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.srd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.lurd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.surb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.surh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.surw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, - { "th.surd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm, NULL, 0, 0, 0 }, + { "th.lbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml }, + { "th.lbuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lbuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lhia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lhib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lhuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lhuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lwia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lwib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lwuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lwuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.ldia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.ldib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.sbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.sbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.shia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.shib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.swia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.swib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.sdia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.sdib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, + { "th.lrb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lrd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.srb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.srh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.srw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.srd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.lurd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.surb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.surh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.surw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, + { "th.surd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, /* XTheadMemPair */ - { "th.ldd", rv_codec_r_imm2, rv_fmt_rd2_imm, NULL, 0, 0, 0 }, - { "th.lwd", rv_codec_r_imm2, rv_fmt_rd2_imm, NULL, 0, 0, 0 }, - { "th.lwud", rv_codec_r_imm2, rv_fmt_rd2_imm, NULL, 0, 0, 0 }, - { "th.sdd", rv_codec_r_imm2, rv_fmt_rd2_imm, NULL, 0, 0, 0 }, - { "th.swd", rv_codec_r_imm2, rv_fmt_rd2_imm, NULL, 0, 0, 0 }, + { "th.ldd", rv_codec_r_imm2, rv_fmt_rd2_imm }, + { "th.lwd", rv_codec_r_imm2, rv_fmt_rd2_imm }, + { "th.lwud", rv_codec_r_imm2, rv_fmt_rd2_imm }, + { "th.sdd", rv_codec_r_imm2, rv_fmt_rd2_imm }, + { "th.swd", rv_codec_r_imm2, rv_fmt_rd2_imm }, /* XTheadSync */ - { "th.sfence.vmas", rv_codec_r, rv_fmt_rs1_rs2, NULL, 0, 0, 0 }, - { "th.sync", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.sync.i", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.sync.is", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "th.sync.s", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, + { "th.sfence.vmas", rv_codec_r, rv_fmt_rs1_rs2 }, + { "th.sync", rv_codec_none, rv_fmt_none }, + { "th.sync.i", rv_codec_none, rv_fmt_none }, + { "th.sync.is", rv_codec_none, rv_fmt_none }, + { "th.sync.s", rv_codec_none, rv_fmt_none }, }; =20 void decode_xtheadba(rv_decode *dec, rv_isa isa) diff --git a/disas/riscv-xventana.c b/disas/riscv-xventana.c index 4539173d95..4fb9a29d0b 100644 --- a/disas/riscv-xventana.c +++ b/disas/riscv-xventana.c @@ -15,9 +15,9 @@ typedef enum { } rv_ventana_op; =20 static const rv_opcode_data ventana_opcode_data[] =3D { - { "vt.illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, - { "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, + { "vt.illegal", rv_codec_illegal, rv_fmt_none }, + { "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, }; =20 void decode_xventanacondops(rv_decode *dec, rv_isa isa) diff --git a/disas/riscv.c b/disas/riscv.c index eb6d132a2c..ec40abb618 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1657,233 +1657,233 @@ static uint32_t operand_lpl(rv_inst inst) /* instruction metadata */ =20 static const rv_opcode_data rvi_opcode_data[] =3D { - { "illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, - { "lui", rv_codec_u, rv_fmt_rd_uimm, NULL, 0, 0, 0 }, - { "auipc", rv_codec_u, rv_fmt_rd_uoffset, NULL, 0, 0, 0 }, - { "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal, 0, 0, 0 }, - { "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr, 0, 0, 0 }, - { "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq, 0, 0, 0 }, - { "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne, 0, 0, 0 }, - { "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt, 0, 0, 0 }, - { "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge, 0, 0, 0 }, - { "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bltu, 0, 0, 0 }, - { "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bgeu, 0, 0, 0 }, - { "lb", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "lh", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "lw", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "lbu", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "lhu", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "sb", rv_codec_s, rv_fmt_rs2_offset_rs1, NULL, 0, 0, 0 }, - { "sh", rv_codec_s, rv_fmt_rs2_offset_rs1, NULL, 0, 0, 0 }, - { "sw", rv_codec_s, rv_fmt_rs2_offset_rs1, NULL, 0, 0, 0 }, - { "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi, 0, 0, 0 }, - { "slti", rv_codec_i, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu, 0, 0, 0 }, - { "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori, 0, 0, 0 }, - { "ori", rv_codec_i, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "andi", rv_codec_i, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "add", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub, 0, 0, 0 }, - { "sll", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt, 0, 0, 0 }, - { "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu, 0, 0, 0 }, - { "xor", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "srl", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sra", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "or", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "and", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "fence", rv_codec_r_f, rv_fmt_pred_succ, NULL, 0, 0, 0 }, - { "fence.i", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "lwu", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "ld", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "sd", rv_codec_s, rv_fmt_rs2_offset_rs1, NULL, 0, 0, 0 }, - { "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw, 0, 0, 0 }, - { "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "addw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw, 0, 0, 0 }, - { "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "ldu", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "lq", rv_codec_i, rv_fmt_rd_offset_rs1, NULL, 0, 0, 0 }, - { "sq", rv_codec_s, rv_fmt_rs2_offset_rs1, NULL, 0, 0, 0 }, - { "addid", rv_codec_i, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "addd", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "subd", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "slld", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "srld", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "srad", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mul", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mulh", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mulhsu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mulhu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "div", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "divu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "rem", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "remu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mulw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "divw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "remw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "muld", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "divd", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "divud", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "remd", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "remud", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1, NULL, 0, 0, 0 }, - { "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1, NULL, 0, 0, 0 }, - { "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1, NULL, 0, 0, 0 }, - { "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "ecall", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "ebreak", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "uret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "sret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "hret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "mret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "dret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "sfence.vm", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2, NULL, 0, 0, 0 }, - { "wfi", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrw, 0, 0, 0 }, - { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrs, 0, 0, 0 }, - { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1, NULL, 0, 0, 0 }, - { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, rvcp_csrrwi, 0, 0, 0 }, - { "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, NULL, 0, 0, 0 }, - { "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm, NULL, 0, 0, 0 }, - { "flw", rv_codec_i, rv_fmt_frd_offset_rs1, NULL, 0, 0, 0 }, - { "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1, NULL, 0, 0, 0 }, - { "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s, 0, 0, 0 }, - { "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s, 0, 0, 0= }, - { "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s, 0, 0, 0= }, - { "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fclass.s", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fld", rv_codec_i, rv_fmt_frd_offset_rs1, NULL, 0, 0, 0 }, - { "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1, NULL, 0, 0, 0 }, - { "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d, 0, 0, 0 }, - { "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d, 0, 0, 0= }, - { "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d, 0, 0, 0= }, - { "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fclass.d", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, - { "flq", rv_codec_i, rv_fmt_frd_offset_rs1, NULL, 0, 0, 0 }, - { "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1, NULL, 0, 0, 0 }, - { "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0, = 0 }, - { "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3, NULL, 0, 0,= 0 }, - { "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q, 0, 0, 0 }, - { "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q, 0, 0, 0= }, - { "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q, 0, 0, 0= }, - { "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fclass.q", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1, NULL, 0, 0, 0 }, - { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, + { "illegal", rv_codec_illegal, rv_fmt_none }, + { "lui", rv_codec_u, rv_fmt_rd_uimm }, + { "auipc", rv_codec_u, rv_fmt_rd_uoffset }, + { "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal }, + { "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr }, + { "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq }, + { "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne }, + { "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt }, + { "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge }, + { "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bltu }, + { "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bgeu }, + { "lb", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "lh", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "lw", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "lbu", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "lhu", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "sb", rv_codec_s, rv_fmt_rs2_offset_rs1 }, + { "sh", rv_codec_s, rv_fmt_rs2_offset_rs1 }, + { "sw", rv_codec_s, rv_fmt_rs2_offset_rs1 }, + { "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi }, + { "slti", rv_codec_i, rv_fmt_rd_rs1_imm }, + { "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu }, + { "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori }, + { "ori", rv_codec_i, rv_fmt_rd_rs1_imm }, + { "andi", rv_codec_i, rv_fmt_rd_rs1_imm }, + { "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub }, + { "sll", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt }, + { "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu }, + { "xor", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "srl", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sra", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "or", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "and", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "fence", rv_codec_r_f, rv_fmt_pred_succ }, + { "fence.i", rv_codec_none, rv_fmt_none }, + { "lwu", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "ld", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "sd", rv_codec_s, rv_fmt_rs2_offset_rs1 }, + { "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw }, + { "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, + { "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, + { "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, + { "addw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw }, + { "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "ldu", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "lq", rv_codec_i, rv_fmt_rd_offset_rs1 }, + { "sq", rv_codec_s, rv_fmt_rs2_offset_rs1 }, + { "addid", rv_codec_i, rv_fmt_rd_rs1_imm }, + { "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, + { "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, + { "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, + { "addd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "subd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "slld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "srld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "srad", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mul", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mulh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mulhsu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mulhu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "div", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "divu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "rem", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "remu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mulw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "divw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "remw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "muld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "divd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "divud", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "remd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "remud", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, + { "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, + { "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, + { "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "ecall", rv_codec_none, rv_fmt_none }, + { "ebreak", rv_codec_none, rv_fmt_none }, + { "uret", rv_codec_none, rv_fmt_none }, + { "sret", rv_codec_none, rv_fmt_none }, + { "hret", rv_codec_none, rv_fmt_none }, + { "mret", rv_codec_none, rv_fmt_none }, + { "dret", rv_codec_none, rv_fmt_none }, + { "sfence.vm", rv_codec_r, rv_fmt_rs1 }, + { "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2 }, + { "wfi", rv_codec_none, rv_fmt_none }, + { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrw }, + { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrs }, + { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, + { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, rvcp_csrrwi }, + { "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, + { "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, + { "flw", rv_codec_i, rv_fmt_frd_offset_rs1 }, + { "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1 }, + { "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s }, + { "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s }, + { "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s }, + { "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1 }, + { "fclass.s", rv_codec_r, rv_fmt_rd_frs1 }, + { "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1 }, + { "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fld", rv_codec_i, rv_fmt_frd_offset_rs1 }, + { "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1 }, + { "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d }, + { "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d }, + { "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d }, + { "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fclass.d", rv_codec_r, rv_fmt_rd_frs1 }, + { "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1 }, + { "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1 }, + { "flq", rv_codec_i, rv_fmt_frd_offset_rs1 }, + { "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1 }, + { "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, + { "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, + { "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q }, + { "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q }, + { "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q }, + { "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fclass.q", rv_codec_r, rv_fmt_rd_frs1 }, + { "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, + { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, + { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_addi, rv_op_addi, rvcd_imm_nz }, { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, @@ -1970,696 +1970,696 @@ static const rv_opcode_data rvi_opcode_data[] =3D= { { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_= lq }, { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, 0, 0, rv_op_sq }, - { "nop", rv_codec_i, rv_fmt_none, NULL, 0, 0, 0 }, - { "mv", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "not", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "neg", rv_codec_r, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "negw", rv_codec_r, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "sext.w", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "seqz", rv_codec_i, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "snez", rv_codec_r, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "sltz", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "sgtz", rv_codec_r, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "fmv.s", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fabs.s", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fneg.s", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fmv.d", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fabs.d", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fneg.d", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fmv.q", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fabs.q", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "fneg.q", rv_codec_r, rv_fmt_frd_frs1, NULL, 0, 0, 0 }, - { "beqz", rv_codec_sb, rv_fmt_rs1_offset, NULL, 0, 0, 0 }, - { "bnez", rv_codec_sb, rv_fmt_rs1_offset, NULL, 0, 0, 0 }, - { "blez", rv_codec_sb, rv_fmt_rs2_offset, NULL, 0, 0, 0 }, - { "bgez", rv_codec_sb, rv_fmt_rs1_offset, NULL, 0, 0, 0 }, - { "bltz", rv_codec_sb, rv_fmt_rs1_offset, NULL, 0, 0, 0 }, - { "bgtz", rv_codec_sb, rv_fmt_rs2_offset, NULL, 0, 0, 0 }, - { "ble", rv_codec_sb, rv_fmt_rs2_rs1_offset, NULL, 0, 0, 0 }, - { "bleu", rv_codec_sb, rv_fmt_rs2_rs1_offset, NULL, 0, 0, 0 }, - { "bgt", rv_codec_sb, rv_fmt_rs2_rs1_offset, NULL, 0, 0, 0 }, - { "bgtu", rv_codec_sb, rv_fmt_rs2_rs1_offset, NULL, 0, 0, 0 }, - { "j", rv_codec_uj, rv_fmt_offset, NULL, 0, 0, 0 }, - { "ret", rv_codec_i, rv_fmt_none, NULL, 0, 0, 0 }, - { "jr", rv_codec_i, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "rdcycle", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "rdtime", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "rdinstret", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "rdcycleh", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "rdtimeh", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "rdinstreth", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "frcsr", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "frrm", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "frflags", rv_codec_i_csr, rv_fmt_rd, NULL, 0, 0, 0 }, - { "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm, NULL, 0, 0, 0 }, - { "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm, NULL, 0, 0, 0 }, - { "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "clz", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "ctz", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "cpop", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "sext.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "sext.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "orn", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "andn", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "rol", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "ror", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "min", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "minu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "max", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "clzw", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "ctzw", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "cpopw", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "rev8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "zext.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm, NULL, 0, 0, 0 }, - { "orc.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "bset", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "binv", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "bext", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum, NULL, 0, 0, 0 }, - { "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "aes64im", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha256sig0", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sha256sig1", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sha256sum0", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sha256sum1", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sha512sig0", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sig0h", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sha512sig1h", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "sm3p0", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sm3p1", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "sm4ed", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "sm4ks", rv_codec_k_bs, rv_fmt_rs1_rs2_bs, NULL, 0, 0, 0 }, - { "brev8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "pack", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "packh", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "packw", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "unzip", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "zip", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "xperm8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, - { "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm, NULL, 0, 0, 0 }, - { "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 = }, - { "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 = }, - { "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 = }, - { "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0 = }, - { "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm, NULL, 0, 0, 0= }, - { "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm, NULL, 0, 0, 0 }, - { "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, - { "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, - { "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, - { "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, - { "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, - { "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, - { "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, - { "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, - { "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, - { "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, - { "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm, NULL, 0, 0, 0 }, - { "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1, NULL, 0, 0, 0 }, - { "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, 0, 0, 0 }, - { "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm, NULL, 0, 0, 0 }, - { "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl, NULL, 0, 0, 0 }, - { "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl, NULL, 0, 0, 0 }, - { "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl, NULL, 0, 0, 0 }, - { "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm, NULL, 0, 0, 0 }, - { "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 }, - { "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0= }, - { "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm, NULL, 0, 0, 0 }, - { "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl, NULL, 0, 0, 0 }, - { "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, 0, 0, 0 }, - { "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, 0, 0, 0 }, - { "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm, NULL, 0, 0, 0 }, - { "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vid.v", rv_codec_v_r, rv_fmt_vd_vm, NULL, 0, 0, 0 }, - { "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2, NULL, 0, 0, 0 }, - { "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1, NULL, 0, 0, 0 }, - { "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2, NULL, 0, 0, 0 }, - { "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1, NULL, 0, 0, 0 }, - { "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 = }, - { "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, = 0 }, - { "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 = }, - { "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0= }, - { "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 = }, - { "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli, NULL, 0, 0, 0 }, - { "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli, NULL, 0, 0, 0 }, - { "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.not", rv_codec_zcb_ext, rv_fmt_rd, NULL, 0 }, - { "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2, NULL, 0, 0 }, - { "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst, NULL, 0, 0, 0 }, - { "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst, NULL, 0, 0, 0 }, - { "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst, NULL, 0, 0, 0 }, - { "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst, NULL, 0, 0, 0 }, - { "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst, NULL, 0, 0, 0 }, - { "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist, NULL, 0, 0 }, - { "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist, NULL, 0, 0 }, - { "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist, NULL, 0, 0,= 0 }, - { "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist, NULL, 0, 0= }, - { "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2, NULL, 0, 0, 0 }, - { "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index, NULL, 0 }, - { "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index, NULL, 0 }, - { "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm, NULL, 0, 0, 0 = }, - { "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm, NULL, 0, 0, 0 = }, - { "flh", rv_codec_i, rv_fmt_frd_offset_rs1, NULL, 0, 0, 0 }, - { "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1, NULL, 0, 0, 0 }, - { "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1, NULL, 0, 0, 0 }, - { "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fli.s", rv_codec_fli, rv_fmt_fli, NULL, 0, 0, 0 }, - { "fli.d", rv_codec_fli, rv_fmt_fli, NULL, 0, 0, 0 }, - { "fli.q", rv_codec_fli, rv_fmt_fli, NULL, 0, 0, 0 }, - { "fli.h", rv_codec_fli, rv_fmt_fli, NULL, 0, 0, 0 }, - { "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2, NULL, 0, 0, 0 }, - { "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1, NULL, 0, 0, 0 }, - { "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1, NULL, 0, 0, 0 }, - { "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2, NULL, 0, 0, 0 }, - { "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1, NULL, 0, 0, 0 }, - { "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2, NULL, 0, 0, 0 }, - { "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2, NULL, 0, 0, 0 }, - { "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, - { "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, - { "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vbrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vclmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vclmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vclmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vclmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vclz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vcpop.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vctz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vghsh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vgmul.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm, NULL, 0, 0, 0 }, - { "vrol.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vrol.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vror.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vror.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, - { "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1, NULL, 0, 0, 0 }, - { "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm, NULL, 0, 0, 0 }, - { "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2, NULL, 0, 0, 0 }, - { "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm, NULL, 0, 0, 0 }, - { "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm, NULL, 0, 0, 0 }, - { "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm, NULL, 0, 0, 0 }, - { "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "mop.r.0", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.1", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.2", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.3", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.4", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.5", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.6", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.7", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.8", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.9", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.10", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.11", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.12", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.13", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.14", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.15", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.16", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.17", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.18", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.19", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.20", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.21", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.22", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.23", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.24", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.25", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.26", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.27", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.28", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.29", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.30", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.r.31", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0 }, - { "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.3", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.4", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.5", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.6", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "mop.rr.7", rv_codec_r, rv_fmt_rd_rs1_rs2, NULL, 0, 0, 0 }, - { "c.mop.1", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.3", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.5", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.7", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.9", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.11", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.13", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "c.mop.15", rv_codec_ci_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "wrs.sto", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "wrs.nto", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, - { "lpad", rv_codec_lp, rv_fmt_imm, NULL, 0, 0, 0 }, - { "sspush", rv_codec_r, rv_fmt_rs2, NULL, 0, 0, 0 }, - { "sspopchk", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "ssrdp", rv_codec_r, rv_fmt_rd, NULL, 0, 0, 0 }, - { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, - { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 }, + { "nop", rv_codec_i, rv_fmt_none }, + { "mv", rv_codec_i, rv_fmt_rd_rs1 }, + { "not", rv_codec_i, rv_fmt_rd_rs1 }, + { "neg", rv_codec_r, rv_fmt_rd_rs2 }, + { "negw", rv_codec_r, rv_fmt_rd_rs2 }, + { "sext.w", rv_codec_i, rv_fmt_rd_rs1 }, + { "seqz", rv_codec_i, rv_fmt_rd_rs1 }, + { "snez", rv_codec_r, rv_fmt_rd_rs2 }, + { "sltz", rv_codec_r, rv_fmt_rd_rs1 }, + { "sgtz", rv_codec_r, rv_fmt_rd_rs2 }, + { "fmv.s", rv_codec_r, rv_fmt_frd_frs1 }, + { "fabs.s", rv_codec_r, rv_fmt_frd_frs1 }, + { "fneg.s", rv_codec_r, rv_fmt_frd_frs1 }, + { "fmv.d", rv_codec_r, rv_fmt_frd_frs1 }, + { "fabs.d", rv_codec_r, rv_fmt_frd_frs1 }, + { "fneg.d", rv_codec_r, rv_fmt_frd_frs1 }, + { "fmv.q", rv_codec_r, rv_fmt_frd_frs1 }, + { "fabs.q", rv_codec_r, rv_fmt_frd_frs1 }, + { "fneg.q", rv_codec_r, rv_fmt_frd_frs1 }, + { "beqz", rv_codec_sb, rv_fmt_rs1_offset }, + { "bnez", rv_codec_sb, rv_fmt_rs1_offset }, + { "blez", rv_codec_sb, rv_fmt_rs2_offset }, + { "bgez", rv_codec_sb, rv_fmt_rs1_offset }, + { "bltz", rv_codec_sb, rv_fmt_rs1_offset }, + { "bgtz", rv_codec_sb, rv_fmt_rs2_offset }, + { "ble", rv_codec_sb, rv_fmt_rs2_rs1_offset }, + { "bleu", rv_codec_sb, rv_fmt_rs2_rs1_offset }, + { "bgt", rv_codec_sb, rv_fmt_rs2_rs1_offset }, + { "bgtu", rv_codec_sb, rv_fmt_rs2_rs1_offset }, + { "j", rv_codec_uj, rv_fmt_offset }, + { "ret", rv_codec_i, rv_fmt_none }, + { "jr", rv_codec_i, rv_fmt_rs1 }, + { "rdcycle", rv_codec_i_csr, rv_fmt_rd }, + { "rdtime", rv_codec_i_csr, rv_fmt_rd }, + { "rdinstret", rv_codec_i_csr, rv_fmt_rd }, + { "rdcycleh", rv_codec_i_csr, rv_fmt_rd }, + { "rdtimeh", rv_codec_i_csr, rv_fmt_rd }, + { "rdinstreth", rv_codec_i_csr, rv_fmt_rd }, + { "frcsr", rv_codec_i_csr, rv_fmt_rd }, + { "frrm", rv_codec_i_csr, rv_fmt_rd }, + { "frflags", rv_codec_i_csr, rv_fmt_rd }, + { "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1 }, + { "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1 }, + { "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1 }, + { "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm }, + { "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm }, + { "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, + { "clz", rv_codec_r, rv_fmt_rd_rs1 }, + { "ctz", rv_codec_r, rv_fmt_rd_rs1 }, + { "cpop", rv_codec_r, rv_fmt_rd_rs1 }, + { "sext.h", rv_codec_r, rv_fmt_rd_rs1 }, + { "sext.b", rv_codec_r, rv_fmt_rd_rs1 }, + { "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "orn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "andn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "rol", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "ror", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "min", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "minu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "max", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "clzw", rv_codec_r, rv_fmt_rd_rs1 }, + { "ctzw", rv_codec_r, rv_fmt_rd_rs1 }, + { "cpopw", rv_codec_r, rv_fmt_rd_rs1 }, + { "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, + { "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "rev8", rv_codec_r, rv_fmt_rd_rs1 }, + { "zext.h", rv_codec_r, rv_fmt_rd_rs1 }, + { "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, + { "orc.b", rv_codec_r, rv_fmt_rd_rs1 }, + { "bset", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "binv", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "bext", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum }, + { "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "aes64im", rv_codec_r, rv_fmt_rd_rs1 }, + { "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha256sig0", rv_codec_r, rv_fmt_rd_rs1 }, + { "sha256sig1", rv_codec_r, rv_fmt_rd_rs1 }, + { "sha256sum0", rv_codec_r, rv_fmt_rd_rs1 }, + { "sha256sum1", rv_codec_r, rv_fmt_rd_rs1 }, + { "sha512sig0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sig0h", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sha512sig1h", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "sm3p0", rv_codec_r, rv_fmt_rd_rs1 }, + { "sm3p1", rv_codec_r, rv_fmt_rd_rs1 }, + { "sm4ed", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "sm4ks", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, + { "brev8", rv_codec_r, rv_fmt_rd_rs1 }, + { "pack", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "packh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "packw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "unzip", rv_codec_r, rv_fmt_rd_rs1 }, + { "zip", rv_codec_r, rv_fmt_rd_rs1 }, + { "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "xperm8", rv_codec_r, rv_fmt_rd_rs1 }, + { "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, + { "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, + { "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, + { "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, + { "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, + { "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, + { "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, + { "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, + { "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, + { "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, + { "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, + { "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, + { "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, + { "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, + { "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1 }, + { "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1 }, + { "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm }, + { "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, + { "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, + { "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, + { "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, + { "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, + { "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl }, + { "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1 }, + { "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm }, + { "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm }, + { "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vid.v", rv_codec_v_r, rv_fmt_vd_vm }, + { "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2 }, + { "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1 }, + { "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2 }, + { "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1 }, + { "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli }, + { "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli }, + { "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.not", rv_codec_zcb_ext, rv_fmt_rd }, + { "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2 }, + { "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst }, + { "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, + { "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, + { "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst }, + { "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, + { "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist }, + { "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, + { "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, + { "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, + { "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2 }, + { "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2 }, + { "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index }, + { "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index }, + { "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, + { "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, + { "flh", rv_codec_i, rv_fmt_frd_offset_rs1 }, + { "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1 }, + { "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1 }, + { "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1 }, + { "fli.s", rv_codec_fli, rv_fmt_fli }, + { "fli.d", rv_codec_fli, rv_fmt_fli }, + { "fli.q", rv_codec_fli, rv_fmt_fli }, + { "fli.h", rv_codec_fli, rv_fmt_fli }, + { "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2 }, + { "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, + { "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, + { "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1 }, + { "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2 }, + { "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1 }, + { "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2 }, + { "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2 }, + { "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, + { "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, + { "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vbrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vclmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vclmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vclmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vclmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vclz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vcpop.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vctz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vghsh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vgmul.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, + { "vrol.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vrol.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vror.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vror.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm }, + { "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, + { "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, + { "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, + { "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, + { "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, + { "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, + { "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, + { "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "mop.r.0", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.1", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.2", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.3", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.4", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.5", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.6", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.7", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.8", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.9", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.10", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.11", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.12", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.13", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.14", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.15", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.16", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.17", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.18", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.19", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.20", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.21", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.22", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.23", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.24", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.25", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.26", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.27", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.28", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.29", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.30", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.r.31", rv_codec_r, rv_fmt_rd_rs1 }, + { "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.3", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.4", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.5", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.6", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "mop.rr.7", rv_codec_r, rv_fmt_rd_rs1_rs2 }, + { "c.mop.1", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.3", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.5", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.7", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.9", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.11", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.13", rv_codec_ci_none, rv_fmt_none }, + { "c.mop.15", rv_codec_ci_none, rv_fmt_none }, + { "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "wrs.sto", rv_codec_none, rv_fmt_none }, + { "wrs.nto", rv_codec_none, rv_fmt_none }, + { "lpad", rv_codec_lp, rv_fmt_imm }, + { "sspush", rv_codec_r, rv_fmt_rs2 }, + { "sspopchk", rv_codec_r, rv_fmt_rs1 }, + { "ssrdp", rv_codec_r, rv_fmt_rd }, + { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, + { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, NULL, rv_op_sspush, rv_op_sspush, 0 }, { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, NULL, rv_op_sspopchk, rv_op_sspopchk, 0 }, - { "cbo.inval", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "cbo.clean", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "cbo.flush", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "cbo.zero", rv_codec_r, rv_fmt_rs1, NULL, 0, 0, 0 }, - { "mnret", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 }, + { "cbo.inval", rv_codec_r, rv_fmt_rs1 }, + { "cbo.clean", rv_codec_r, rv_fmt_rs1 }, + { "cbo.flush", rv_codec_r, rv_fmt_rs1 }, + { "cbo.zero", rv_codec_r, rv_fmt_rs1 }, + { "mnret", rv_codec_none, rv_fmt_none }, }; =20 /* CSR names */ --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315347; cv=none; d=zohomail.com; s=zohoarc; b=dQ/g9fykix7rfAeIH/4kv0Z4xo7uBrCBDXB9LeYlBLtCzoJxQZeRaSpe6GMy+S9tanagt7bCrEMrO17dimKi1xAszyhy0XfPEzJNlos2oo9vMPJTLNykW7YnYyL+Lnga0iDJeojJcnWVKnsZXABMKVF3pzO22lLc3yUpZt0LLh8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315347; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=b4B0whQLU8Fqrs8mhfR5RJRxBochR2jShENdUKhhET4=; b=cUWK3uTwJNUfPIh81/iy+AzbFhu2O0h83wW3/GMikceDtOeCB3AjNBa5t/hNuUFXCP1LfZF+szEJ0drS9h8s5szFBCsTALeAq0QmFzQLg+Z1/eJU1du2baul6eZFfCqg1rsWwCXLctRWGv/ItPGK3I9APyz/kWEkQqW3/DcazW4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315347541173.28437287053532; Sun, 9 Aug 2026 15:42:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7n-0000pX-RN; Sun, 09 Aug 2026 18:36:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7m-0000p6-Ha for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:10 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7l-0007MM-3o for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:10 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-84e3007a2b7so1141862b3a.0 for ; Sun, 09 Aug 2026 15:36:08 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314968; x=1786919768; darn=nongnu.org; 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:content-type; bh=b4B0whQLU8Fqrs8mhfR5RJRxBochR2jShENdUKhhET4=; b=poQJxkSRt2Eb3uoQcgkEswF/y6eDYkm3CwpMdQn/G07O0ls0yFgch9EM6vTQXyiETR w9AX7Mx1X+2235NrjE/enj3qAMeJSSKV2xwD4EyKuTt90wpzCktt+a0UZT3kBAJ58rPK IDhC9CeMwtpLTdUx2DwELHB3QD196zczeAM+tSRXfzymzZIDnoVsdcxz/Pfrqm+Ug9yL YrNQ8B10eix292nfhAngsdSM1IcB09lGPqUp5a7/lblRqAGhPw69W3fzERiC8qgAuo5T 7DxFrw2Hxi6dX/Nk3ZKPlUqzXeyUKdS8/6sdowHbENrsTg7u/gKq4ZZLy2qBkDd7IYM3 Dh4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314968; x=1786919768; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=b4B0whQLU8Fqrs8mhfR5RJRxBochR2jShENdUKhhET4=; b=jWkxhGtw7605hmxdA/rWFdAaKhSmc43hGw/QLRRSjKKITrGMWBBNJZJz+VQa7dBkF8 IQxXMWLJKFcxIAOmfYkVRTbtgsYb0OmBuaiu4JnSlxWFxLrXwCBpoqfoY43zmC57j08B rCuaingHlb6XFMcX7F/5uCJghuGb2DM0Yg+NCod6ZvpFDU99B3SNNTOwX5cN3c84Xnd6 ow3+mAzYnHiBsXhxEGol5oAAn+BWlQU4z1Dl34xsC4z+RwM8YbaYRfQST+SWTn1IqfHo D8C81Aivf762bect9dB6CC9YD6yyel2H7UWzt1toNOe7J1mpWiqnsjPWjJYQ46AxCp7u 8agw== X-Gm-Message-State: AOJu0Yz/5Vf+nb3D7+YZXp3I3u/28eH+b8jG6XxluA7auW93/vTXfN63 JwkGIRu2KCWGCQVIWwRT2NOzm32GE9ZmX3Jgho6VKsr5qFEUEXqEK4s2c1qAnwWsNXSsEiG6DQG UWWIg X-Gm-Gg: AR+sD13plsgXME7KcEv1Sb6i9cy6NqA7oJs8Si/82fXA/JXBajw1OQN0YoGc3fLYfZY bHLPbycvpe1u5OkJkX4Jftx/gbGSKjNe5frNvHMlY/ZWwN98DOucKGUHnwxCzQ4IitftuD6orXZ m8LG1NnH+tIx+cqFN0MuKGKrnQAkFgIInCGyShLJ8NJHbaSuQx2iMHDmoQLCnR6xPLiWvcg97f3 EIfA2GXg/D7HdVLBXwJ1r4DuQQyiIQ6V0Ko8KDBK85zlXsefFy2dPUvBLUCfrAycztHQgkn/KY6 8pi6EH/a3zqRgeCj+ZBSLnLJuxU9zAbwzhA0iIQ7729Wf03o0bvpSd9wULZvk/6ViW+9O/7cq9S 3uwXE+c2qO6Rvqbq5cIBf8ktgJiegIReJ/5F3yDwz6vXPzT/aUQeYIm2C3qTcCiZWeop3RcdzWC IWCU3athhYO1DVz7Wqp5tjVSX3P9K55+HwJVzfjgeCZnU/EsiVYOlBa6R5KubcH4riW2QOSN9a3 3ddln2BlXtu/5OTX+kr X-Received: by 2002:a05:6a00:244a:b0:845:c8f9:6ce0 with SMTP id d2e1a72fcca58-84f696a1628mr13617845b3a.21.1786314967694; Sun, 09 Aug 2026 15:36:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 16/56] disas/riscv: Drop useless const in structures Date: Sun, 9 Aug 2026 15:35:05 -0700 Message-ID: <20260809223545.730664-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315348260158500 Content-Type: text/plain; charset="utf-8" Individual fields should not be const, only full structures. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index eabe193b4f..3325b7b4ef 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -174,19 +174,19 @@ typedef enum { /* structures */ =20 typedef struct { - const int op; + int op; const rvc_constraint *constraints; } rv_comp_data; =20 typedef struct { - const char * const name; - const rv_codec codec; - const char * const format; + const char *name; + rv_codec codec; + const char *format; const rv_comp_data *pseudo; - const short decomp_rv32; - const short decomp_rv64; - const short decomp_rv128; - const short decomp_data; + short decomp_rv32; + short decomp_rv64; + short decomp_rv128; + short decomp_data; } rv_opcode_data; =20 typedef struct { --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315299; cv=none; d=zohomail.com; s=zohoarc; b=OnZb6VSn38LAASSmqvONRo9qxqWOND4v9INyxV2J5LkaPsrXcXk8tspeEy9zgGlEIv1v/VB50doyGWXy8TiYQIKPCtJFVG78RS1lLwGpSymPlF6I6fzLlCtHrmfiyenqBZYEVO38tftHTyKub1DADTh1/Y0+o+/QHTUg8DpsdN8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315299; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FhxLDO3O9RIWT94V76RFafGB0Fmi5VYVrOZhU1ZVb60=; b=I0g6PsqqM/bpz/5jIHRzyfom1H6q1fTB3boGaLjXERynZ8wRuDpwOxjEPsaCgdVH9yT/FgB8ce/rH2KAvmnoDqa0plRkE72n2vjUnBMV8fk5TVfZ3Sne2nypKqPt7GSOLdX7FfQbsRKRnA/k7ABIIry85xv7pSha5ZESXvfoYug= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17863152991491004.2229822771286; Sun, 9 Aug 2026 15:41:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7p-0000rN-Lo; Sun, 09 Aug 2026 18:36:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7n-0000pT-Oj for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:11 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7l-0007Mp-Ui for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:11 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-cb5a6aa8760so607901a12.1 for ; Sun, 09 Aug 2026 15:36:09 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314969; x=1786919769; darn=nongnu.org; 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:content-type; bh=FhxLDO3O9RIWT94V76RFafGB0Fmi5VYVrOZhU1ZVb60=; b=LpOUoh4WOgWDzJrl08C6AKMDjEzcBX11+W4iWSvyXiMe/ak5pHcWRhE5mZOh0wrjR9 xhYNaCCDTQoMA79GQjzgNxE9td9rVoP2nG9d+q+1AZ5NxpvTVJjyJWfBtq3pnoAT8d4Y 6b0Fs1xKyAGUbycLEVAQ+/I4XT7M3ZvR+Q8mEdqsiYXjqWWme/s2+Y6Ce2K6N6B8fQ1q 2SxEoW10J4RvWCTUbOifoZMnV4rLdXITqx8RkVgvzsmZcA9CLglpye3nXLJUNmQ1wQkV vjqPw9dgxHpXQLMVfgUSwbumFoA/k2mpM0/UQuUb9nb6VdHawj3SvIlTZx403AjdsYUM uzrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314969; x=1786919769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FhxLDO3O9RIWT94V76RFafGB0Fmi5VYVrOZhU1ZVb60=; b=OMAyEfUgNGUHeaOsanxaQj+UafXTLJ09QMwRlUk2cMl5hBO+ItL0SVE2KGkeGkfZi/ oSDqUXYc447uw+Ukv1Feh7GvqWf42jRtKbvIvnCLpngV3kqCbfjrby4vO/TRTusQxZlX Es6On8D60qn1f0nNPI7gtm7qqAPsT2Ms+ipe5CcJpeTxK2iKuy6b8iIIG1B20fUCEN2E LNhxrUJSpeuKF9IicV6ph34XvT/dddGC5RBUnDS0hs6UURIFhX4sRfDLJjM1znHA4QRc GZMy2L6szv6dqhT3oJZeZb4Z/DCwBrwt6VtMhzu0UE/TBgJMOEvaVrP2y1rai2oagr66 PAzg== X-Gm-Message-State: AOJu0YwkJLK1yRq2CoQ72zG77elDyILxfM7LSW04eHFzUxyFzofJGVgQ es6ggE6aiuQL1/gwcH59LP6Ga2fSi+XS+TzNIGDxYVX3vPX2M3D9E1eZsccuhANTzpUA292yz6o uWy7I X-Gm-Gg: AR+sD1343mOQkrL7vuKy4EtiNsIc0SJN/grDG7ONedxptn1ACdASxfptyP0hNPle+Mp z5khjCU8BRsWHKjBExe0hBD4DjwBi8ZmRxtR67j6QIFvZ4UvFGlPCJZSe16IrgJme8dicflGX6E Q5W5gGXUoj5VwHVP1L9XT8qNkbb2KRxwPlwFw5V7NLLr8kvRTMZWToQKqWXuLQd4v++DWm+zeqB pvTZkEvEqUJEVfwPu8uMryTSByu9UBjryJRJ6a+eht4HTwEQixuedDJfUMvCBIpLwIw12Bhl0w3 CD1lkOESz3Sagn3hQZ4OSo5wD3UO294999yLEilAGrn3GNU9UrCkqDcvS4vPqOzZ/ygWPzpp30u Clw46LY4UdUjISu70F88hazSWXKUD890We2Kh2uwlY6hnTCNS+0QCMyFbhlo3pY0BTo25xYYVDr 4jqdytEaHPsmZouK0uIRWq4LLSOtOXGmu5RmoG/c0ObgWvVIf0+F9QmY+TEaot464wUzPw++ToU 4fmFMiQARSC2g1Z5AXrn2C4ZZ+7rpG+ X-Received: by 2002:a05:6a20:430b:b0:3c3:954d:279a with SMTP id adf61e73a8af0-3cbadd1bc8bmr26752320637.33.1786314968582; Sun, 09 Aug 2026 15:36:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 17/56] disas/riscv: Drop codec from rv_decode Date: Sun, 9 Aug 2026 15:35:06 -0700 Message-ID: <20260809223545.730664-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315300312158500 Content-Type: text/plain; charset="utf-8" This is mostly write-only, only used in one place; other updates are ignored. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 1 - disas/riscv.c | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 3325b7b4ef..31bb0db86c 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -197,7 +197,6 @@ typedef struct { int32_t imm; int32_t imm1; uint16_t op; - uint8_t codec; uint8_t rd; uint8_t rs1; uint8_t rs2; diff --git a/disas/riscv.c b/disas/riscv.c index ec40abb618..9813d75feb 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -4603,8 +4603,9 @@ static void decode_inst_operands(rv_decode *dec, rv_i= sa isa, { rv_inst inst =3D dec->inst; =20 - dec->codec =3D op->codec; - switch (dec->codec) { + switch (op->codec) { + case rv_codec_illegal: + break; case rv_codec_none: dec->rd =3D dec->rs1 =3D dec->rs2 =3D rv_ireg_zero; dec->imm =3D 0; @@ -5369,7 +5370,6 @@ static const rv_opcode_data *decode_inst_lift_pseudo(= rv_decode *dec, if (check_constraints(dec, comp_data->constraints)) { dec->op =3D comp_data->op; op =3D &dec->opcode_data[dec->op]; - dec->codec =3D op->codec; break; } comp_data++; @@ -5407,7 +5407,6 @@ static const rv_opcode_data *decode_inst_decompress(r= v_decode *dec, rv_isa isa, dec->op =3D decomp_op; } op =3D &dec->opcode_data[decomp_op]; - dec->codec =3D op->codec; } return op; } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315460; cv=none; d=zohomail.com; s=zohoarc; b=Ya+jAtsKnkMIfbTNZvP8lt88aGc/g5hazDRf3d1Px7fsLdcGS4jyaUV/GK4ebMuJcHxE/wDHDqE54KPXlStYpKFpx48JbcjqFepiFZ0o6fmASCq2kivoVBzpB/6dtIfGI2X8ljQd2z9kKID3wgH54tNlobQnZmy8MMbT3MelvoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315460; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ei9z8QWYOzgqFZRrP1moVxHgUuQmI4P7MYZL5H76+IQ=; b=ZSYD7hOJwKIRWuxgbd4Qgdp3LMJ2rPuv3gUbhga8VDqGu2B/4Zdvh4eePiNTVzZs3VlzkALSH/AkCxJFt+1vc+sWTHis/ufS8tJEStVFWCNdKCofyLAJh/tgC9X2800mzUa22NX8VdPaCBOfTegGyYZYQs89BbD2jY9iIFF297w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315460673910.9349356777504; Sun, 9 Aug 2026 15:44:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7r-0000sT-LD; Sun, 09 Aug 2026 18:36:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7o-0000qX-UI for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:12 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7n-0007NO-HZ for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:12 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-c9eefcf9175so1082060a12.3 for ; Sun, 09 Aug 2026 15:36:11 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314970; x=1786919770; darn=nongnu.org; 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:content-type; bh=ei9z8QWYOzgqFZRrP1moVxHgUuQmI4P7MYZL5H76+IQ=; b=YoPwlZtVxbkGohA4/AmBgn0qiE9PAn45ZKYkW6YF2ODF6sYXEfHz/BT0QWCwrA0kdV o0meZ2Il6d95mZN1navnuyRZnF6dmxujGMbZBiiaKcrv+BQWl0KDryCocnmBSS58MS2d PwM/idAMjtgMJY1iC+yMd6IbgnpWrB7WaslkEk3IGgkbMiyd230HKIkdRhAozM1K7QLM O/pQ90tkc2zWKLli+TGl0qZFXlTbJFHk7zdvJ+myv4EkP8eTrx7nt35qECwH8mWjR3r6 Ca/oLMz4O1M7JlR3rKwpId7RV2K4J8act6wVg5q+CDYsg4BjnP/WN5Ifh4SzrSW9oAkb VE7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314970; x=1786919770; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ei9z8QWYOzgqFZRrP1moVxHgUuQmI4P7MYZL5H76+IQ=; b=mLvIJmIEEm9hsa+UGrL7jRFfYK89N/v4VpbPmSKz5xwS4LJZMt80PbmZrSyDTq1w/7 GmdGkj9qroFRCuyKlaWCnj8nkQPGJxyReWHinFivA01E56dHz1bhtdLR3mRLeBgWPIoD fjaue+sb+CpKffNFgkRgCc3VT51xi9hRCIAQ1LBJAit2bHJlL6L8rk+kFcbNHDC6QXBu 0F5Bi3wW6CLKKgvNMa0wOdeIGVNk9UvAUGp+Z2MiWS08gmU6Sxreuzk9JqNG6HT8ItSg hgMwiCHwf0Aw8/03nQnKwSCmMOGyozQTMtzQ9qucoKS4k0CFU1SBUwTOFwBnfiaxUZtZ aFQA== X-Gm-Message-State: AOJu0YxNDOXuyFsfSl7aByaTKd2NUjUbAjaTduc7KOmLv0bMQ8aY37lN UxHtL+luH2zM2P/2zGO+8nJkVf94i5m+Z3Qgx3aCLe6iDPHkq7hODxt497IQ5m7qDy429e0Fpdo G+Pk+ X-Gm-Gg: AR+sD12nW5kO0bvX8U7n79I70yZiBUzysYZzGGeAJMUAtefRdAxrhG6K3bUH+4JveEF AMqEvyVTa+yC2PbRCeL6+q5LcrGIF2NFJ64td1DcUvjyiVMhpOOYySkeaqoXsIV9UvCBV+1Sg7/ 65zMLPXEUrfe0unSF5OAD+AwRpFATxGUpWi2vEPN7xQ06jmumTCUUAU1+330gi/qpejaJ6AQpyM iGBk4QBoQEQCzOmqHgoMSjZ6Q/NfHhGS6qU+wNq6CwxyIHxJY+y1DUpGGkghidetKxGlpkiHn4I sTq25Coamo/CifQ6U3EX53ZRh6Rz2UMa6s5FFJuhNA8Bm+D2r9XpFAHYgmGMzGnVMA0JAIAjx7A hMfGygsdkKzsUfzHkaiTwCTYDr6xJ5pMn1D0K81gr/jQc5NB4puwz1KJ/2JqwvQ8vR1s6fHIh18 YB4NzKfctl/NG8mKPWdgeJtRNSrDSjo2o7DhblXHWgb0JIDuHrhKEx31wA1rPaGTW/nw2K4Zc9S UwYFuwQeXdiSDPOX2XW X-Received: by 2002:a05:6a20:d508:b0:3cb:96dd:2477 with SMTP id adf61e73a8af0-3cbc0103ab0mr24661332637.8.1786314970016; Sun, 09 Aug 2026 15:36:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 18/56] disas/riscv: Handle c.addi4spn imm != 0 during decode Date: Sun, 9 Aug 2026 15:35:07 -0700 Message-ID: <20260809223545.730664-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315462754158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 9813d75feb..8a957e6a1e 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1885,7 +1885,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, - rv_op_addi, rv_op_addi, rvcd_imm_nz }, + rv_op_addi, rv_op_addi }, { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, rv_op_fld, 0 }, { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_= lw, @@ -2952,7 +2952,11 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) switch ((inst >> 0) & 0b11) { case 0: switch ((inst >> 13) & 0b111) { - case 0: op =3D rv_op_c_addi4spn; break; + case 0: + if ((inst >> 5) & 0xff) { + op =3D rv_op_c_addi4spn; + } + break; case 1: if (isa =3D=3D rv128) { op =3D rv_op_c_lq; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315483; cv=none; d=zohomail.com; s=zohoarc; b=RsSWtgIvQTjPZIvUDvy/ywp8/LJbYr3dxGwsOyZ7iPTIxzCEnd1SzfIbZrcO7P1/xyLpzjiSPgOty+sOZ+T9QKH8lzBEstlZovHJ1RwV80e1m2JeUr+9ZqBMBdUOTQB+CCbkXwfZ76EYJwN4xZKFm4+gGVWJhn9qPfnuNcMCBMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315483; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=l6unakGYlzTSlPOKHPQMuQDjocKYB9JF76ypQ1cTERk=; b=cNrwsZO1iaStnNFkeslu7xXr0hynBNhmSPnsE9xKxkHjBU2byYYbm44oY2wObIdHTfBvJFUF9lnmP6KDzB27WADqtJ//S5x+OnF6+L/zftDcTVmBdmg4MlxgGFEy9TuThnOyF13axfmjOrEYCZ+RTnbAb1ww8ZQMi3OqMU3EEfI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631548283836.244981102693714; Sun, 9 Aug 2026 15:44:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7r-0000sV-MG; Sun, 09 Aug 2026 18:36:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7q-0000rc-0g for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:14 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7o-0007Nf-HU for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:13 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ce7d2adef4so16958005ad.3 for ; Sun, 09 Aug 2026 15:36:11 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314971; x=1786919771; darn=nongnu.org; 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:content-type; bh=l6unakGYlzTSlPOKHPQMuQDjocKYB9JF76ypQ1cTERk=; b=udeAbo+9HQxmMkf+Jkhbs2VGKAWgvLo8el6mnPJ0NgygUpabVVd5LCm0dqgsFkw6cQ ZMYyf1QP/xcg82pLXuFwHOv910z7ZCaE4EU3V1E6SXknFZHBVGv2JvF0zSArI0OdZ1pv MSx6+QOg5jFH6nBlIjRo1up1tvgtsVqHUkszWNdxlbhCnUbN6hUSIroqPfUOjmbOyN+V 0xDlG5C0PQTfll7zzwFLVh2+6Ns5GQcZjzUqqIB89VFk9yEZ4jzFlN1WW0ClCqJl7A+O 4mDNSwrAG5Me5s3yXbxys25g+vcppBj6iFuCXw6iu79q391f3+YZfHV6RcGN1dS239cF 0VwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314971; x=1786919771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=l6unakGYlzTSlPOKHPQMuQDjocKYB9JF76ypQ1cTERk=; b=B9P3ffr1RvlthzLACUthDSMDKnFQLk9Qtq/6JOM2flj1Ew1l+RDGVf5H3SlKfUVSCS 05Eg0/EOzJt19LKmps2KyroF6bBtfECPuC2oaYgqVIbfjYb9pGPXpdP3W/232TYsmv3F YW2v7357XFXuuKfANPTkHHDjxQ1k7Vf+UQjQPvXdN7CY/c+3EEqroLUEZCNuAHBguCVK c5M29VJKIFMcauWLqMmG4ZH0ZgI8eJSVh95fTidZVnzRCsaKpG3FriP4kqjNJPOFtUdS qS7U6M2fPl1XEB0QqcrgFlgAhSCcw/IUSBCwyzNUs+GkGnPcyhUuOHfnm3QPU+0GwKr+ at2A== X-Gm-Message-State: AOJu0YxcrZuOARPA7proKq9B12Awa9Mu+vLnF0w3M+hcHsiG/k5tVvm4 1/LJwd8mB4aqfmcA4ck7zvfuyrOpgQTKcZNygVlOFUqY9/BkSdfRHscaD96s30nbIdA3BfbtFWH Vch4j X-Gm-Gg: AR+sD133pk501vJ0bLnvi4d8cL/raIib2FwJFYbHPkYoIx/Py6FHwTyIOTtaZ1u9K1U 21p1lPa0r00D2nHuIg0fY5cU2aCMPPzC1vL+B6jrFDhXNY3N/CKUkMCzjFZxZlVlLuyOb7NOCn+ hD5xtFMxc3KOex1dUzSpsRMzQtH42SJKIbOApT+XcNuba2YVzgy6quRzGM6roxObr6amVIkoybD rUn4phiWtGfkxgFQvrsng7ovFyDwG5RqcPKcBloV4ebL31LnVtFuY01HEWzVhHYEZBTG6qG9DyR ouqS9OOYVXoecQPDL6VCS77GAjPqyVIdPlG/jYrvjY9Dhf5WRRh2M8ocOXZelBiOlID4LVrcbM1 WAD44JOwmcdjbQwko/WDfViUMhnJRUoFdsA3roVtcTAWO5DGB/oXIScJ9Poog/znTyqeCTVcY4F V1Gli/Z5lb4jHRL0871Iireh45DBM8TM/O5W66szuZQ556Ru8ckrFvNsOs8q+1xWuxOxE27tMah dPNkJ/mdb0OzRVS1WSY X-Received: by 2002:a05:6a21:6b85:b0:3c3:935a:af2c with SMTP id adf61e73a8af0-3cbc0104349mr20129839637.3.1786314970798; Sun, 09 Aug 2026 15:36:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 19/56] disas/riscv: Simplify c.addi Date: Sun, 9 Aug 2026 15:35:08 -0700 Message-ID: <20260809223545.730664-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315484786158500 Content-Type: text/plain; charset="utf-8" While c.addi with imm =3D=3D 0 and rd =3D=3D 0 is c.nop, other c.addi with imm =3D=3D 0 and rd !=3D 0 are not illegal, but are reserved as HINTs. Go ahead and disassemble as c.addi rather than falling back to invalid. Further, there's no reason to differentiate c.nop, since we have c.addi -> addi -> nop vs c.nop -> addi -> nop via decompress and pseudo translation steps. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 8a957e6a1e..7978ffb378 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -263,7 +263,6 @@ typedef enum { rv_op_c_fsd =3D 231, rv_op_c_sw =3D 232, rv_op_c_fsw =3D 233, - rv_op_c_nop =3D 234, rv_op_c_addi =3D 235, rv_op_c_jal =3D 236, rv_op_c_li =3D 237, @@ -1896,10 +1895,9 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op= _sw, rv_op_sw }, { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0,= 0 }, - { "c.nop", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_addi, rv_op_addi, - rv_op_addi }, + { }, { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_ad= di, - rv_op_addi, rvcd_imm_nz }, + rv_op_addi }, { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal, 0, 0 }, { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_a= ddi, rv_op_addi }, @@ -3010,10 +3008,7 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) case 1: switch ((inst >> 13) & 0b111) { case 0: - switch ((inst >> 2) & 0b11111111111) { - case 0: op =3D rv_op_c_nop; break; - default: op =3D rv_op_c_addi; break; - } + op =3D rv_op_c_addi; /* or unspecified HINT */ break; case 1: if (isa =3D=3D rv32) { --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315326; cv=none; d=zohomail.com; s=zohoarc; b=LZfU6zldF15ftfc6bmONTsMTIlp1042mEVsc26dn4FuSZsgnmrEmacyj59Twwd0GuCL6ORicuSuogWSLLyDIDzoqfy3cGPo9PyF2SI9fGPbnQbQxWPuzWMrh24Q2vZWAX0azYARIDrQm6+R/9eTzZD4HfMahDpWhhpL81ew9tt8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315326; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tL3z2I/3lQcS4k8RYeGp2OXnD1MKRCTjEwtNTtKHQ54=; b=HGbuGmSy8Dct4FFONWRaE0Mdw3P8ilFNjAPdBpz7X8pQm/Xvgb8nvOtUr/M/QDX9uKppVZV45xhdZSyCxqAqbuZ0ei1NuZCu+mmONJuIzj+ERQTcN+ZJDz9iStNEgmPHCzU7WhLtVbhvp8AbQ1KXEn8CK8xeEd5UU4XAgel4tU8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315326094676.4793380065186; Sun, 9 Aug 2026 15:42:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7u-0000v8-NZ; Sun, 09 Aug 2026 18:36:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7r-0000sC-33 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:15 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7p-0007OG-Lh for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:14 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-cbb8b54fcf8so872137a12.0 for ; Sun, 09 Aug 2026 15:36:13 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314972; x=1786919772; darn=nongnu.org; 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:content-type; bh=tL3z2I/3lQcS4k8RYeGp2OXnD1MKRCTjEwtNTtKHQ54=; b=C77Zbp+jjzJwTiUgXFc4C2SDv8rNdnCZNPWaFg7cwOk3I2Lq6LVzP8+9jSnOcuasaw cIdh5oUwpKAhtLWLqKixm02LfI3xz+cDJ3JfDrwx25CxqC5uWAkooPNcYe2H4El9Gbov IUvOSMOh7VxE79QJ0p0oZV3/wLq9k8ueCOYuBQvBOD4hSyR9usnOmHnAHxGD8l+d4djF zxQex1N9Fz6icybfqVlllB5x9jBCpIuJCUbDdjngR8YYEg7UncNdcY02463ZhO1YLJGe jwjrLBur0rM88yUUFQDPBETSWvFTQbpsC7bbvVkUYYTjkkkq2szBIO5dVjhQvZ4Z96U/ LD6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314972; x=1786919772; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tL3z2I/3lQcS4k8RYeGp2OXnD1MKRCTjEwtNTtKHQ54=; b=LKYi07M9FSkQ/XHiEecGfSROqsUG6QElDwBEPNDJvjRgrsjc8xaoIexxY0wIKKOFj0 SrWZoJV1Ypkbmt+roCCYf2XzU5rOI4di1ncCIYIlG3Zc9+q2XMnNojLLxKVgemIc7ie3 XYXfQ5LcZJV+tJZSPbKQiyv8s3M3PNe6IKF4C7JhdabCCmR7w6kamXGXF/8Z6YeDVFGq u2puchxG75T7zz79xAvIyjRGgJleWgvGl3CPpeONpGcDQ3+WKMwd1oGvbLEVa81OTIfx orpLYC/A/2+fsmhqpjuczP5B5DtcdrgtXxt746OeMBbNLUDgjmY7+ImkQ1X8c6dhBBzt TN/Q== X-Gm-Message-State: AOJu0Yw84f4xwNgb05ZvlZ5cViTuaK95uNCUb54+UnVttX8WCnL8rDJt zWh9cLHs4ATqEnrWVPZtliecHlix0KNyKFNrwatJ0dXMwi140LiVGYDI4fKD0lfAzl2OzkASv7F mf7tO X-Gm-Gg: AR+sD106GP5MB8Frd26cvrwlePbJGNyDeOmVgmOB8Nqo+NZ0vh/8kFVOHukw+FaPJA0 5tYWWE/4g5LMbeMPWSdZQpeDWFp+r7Lxa6LWpjQFimcfpvMNc7K5E4ijkPk4PF+OY3ZZavNZjkb xl3i2pnjLGGaKKcw/FKIJI5zxHFjOtPKwIcIo+8p28+Ca2hOF8L3jAd+kWUUD3oe88Kx7MuqeEq YF209UxITQlFLq/1cHmBxc9hGCMdlTDcLu/6E+ZZK5JGHXTH8RJdDxQ3j5VFeaTPAG9CBUY+IUj L9OksyrwT5p2dU2Hdo/6oSwfIXqBSz8VHvwwBOry6AASVxsTiaUOL+QcfGjrpjFHVWF0osF8B9u SIKUIqdZ2CCxaYpkkdqbJsNK/6/4dzWGkWViiRMmxje9R1ZYUulAaAPKCzitHagxLnnqtCjpD2T A+kbAil/JmeQ422/ch5zfTC8HbjsHVAZXfmh0yl/vCsdjATFrAJYoq4Kx5DLAMgCkECMkQQskEw w2a6Fgt0YTXNqxAmr9j X-Received: by 2002:a05:6a21:6191:b0:3bf:e761:6285 with SMTP id adf61e73a8af0-3cb85eac741mr44887102637.29.1786314972120; Sun, 09 Aug 2026 15:36:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 20/56] disas/riscv: Handle c.lui imm != 0 during decode Date: Sun, 9 Aug 2026 15:35:09 -0700 Message-ID: <20260809223545.730664-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315328252158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 7978ffb378..d6fbb3bca6 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1902,9 +1902,9 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_a= ddi, rv_op_addi }, { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, - rv_op_addi, rv_op_addi, rvcd_imm_nz }, + rv_op_addi, rv_op_addi }, { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, NULL, rv_op_lui, rv_op_lui, - rv_op_lui, rvcd_imm_nz }, + rv_op_lui }, { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, rv_op_srli, rv_op_srli, rvcd_imm_nz }, { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, @@ -3032,9 +3032,11 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) break; } } - switch ((inst >> 7) & 0b11111) { - case 2: op =3D rv_op_c_addi16sp; break; - default: op =3D rv_op_c_lui; break; + if (inst & ((1 << 12) | (0x1f << 2))) { + switch ((inst >> 7) & 0b11111) { + case 2: op =3D rv_op_c_addi16sp; break; + default: op =3D rv_op_c_lui; break; + } } break; case 4: --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315272; cv=none; d=zohomail.com; s=zohoarc; b=DceRu5du4Ll40hP5d96hujSkULCj1QcxCupv3SIB/5KhaFyoQwAJGXXwg+5JmdwuAODKUTBxSIsmGiM3XNPeGSalD+J0EuET5ZXucUhMYnZVuHb2l3w+zm5QpRu81kv7iLfVXpARulEQu7Th6r3fmnnhiMl9s4Ut8RGjWRb6RwU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315272; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xm760coKQZa8W43FawVsSYkOP4r8WAQGkftWKLyAgb8=; b=LUKo15oWYZniZaEyp54slZF1yDqqPv6n/5jpNjfK67pwuvtCUAzzkO823Lao6SKyyqU5hMzrg+9MuwPtQfeCAFxLf7H7rcH7VtZ6c6HKznbi1FaWevNSiBr+QHFIOK51HU4/zcRXSmAdIivHqG47lXen1I7cb1mZx4Tt3U+ZbwA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315272970113.81844401479725; Sun, 9 Aug 2026 15:41:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7v-0000vi-Q6; Sun, 09 Aug 2026 18:36:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7s-0000tT-HX for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:16 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7q-0007Op-W6 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:16 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c9fe3c9bd5fso2448418a12.0 for ; Sun, 09 Aug 2026 15:36:14 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314974; x=1786919774; darn=nongnu.org; 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:content-type; bh=xm760coKQZa8W43FawVsSYkOP4r8WAQGkftWKLyAgb8=; b=L937cXbEJn/O2q7yZowb5h8T4Ss8tSRWAPvRt93A+f4QpI392SOACM05N4LpTrWhf8 dssmStKHqQ4z1fXwZayxTyWbJfhxDFXtPkX5EA2a81YnPuCINwEl2XZlmYPXUnSuOc95 wVPjvMNf5yeZLx3UartB0PZb/aQ6d8O+UedV9s66wTHUWW4zSEZBbETf+WwJeSJOUqIm GM8e7vbKv9fA8gKDKl2ly+eqIUmLUfaou2BcQqqek7qP419w0hkAttK2xhk5D3ppkmzz XhH17PkyFucxuptUTxO6WGQ4UeuXcW9DT+E3YAoPu5TZqLgLYCY38CPcZMDDWSIl1qMD UBwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314974; x=1786919774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xm760coKQZa8W43FawVsSYkOP4r8WAQGkftWKLyAgb8=; b=eId5fSgtWTDOGhMke/0os5lZ31Phm5R28icRliTkEnkGK4XXy/0U5qvPk4Mi3owiy8 DRuwQFI0qbmbkYHUnDAiYoBWRVp7rtUyH+99RspeFOTEVE+EnEFLVPyD7AoAjs+bZsLt C6npDm/D+CIpomWWhXcYTZINiteQGaYIoEGbdTi3esQQoXG70qD7EWMHk++f+RJjFtw7 2CZ3Qs3JBfwcoPXX+3kt7w1oR/xprPSNNm1BBCLF2ptAr+0ADKTbxOtXZK+unaLnMDgj PgwUX41aVxUvlfYOCRBswnrqOWpTX2i4saP2g+Zg9ez751yFKdPvnX4SxPPCSb4Gnhbb GpQg== X-Gm-Message-State: AOJu0YxPyU2rMj8xvBSFIJ4Qk2PUWLixWNMLIUM/6Ww6A51Yohjy8xEn lUEcP0XIaPYtT3ufjvoXpf5AMdD5nNyfqx8lOr5ZBXBsldiiOOwcC0bUOoxuSIbcSdojTyj5dp6 vPF+/ X-Gm-Gg: AR+sD11nbL+Ve7RoTDlsq9KEqs7EPnspdkFrDQPhrIU5W/kNFdWF71qxhd6pbNhuAie YIVe6PjR1ASNz1FvgzgyZ4UrcNRxHLhPTuKTTTb/JX/6xv6GE9fLIFehjKL1KpgxnMucc4ZLSs7 CGiT280JtD6OnGTsnPcs34qyNhoXWajrE2GgJk/vwZpKJErdnmjz4eKdjJ/cWeEl0ofoP0cM33I 4f9Z9MOHhBBdqx+um5bv/czvPuKzZ3q2qPYMZQ4EgPBKdd1HVPs0b7+zltR52ohVLM7Z1fRkhRv 0r5GOMSeOv3D0K3lSw2J+DtiLb6Wu2rA0b2TP/qsv91VAW7Fm4rgYggex3q6x4jCwWZOCA5q96G C4MsVsBoUusel/C/QkiMszFkELgU79BkPJWdBibaUP5Cwwit8xRhVR0tFBC4RKHB+cyt09pirTP w8XCjrYUtbBox1wWVy+vZ4vgkw13tElESM+JEHXajH6B8kY05eP0liIvH44LlZ0XKMpOYT3FQGl nu5F/UlZ1xiOfK78QPtc2p6oaD7O+k= X-Received: by 2002:a05:6a20:9398:b0:3bf:8de9:c64e with SMTP id adf61e73a8af0-3cbd373a437mr15050626637.2.1786314973586; Sun, 09 Aug 2026 15:36:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 21/56] disas/riscv: Handle c.{srli,srai} imm during decode Date: Sun, 9 Aug 2026 15:35:10 -0700 Message-ID: <20260809223545.730664-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315274173158500 Content-Type: text/plain; charset="utf-8" Zero shift immediate to c.srli and c.srai are not illegal, but are reserved as HINTs. Go ahead and disassemble as shifts rather than falling back to invalid. On the other hand, shift immediate >=3D 32 with RV32 is reserved for custom extensions, and we need to reject those early so that the extension disassemblers get a look in. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index d6fbb3bca6..a8fbefb9bd 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1906,9 +1906,9 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, NULL, rv_op_lui, rv_op_lui, rv_op_lui }, { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, - rv_op_srli, rv_op_srli, rvcd_imm_nz }, + rv_op_srli, rv_op_srli }, { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, - rv_op_srai, rv_op_srai, rvcd_imm_nz }, + rv_op_srai, rv_op_srai }, { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, rv_op_andi, rv_op_andi }, { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub, @@ -3042,10 +3042,16 @@ static void decode_inst_opcode(rv_decode *dec, rv_i= sa isa) case 4: switch ((inst >> 10) & 0b11) { case 0: - op =3D rv_op_c_srli; + /* For rv32, shamt[5]=3D1 is designated for custom extensi= ons. */ + if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { + op =3D rv_op_c_srli; /* or unspecified HINT */ + } break; case 1: - op =3D rv_op_c_srai; + /* For rv32, shamt[5]=3D1 is designated for custom extensi= ons. */ + if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { + op =3D rv_op_c_srai; /* or unspecified HINT */ + } break; case 2: op =3D rv_op_c_andi; break; case 3: --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315400; cv=none; d=zohomail.com; s=zohoarc; b=DdCMFrelAgxBTwQPkr0iWQ1iSIZ3nkTg17WZfTRmv2iX+FHmVZk7/nOvyr6SxnMgfIRqnfsaVOR9dvoCzZ2+PwdrktsTd8hMJ9Dj7z1FEru+kYNfh6hI9yf1/QF+EuvXYV+jEcqo9vn3YrQyXFWYApj71L8hc1y/qt06pRIIaCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315400; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fdfz9CxjwIJrxebC/Gth0XWSxLeLNjiGdSLqVo06CHY=; b=Nf53P4ZP8xtTK5687wjNiDWfznyVliUVLI7zElYEean5MaLL2KoFJ/SIHkHXqTqF/lO9C7SCBk4e7v9k1KOsTbJPCVKOxOlsyB5rcjVBY1Z5wjgwefY9K7ZPVsj4OjvO1K7G5VYcVJ3N35/Wpsf38VyfJooRgmoRZ4Jf+6M+ylI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315400642726.5107610085296; Sun, 9 Aug 2026 15:43:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7w-0000wE-GI; Sun, 09 Aug 2026 18:36:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7t-0000u4-5y for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:17 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7r-0007PB-Oi for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:16 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2cca0c5799eso11458375ad.0 for ; Sun, 09 Aug 2026 15:36:15 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314974; x=1786919774; darn=nongnu.org; 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:content-type; bh=fdfz9CxjwIJrxebC/Gth0XWSxLeLNjiGdSLqVo06CHY=; b=G5kceu1dCtmeZTvxj5UU5+Ie7abFZkDKAfUjWKzRrJrUtwNXPR3pQWa8hBJAKlJ0ll jI5PdxrVHay4e7FoffLFV6bHmRf826cc1Uw04G1LKtE4BXMUMFWqdSQ02s3r628zuCuK wmpoXFfMR6kEJz2b+DNUuDWXJYSXl4w/pZYFYNhMP2VSUlz0ryyYTMOH4leUSb/glBNm 803tRV9q97E4Pjbq8PskqVnrJUqNZkvhcGFx9yz1O3bJSj4UXinqcKdauz+J+TGD/XpR TfmhdJ7LKM6eKDLggVlPdCIdEa9zVBS2mxjVfLgS0yXtFoqY2yIpflzjt8b+p/Shhdrt Uw4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314974; x=1786919774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fdfz9CxjwIJrxebC/Gth0XWSxLeLNjiGdSLqVo06CHY=; b=HdFYiW2gmDabhPEbJtUedYc8BtM63ndc+GBvYxOaEI42urwJPrHjXAi7pkTCXI/84A K/xyUsJXDt6CRD40OM8GOxPrX2jN6Zr0t7AJZBqBf1rYQ0ueZYdeRtHeL9w70e8DtGFj MMKCYsaykpZEMNd1WyHyfcnm29XT9t68BpwtRRS7EUz+PEy8g01Hpr6WLQXFSC2Iv1Qn dpdL/4sFjjwGScXWASe1miSQjKTC3ElZOtRCR7KIMsNFhdAf2w7DcS+WEhoycXXBCcrU 2zZ8nWvtRrRNUj+Fo8ZtFDlj+02WMgcsyGm8+t+lCS/Ur3u1RJQMjRkm+9Mu7Cxr8Qdj zM0w== X-Gm-Message-State: AOJu0YxcTC4NxAu/Q+7J1rV5RkhfN/hboKYKaP4iSk0YS8EaGhqvrNTR 5FhCkRV777bXPqJwJ5aaqplCjZX+KNoxlo/SmswoiaLlKDn+2qjTaylWcK4QUyrq7oBPNqudxcg ZC4pk X-Gm-Gg: AR+sD12EUVUVdhYlccwxEizsef1XocqAaZe9cma2kLYccaPTtAWQ9Lqwao6nMq2B7FP UQ7fMCjZVxWEzLO/3ehDZOf1vPR/IIPDLIiJQrnHjbtsEJ3TYGrlbaDc5dkGJpTcdaI6mek8Jym f723VT1IZE+287JwuU3ZAlXK5JWKYOpzKjULVq77DuJwh8Guo/UP6TuoVwFrFKbrQtA1Ce2QPAT bFigb98SZVAh4mnHsKmK7lEo9sr73tMK1inxldmruXvRO3YL5LI4J31RArSoYfVIxmbgdxSi5Wo stBWJjqIAqEO2/Pckc1U6FHJjCjJ2udeGq1Bg5utijN5GzavQpHk152ilSl9ODR6eeKp967jf+K o4sizLw2qpEX60lVSYFhMbIOrhSHrla7MqBUDU4uMuOQdT8N+G5R8YfwV+Mc2eDv7iJ/SCG19dQ C8m/z4/SetEj7ONTnxk86b0gRY9/PNfAOTsn502VuCrXJfBQCFJr724JXyxuo8blFvR/BmzNS+1 0lDZom4h7HsDScntWmA X-Received: by 2002:a05:6a20:4324:b0:3bf:6ac8:8d29 with SMTP id adf61e73a8af0-3cbce8d863fmr14680162637.21.1786314974303; Sun, 09 Aug 2026 15:36:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 22/56] disas/riscv: Handle c.slli imm != 0 during decode Date: Sun, 9 Aug 2026 15:35:11 -0700 Message-ID: <20260809223545.730664-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315402470158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index a8fbefb9bd..77347b557d 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1930,7 +1930,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne, rv_op= _bne, rv_op_bne }, { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, - rv_op_slli, rv_op_slli, rvcd_imm_nz }, + rv_op_slli, rv_op_slli }, { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, rv_op_fld, rv_op_fld }, { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, @@ -3085,7 +3085,9 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa= isa) case 2: switch ((inst >> 13) & 0b111) { case 0: - op =3D rv_op_c_slli; + if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { + op =3D rv_op_c_slli; /* or unspecified HINT */ + } break; case 1: if (isa =3D=3D rv128) { --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315479; cv=none; d=zohomail.com; s=zohoarc; b=ZzVMfUDz92ZbwO3qVM0gdpj8tkh4QPDlF7Zi9PjZN8zzK4NYzFwmNFTF3Eot3EFCxOd5D48bXUhPE3HjHA5TaBgt+Oq2l1BAAimWB8qd81spZratlz9+FvmFeM9cWAdDWAR5MRxXA4DRDntyTZks9hYiCoB3V4TqS0ZACCEpBfU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315479; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nS2rxErkjoDDZNGsv6FDl/aPsWDFlNYooWE1D4/6J7Y=; b=iHaaPGKN5/SmmdiiMkI30ap84w4KAnhppKk/0bnkWvre4TPaBD3kYbXjHOXCMI9NELeRK2ZVOOFVeG3Pp6qKmFI/PdvE8pZdNxDR0II3AhD1WyA7iQw14dzDF465BBEIH8tRrsMXMs+zj1onZK/4YmG9pTVukUlb6w1UrSLnNXI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315479830711.7974905394445; Sun, 9 Aug 2026 15:44:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7y-0000xg-HC; Sun, 09 Aug 2026 18:36:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7v-0000vC-Dx for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:19 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7u-0007Q9-0P for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:19 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-cbb662575d3so542519a12.0 for ; Sun, 09 Aug 2026 15:36:17 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314977; x=1786919777; darn=nongnu.org; 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:content-type; bh=nS2rxErkjoDDZNGsv6FDl/aPsWDFlNYooWE1D4/6J7Y=; b=rCfEM3Fx3WeoqsDluBcPye0c7W/23PCQrbZBjkGGp1H9kuiFv3eOQtJcYd7B/cbv/B ZzIYMCx7DcwxUONKNGI8TeFsPjQ+TLBozCER2jrg0Py0kP1BJWyv3xa6+n2liWqLGMZm P5t9HmmzNDE1h18acXAt2Xan/QXtQHt+c06aigUT8+l14nTkeM8p/OFzgCa2uQQSi5i3 w7nnzSfdoi3iD5u+zkLC6VF89grsCwtvNaloolmPHnIp9inFkZA9oI+rV4BZPe8fKPTk XX2Vp4YI1ywc/tBZI0kVS2eJRAfmsTwu4KMd/eG8qvCfEF5Er+KWID30TSx4t4OMGLI7 YllQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314977; x=1786919777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=nS2rxErkjoDDZNGsv6FDl/aPsWDFlNYooWE1D4/6J7Y=; b=TNcgmjIj1Q7WJv0Nu0KiniA0+Fk7pM4+sAI040MZ44rhkn2rMjpBvWOx0JQ4CQS352 ZXqFv53wsQINQgYXzWtaydEMHHkSdimCz3latnmKb0ffqGMmmC14F+VGGQTfvBiGXFim An9EzH7ChssDK2D8vClNKN9V43fdQfrCZz8+VXhwZlqhBDZOlaAwi5XBPYdyg6JgUG9s fFxOFduhf5em5+bmWE6bGZzF2i92B6MMCSOawuUu0vjEquNOIWsr6u2IJtwhaZTLcFha csbvp/YSAFHHXBJnLeqnBCSk5gb8JHO/ZN1XxuUKXssaj+82eDodbvf3Oe3JT9WM8Lml BEDw== X-Gm-Message-State: AOJu0YwiVQImrPBjl5CZ1vIUPGLAJdmFHYpw0CNNfUU1+80CUSTkBW7J 5ZTUZP9LU2HmHXPNZNjLHygaWDljuX1JxtfyGLHVxuGShOLszXhnjOWF1sAU7MK4qT527bJdmSN tAJ91 X-Gm-Gg: AR+sD10lkAnn2jPd0Mm3JxBrjIpW7gVeKPnvUgnkA6zYGsmNLBm54FK2HowX4m2RzXG jTVG1s3x23QYKqE4BGrq5vjjIsc4ByLMgbCUPmpV1lZ1eGkacEwY7f9TRlfrSyXVHMOoPTjV/ij Z6R1RYUUYUqROXrpeDFry0DkFME9XXz4duXT6WJHS+ikxzzWK4FhYUXkHKVway4i2YI6p7IPi6r MNE19jHEYjb1a+RZgLF5LwKm7FTn2VRa98WFPvDJE/PivvgCmBZTLx6bROFk5f5+W+HPtzRHYMg /Jfi51xv2V2b2lr8yUcv8nTGCYqisOGy+qBDqG+1FoimOAhFylm471qZi9uHH9JL3jzY2XgahoG /uOgpYfHPgkPg56B2WuiQL1eU+DDs5sPDmxyKl/HWlLuwwcdGKERwkVRK4Ou6wJu/Edgbcmlvzj 5c4JIThPBrYBNSag84PGqsHqpuONik9AdWat1VKLTs6FFtMgo9R9xTiD5WZ7ufLOsqIDHESADWk 3sa3USOwy5SMDoP/ZBykX+/SC+0F5M= X-Received: by 2002:a05:6a21:6daa:b0:3c4:3672:ba6 with SMTP id adf61e73a8af0-3cbadc15329mr26485869637.22.1786314976598; Sun, 09 Aug 2026 15:36:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 23/56] disas/riscv: Do not recognize c.{addw,subw} with rv32 Date: Sun, 9 Aug 2026 15:35:12 -0700 Message-ID: <20260809223545.730664-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315480754158500 Content-Type: text/plain; charset="utf-8" These code points are reserved with RV32. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 77347b557d..ddc2f73eae 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -3060,8 +3060,16 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) case 1: op =3D rv_op_c_xor; break; case 2: op =3D rv_op_c_or; break; case 3: op =3D rv_op_c_and; break; - case 4: op =3D rv_op_c_subw; break; - case 5: op =3D rv_op_c_addw; break; + case 4: + if (isa !=3D rv32) { + op =3D rv_op_c_subw; + } + break; + case 5: + if (isa !=3D rv32) { + op =3D rv_op_c_addw; + } + break; case 6: op =3D rv_op_c_mul; break; case 7: switch ((inst >> 2) & 0b111) { --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315009; cv=none; d=zohomail.com; s=zohoarc; b=HsOaV//tb3CmGGnbm2qBtc2fxbUlPoFwtyYBsUg6esP5PJg4BueKz4GQ48GP5zKdM/bRdbe+gPbIQcc2Tc/WYsHb6qaMNsO61aoTIPWKGJQ+bNaTosnJ95nHVWEvmxPfAdFT9189rINVRs2OVqszgN8mwlLIDNc2JfBAEiChJ6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315009; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bhg5X7KgkKtu//M3cNDtYHW3Mp2ktbzWoJF2WF06SXQ=; b=iKEn3c4mzq/yNPVFLo8NX7FAGIyvxpBI0zFUshrZzY4dtwbi6UfZ5+wUswM92TUG880yDVZ6zjZbIw3/mYzUAZDffkjbTDO+t1HhScWfQm71gfuJMAdoq0OJLMMnH8oT+Mx9hlU9AhKitcbkZousqIsyAHDDewk/1hUIGrq6Hpo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631500959450.34255402651684; Sun, 9 Aug 2026 15:36:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC7z-0000y4-0d; Sun, 09 Aug 2026 18:36:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7x-0000xI-B8 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:21 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7v-0007QS-Rt for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:21 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-848761b5897so560494b3a.3 for ; Sun, 09 Aug 2026 15:36:19 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314978; x=1786919778; darn=nongnu.org; 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:content-type; bh=bhg5X7KgkKtu//M3cNDtYHW3Mp2ktbzWoJF2WF06SXQ=; b=rVZv7KlEw2ee2hneNEpO3P7UkwSO3nNEqfM0LrebhAY3+Zrt15hWISJwXpVXHLbKFR VpaMsEYFBgndRcfAKoPt+pIO10MPHVqDpT4G11kqES8wjxFCicAwWhfSCXdn1D9ZXGL3 A6Q4B+16Fwep/qO8Y4BVHek669hbYVd2CChqOidgnX7c4pNkhtrnoExQYPUYcF6ejlem RZqWUvlMK4WTI3IefukJkAO1kyoRtQjWP3O5bbfjUG3JFh60KmVeQtyOKgWN6x/dHNh6 aOQr8lAnmf0BRyng51e2hBkh5DxH3H7aOtnKDoB2M3m2184VGADZFqrmrNf9UQRbokqN B5TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314978; x=1786919778; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=bhg5X7KgkKtu//M3cNDtYHW3Mp2ktbzWoJF2WF06SXQ=; b=HtJiUNffMHZCe6giGU6jmsfpFfGHPFMJuiDToZE1j0FEWRJy8VoyFv+GCJjFCmoJrC NZ6BQWFY8lwmK/KhFV3TtJIq0hVcHrjf/iiEtJ6PbjeSrRhLqnRm8wtf8pNubBKXS9Dt p2go7Gb2gkw8YzhDBNz9/8mcKwdmkGHc2jfoM2iCNws7gtac2t8srftRd5P8CtX/8xZU zce3oiN2rEBa51qgkA3FI+/wsVD/2EkChzOLP/HCaN2mc5O5p7v+mNESReNGViZnEJhn +mDRS5zhpvf0amYdyFG8L6wgNCWxMCLxfawdhnRrmYkPMsiysSvpzTraL+SiNzBtl2kd dNbw== X-Gm-Message-State: AOJu0YygeDrC8sUS26A1W+UwvDAO/tx6/lFtAKOucUliJdY/stAHZwmu oTLoif9nbyzuMrZuRwn0ffSeqLZ3XcLLDZrE8Bl+KQHq6KPEWtnGHXOoadbk90mvhYtbBy3SNl8 Y1w+B X-Gm-Gg: AR+sD13kmmhTosuAMgG17EV7uOolKZEtHzWY95XyEUABOIVV+RSbB3L2F+vscloq5kR X3AP1FjpovfZ6RuMNFb5YU/a1SLZlXdJOn/KWoJ1dMw7a5aF6OpbSAt3j9XbdX65DRM6qouR+m2 HzzaiuiH6Zu/Xj7LgPrTxWYBipNkoaxt8G1n+UwtCa+ZaF8CkXKgj1CXHm+hzD3RtKUgnW6pMdJ MDV4lSQycDvzLwNKoX8r0Qt6NpeXVaP70Hk9u/Ht7GcrpvyWPwCBhb0KyGNSsacIkxATMc3ZbLe BKrOPpqXeXee4ONG/QjPGHb7YYwjOimbNpuZnMnlRAX1kCFmPm/FAUCaUTiwnJ8M2jObHRiN8MV DRzcmpqjqgJG8FgsaMOAHrE1rSEp0c7Qlo7O8QhFVoHTy1Il4x7wBG62VOoAc0U3mklP60GPUbk BwQTcEceO616H+RqkzKMdOJQPbVZX3cRlUhicHBw2jF/4x6TteEqN8BsaAkVizH1xclDy2zf2Ss pMtfzAHfFz5f+035hJR X-Received: by 2002:a05:6a00:194f:b0:847:8971:87bb with SMTP id d2e1a72fcca58-84f2e00ea47mr37958043b3a.21.1786314978447; Sun, 09 Aug 2026 15:36:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 24/56] disas/riscv: Remove rvcd_imm_nz Date: Sun, 9 Aug 2026 15:35:13 -0700 Message-ID: <20260809223545.730664-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315011288158500 Content-Type: text/plain; charset="utf-8" Remove rvcd_imm_nz and rv_opcode_data.decomp_data as unused. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 5 ----- disas/riscv.c | 7 +------ 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 31bb0db86c..3909d73dd0 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -186,7 +186,6 @@ typedef struct { short decomp_rv32; short decomp_rv64; short decomp_rv128; - short decomp_data; } rv_opcode_data; =20 typedef struct { @@ -217,10 +216,6 @@ enum { rv_op_illegal =3D 0 }; =20 -enum { - rvcd_imm_nz =3D 0x1 -}; - /* instruction formats */ =20 #define rv_fmt_none "O\t" diff --git a/disas/riscv.c b/disas/riscv.c index ddc2f73eae..95957506bd 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5417,12 +5417,7 @@ static const rv_opcode_data *decode_inst_decompress(= rv_decode *dec, rv_isa isa, } =20 if (decomp_op !=3D rv_op_illegal) { - if ((op->decomp_data & rvcd_imm_nz) && dec->imm =3D=3D 0) { - dec->opcode_data =3D rvi_opcode_data; - dec->op =3D rv_op_illegal; - } else { - dec->op =3D decomp_op; - } + dec->op =3D decomp_op; op =3D &dec->opcode_data[decomp_op]; } return op; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315395; cv=none; d=zohomail.com; s=zohoarc; b=WChvhU1SGSsXM1yUVJsYo78jcRkIHYRamm6QXXlzCHbm92Z8/pBnkeIBcXhTt92qR04RGAmgsN9xBqrjdcuY2Wqgnb4pifVNPJh3m8vKT2R36hwC5M0LFPU0z3Kbq8r453TvCo7u+atBiJhgsQL2+NR8uqBmfCPDEkNaMKmipGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315395; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bz2XBxP2T92FAyWVzu9j3Rr6m9/D14l5y68QA5xH0+k=; b=DSYQqOAMvLllDz6EscLx0Wj3+OkZhCgTrqmtO+JPXXViQFxRqBpd+YAJNt6S5lI21devIFeEYh67G7ANj6DjAfauHOAx75EQSlxmVL27329osOMBnjyZGX0II+MUBylnzwd/XsC1nnhID790PujvKCOLFS1uXApso6lyQFkObhY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315395371204.8201093108089; Sun, 9 Aug 2026 15:43:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC81-00011c-LF; Sun, 09 Aug 2026 18:36:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7z-0000ye-Vn for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:24 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7x-0007Qu-Ai for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:23 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2d032846c95so15778195ad.1 for ; Sun, 09 Aug 2026 15:36:20 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314980; x=1786919780; darn=nongnu.org; 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:content-type; bh=Bz2XBxP2T92FAyWVzu9j3Rr6m9/D14l5y68QA5xH0+k=; b=SkFp27rCYWd33Bc3FYQd/dlUzQEU3I5N+v79eD+Lz0Is5eT7qnOF7hJBsmI2IykF5e ffzjOFFmwzkxZAnwoef3XMzy1zS+1y9rUQbIN3vQslXpwyFKnvwhGgjkajspRyqlBZvq zs2gfQJXtByRQ5nWGI+vTwRkNCNwaAn+ceppegjDmRPn/fSCce40/d0l1zM0mymBNbcr bhbyZXd6sg0C3qAyZNUH519pCTfmo7bqedh3OkgS8EzWgBOFMn0NZILbMlI0/V25JUxg aziMtoy8wJ7oDLruRfLe6SCuNy+v4o0FzeiErrX/p6QlTfSkDJ6ZcZ56LQbbfYMigumw rblA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314980; x=1786919780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Bz2XBxP2T92FAyWVzu9j3Rr6m9/D14l5y68QA5xH0+k=; b=SD37gHhgpeKCL1tV4O+Sawn8rT+ve9yGsEQD24ELWKc6Y2xd3c7cFf4vD72udG9VE0 kztPBycNfQW0bViTOnbcrWFelxgB8V4K4t26zDhHPUMHlL3e/99z64TLQyycu/Y3ibC5 1fHAV+AZE7azVkSYsHaj791YvqjvO7/uWgTw/Ijmpnj0NRsyFCdfqzwqBJ4Ehx3ttBJ9 dI8yfCSL+u7wke2I3nhFT+RB01waFn5GdKTSZiQz/TzS8NetNQf7mxSoQTVfjCff8Flo +Zp7sNRSlF8VYd2p6ZkBFIDjz9L0JgOUHFNEZm/Tb/NbKrg64KX4XVDYxSRhThfI+B24 nYIw== X-Gm-Message-State: AOJu0Yw8Er/ve6CUjfl9kcUk0HleJwVDSzBfJ/713YtHfiWdrCrYrbhk hBiWVeCl9aGiVx3+OOcQW7Nrvh4foDljyrmKHEMG0GdvCm7Az5XsjIdXF7Ii51N7718hX+cNYY2 c0fJj X-Gm-Gg: AR+sD13KYUud6XuBpQfwCfKfSEAVl1X4rGlDv4egtDNILXc4t8eUpFwk1ZDObd9gNYb J26dzBXec31cqi0hIYOwDgNNHQ+FhsnBqWSZgn8A6tpv3gFcjzQZ6CvsxYFFZILxw+Q50NMx2dh pEDgQ4hl05QVIz2z9/kGYIr3EkKE7iE0SACwdBebo+Cmamu+KDZGeiETFhtdRquCGNNh2eHR23b egXo2bphERoIt/9GMyHPw85qqews9Cc3gMHDmVOCIDZuwf9g6iODYvxcLokUElb+zJMa8+qPxnc JjuUE1r9Ixcx1g1d0HI4Abko60kaGOmiBHWjofdyX/ced5OHDu6o4JeMHyzIuY+W4T6jErf2vWg I9/M+gqkZHkY59dxWWv9LqCGyCdVd3ymXz5fC2mIUqLdqLTBiTbAwxcooJCWxMadM4lztMVA6/0 cGYfOIszYXwg7PyB/K0GUnyKdoTluqrSad5wlsiZvSeY0ZZhKI2H/UOEMRZHxf2cVb0ws6JsSJB 4FZ+GrIZ6y3pMeXY3T5yGL6UpVlLnw= X-Received: by 2002:a05:6a21:3a82:b0:3c3:791e:5e18 with SMTP id adf61e73a8af0-3cb85df09cbmr45496252637.7.1786314979651; Sun, 09 Aug 2026 15:36:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 25/56] disas/riscv: Unify decomp_rv{32,64,128} Date: Sun, 9 Aug 2026 15:35:14 -0700 Message-ID: <20260809223545.730664-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315396435158500 Content-Type: text/plain; charset="utf-8" We now distinguish compressed opcodes by isa during decode. Therefore we don't need 3 copies of decomp_*. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 4 +- disas/riscv.c | 155 ++++++++++++++++---------------------------------- 2 files changed, 51 insertions(+), 108 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 3909d73dd0..900363c603 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -183,9 +183,7 @@ typedef struct { rv_codec codec; const char *format; const rv_comp_data *pseudo; - short decomp_rv32; - short decomp_rv64; - short decomp_rv128; + rv_opcode decomp; } rv_opcode_data; =20 typedef struct { diff --git a/disas/riscv.c b/disas/riscv.c index 95957506bd..2e891f509e 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1883,91 +1883,52 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, - rv_op_addi, rv_op_addi }, - { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, - rv_op_fld, 0 }, - { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, rv_op_= lw, - rv_op_lw }, - { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw, 0, = 0 }, - { "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd, - rv_op_fsd, 0 }, - { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, rv_op= _sw, - rv_op_sw }, - { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw, 0,= 0 }, + { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi= }, + { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld }, + { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw }, + { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw }, + { "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd }, + { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw }, + { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw }, { }, - { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_ad= di, - rv_op_addi }, - { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal, 0, 0 }, - { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, rv_op_a= ddi, - rv_op_addi }, - { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi, - rv_op_addi, rv_op_addi }, - { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, NULL, rv_op_lui, rv_op_lui, - rv_op_lui }, - { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli, - rv_op_srli, rv_op_srli }, - { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai, - rv_op_srai, rv_op_srai }, - { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi, - rv_op_andi, rv_op_andi }, - { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub, rv_op_sub, - rv_op_sub }, - { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor, rv_op_xor, - rv_op_xor }, - { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or, rv_op_or, - rv_op_or }, - { "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_and, rv_op_and, - rv_op_and }, - { "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_subw, rv_op_su= bw, - rv_op_subw }, - { "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_addw, rv_op_ad= dw, - rv_op_addw }, - { "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal, rv_op_jal, - rv_op_jal }, - { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq, rv_op= _beq, - rv_op_beq }, - { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne, rv_op= _bne, - rv_op_bne }, - { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli, - rv_op_slli, rv_op_slli }, - { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld, - rv_op_fld, rv_op_fld }, - { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw, - rv_op_lw, rv_op_lw }, - { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw,= 0, - 0 }, - { "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, - rv_op_jalr, rv_op_jalr }, - { "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, NULL, rv_op_addi, rv_op_a= ddi, - rv_op_addi }, - { "c.ebreak", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_ebreak, - rv_op_ebreak, rv_op_ebreak }, - { "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr, - rv_op_jalr, rv_op_jalr }, - { "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, NULL, rv_op_add, rv_op_add, - rv_op_add }, - { "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= d, - rv_op_fsd, rv_op_fsd }, - { "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw, - rv_op_sw, rv_op_sw }, - { "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= w, 0, - 0 }, - { "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, - rv_op_ld }, - { "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_sd, - rv_op_sd }, - { "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, 0, rv_op_addiw, - rv_op_addiw }, - { "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, NULL, 0, rv_op_ld, - rv_op_ld }, - { "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, NULL, 0, rv_op_s= d, - rv_op_sd }, - { "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_lq }, - { "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, NULL, 0, 0, rv_op_sq = }, - { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, 0, 0, rv_op_= lq }, - { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, 0, 0, - rv_op_sq }, + { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi }, + { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal }, + { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi }, + { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi = }, + { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, NULL, rv_op_lui }, + { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli }, + { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai }, + { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi }, + { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub }, + { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor }, + { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or }, + { "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_and }, + { "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_subw }, + { "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_addw }, + { "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal }, + { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq }, + { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne }, + { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli }, + { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld = }, + { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw }, + { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw = }, + { "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr }, + { "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, NULL, rv_op_addi }, + { "c.ebreak", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_ebreak }, + { "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr }, + { "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, NULL, rv_op_add }, + { "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= d }, + { "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw }, + { "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= w }, + { "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, NULL, rv_op_ld }, + { "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, NULL, rv_op_sd }, + { "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addiw }, + { "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, NULL, rv_op_ld }, + { "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sd }, + { "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, NULL, rv_op_lq }, + { "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, NULL, rv_op_sq }, + { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lq }, + { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sq }, { "nop", rv_codec_i, rv_fmt_none }, { "mv", rv_codec_i, rv_fmt_rd_rs1 }, { "not", rv_codec_i, rv_fmt_rd_rs1 }, @@ -2649,10 +2610,8 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "ssrdp", rv_codec_r, rv_fmt_rd }, { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, NULL, rv_op_sspush, - rv_op_sspush, 0 }, - { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, NULL, rv_op_sspopchk, - rv_op_sspopchk, 0 }, + { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, NULL, rv_op_sspush }, + { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, NULL, rv_op_sspopchk }, { "cbo.inval", rv_codec_r, rv_fmt_rs1 }, { "cbo.clean", rv_codec_r, rv_fmt_rs1 }, { "cbo.flush", rv_codec_r, rv_fmt_rs1 }, @@ -5397,24 +5356,10 @@ static const rv_opcode_data *decode_inst_lift_pseud= o(rv_decode *dec, =20 /* decompress instruction */ =20 -static const rv_opcode_data *decode_inst_decompress(rv_decode *dec, rv_isa= isa, +static const rv_opcode_data *decode_inst_decompress(rv_decode *dec, const rv_opcode_data *= op) { - int decomp_op; - - switch (isa) { - case rv32: - decomp_op =3D op->decomp_rv32; - break; - case rv64: - decomp_op =3D op->decomp_rv64; - break; - case rv128: - decomp_op =3D op->decomp_rv128; - break; - default: - g_assert_not_reached(); - } + int decomp_op =3D op->decomp; =20 if (decomp_op !=3D rv_op_illegal) { dec->op =3D decomp_op; @@ -5473,7 +5418,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, =20 op =3D &dec.opcode_data[dec.op]; decode_inst_operands(&dec, isa, op); - op =3D decode_inst_decompress(&dec, isa, op); + op =3D decode_inst_decompress(&dec, op); op =3D decode_inst_lift_pseudo(&dec, op); return format_inst(24, &dec, op); } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315398; cv=none; d=zohomail.com; s=zohoarc; b=bBicA44gC3hGjc45cAJH12BEWaBQBzlyVHNdTi9FyrNEZXpa1NIkI56CqTYt2eo/RUcVwfw5j8TQ0jgHyJJl4IlkWvTcoqSHBlVIKXFkG2t24nfyPREuF0kWN0SKPWXQw7kjpCNrCpECyDZONxPuuTOBLyN20It+aaROzhmVPe0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315398; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OfQHJoEEIiTQiyEPxCHv2+ERgDSbxAoN8nfDjMt2Yi8=; b=l8dcejFIsI0Du75q2epa9hNVXhgYc7SXoq/GuzAi6j6garv9EckgUXNNHmpluvH0g/mn5aI9sZBuHnxkIM/1woA4qtB4RVc2jtDvIMFt7bQY83zn/df9pT5vv418/LKmRKtQqA8pUSQkYDRFjTpgkGUopiYv+8WB2SA7g2mPq3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315398087502.24732008331216; Sun, 9 Aug 2026 15:43:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC81-00011P-H9; Sun, 09 Aug 2026 18:36:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC7z-0000yW-JQ for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:23 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7x-0007RC-TB for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:23 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c99eaa1f020so1292156a12.2 for ; Sun, 09 Aug 2026 15:36:21 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314980; x=1786919780; darn=nongnu.org; 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:content-type; bh=OfQHJoEEIiTQiyEPxCHv2+ERgDSbxAoN8nfDjMt2Yi8=; b=ew5NDDbY8Ud9ZXekiR/OFRVgwJF57hesXuF7voPMyGHGG/aa2II7NNys5aR8yA+3SW 0kebX/erQJDQan4qzuPAwR+3hd934l246umeiUyoyAjzbB/hQwi0h7m1gulp0kp9pko7 jK5zSUYUZbPAzWoFCoDI/2CJGPwyuTeLIQhJLLQbL3FlPeOY1Ilz1JEOit82Z3zI/ATa OLfJmZEPv6sWB1nKKp1HQ4VoEIU+HPBRSq4oGhbcckVIRUxS4F45ErcbC1tPuOy+Pbea BC3ZnKp/Uy+rB//iSr6T2tnsEsr9VC5YR8KeAKyLanVWpfs4YKVpLM1x+n/uNpx+UW4P DzdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314980; x=1786919780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OfQHJoEEIiTQiyEPxCHv2+ERgDSbxAoN8nfDjMt2Yi8=; b=birJWnH6BMDbL/Tp/TOLpG2oNL1MU0HDAO59ZNRCqrRNYRtHOyxviUF0GU7PUMS6CT E78adj+4T3LILAXQp8MQLikgwi4UFbml2z8NNpx7y0jC3mkWlNqvSw/1BwFoUozw6wma Hd/aKYwy44VaUjCmrWCPf+7Pvk39hTxz5KJ7KJyRroLYnSO3L72L8jOdoHVLvpdY7cRa hQgISdPTL920rs4NX4oQBN3kzq0k+xCaZwYFvoySYnv4x2lt6VlgA+WejLsKPfiqS7AS QPpqLaHkmWxqemJoZ83RB8BMPSuJeLqpWx8J+5rH3bND3tUHE+hDdSeeFbDKWV6rzNor DZ8Q== X-Gm-Message-State: AOJu0YxlsMo8O2KBKhwhJ7YnZfQC8e1fKnJVYwE+NOpyC8/2Bdq1efc2 nJpwT/b9eW+kl6Q/FXS2LcRhyRSZSnS8YzBb+Q1M8WjQwu7hyZHeVQ14yMKNg7cSLUbzZRzr3Q7 /Km6z X-Gm-Gg: AR+sD125KoeXHSWFUU/7RChCf1mvhRY3t4MayIsDctUmO7saEOe7anbUi5kvJmqZ0I4 4zEESBsakZWWABHFtmBC14IZ07P2dmTmOT38+wVNzmjCyygRLkv5HMqYbbAJ2Cj6HZLIDveUNVK TzdXcZh4RU5blzUDEHY0F52gjgrNN52wa8q2gQkueUIIRm1aWx/tNKG7E/xHueQBfl1V61STB1f PANZWvEiU4OZPs/feO7bkElK49uAjL55FGVK9pKplI9ANplo3McSQ6bw4brSyPgBRfEXADw2ZN6 TOhQraqx4ySCS7cSblemvlLBUIP8WJzpI7AyqnSGCOQbe2Uy2eHUURx4gGr7LXyinat+93fG/ZL cgFCZbfiqd5zoH6A52pCEOx+x32n0fI0+noXf4CyXoQCwDLSW8B5d+NzpaHv+J6HSpVWkpQR99F d6UpihS0g4pCiW7zMNoR8nRu9ZSpypdL/Gx+6iqrcx1JWJ7g1gtfta8O9FNDOXTqJldl7Cu7MgN DUJ4sheUx/IpK6U+b3v X-Received: by 2002:a05:6a20:cf82:b0:3c3:8440:f6da with SMTP id adf61e73a8af0-3cbc043c129mr23411528637.29.1786314980557; Sun, 09 Aug 2026 15:36:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 26/56] disas/riscv: Drop always true branch psudeos Date: Sun, 9 Aug 2026 15:35:15 -0700 Message-ID: <20260809223545.730664-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315398478158500 Content-Type: text/plain; charset="utf-8" The real insns are blt, bge, bltu, bgeu. Do not include psuedos that unconditionally swap operands. That's fine for an assembler but not a disassembler. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 2e891f509e..bde1cc6e62 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -326,10 +326,6 @@ typedef enum { rv_op_bgez =3D 295, rv_op_bltz =3D 296, rv_op_bgtz =3D 297, - rv_op_ble =3D 298, - rv_op_bleu =3D 299, - rv_op_bgt =3D 300, - rv_op_bgtu =3D 301, rv_op_j =3D 302, rv_op_ret =3D 303, rv_op_jr =3D 304, @@ -1062,10 +1058,6 @@ static const rvc_constraint rvcc_blez[] =3D { rvc_rs= 1_eq_x0, rvc_end }; static const rvc_constraint rvcc_bgez[] =3D { rvc_rs2_eq_x0, rvc_end }; static const rvc_constraint rvcc_bltz[] =3D { rvc_rs2_eq_x0, rvc_end }; static const rvc_constraint rvcc_bgtz[] =3D { rvc_rs1_eq_x0, rvc_end }; -static const rvc_constraint rvcc_ble[] =3D { rvc_end }; -static const rvc_constraint rvcc_bleu[] =3D { rvc_end }; -static const rvc_constraint rvcc_bgt[] =3D { rvc_end }; -static const rvc_constraint rvcc_bgtu[] =3D { rvc_end }; static const rvc_constraint rvcc_j[] =3D { rvc_rd_eq_x0, rvc_end }; static const rvc_constraint rvcc_ret[] =3D { rvc_rd_eq_x0, rvc_rs1_eq_ra, rvc_end }; @@ -1123,24 +1115,12 @@ static const rv_comp_data rvcp_bne[] =3D { static const rv_comp_data rvcp_blt[] =3D { { rv_op_bltz, rvcc_bltz }, { rv_op_bgtz, rvcc_bgtz }, - { rv_op_bgt, rvcc_bgt }, { rv_op_illegal, NULL } }; =20 static const rv_comp_data rvcp_bge[] =3D { { rv_op_blez, rvcc_blez }, { rv_op_bgez, rvcc_bgez }, - { rv_op_ble, rvcc_ble }, - { rv_op_illegal, NULL } -}; - -static const rv_comp_data rvcp_bltu[] =3D { - { rv_op_bgtu, rvcc_bgtu }, - { rv_op_illegal, NULL } -}; - -static const rv_comp_data rvcp_bgeu[] =3D { - { rv_op_bleu, rvcc_bleu }, { rv_op_illegal, NULL } }; =20 @@ -1665,8 +1645,8 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne }, { "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt }, { "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge }, - { "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bltu }, - { "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bgeu }, + { "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset }, + { "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset }, { "lb", rv_codec_i, rv_fmt_rd_offset_rs1 }, { "lh", rv_codec_i, rv_fmt_rd_offset_rs1 }, { "lw", rv_codec_i, rv_fmt_rd_offset_rs1 }, @@ -1954,10 +1934,10 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "bgez", rv_codec_sb, rv_fmt_rs1_offset }, { "bltz", rv_codec_sb, rv_fmt_rs1_offset }, { "bgtz", rv_codec_sb, rv_fmt_rs2_offset }, - { "ble", rv_codec_sb, rv_fmt_rs2_rs1_offset }, - { "bleu", rv_codec_sb, rv_fmt_rs2_rs1_offset }, - { "bgt", rv_codec_sb, rv_fmt_rs2_rs1_offset }, - { "bgtu", rv_codec_sb, rv_fmt_rs2_rs1_offset }, + { }, + { }, + { }, + { }, { "j", rv_codec_uj, rv_fmt_offset }, { "ret", rv_codec_i, rv_fmt_none }, { "jr", rv_codec_i, rv_fmt_rs1 }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315391; cv=none; d=zohomail.com; s=zohoarc; b=Du8ob+KfqBS1fgGn2KYR3hwMdWNtJXecCDbXq4loWLhtjwL3IFEOG2rMO5ctixav5Eh0V24Vv8+U0pE7jQahlUyi1kVI7gRV+zQDBYvh5+Cq5Su31WX/aHhSU/vHyD8oLHfEvodxaXqUO6Y28S80xcdGG58lQ6ObFgklcfJDS7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315391; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4bPEmz7kH/3j+nOpoForQfn3ij2ZSMJYOoJ99jLXeIQ=; b=eQrrUzz3B4qGF65qZU9ZtaMeQxACOowEQmXKCxKWSHdeTrZqLnJMZEtx0sT27HQ4crKb+WA+Fe+BjtD+tEmSw45hhn2+pvdnuOWRTPbqWc6EQZ3UxXShPOISbWG49XXfSA67iOIbFuXvDysGsqwL+DLYjLAfWDTjh00kcYnayGE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315391975177.3301234312355; Sun, 9 Aug 2026 15:43:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC83-000149-Bt; Sun, 09 Aug 2026 18:36:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC81-00010n-6T for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:25 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7y-0007Rg-SS for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:24 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-cb5b8572b70so1314703a12.2 for ; Sun, 09 Aug 2026 15:36:22 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314981; x=1786919781; darn=nongnu.org; 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:content-type; bh=4bPEmz7kH/3j+nOpoForQfn3ij2ZSMJYOoJ99jLXeIQ=; b=NSxVARykI649jSHmaeFglD0sooTXMm9SXnOw1CcLzuno4b27YlamgN9K2woIlCgt44 OPZMEUilA9naM6gcKswR0OfTtnlAC2v2ERn6TPufKgbOAdYIC84varElIFrFxInGBrll FnZV7pNd5tNUtZ37an1JyTbrS6JbYRUKRFtppbEiFA34SnoW1z/qNsAgq4p06R3HAa5E b7x2P17/KDOPy8kJyJKu3iilV6vvmQLLXUJlZez9CIezrS9YvvB4QLw/Ej0bBG4p44G7 bGoXuXVD7L3SnPa9Cy8+SOFdJy5Um2IcOa8pdCQyKQVXpSKf8GrNrnUmMpfnZtpXneLO SSVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314981; x=1786919781; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=4bPEmz7kH/3j+nOpoForQfn3ij2ZSMJYOoJ99jLXeIQ=; b=aPeohuFZNcjsIQUOadmpvWtYiStIqKYUrrh0jNpmWmbTNW/iAO8eO/A3iZNO+dl8v/ NZcm2B6V/0FJ5yesEz15ah9dTG2NpzL4CEOFvwTmyY+/OQysHu/efS3NC4TFoonVq9ub Vdyp/T2ZoLGQ9/hBEUwBSv+3vWvXfTgYVMKfHBV+lpCS8WGxyhBQEQiRk8I+4BFzBt36 iTNjy6ih5b2pdMr0ad6Wj0hwCUFXN/PJ77o5x6zxkehFxYT/tgco4f7YbFnfegMg4pbi tKyNwBXZrMV9KbYoiQvTHksjMpJmd4TBnSoIZmRKm8bI5iajJglKmh5JwXQgjUByy6zL WsDQ== X-Gm-Message-State: AOJu0YxZPIj004nFwHle58Y0nINS5FgDWXe5Tc2mpfClt8RQUFZyQoe1 XFDAUXIS0qrtKoIKEsmzjtX83ysv1ws4gHdFDTpQwA7ViX0XY7WySAh3ZdTxNK/sC/z8D4HR0q0 Wuvcr X-Gm-Gg: AR+sD12gLOpUO8kRv/5VycO3kVJiVzWhRQTVSCBtoeViNE+8My9TPhmmPdski8JAe2U zVTlDOI188zMBVqYiPPrAvGK0hV+Dt8g54np/7Kuyo0N2MQEquFLr/UHQeF8AK+abTmroYKr97t dlqy+rdfCQDPsNJ/L7WhM8/BiqF4Ah7Hi20y8IGXplzS+yygkagMPAOXhLTb8DTzw/fWB8EWxMv xIaRXNUQXo07QZA0BQECfhQI9issIOqQ8l/gcfngyPL1jCnXLP2ydJFTlpp2IuE9iIXwGA5akbV V08ifP6PhT1YIuO2o5noweZBdVva7AtHr8+chPdIeCCtA2egh28+cmWTGZJApea86P7FXQGXVGl ehtkxBpYLdxT0KfAucrNihI9UieohEWB3gRSjUsrxKOeExArnTuHKddKO1iBx36fg/PmZAeSmxB dRugPILW8Bgjgd6vwzAaY28Larl8vF24Z2utp41RHcssA3mgk+ElOFvvvS2etphYQoaMgbCc4K5 M0Zb3OkRC0uGtEMilyS X-Received: by 2002:a05:6a00:1daa:b0:846:8b21:6304 with SMTP id d2e1a72fcca58-84f2dfd2c03mr41735046b3a.14.1786314981279; Sun, 09 Aug 2026 15:36:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 27/56] disas/riscv: Handle aliases of csrrw during decode Date: Sun, 9 Aug 2026 15:35:16 -0700 Message-ID: <20260809223545.730664-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315394425158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index bde1cc6e62..e464b8b075 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1081,9 +1081,6 @@ static const rvc_constraint rvcc_frrm[] =3D { rvc_rs1= _eq_x0, rvc_csr_eq_0x002, rvc_end }; static const rvc_constraint rvcc_frflags[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0x001, rvc_end }; -static const rvc_constraint rvcc_fscsr[] =3D { rvc_csr_eq_0x003, rvc_end }; -static const rvc_constraint rvcc_fsrm[] =3D { rvc_csr_eq_0x002, rvc_end }; -static const rvc_constraint rvcc_fsflags[] =3D { rvc_csr_eq_0x001, rvc_end= }; static const rvc_constraint rvcc_fsrmi[] =3D { rvc_csr_eq_0x002, rvc_end }; static const rvc_constraint rvcc_fsflagsi[] =3D { rvc_csr_eq_0x001, rvc_en= d }; =20 @@ -1166,14 +1163,6 @@ static const rv_comp_data rvcp_subw[] =3D { { rv_op_illegal, NULL } }; =20 -static const rv_comp_data rvcp_csrrw[] =3D { - { rv_op_fscsr, rvcc_fscsr }, - { rv_op_fsrm, rvcc_fsrm }, - { rv_op_fsflags, rvcc_fsflags }, - { rv_op_illegal, NULL } -}; - - static const rv_comp_data rvcp_csrrs[] =3D { { rv_op_rdcycle, rvcc_rdcycle }, { rv_op_rdtime, rvcc_rdtime }, @@ -1761,7 +1750,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "sfence.vm", rv_codec_r, rv_fmt_rs1 }, { "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2 }, { "wfi", rv_codec_none, rv_fmt_none }, - { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrw }, + { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrs }, { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, rvcp_csrrwi }, @@ -4443,7 +4432,14 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) break; } break; - case 1: op =3D rv_op_csrrw; break; + case 1: + switch (operand_csr12(inst)) { + case 1: op =3D rv_op_fsflags; break; + case 2: op =3D rv_op_fsrm; break; + case 3: op =3D rv_op_fscsr; break; + default: op =3D rv_op_csrrw; break; + } + break; case 2: op =3D rv_op_csrrs; break; case 3: op =3D rv_op_csrrc; break; case 4: --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315289; cv=none; d=zohomail.com; s=zohoarc; b=gZmydpVwkE8B5wKUjOxziVN4Kcf24Ji3NI6iiT+NqeHe2i0ulLTkJUMuoLdsntKXeIKwblVOOt/hPcnUBXe8ASnz5vmkmNzp4aY6/F7K5Xd8+qOf+VybyHIroZa72+mjg2LD84+SKKmHWwAPIhmE2MJ+vX2T833zKa2nCRUmJE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315289; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xBVmfASb1dhHWckdEJS1YAk1pkEyuhDec0JXLQb2rFc=; b=FuELmZqumHJnIznXhDtcREvnBj6+7KfL9ie7plkacxRGiNfHZWmuYef5muPw+QvjAUXHrWJC0DpCYzfHvHwpkbH8aULnZo6rCOHuOd0ATQ1WVbL0oPlkpY4vC45G+BuiIdV43LsF4HlxMpkgy6Wu0CYrEnJQl87yTdtg4F57b+Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315289849281.926241436636; Sun, 9 Aug 2026 15:41:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC83-00014S-Hp; Sun, 09 Aug 2026 18:36:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC82-00012l-Ig for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:26 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC7z-0007Rx-Q7 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:26 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-84874b52eabso1636655b3a.0 for ; Sun, 09 Aug 2026 15:36:23 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314982; x=1786919782; darn=nongnu.org; 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:content-type; bh=xBVmfASb1dhHWckdEJS1YAk1pkEyuhDec0JXLQb2rFc=; b=e9xSQeLZJGxg32ovVy0aQbe+P0a1pYFlpsX+kNHKHiZmUVISwjRdH5ZfEMpIbwn7qq U3+wcamIH343Bkr1CeJn/h8pgi02zOh37br1iKvCNlUkvE88wrsRk29xqYAk4s7qRYF9 W2+eIRnYhIC3M2m1qyk9jvcKRScxBhqGXBnQ46h2nfNgYH6HxbvPP2TRnlX8HNOsMVsf iJEGypVmE1VpBltSMuHJtow/QGgXV5FaBOrBE8A/fPYkV4SNyPuvMFmtMLK356o7sGbN NUE1R5J4f9ujLIS8ldI6/ZtZbD6te8pgnRMli7T7+LOcUQ2yYrM6rOPy9bWDCMzlgdqW RjlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314982; x=1786919782; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xBVmfASb1dhHWckdEJS1YAk1pkEyuhDec0JXLQb2rFc=; b=pI3h3Uv+ggVrkkZFgJlCcGp1RIuS2UXOq5Ng0aN7INp9wXyZQj/2bJRL9Jl5weWkTu De/MlksrurqVm/MjeeLVcc/v+bo0+psOBMY+bnZ4P0wACx9Rn9Zjm+pF68OV8B9NVo/a 7VZsby6AOEfgso0qTnfCEn1rRMth/AgRuHwW8jZfPCY5mY8Uc/V4iTy4kGZzPi9axdHf Oacm2SxxUUMIJIypkuV8YErP/ORiRw6qM0MoFgYn/M+lnWp+kZHS27m7bS5ST7fJbr3P Dby3Wz8coKqnZyteKC/ZrfC78Dg1ZjVW9jJ8hBIrJMTstBwCMktWFpG1tiwOHByNFS80 9nmQ== X-Gm-Message-State: AOJu0YxJpAlmoZp6KXpcSEZOOVGKb+RiywGxX/ft0hj1FFKNwp9A+Tup lGao8ioSqOdfLMqDSz6M168RY7f+XgEaXqwDqRXaHEUzU59jDzGBXv1Kqm4eYXwH4YlVaqXUlnP rtGA4 X-Gm-Gg: AR+sD11kN8xJ+HB7mRc8yQ+VZwBgolmYVndhrBEizFS7ueoYWgEPHq1oGp6cHVstO/s LvE8wU9bkQaUxfda/CAgsAOiINnImL1rfcOzhC1jpLe4Wgw+QEvf5NqdB6ynaFrjuOybcuLYA73 +n3Syw8B9KzwKETggzjCgWdO9xgzfjJK+SPBa5Abzx9kH8bGyUuDynkDI2kbCQymsS0xxc7ZxHd L5aChl2xoaDKV+uvLfo3bT78Oh/imaaapFLmlgjjtQYJG2lu3TTnbSVmUojNs387sYoMhovZWde r8fSm52xqtqBwPo4sdS+ISn8XaiaN1JW8Vb4U4cgYbiT0TPqwdprysg81q6VViZEW0FbyHD7eGF h8DVPe5jJywGvas4JSvNAb7CiYEYmyWpx022OIinOI21q2tw8XWs3JeH/H/s5mmyduNNKEHPCyT yrVoEk1sY+41pXiM5m5fCKPExJfDXamkLNR28FDfRJb3hv6IvHnWNoyY3Ua0d5iPRHZ5K7ZWNUh 1BTQCQzCHsmDEnDawsj X-Received: by 2002:a05:6a00:2d8a:b0:845:3914:f039 with SMTP id d2e1a72fcca58-84f5e09ce58mr19098646b3a.26.1786314982239; Sun, 09 Aug 2026 15:36:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 28/56] disas/riscv: Handle aliases of csrrs during decode Date: Sun, 9 Aug 2026 15:35:17 -0700 Message-ID: <20260809223545.730664-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315290211158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 7 ----- disas/riscv.c | 85 +++++++++++---------------------------------------- 2 files changed, 17 insertions(+), 75 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 900363c603..d8c5acd969 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -86,13 +86,6 @@ typedef enum { rvc_imm_eq_p1, rvc_csr_eq_0x001, rvc_csr_eq_0x002, - rvc_csr_eq_0x003, - rvc_csr_eq_0xc00, - rvc_csr_eq_0xc01, - rvc_csr_eq_0xc02, - rvc_csr_eq_0xc80, - rvc_csr_eq_0xc81, - rvc_csr_eq_0xc82, } rvc_constraint; =20 typedef enum { diff --git a/disas/riscv.c b/disas/riscv.c index e464b8b075..9ec79baf4d 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1063,24 +1063,6 @@ static const rvc_constraint rvcc_ret[] =3D { rvc_rd_= eq_x0, rvc_rs1_eq_ra, rvc_end }; static const rvc_constraint rvcc_jr[] =3D { rvc_rd_eq_x0, rvc_imm_eq_zero, rvc_end }; -static const rvc_constraint rvcc_rdcycle[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0xc00, - rvc_end }; -static const rvc_constraint rvcc_rdtime[] =3D { rvc_rs1_eq_x0, rvc_csr_eq_= 0xc01, - rvc_end }; -static const rvc_constraint rvcc_rdinstret[] =3D { rvc_rs1_eq_x0, - rvc_csr_eq_0xc02, rvc_end= }; -static const rvc_constraint rvcc_rdcycleh[] =3D { rvc_rs1_eq_x0, - rvc_csr_eq_0xc80, rvc_end = }; -static const rvc_constraint rvcc_rdtimeh[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0xc81, - rvc_end }; -static const rvc_constraint rvcc_rdinstreth[] =3D { rvc_rs1_eq_x0, - rvc_csr_eq_0xc82, rvc_en= d }; -static const rvc_constraint rvcc_frcsr[] =3D { rvc_rs1_eq_x0, rvc_csr_eq_0= x003, - rvc_end }; -static const rvc_constraint rvcc_frrm[] =3D { rvc_rs1_eq_x0, rvc_csr_eq_0x= 002, - rvc_end }; -static const rvc_constraint rvcc_frflags[] =3D { rvc_rs1_eq_x0, rvc_csr_eq= _0x001, - rvc_end }; static const rvc_constraint rvcc_fsrmi[] =3D { rvc_csr_eq_0x002, rvc_end }; static const rvc_constraint rvcc_fsflagsi[] =3D { rvc_csr_eq_0x001, rvc_en= d }; =20 @@ -1163,19 +1145,6 @@ static const rv_comp_data rvcp_subw[] =3D { { rv_op_illegal, NULL } }; =20 -static const rv_comp_data rvcp_csrrs[] =3D { - { rv_op_rdcycle, rvcc_rdcycle }, - { rv_op_rdtime, rvcc_rdtime }, - { rv_op_rdinstret, rvcc_rdinstret }, - { rv_op_rdcycleh, rvcc_rdcycleh }, - { rv_op_rdtimeh, rvcc_rdtimeh }, - { rv_op_rdinstreth, rvcc_rdinstreth }, - { rv_op_frcsr, rvcc_frcsr }, - { rv_op_frrm, rvcc_frrm }, - { rv_op_frflags, rvcc_frflags }, - { rv_op_illegal, NULL } -}; - static const rv_comp_data rvcp_csrrwi[] =3D { { rv_op_fsrmi, rvcc_fsrmi }, { rv_op_fsflagsi, rvcc_fsflagsi }, @@ -1751,7 +1720,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2 }, { "wfi", rv_codec_none, rv_fmt_none }, { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, - { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1, rvcp_csrrs }, + { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, rvcp_csrrwi }, { "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, @@ -4440,7 +4409,22 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) default: op =3D rv_op_csrrw; break; } break; - case 2: op =3D rv_op_csrrs; break; + case 2: + op =3D rv_op_csrrs; + if (operand_rs1(inst) =3D=3D 0) { + switch (operand_csr12(inst)) { + case 0x001: op =3D rv_op_frflags; break; + case 0x002: op =3D rv_op_frrm; break; + case 0x003: op =3D rv_op_frcsr; break; + case 0xc00: op =3D rv_op_rdcycle; break; + case 0xc01: op =3D rv_op_rdtime; break; + case 0xc02: op =3D rv_op_rdinstret; break; + case 0xc80: op =3D rv_op_rdcycleh; break; + case 0xc81: op =3D rv_op_rdtimeh; break; + case 0xc82: op =3D rv_op_rdinstreth; break; + } + } + break; case 3: op =3D rv_op_csrrc; break; case 4: if (dec->cfg && dec->cfg->ext_zimop) { @@ -5017,41 +5001,6 @@ static bool check_constraints(rv_decode *dec, const = rvc_constraint *c) return false; } break; - case rvc_csr_eq_0x003: - if (!(imm =3D=3D 0x003)) { - return false; - } - break; - case rvc_csr_eq_0xc00: - if (!(imm =3D=3D 0xc00)) { - return false; - } - break; - case rvc_csr_eq_0xc01: - if (!(imm =3D=3D 0xc01)) { - return false; - } - break; - case rvc_csr_eq_0xc02: - if (!(imm =3D=3D 0xc02)) { - return false; - } - break; - case rvc_csr_eq_0xc80: - if (!(imm =3D=3D 0xc80)) { - return false; - } - break; - case rvc_csr_eq_0xc81: - if (!(imm =3D=3D 0xc81)) { - return false; - } - break; - case rvc_csr_eq_0xc82: - if (!(imm =3D=3D 0xc82)) { - return false; - } - break; default: break; } c++; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315406; cv=none; d=zohomail.com; s=zohoarc; b=QNxh0cCa8lrYeDczrvmB+P72GjclUvJaQBOjulJN/L0WtTjY3fjzx9y8sVK/hEHL+rdJDubRSiCRn/xVLeZg77Gbskd5WTiJTTdtm86IBLuXaHsCYn4COegpO9PpAkZTyuIGm/6a5duMqCjQttZsGzJzzZmM6t+GealZc5lEQSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315406; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wel1hASlWCOzbBEuzpslBrUlE+P7EagjaJSpRxfpogk=; b=m8EhZt1hzRsb12UZi69ngaCQ60RlPpBDXeF4p1r72gBkalVOo8mvAbkSPSrgs3lAxbsViAKw7O4KhdeBgo6AYPGgI2SIbmxv5twJ1yeBr//IVYZCdkbWcqxfGULkGnTQQG0YH+uCF0nMa0ph/5f2y7epmYT1rcvop+jLEM1f7G8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315406501565.5669433738026; Sun, 9 Aug 2026 15:43:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC84-00015U-IJ; Sun, 09 Aug 2026 18:36:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC82-00012n-Jm for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:26 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC80-0007SK-L2 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:26 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-8486672f03cso1158458b3a.0 for ; Sun, 09 Aug 2026 15:36:24 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314983; x=1786919783; darn=nongnu.org; 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:content-type; bh=Wel1hASlWCOzbBEuzpslBrUlE+P7EagjaJSpRxfpogk=; b=aX3c8SjX2fbQsEX5ylTp2O30P+qyAB9mGQJ42MIGMlrsUtl4fRLfo+DJpSpxBgD/8r 3j5DQt/vvWOabMkrRQGrFDN4N0XlNV4iBfrvPBgsSiQofl+FsR1S3LYbBKDyD45C2CrI pFXo5krM8I1N814rI2uCTpA1/++7K0g0QS5ZWbsOXUbCaBGCAVbQ9mQZgeq0Xm0dPhVy tAjzJPlGkOyMDx13pFU1snvfpaGr5pWevRcgvo5chCQfm7c40fRy5DSRePCQRZerg1bc /z/r+E+6gaLDUpYDiZmQzTRzRCf1X2ybq3ki5B2SK+fBSbuwjPfpDSYZN3o4OzfOrhhl EwAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314983; x=1786919783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Wel1hASlWCOzbBEuzpslBrUlE+P7EagjaJSpRxfpogk=; b=hS60Zx/D8mjAYbGPCKjPoDeg2A8FA6CCevFLAwtR4f8uR64x8GKpNXXTq+l5TTkZXu 4o5+8WWMFroJvxNK3eGfiaHXfLuIWLFJbFBprdpUHaXDpt8nkQP76pry4GwqRj+Vmd04 oyiA80nrk9PH+O2A3jY10icuTQkyxvOgaY9TAvoFaPtGq+KpjI8GsxSaZyESpWzHp9ss gWVY2U3jgS5trDeq8QeaZ3TsO+BWw3YXNcjWYTB5+H1QP8rCHE1XgNIpMyGfa1ia7/3p N+d9L5s8bTwMWZtWRotsCr1gVGVNT93L+eVa3Cksyq6WxufB34dC42/rROp4UbuGfVAc b/rQ== X-Gm-Message-State: AOJu0YwFMyd3uJLe/yZYGRgNU2Db1VsWyt2MnwHtAAnSstSsZRA74g1n jfgZ2r2/OcNLCRT18OdeSuoF60lgfuvRSW4vmJdHDyfsuqXVTD5xscS2Gv9fr6c413pIVdzAOo0 cfaqW X-Gm-Gg: AR+sD11bBACm3q+ViBpm33/dVFcF57nsta/QHogSaVn36F30stTHtpcpvONpaFkyhzj rX9hDR1GCMhnZeavRegvDG5xhR1Vf0c7PPjZrFSYS91aLrgovZxMMj8kbDHl+Gmf6CHMzgC9Yno +oJOXNG0mN0NTV18IPjtupLvwnkcaSHjBrwybrfqfUQLMwqtry/DssqJLlDGbtaz6ILOxL6bIhZ kt0wvc1rjKCWIY+WxJeII0ZFqv0jvS5XXV+q/ekxXY06unu89I1KRkvzNmXuCIVQR0V9lBCdSaJ 1eHOe9328ZtZN4JcKoJrdYvl1SzHr9Mn6rAjVp4kKkO4QAsA5iWr1f0ok2xpKZa4BWzLXg7ggN2 Y7SI5vGIH3rB/GlH4W9I6jAhkL2oYF9tfARSROMbrlt0ZpsdPuo1AUB7TykxA4LG8Yl01DxJ74O fUIjznMm8A2XLYpqaaVmlcxa+4GskzZUKuB8zPVNCFMyuBZ15HYH7a3dVYywJMV1eUWyWWPmE5m CbuTydC6BaIxd57adbJ X-Received: by 2002:a05:6a00:4394:b0:837:f79d:909 with SMTP id d2e1a72fcca58-84f2e0cc739mr45247502b3a.39.1786314983084; Sun, 09 Aug 2026 15:36:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 29/56] disas/riscv: Handle aliases of csrrwi during decode Date: Sun, 9 Aug 2026 15:35:18 -0700 Message-ID: <20260809223545.730664-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315408453158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 2 -- disas/riscv.c | 28 ++++++++-------------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index d8c5acd969..3bbcbf10fb 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -84,8 +84,6 @@ typedef enum { rvc_imm_eq_zero, rvc_imm_eq_n1, rvc_imm_eq_p1, - rvc_csr_eq_0x001, - rvc_csr_eq_0x002, } rvc_constraint; =20 typedef enum { diff --git a/disas/riscv.c b/disas/riscv.c index 9ec79baf4d..d3cbfb86ac 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1063,8 +1063,6 @@ static const rvc_constraint rvcc_ret[] =3D { rvc_rd_e= q_x0, rvc_rs1_eq_ra, rvc_end }; static const rvc_constraint rvcc_jr[] =3D { rvc_rd_eq_x0, rvc_imm_eq_zero, rvc_end }; -static const rvc_constraint rvcc_fsrmi[] =3D { rvc_csr_eq_0x002, rvc_end }; -static const rvc_constraint rvcc_fsflagsi[] =3D { rvc_csr_eq_0x001, rvc_en= d }; =20 /* pseudo-instruction metadata */ =20 @@ -1145,12 +1143,6 @@ static const rv_comp_data rvcp_subw[] =3D { { rv_op_illegal, NULL } }; =20 -static const rv_comp_data rvcp_csrrwi[] =3D { - { rv_op_fsrmi, rvcc_fsrmi }, - { rv_op_fsflagsi, rvcc_fsflagsi }, - { rv_op_illegal, NULL } -}; - static const rv_comp_data rvcp_fsgnj_s[] =3D { { rv_op_fmv_s, rvcc_fmv_s }, { rv_op_illegal, NULL } @@ -1722,7 +1714,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, - { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm, rvcp_csrrwi }, + { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, { "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, { "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, { "flw", rv_codec_i, rv_fmt_frd_offset_rs1 }, @@ -4469,7 +4461,13 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) } } break; - case 5: op =3D rv_op_csrrwi; break; + case 5: + switch (operand_csr12(inst)) { + case 1: op =3D rv_op_fsflagsi; break; + case 2: op =3D rv_op_fsrmi; break; + default: op =3D rv_op_csrrwi; break; + } + break; case 6: op =3D rv_op_csrrsi; break; case 7: op =3D rv_op_csrrci; break; } @@ -4991,16 +4989,6 @@ static bool check_constraints(rv_decode *dec, const = rvc_constraint *c) return false; } break; - case rvc_csr_eq_0x001: - if (!(imm =3D=3D 0x001)) { - return false; - } - break; - case rvc_csr_eq_0x002: - if (!(imm =3D=3D 0x002)) { - return false; - } - break; default: break; } c++; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315056; cv=none; d=zohomail.com; s=zohoarc; b=fv3Zwseh82hNJea0S1kOk7pCssl5ClY1sqy7EyAhPCPuOUeGoCx+F23auKGx/+Oahq1JJ3QqCCCIbWxSwfXiWGNtRPjEVd/8y3rrt6hwF1JP2aBWbTs/ajJyT9r143htfRhWk3cXWC1aV90XIsAVPGXPofbdqjRN1KHxIXE6YuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315056; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TSh1lfI0jX+r6FX1tpaxG4Gr8KvWJHl1oy8OeMmCwtY=; b=VNX1rn3YlP2mfUj8+MRDVB584x8I3kJDveLDGh/uzgvNRbN/cWvFOkUJspHiCIfwNB36I1GZ6fBoZTJivSBpoZNkhPTJC0NLN+hL80cpOxLEEcDmXNS8JUQe7gDwbsK7D6FFY+YEhAV27pDFOoXw2iNrrcUT3aSGKLCXNuuxo+8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315056690484.43681528516413; Sun, 9 Aug 2026 15:37:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC85-00016K-Ad; Sun, 09 Aug 2026 18:36:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC83-00014l-Op for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:27 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC81-0007Sh-GZ for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:27 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c9c26a5fb98so738180a12.0 for ; Sun, 09 Aug 2026 15:36:24 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314984; x=1786919784; darn=nongnu.org; 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:content-type; bh=TSh1lfI0jX+r6FX1tpaxG4Gr8KvWJHl1oy8OeMmCwtY=; b=AgDKbotfSZP7HoeSk+5e3DGtFeIoSI6aJ0uZoiXBKR0kiG+EJSDLTlNiYdTT1WnCce 8uAF8XJMt8ykQb0ouS69IV0rR/jto4p12QC5JsmBt5KpzVHhwVB7+B8aD/f9OftLldq6 mFCjfenAm60Y80l95m8dPbzrlWEADhoYQRKsujOymtwxRMQOHzjBUifhOGwQgP3TXeWL RlKnBp8CAq4eG5I7llwz8aZXj6WbjBkD+4cPW1euSDXw1XUJ4Ud2rkxWrdWwNHIJpz6W FZDJVxvfuGZxrWsYogDvzeZBYaY9VXHOU09K2ibgyu39EswybZTla/pqaR5ngqmdKrwo 8Bzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314984; x=1786919784; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=TSh1lfI0jX+r6FX1tpaxG4Gr8KvWJHl1oy8OeMmCwtY=; b=qKoEGbyzu1yqMSRKFc4sXDVfDVVDhiAthnvA3X0YEL4WHum6VUY4e3MfvjNJqPfMmG nl7VD6pyyR+/dUr3rAcpwstnW81+Sv00Y8iHXku2YvbSt5Fu+SSCroxn2gkNmtjFWPc2 0RaAwad8vl1kSbUb6nIULpSox7FYsMj5ji5hOcVzt8oPGTKf6olD3g17GTQPcpEXkKAQ QqCKQJOMI4ZSp7JFyk86noiuA+v+K72PZ5wqBKkBcKYMlPSuWfbneyYH9Eiv91f7NM+0 ilbx8nfi8bUmu+8AWBPKvUhQvcFNasgP0eT4zOUdSs59SZWAV3bT5Udp+Lt1dADOgeXm 0v2Q== X-Gm-Message-State: AOJu0YwtAhBtrdlCkVJ8y9StKxx6UB8NczCo4isinF8vvwVCQ+Ay5lJo oApj5FTgglWEgABQ8bFpg99Hq+19/ezTkqZGMiA0hvERAfQD5m3lwg6yVb1h0e7Y0eUf7v3sEkw ikEj7 X-Gm-Gg: AR+sD12FdXBT3A87r0cKA1hl+QZ5qrlN/JPEMpyOYCo2N5M2yL15Rb7JkQo3+CuGnE7 HGQMbSyBCT/qqRy/CrB4uZ9x9SFSZpPY3zqLSEqPHNOpGFwwc0u0WKGFSEtBs2g7HrUm12h/aA5 x3F3MGTALUV/v+jLGjDRx8woPx7LM8mdFn6QvRVraI4T7bbLMo9G1AQQ8WRrWOVDCMizlrDLEoM 8JUV98Iu2tfui6jPC0HpRjcUdctBfPi/cDddEtv+8wy/fkqYzbk2v/eIhhib+e3laLKRrqdxKjH ugPNusNzLh4S0eSrS+Z0ZECsnIB/xFpe5/Pv4Ca7sCyulkHGZaakRlEA9K/7+uW6TTuycXTM2VG 9ZxcPKFWYhQt5I53ONXFADUIfkyeCPoPn3/c8DdTCzhoxSW0Iy4rmDwXETPJBwxvEhLgLWJ9DOn Y9QFOzvqW9YsHNhMmT/CvqXBZ13bRBrh9lFcVMDRLbYPjXnPlU2DTudR8e3SghtejyiDIg4CmKa GqAk4u00O1MUDprMMz6 X-Received: by 2002:a05:6a21:4d8f:b0:3bf:651d:fee0 with SMTP id adf61e73a8af0-3cbd3a9bbaemr15063620637.19.1786314983897; Sun, 09 Aug 2026 15:36:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 30/56] disas/riscv: Break pseudo loop for jal and jalr Date: Sun, 9 Aug 2026 15:35:19 -0700 Message-ID: <20260809223545.730664-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315057306158500 Content-Type: text/plain; charset="utf-8" These were clearly intending to simplify jal ra, foo to jal foo and similarly for jalr, but the pseudo expansion looped back to the original jal/jalr with the full format. Add new opcode expansions dropping the implied ra. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index d3cbfb86ac..fe503b6cae 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -326,6 +326,8 @@ typedef enum { rv_op_bgez =3D 295, rv_op_bltz =3D 296, rv_op_bgtz =3D 297, + rv_op_jal_ra =3D 298, + rv_op_jalr_ra =3D 299, rv_op_j =3D 302, rv_op_ret =3D 303, rv_op_jr =3D 304, @@ -1029,9 +1031,9 @@ static const char rv_fli_name_const[32][9] =3D =20 /* pseudo-instruction constraints */ =20 -static const rvc_constraint rvcc_jal[] =3D { rvc_rd_eq_ra, rvc_end }; -static const rvc_constraint rvcc_jalr[] =3D { rvc_rd_eq_ra, rvc_imm_eq_zer= o, - rvc_end }; +static const rvc_constraint rvcc_jal_ra[] =3D { rvc_rd_eq_ra, rvc_end }; +static const rvc_constraint rvcc_jalr_ra[] =3D { rvc_rd_eq_ra, rvc_imm_eq_= zero, + rvc_end }; static const rvc_constraint rvcc_nop[] =3D { rvc_rd_eq_x0, rvc_rs1_eq_x0, rvc_imm_eq_zero, rvc_end }; static const rvc_constraint rvcc_mv[] =3D { rvc_imm_eq_zero, rvc_end }; @@ -1068,14 +1070,14 @@ static const rvc_constraint rvcc_jr[] =3D { rvc_rd_= eq_x0, rvc_imm_eq_zero, =20 static const rv_comp_data rvcp_jal[] =3D { { rv_op_j, rvcc_j }, - { rv_op_jal, rvcc_jal }, + { rv_op_jal_ra, rvcc_jal_ra }, { rv_op_illegal, NULL } }; =20 static const rv_comp_data rvcp_jalr[] =3D { { rv_op_ret, rvcc_ret }, { rv_op_jr, rvcc_jr }, - { rv_op_jalr, rvcc_jalr }, + { rv_op_jalr_ra, rvcc_jalr_ra }, { rv_op_illegal, NULL } }; =20 @@ -1884,8 +1886,8 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "bgez", rv_codec_sb, rv_fmt_rs1_offset }, { "bltz", rv_codec_sb, rv_fmt_rs1_offset }, { "bgtz", rv_codec_sb, rv_fmt_rs2_offset }, - { }, - { }, + { "jal", rv_codec_none, rv_fmt_offset }, /* rv_op_jal_ra */ + { "jalr", rv_codec_none, rv_fmt_rs1 }, /* rv_op_jalr_ra */ { }, { }, { "j", rv_codec_uj, rv_fmt_offset }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315602; cv=none; d=zohomail.com; s=zohoarc; b=kn4b8QtgKQlfuV/XXuljI1QQXnGJm3mr1+mCTRkgvVZx2Rs47SVteJY5uaiLYa1gFNt9SHZkmnJfsWEx/ujmPcA6iPfM0ZM6co+50To+VtiwNQdCb/ykVHtqjafGeDMhuwdlZdyPAHQOXF0R86e16fuzVfxeLoNrheLzahXXfKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EJLPAArjo+b4mZX0YUBGxbAKFsWVbs3HKJdLpQDgENw=; b=DapkpgmLeklG8uO6qaI2JSc2PeVVfwxD+Yka07HzpCMWZwP7XR5qCvY+tJ3ODHJY+KG95enKWOmt/pBqMLsoMY3yHbS5x4od+ELh9VtHmwfNwR8Lqstxpbaj8uW3NXLom2/9icnOgd+1f2SnoCVMtaYuoQLdW45hzOioxLVPDPI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315602808893.5657224185971; Sun, 9 Aug 2026 15:46:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC86-00017C-Cu; Sun, 09 Aug 2026 18:36:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC84-00015J-Af for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:28 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC82-0007TM-T1 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:28 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2cc7ef7ec27so14609205ad.1 for ; Sun, 09 Aug 2026 15:36:26 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314985; x=1786919785; darn=nongnu.org; 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:content-type; bh=EJLPAArjo+b4mZX0YUBGxbAKFsWVbs3HKJdLpQDgENw=; b=A8OnpKz8GCw+GxVBF1KFFAn7DkIrpqgCU9Hwk1r994LPvgFe2yge8jgS48Y/vVnNqj Hb69yRMeucfO+lATjrGYHLoRXHdfzV2mflbMyn3xEVD862KLyWxVOKfZ8Bwksuywu45l vNJqJrbeuhNcsRMM+UkmXmfgdLs/UPG1DhK+IgPMEyOJWlVvW9eMJxPtbStUo+qY1W1I dwepP/4rwiDS114l0GDYXHIKAop4Pk90otHRYus6snQPXEYvz1Mr7EWz753KsU9BSSXA YkkTn7rrzOZaKvjw7ZQjqbQ7+sbz/X0mO3K0rRwD/3CdDU5jxoalLYut1zfavPR/BKEy ZozA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314985; x=1786919785; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=EJLPAArjo+b4mZX0YUBGxbAKFsWVbs3HKJdLpQDgENw=; b=rQAwI0EGAb3Yc++jSwGyzcvsw7AtjTd0VCThoXPunezZkNlMNZCcZt1I1vxzI9aJdg T4w79AM9r2lN9rO4Am8gxw9G7IJW2bPYFL4dfbd9f6+VrsrQ0bt6yeVuNwcaJ8M8xKNi UXMmkwB6mpVw3w/PhpK2Cmr+mbRkbZGyz7E8WelOJgcr8FEmAJqhiF0tT9aFO7Ft2+t3 oiB71wHwxaSA8HWMjO4Lern1rwTMPF3mENEaWWK1mZcr+nUxaIaannkX1WFLvsdw2htL NWFxv9f0IJor1K/N4ypIev6lzn1QV1pHr35ITUHKCSlRfRIXaIfKayvnKg64Yu0GrE0U TbJg== X-Gm-Message-State: AOJu0Yyxq9uOFXui78xx7Ws1F9fQSwFc6OdhDOWPjJqGTLdLhUM7qHN3 XKdjjwblQHjEQPUddeSAiDmVK+1swX2r8iLP9PmXzWTZ607hN83+rP1WYoAQgiUQz3foqad+Nbb PSi0Z X-Gm-Gg: AR+sD113W8eB5IY2oE/qFEjcSUud+yH8JQ8b5x8zms1xWqdq9951ZR2OTHF5V43RsQQ DTaXVKkvp9f3lE5qNWHR1Ih+34924FlqMrYZMIBV/tolajugL9u2vbY+WDCupxgQn3B0Z9XloM7 LfY52flaKWCWEq2ybASAZ3XY9ZAAtw7RwIqCzMxGy3sWZMG3PWKR85N1x0RDeAeJBRGDsYMF9p5 jIFtQT6MaNxy0Wq36EPhN5/mSCKa8p5HccNcmCEgm3E4puq5WS8Ssj09WfdkKlc5JG1zdsDZ4qN PZ85FTaHjKiXHhickB20qYNeWi+E2p5pBITOSAeOT7oKMWnPNaITeNwBOFg9hQRaD4Cr1J7ezFu Zv3+oHaS1g0jnsqXLUqaFWc1zNtr1yAFEBR7aQamfH2y1kZQnEG+JGqtZKnu4x5AVE/6nvuZzVF gfvkFRtDtDGKAmJdjFx0NuoSKyYCRjJd56A+0t55npjpZn9oF47oVibE/coi6VwysWE5zmFRpqC /gLaX/pHy8yclzHsGe/ X-Received: by 2002:a05:6a21:9104:b0:3c3:9a7f:7307 with SMTP id adf61e73a8af0-3cbce8e599amr16121758637.24.1786314985300; Sun, 09 Aug 2026 15:36:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 31/56] disas/riscv: Allow decode_inst_lift_pseudo to loop Date: Sun, 9 Aug 2026 15:35:20 -0700 Message-ID: <20260809223545.730664-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315603143158500 Content-Type: text/plain; charset="utf-8" Allow pseudo expansion to proceed in multiple steps. Assert that we don't have simple loops. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index fe503b6cae..b8e5b124a5 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -5259,9 +5259,9 @@ static const rv_opcode_data *decode_inst_lift_pseudo(= rv_decode *dec, if (comp_data) { while (comp_data->constraints) { if (check_constraints(dec, comp_data->constraints)) { - dec->op =3D comp_data->op; - op =3D &dec->opcode_data[dec->op]; - break; + const rv_opcode_data *new_op =3D &dec->opcode_data[comp_da= ta->op]; + assert(new_op !=3D op); + return decode_inst_lift_pseudo(dec, new_op); } comp_data++; } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315596; cv=none; d=zohomail.com; s=zohoarc; b=SUYSXPc/eVSVcPgZSoo1L6HnZStZG2eEHvsJ2PCOxx3LXzvUFwdb/AwLiB8gkGTamtVGqsdbXgS2BtN1c4IfikzvL2wiHh7wlFn+kXkXU5tCG23NIvZHvZfIcW/6d7Oce2ZgHnQj6XPHXqrt7uuCX6z4GqZMKjasW4CNd7hXVKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315596; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ziC8yQf388bwq4yRGT8zQBUhZiqaR2gPMMBFv1dhIY0=; b=GGM70Uhpeg4NOPAXah116KFz7WlEZaBWneCVp9nMaYmSOmwnN8VcJP8JBpljttsp9HoExSFnGGXo1OlQ+a+EwqxWkVelAiXGa40zp1BKSbnzYoUquDJhcsc9K28NnGCSfibXTQC1NQlGVZoYoYXNOQ31hand648NHBsn5kkGxik= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315596826613.5521247371762; Sun, 9 Aug 2026 15:46:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC88-0001AK-6m; Sun, 09 Aug 2026 18:36:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC86-00016y-8j for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:30 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC83-0007U7-UL for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:29 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2cace91f112so12311535ad.0 for ; Sun, 09 Aug 2026 15:36:27 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314987; x=1786919787; darn=nongnu.org; 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:content-type; bh=ziC8yQf388bwq4yRGT8zQBUhZiqaR2gPMMBFv1dhIY0=; b=CoE+iRBAxdELDXgrCr1ql/9+5pC3oKySKjMXudaSkTEEJvuc0aqAy31A8ADQS3QJD2 P8zbvrEp2P5+eTRmzMC4joAesquAbmVP17sungh2kAhjZh+g+Dh1w0E4YxyHCbPg+ogZ 1FOjPYLOpo2aXX3OKEKyf5OSAhuihUI+Oa58sYR2WJyI04kADt4WWjQ2Ee6LoXV8xp9a PEokIBMhl///Ak1Y5q1tAxdAmjk0VmH2ht3plStZw1D1V4Cq/VSqCVfjKg4PjFJF/e2D w1jkKHzl8t19ZIjmbgXOmTOVBZ0CxYNirJjcnHwZIVoWvBy6vyPlvn4rB0uuum15CzVF QuLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314987; x=1786919787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ziC8yQf388bwq4yRGT8zQBUhZiqaR2gPMMBFv1dhIY0=; b=njLIBlUqQ7d1I52hsaQyi3SBx05yawPBMAhCH28MgSEjQx+pWKQHs2OZZGCBow2k6G LkeJR9SJDAAsQEC+wprGlbW8Y2SY/StoOV3HoxHy1l/IQ6ZTAwSCbMzbpxx2Yb+xTUoi srD5X3diWkKGrkOxG6T20xjbjIDiikdnNPxq0+L/G/eKK2cBItD8n7MKpQ3pj2nRIAmS 4Tpgp7v7pWXo6CTu3DYfCtWNYkChB2zWYppqHladeZmun3BvaaEZpPQ83vficqFIGrmn K2JRy0g+vSjNUmFnhdqzyBCWQrzdaTmXU4yQbsyMeZiofbaX6vtOraYSYkPrPqc6FwVg 0jsg== X-Gm-Message-State: AOJu0Yx/JIM+i++SGZLV3CDXoGPfF2SQD5aB+DHa43ZO19qC0ruJ4sQ+ T8GZmFIOWnLdONvER6KF5bnFq9Cn1rlD+2AswVmkggdrXzIUyXy/3O8s1unoV3myg7zQY3OSHdG TnC+S X-Gm-Gg: AR+sD11byiIZ2HrElSxcK/y31ctlj1JvhzciqnlsTeomukxScBLr7pR5+p+bFnYMT2R +a+/Qhxb6DOTvIMOhgNs97k0uuA5SxO+ZMU1pRxz9aabxt+f3DPSVP/Lth8exZQIWOh3HdbD28x jcfFpAQnEUf/lakn6n5oXM3RS4v8ScZWQ9Ihx5hlxKwhby3iVANXATR41WzGoiTlnuy/dXDc4rR Ry1LXtn6fEH9y8DHnEmf/uQr15pm5qzRD9HdtrQPY7/b7pqQfgEeEkckoinWKCToIrXc3yXI6G3 nyfxbxazHV8ZKDYC2dOGIlTa/EAXZd0eG6DuFZM+eaWj8nNKvOoWjcYg+hO9sAXlsEdJuNuki+U 2ggG4xrqxRlnaB2UKvISRbf+2Qxl9pHPVCvYqG+wqDFlv8r45XEQPbP/geC5iUaetjF7PP3udwE mDSgfPuXksrOF5bvpDja/reybSx85I1UsXGHhEzhkVea2PblPWvCgHk2deic+2HMk0uGOqaqa+3 kUn9KEwHYU59jv4SsLX X-Received: by 2002:a05:6a20:2447:b0:3bb:2883:a723 with SMTP id adf61e73a8af0-3cb86075abamr41923169637.35.1786314986530; Sun, 09 Aug 2026 15:36:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 32/56] disas/riscv: Handle decompression via decode_inst_lift_pseudo Date: Sun, 9 Aug 2026 15:35:21 -0700 Message-ID: <20260809223545.730664-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315597298158500 Content-Type: text/plain; charset="utf-8" Introduce a DECOMP macro that expands an rv_comp_data that always succeeds. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 1 - disas/riscv.c | 113 +++++++++++++++++++++++--------------------------- 2 files changed, 51 insertions(+), 63 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 3bbcbf10fb..ea7141d3b5 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -174,7 +174,6 @@ typedef struct { rv_codec codec; const char *format; const rv_comp_data *pseudo; - rv_opcode decomp; } rv_opcode_data; =20 typedef struct { diff --git a/disas/riscv.c b/disas/riscv.c index b8e5b124a5..129e545c6e 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1065,6 +1065,7 @@ static const rvc_constraint rvcc_ret[] =3D { rvc_rd_e= q_x0, rvc_rs1_eq_ra, rvc_end }; static const rvc_constraint rvcc_jr[] =3D { rvc_rd_eq_x0, rvc_imm_eq_zero, rvc_end }; +static const rvc_constraint rvcc_true[] =3D { rvc_end }; =20 /* pseudo-instruction metadata */ =20 @@ -1190,6 +1191,9 @@ static const rv_comp_data rvcp_fsgnjx_q[] =3D { { rv_op_illegal, NULL } }; =20 +/* Convert compressed insns into normal insns via pseudo expansion. */ +#define DECOMP(X) (static const rv_comp_data[1]){ { X, rvcc_true } } + /* operand extractors */ =20 static uint32_t operand_rd(rv_inst inst) @@ -1815,52 +1819,52 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, NULL, rv_op_addi= }, - { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, NULL, rv_op_fld }, - { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, NULL, rv_op_lw }, - { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, NULL, rv_op_flw }, - { "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsd }, - { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw }, - { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, NULL, rv_op_fsw }, + { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, DECOMP(rv_op_add= i) }, + { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, DECOMP(rv_op_fld) }, + { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lw) }, + { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, DECOMP(rv_op_flw) }, + { "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_fsd) }, + { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sw) }, + { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_fsw) }, { }, - { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addi }, - { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, NULL, rv_op_jal }, - { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, NULL, rv_op_addi }, - { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, NULL, rv_op_addi = }, - { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, NULL, rv_op_lui }, - { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srli }, - { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_srai }, - { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, NULL, rv_op_andi }, - { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_sub }, - { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_xor }, - { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_or }, - { "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_and }, - { "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_subw }, - { "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, NULL, rv_op_addw }, - { "c.j", rv_codec_cj, rv_fmt_rd_offset, NULL, rv_op_jal }, - { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_beq }, - { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, NULL, rv_op_bne }, - { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, NULL, rv_op_slli }, - { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, NULL, rv_op_fld = }, - { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lw }, - { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, NULL, rv_op_flw = }, - { "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr }, - { "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, NULL, rv_op_addi }, - { "c.ebreak", rv_codec_ci_none, rv_fmt_none, NULL, rv_op_ebreak }, - { "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, NULL, rv_op_jalr }, - { "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, NULL, rv_op_add }, - { "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= d }, - { "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sw }, - { "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, NULL, rv_op_fs= w }, - { "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, NULL, rv_op_ld }, - { "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, NULL, rv_op_sd }, - { "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, NULL, rv_op_addiw }, - { "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, NULL, rv_op_ld }, - { "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sd }, - { "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, NULL, rv_op_lq }, - { "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, NULL, rv_op_sq }, - { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, NULL, rv_op_lq }, - { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, NULL, rv_op_sq }, + { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi) }, + { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, DECOMP(rv_op_jal) }, + { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi) }, + { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi= ) }, + { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, DECOMP(rv_op_lui) }, + { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_srli) }, + { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_srai) }, + { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, DECOMP(rv_op_andi) }, + { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_sub) }, + { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_xor) }, + { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_or) }, + { "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_and) }, + { "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_subw) }, + { "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_addw) }, + { "c.j", rv_codec_cj, rv_fmt_rd_offset, DECOMP(rv_op_jal) }, + { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, DECOMP(rv_op_beq) }, + { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, DECOMP(rv_op_bne) }, + { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_slli) }, + { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, DECOMP(rv_op_fld= ) }, + { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lw) }, + { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, DECOMP(rv_op_flw= ) }, + { "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, DECOMP(rv_op_jalr) }, + { "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_addi) }, + { "c.ebreak", rv_codec_ci_none, rv_fmt_none, DECOMP(rv_op_ebreak) }, + { "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, DECOMP(rv_op_jalr)= }, + { "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_add) }, + { "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_f= sd) }, + { "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sw)= }, + { "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_f= sw) }, + { "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, DECOMP(rv_op_ld) }, + { "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sd) }, + { "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addiw) }, + { "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_ld) }, + { "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sd)= }, + { "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lq) }, + { "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sq) }, + { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lq) }, + { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sq)= }, { "nop", rv_codec_i, rv_fmt_none }, { "mv", rv_codec_i, rv_fmt_rd_rs1 }, { "not", rv_codec_i, rv_fmt_rd_rs1 }, @@ -2542,8 +2546,8 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "ssrdp", rv_codec_r, rv_fmt_rd }, { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, NULL, rv_op_sspush }, - { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, NULL, rv_op_sspopchk }, + { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, DECOMP(rv_op_sspush) }, + { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, DECOMP(rv_op_sspopchk) }, { "cbo.inval", rv_codec_r, rv_fmt_rs1 }, { "cbo.clean", rv_codec_r, rv_fmt_rs1 }, { "cbo.flush", rv_codec_r, rv_fmt_rs1 }, @@ -5269,20 +5273,6 @@ static const rv_opcode_data *decode_inst_lift_pseudo= (rv_decode *dec, return op; } =20 -/* decompress instruction */ - -static const rv_opcode_data *decode_inst_decompress(rv_decode *dec, - const rv_opcode_data *= op) -{ - int decomp_op =3D op->decomp; - - if (decomp_op !=3D rv_op_illegal) { - dec->op =3D decomp_op; - op =3D &dec->opcode_data[decomp_op]; - } - return op; -} - /* disassemble instruction */ =20 static GString *disasm_inst(rv_isa isa, uint64_t pc, rv_inst inst, @@ -5333,7 +5323,6 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, =20 op =3D &dec.opcode_data[dec.op]; decode_inst_operands(&dec, isa, op); - op =3D decode_inst_decompress(&dec, op); op =3D decode_inst_lift_pseudo(&dec, op); return format_inst(24, &dec, op); } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315067; cv=none; d=zohomail.com; s=zohoarc; b=hYNt8T4+/nUyBgBJy7WWspOeNdJ4z3Bv7uxOr5PBMnFHTI/LNmSBivZRW7SP8klMTSUPhXquRhd+rC3l6CR0rFJM3GiZSSYjgZ7JEUz8rilL06Kt/84l3gbsAHiGIrHGBmXZs4C4TJiFDZZVHrdeQUV4Zat7OKzTHUVtarssKEE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315067; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jTnbwB3ZjFBmtG/6Evru0wejD5SNYguS+V+BNTqQ//E=; b=ATO6nglm8hJYrfFRJUbH85NvKlRf40G/ExRR8kwepZDEr1Ogp6Lq+DiTcX9UNlj0uY5LXkR4SUPSopG2na+o9R5ssjgy5SRGGPd0ydPRaDoqJBCeCJ9qq7b0cNz58323pcY0YRkhxCo/sKdhF91J5XrbZn1VNQ1CJh5UdjThX/o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631506711771.23531993352356; Sun, 9 Aug 2026 15:37:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC89-0001EU-25; Sun, 09 Aug 2026 18:36:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC86-00017y-Rv for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:30 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC84-0007UU-PM for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:30 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-8486ac3f347so3692602b3a.1 for ; Sun, 09 Aug 2026 15:36:28 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314987; x=1786919787; darn=nongnu.org; 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:content-type; bh=jTnbwB3ZjFBmtG/6Evru0wejD5SNYguS+V+BNTqQ//E=; b=DqdpO9YYBQWkTFXR1mXFtsiGA0ABHwgVCMqxoawMsa1E+B9LG/3OdiioeAQVYjPL// N775/6pOA0GPOGn1y7az1ftkRrhYuQcvLO2suqn6xosCn1PfoYfgizjOkcy9zfb8ZXHz 5IYIFbGxdfEPn1cusWcafcULgyT05Lo+oDX7pX3N700S1AbldVKilkJDIF2Bf1J3Tun1 ThWqTctOfstO4Dxx1DLjac0a+RtBq7B6AQwS6rLKGsctfgdLxsGUiGw6YwRPt8JbFKmX +RTS51OsTb8SZvBrbzyVDAqEruqYz/gmTAZgUOZ2Mqo9NlCj6xN1UFTbU5LPLCz0F08j v6nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314987; x=1786919787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jTnbwB3ZjFBmtG/6Evru0wejD5SNYguS+V+BNTqQ//E=; b=EJ4JrPNbdAxBZvTGPAYG2zPwjC6nDuINYCZ1bS9XItuBKN95yKRrmod/dKgImixfPm 3G91Q876JhfefSLktJBv7RIrBD5C9Lm1w7R7mWYsG8BCNdC31yK+1v/bfN82WdWv6Gn2 EKOhLkQMACqrycLg6gK41VDk8oGZMm9cQSCPZgtw+ZaMrBBvQI8zv1eYukWN+T1gmP85 L5DCDkS9IsJ6q+7sSOfP58svF/ctKAF3DpQb6wjw9IArbTDbVRA3Q+5pTDY9osEB37aJ rl7wk4/qb6s8c5s5pBsNI3MhRSiBr+i5SB+3UQRrCd4gNdG55ROb9qSscTIitu91bovf 70Cg== X-Gm-Message-State: AOJu0YyaTdTmMaxhi0d4Iw3p/DCYv+e47fJIYopsvOFAKcp7EyYltth5 UvKNKLNtmwvnQkrpJMMJ34U8NKc+J5N0/q5tKPCDxh5KTY473+nQYdTCyzOiPc+0Qerwdpr9wCa Jlvol X-Gm-Gg: AR+sD10H49IPtRS+MAYhc71knHAx/2qwzes8M3l+ja84cKEtxBq/AoTFNHmrIAWzs39 XRmrSVZIY9maD5xV3hWmO8mY+awV4yqi4AT2exNS2wa0b3bKx9Vs/T/RIJ2iDkLaLxWfRXIkBMe 053AwMPCSB5HiCfC825CiJCeqZkWEQ9O74Wm27POiZbgespvSjfQlr/USLUhmmQdl0c24jRkhWC O2oivSIkRX6dQZmzLrFHLeVWlkXzEj4I590fRJIpCl3/gesDMBGMSvt5vt8kG+PwAC+ZdfHoiUZ VwrY4C6/CE/tpK3ZDJGbbMAOIB8ReXS5lLacC4EE1UDPHrZM7rdUWn+LU9pVyIgqoGDLNBc6/uO i3vqTPbiGPX7/AGfE4Sy1qby5n/xbQorpyEPjicqgCCO65MJBM79BJXOpUBbmGRuM7Vm4freRHo Zm2N3/Noj1wlRbdDQvah7kNXLCNtn6JDA8L60N5B2cZeBWFZbc9BJfnvnaCvWftM0hb/NxRzzLY bOqrqKXnZGEXZfpccPe X-Received: by 2002:a05:6a21:a44:b0:3b4:661d:8405 with SMTP id adf61e73a8af0-3cbd3738fe8mr17712000637.4.1786314987232; Sun, 09 Aug 2026 15:36:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 33/56] disas/riscv: Drop format from DECOMP insns Date: Sun, 9 Aug 2026 15:35:22 -0700 Message-ID: <20260809223545.730664-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315069344158500 Content-Type: text/plain; charset="utf-8" The format for these will never be used -- we will use the format from the decompressed insn. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 94 +++++++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 129e545c6e..9904b4db03 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1819,52 +1819,52 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "c.addi4spn", rv_codec_ciw_4spn, rv_fmt_rd_rs1_imm, DECOMP(rv_op_add= i) }, - { "c.fld", rv_codec_cl_ld, rv_fmt_frd_offset_rs1, DECOMP(rv_op_fld) }, - { "c.lw", rv_codec_cl_lw, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lw) }, - { "c.flw", rv_codec_cl_lw, rv_fmt_frd_offset_rs1, DECOMP(rv_op_flw) }, - { "c.fsd", rv_codec_cs_sd, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_fsd) }, - { "c.sw", rv_codec_cs_sw, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sw) }, - { "c.fsw", rv_codec_cs_sw, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_fsw) }, + { "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(rv_op_addi) }, + { "c.fld", rv_codec_cl_ld, NULL, DECOMP(rv_op_fld) }, + { "c.lw", rv_codec_cl_lw, NULL, DECOMP(rv_op_lw) }, + { "c.flw", rv_codec_cl_lw, NULL, DECOMP(rv_op_flw) }, + { "c.fsd", rv_codec_cs_sd, NULL, DECOMP(rv_op_fsd) }, + { "c.sw", rv_codec_cs_sw, NULL, DECOMP(rv_op_sw) }, + { "c.fsw", rv_codec_cs_sw, NULL, DECOMP(rv_op_fsw) }, { }, - { "c.addi", rv_codec_ci, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi) }, - { "c.jal", rv_codec_cj_jal, rv_fmt_rd_offset, DECOMP(rv_op_jal) }, - { "c.li", rv_codec_ci_li, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi) }, - { "c.addi16sp", rv_codec_ci_16sp, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addi= ) }, - { "c.lui", rv_codec_ci_lui, rv_fmt_rd_uimm, DECOMP(rv_op_lui) }, - { "c.srli", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_srli) }, - { "c.srai", rv_codec_cb_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_srai) }, - { "c.andi", rv_codec_cb_imm, rv_fmt_rd_rs1_imm, DECOMP(rv_op_andi) }, - { "c.sub", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_sub) }, - { "c.xor", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_xor) }, - { "c.or", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_or) }, - { "c.and", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_and) }, - { "c.subw", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_subw) }, - { "c.addw", rv_codec_cs, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_addw) }, - { "c.j", rv_codec_cj, rv_fmt_rd_offset, DECOMP(rv_op_jal) }, - { "c.beqz", rv_codec_cb, rv_fmt_rs1_rs2_offset, DECOMP(rv_op_beq) }, - { "c.bnez", rv_codec_cb, rv_fmt_rs1_rs2_offset, DECOMP(rv_op_bne) }, - { "c.slli", rv_codec_ci_sh6, rv_fmt_rd_rs1_imm, DECOMP(rv_op_slli) }, - { "c.fldsp", rv_codec_ci_ldsp, rv_fmt_frd_offset_rs1, DECOMP(rv_op_fld= ) }, - { "c.lwsp", rv_codec_ci_lwsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lw) }, - { "c.flwsp", rv_codec_ci_lwsp, rv_fmt_frd_offset_rs1, DECOMP(rv_op_flw= ) }, - { "c.jr", rv_codec_cr_jr, rv_fmt_rd_rs1_offset, DECOMP(rv_op_jalr) }, - { "c.mv", rv_codec_cr_mv, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_addi) }, - { "c.ebreak", rv_codec_ci_none, rv_fmt_none, DECOMP(rv_op_ebreak) }, - { "c.jalr", rv_codec_cr_jalr, rv_fmt_rd_rs1_offset, DECOMP(rv_op_jalr)= }, - { "c.add", rv_codec_cr, rv_fmt_rd_rs1_rs2, DECOMP(rv_op_add) }, - { "c.fsdsp", rv_codec_css_sdsp, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_f= sd) }, - { "c.swsp", rv_codec_css_swsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sw)= }, - { "c.fswsp", rv_codec_css_swsp, rv_fmt_frs2_offset_rs1, DECOMP(rv_op_f= sw) }, - { "c.ld", rv_codec_cl_ld, rv_fmt_rd_offset_rs1, DECOMP(rv_op_ld) }, - { "c.sd", rv_codec_cs_sd, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sd) }, - { "c.addiw", rv_codec_ci, rv_fmt_rd_rs1_imm, DECOMP(rv_op_addiw) }, - { "c.ldsp", rv_codec_ci_ldsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_ld) }, - { "c.sdsp", rv_codec_css_sdsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sd)= }, - { "c.lq", rv_codec_cl_lq, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lq) }, - { "c.sq", rv_codec_cs_sq, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sq) }, - { "c.lqsp", rv_codec_ci_lqsp, rv_fmt_rd_offset_rs1, DECOMP(rv_op_lq) }, - { "c.sqsp", rv_codec_css_sqsp, rv_fmt_rs2_offset_rs1, DECOMP(rv_op_sq)= }, + { "c.addi", rv_codec_ci, NULL, DECOMP(rv_op_addi) }, + { "c.jal", rv_codec_cj_jal, NULL, DECOMP(rv_op_jal) }, + { "c.li", rv_codec_ci_li, NULL, DECOMP(rv_op_addi) }, + { "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(rv_op_addi) }, + { "c.lui", rv_codec_ci_lui, NULL, DECOMP(rv_op_lui) }, + { "c.srli", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srli) }, + { "c.srai", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srai) }, + { "c.andi", rv_codec_cb_imm, NULL, DECOMP(rv_op_andi) }, + { "c.sub", rv_codec_cs, NULL, DECOMP(rv_op_sub) }, + { "c.xor", rv_codec_cs, NULL, DECOMP(rv_op_xor) }, + { "c.or", rv_codec_cs, NULL, DECOMP(rv_op_or) }, + { "c.and", rv_codec_cs, NULL, DECOMP(rv_op_and) }, + { "c.subw", rv_codec_cs, NULL, DECOMP(rv_op_subw) }, + { "c.addw", rv_codec_cs, NULL, DECOMP(rv_op_addw) }, + { "c.j", rv_codec_cj, NULL, DECOMP(rv_op_jal) }, + { "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beq) }, + { "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bne) }, + { "c.slli", rv_codec_ci_sh6, NULL, DECOMP(rv_op_slli) }, + { "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_fld) }, + { "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_lw) }, + { "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_flw) }, + { "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jalr) }, + { "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_addi) }, + { "c.ebreak", rv_codec_ci_none, NULL, DECOMP(rv_op_ebreak) }, + { "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(rv_op_jalr) }, + { "c.add", rv_codec_cr, NULL, DECOMP(rv_op_add) }, + { "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_fsd) }, + { "c.swsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_sw) }, + { "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_fsw) }, + { "c.ld", rv_codec_cl_ld, NULL, DECOMP(rv_op_ld) }, + { "c.sd", rv_codec_cs_sd, NULL, DECOMP(rv_op_sd) }, + { "c.addiw", rv_codec_ci, NULL, DECOMP(rv_op_addiw) }, + { "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_ld) }, + { "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_sd) }, + { "c.lq", rv_codec_cl_lq, NULL, DECOMP(rv_op_lq) }, + { "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq) }, + { "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq) }, + { "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq) }, { "nop", rv_codec_i, rv_fmt_none }, { "mv", rv_codec_i, rv_fmt_rd_rs1 }, { "not", rv_codec_i, rv_fmt_rd_rs1 }, @@ -2546,8 +2546,8 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "ssrdp", rv_codec_r, rv_fmt_rd }, { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, DECOMP(rv_op_sspush) }, - { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, DECOMP(rv_op_sspopchk) }, + { "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspush) }, + { "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspopchk) }, { "cbo.inval", rv_codec_r, rv_fmt_rs1 }, { "cbo.clean", rv_codec_r, rv_fmt_rs1 }, { "cbo.flush", rv_codec_r, rv_fmt_rs1 }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315604; cv=none; d=zohomail.com; s=zohoarc; b=e4ikG9slWDkIbfU6Uisf3hb8Dw/10mL0eAFVFCoHS2MSMOtIpmmXup8gHeMtiDOvWbNo5p5NdxQFdCtQabC/3jYpVKO7KSyn53lKESCMB37z49vQcXvpamu/UoYlKDvk3/pJeR5Epb8iifiDZ1p3xu598FuRnyHdcJUPdg5+r4E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315604; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0BY9TIRrsUSJx50LoiD28uvbBs5FTX1e/Ge2Ja87Ilc=; b=RtXwvJPxZxxjByYz+L8nTmw7Rq/1mmrovUhnblvWs/JKU4XaxnZLFJ1JFbfBNCdH7fwgeN56xgJkjNJ+SVAtZwc8Xn+MgncSHVpwHLtA7dL2VgGvkIfzfW3iDR3EFzIkT7ewMWsVST5WS+5VJpW3Ckaoo0k0ueuc5c5W4YQHAew= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631560453885.49282408800764; Sun, 9 Aug 2026 15:46:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8A-0001H0-2d; Sun, 09 Aug 2026 18:36:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC87-00019o-Vb for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:31 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC86-0007Uo-5N for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:31 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2d032846c95so15778595ad.1 for ; Sun, 09 Aug 2026 15:36:29 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314989; x=1786919789; darn=nongnu.org; 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:content-type; bh=0BY9TIRrsUSJx50LoiD28uvbBs5FTX1e/Ge2Ja87Ilc=; b=Ga3bTE36iOJmekOLDYguOsKFhOM310JS54Unhe9yf2JkzxucgKxvkR/Ad3h7KcBNvR eloB3tVch7vmtYczd7MuFgZtETDodlz3Rgoj8ijo8tdNcsmPKxPL8h7I5LhRUoQDeDgu hrRsGrLcpkArUtBvtg58OiFBWmuush/k+iA4BQIbnyVt++/STQ10/jhU5UxpGj3ADeov YwS7tVLyjxOPnsIh1h/7HMEDDmLo0G6pc0GiZLMiaBx0NfhD2Tk6b3IAuATEVlCCy80Y /GqHvqa5HtrDVa/hw599IMrf7eBvhqrBTnfQJGMvDYYZ0Zho0yexriKeLVJTXbs7sd+5 Ucpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314989; x=1786919789; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0BY9TIRrsUSJx50LoiD28uvbBs5FTX1e/Ge2Ja87Ilc=; b=Bro4ypkSlONz+XGnfdMsqjErXSsBuEwMF9DJSlvUT/bs5MPcJMzDuJUt/fG2mZWwTi wNw564EqLyUQWim/edAzJOujduNzVTMPtlrZO+DX/kdrlodAahtMexNKs/qTFfszYu0w z/XOx4kpfOqLZXwFgJKJPR0ZBnhl9yoBeEzqg//jzwS/87Uwb83sDvnB/Rg9un6LPnY8 YHUgM3SZ031jyyJ/DSi+u2fmWQ9Oj2ML1Nt+G53QQfoUIrW8CkxOfdMgJGcjI/QxN73H dI+KrDaT2D9Nr+MxH38ZXyvXLiCBEE1icSn5a0fFjrsjA39AB1BvWJxLveAwzMaJ/W3Y /HXg== X-Gm-Message-State: AOJu0Yzt+JexGOt9gsSsrBhxGcbkuYJKfUzag/ZVmamSdegVkRKRRJ/K ioaI3mxx66x54R98gPUIs/KOnV21J32LElo/YzBYfILDktiwsTSoRRUXgTYmZljBLOFzYKccRKb DHSZi X-Gm-Gg: AR+sD10EayUAQxGFcv8/F5n3ymjc6Ky1nu1Oy8r2nGPUQLKZRJDiW15yjxhkp97y5CU 33S9i0nPZ3OEphTqsgM1T66zqEcPiqzlxqCE1oY0U0DiTx4X40guKGMQ940QoWBtlP/N4kCLi16 hl80f3+8xDuygOCi+6iZPVn3N5rzYH1UbYoRfpNo3wd3Af2raLqQ/bLtrQGY1zVEzhKKoM8nd3j 8/ch5vOVhspgV2v+qTgub1qtGhZ4/Q5EF7ilF1UiC1Px9HNAwcC06jIGN9WL4MDKSfHzuHej+h0 o+J6rtgxUIJfllx3R+GJVjQRMsPmvH6dIPt8Gt1N/eot0HhdmIfLlyJ2fwHIU6q0RxSYta5Z0fX G0iZyt8ntyFVnGYpCa9/pbZIx+/e38j7wrRd/L3yf2p0noADqljOcCcLctLxTTQS7gVLYeDS+a8 GH0+1MRPhhymT+IKr9pmPOMik7gpajY+G3sTugFiDocabGUVhDSPYR90Q6E3hccd+xA/66Oct6E vY82sLllm/fG5gsqBxr X-Received: by 2002:a05:6a21:6013:b0:3c3:7ac4:dac0 with SMTP id adf61e73a8af0-3cb85df2790mr48743228637.13.1786314988637; Sun, 09 Aug 2026 15:36:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 34/56] disas/riscv: Tidy rv_comp_data terminators Date: Sun, 9 Aug 2026 15:35:23 -0700 Message-ID: <20260809223545.730664-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315605143158500 Content-Type: text/plain; charset="utf-8" Use { } instead of two zeros. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 9904b4db03..bb4779614b 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1072,123 +1072,123 @@ static const rvc_constraint rvcc_true[] =3D { rvc= _end }; static const rv_comp_data rvcp_jal[] =3D { { rv_op_j, rvcc_j }, { rv_op_jal_ra, rvcc_jal_ra }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_jalr[] =3D { { rv_op_ret, rvcc_ret }, { rv_op_jr, rvcc_jr }, { rv_op_jalr_ra, rvcc_jalr_ra }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_beq[] =3D { { rv_op_beqz, rvcc_beqz }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_bne[] =3D { { rv_op_bnez, rvcc_bnez }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_blt[] =3D { { rv_op_bltz, rvcc_bltz }, { rv_op_bgtz, rvcc_bgtz }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_bge[] =3D { { rv_op_blez, rvcc_blez }, { rv_op_bgez, rvcc_bgez }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_addi[] =3D { { rv_op_nop, rvcc_nop }, { rv_op_mv, rvcc_mv }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_sltiu[] =3D { { rv_op_seqz, rvcc_seqz }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_xori[] =3D { { rv_op_not, rvcc_not }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_sub[] =3D { { rv_op_neg, rvcc_neg }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_slt[] =3D { { rv_op_sltz, rvcc_sltz }, { rv_op_sgtz, rvcc_sgtz }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_sltu[] =3D { { rv_op_snez, rvcc_snez }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_addiw[] =3D { { rv_op_sext_w, rvcc_sext_w }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_subw[] =3D { { rv_op_negw, rvcc_negw }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnj_s[] =3D { { rv_op_fmv_s, rvcc_fmv_s }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjn_s[] =3D { { rv_op_fneg_s, rvcc_fneg_s }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjx_s[] =3D { { rv_op_fabs_s, rvcc_fabs_s }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnj_d[] =3D { { rv_op_fmv_d, rvcc_fmv_d }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjn_d[] =3D { { rv_op_fneg_d, rvcc_fneg_d }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjx_d[] =3D { { rv_op_fabs_d, rvcc_fabs_d }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnj_q[] =3D { { rv_op_fmv_q, rvcc_fmv_q }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjn_q[] =3D { { rv_op_fneg_q, rvcc_fneg_q }, - { rv_op_illegal, NULL } + { }, }; =20 static const rv_comp_data rvcp_fsgnjx_q[] =3D { { rv_op_fabs_q, rvcc_fabs_q }, - { rv_op_illegal, NULL } + { }, }; =20 /* Convert compressed insns into normal insns via pseudo expansion. */ --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315437; cv=none; d=zohomail.com; s=zohoarc; b=XMQaZ5RU1Dop1I4GVjH+W8zkS+d919phWJAHte9+aDsKnkKljphv6OOxwxpHDRKkvKf1sXHd3VPZVltu3HFlZn1WQgvWZxOxS/3HvNyVr9UW31U2tYEs703pqsZMrTirpGi5zGa5uCDKXx+mXlUuhFePW5jN9OS+q4M2iIimN2w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315437; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PpWt1nMmBJbR0ViO/0y4L3pwLje0jeG3yYA88r5hCo4=; b=ZatVDOcZl6t17XaWYZsXSX7a/u/Yvddre8BcITFb/IHZyXJbMaZGpuIO4vm/CFW2CbYkYrFvhYA99ZZxMpiVRePgYumOHmXws4ZrxvGEIZGg5AUuOLTwodEfemIJn2lUPzbz3BgS0u4gzswzmYa5NfTyugM+/zEsdyBZnNsNvc4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631543727548.09725248927418; Sun, 9 Aug 2026 15:43:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8A-0001Hz-Ie; Sun, 09 Aug 2026 18:36:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC88-0001Dj-QA for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:32 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC87-0007VC-86 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:32 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-ca766c1c9ccso665268a12.0 for ; Sun, 09 Aug 2026 15:36:30 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314990; x=1786919790; darn=nongnu.org; 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:content-type; bh=PpWt1nMmBJbR0ViO/0y4L3pwLje0jeG3yYA88r5hCo4=; b=Lxs8q9/5YF5JNN6msd8TvcSLP6n6cOR+hOoEMxEGVhI+E6CSKyw0UrzPiwUsnZBAVS 65HpUXPDzTzgXR7PSI9//IqhUoXpWiByNNrXy/qVyJmc3xZbMCeOG87+AW8cd1Y/D8gl VUkp7584blUUTx0wG4boc5J43TOzsBN3UHMhHhRn5ZUbSM5ZU3gaz59i4L4t3flUTGOI b+3pN7cv/qQP1BbFNgBn4E6t66v463pOeQI9xP4VONSXN259TE6wCQHUhz2YTCclTgDz HqhCFqmvorLwulfDfMO0SWVmQ6vVWf2s5OMcBJc2oq8AGECVlBqR/if2s9MHHeCAMnie TVRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314990; x=1786919790; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PpWt1nMmBJbR0ViO/0y4L3pwLje0jeG3yYA88r5hCo4=; b=KfebTCZ1R9NeAXGsUqB4XKQpGbIQeU2TAnqEKAv3QOqOkf+/+HxUBSu344h80uB4eb 3VIe+CafHv1lkMXn3nF0NXIiNlmP41aEg1zkbkFvzN1RVgrJybXjxJ1g9+37I1jjjKXG qWeaSYwS22bjxT2b4Qn8INVeAc7vp4/hw0Mc5fht/HvLum54KBwyh8H+67rN3weRWw4L XA8hn12mJ3tHi0Ju6ZlSh0jEGrI2+yvMCK3zCptodT5xn2HXgpV8mY6D+l1xai6IeRXh ApLAGjAKBD9LxraOL08slIKhwzbLEq5+cJ7hiPrEgatp8/KGt22P8a6y46aOraEOoymN EDuQ== X-Gm-Message-State: AOJu0Yw/1axUR0/ATDH6oQ6nPgLNySOf4Peu4WQWhZPNt6uWV3++a1zR GBo2vB5xsYlTtfMt3Rm8oUAJRYHMoCH4J4l0pNpPDMehv6r8LtSeCuDDcd4NOB1sxg8Bp9B9qyr BSxsC X-Gm-Gg: AR+sD13MbT/W+8GSsoSpRdBizdnjNU2IrU/Hs0IzI1EOKyFFDg6oclKu4MNfXmeU/tE O8+NGor7/RpL7jKGkwkN8UHg62/QxS0m0WVZueTn19MQX0BSmLzOBJzulguFtud8F51b7yQWrec TBLKSHwFngOl2UhO6VYEuDem56RZ74BrSzjlIJt0h9SWZFdGN1V6JH0KvBP9ZM/oAr3HUkwGc/b d/17mNqo//eSJntpZTvQlNX7JdZgFzFcR1iDssTUCMW2zHq8EtGBHjgI1j56oR5cnQsDnV7rtb7 ppB/UZAo2nhPzuirw9Oul6wWLafbessEAl1jlvslikFM8rvERylzEP3M7Fk85jaVpKDeDWNFBdK 9ewLewEWv1jmEVmdnLUxgq90J3jO6e/y6x4eQMVxN1QepKIhLltix2Xdq7+eLkQgwMWKk9MQ4ZB 9idqFybee8351quwxOWqs6YdNpSgs6G5hi+9g8oyQMv91pYl192+pRkp1aY9tOn4fQKz0evyE52 omYAQLOkpt+ZHLU/5LvykoY25dOZ8o= X-Received: by 2002:a05:6a00:ad5:b0:846:de21:3da4 with SMTP id d2e1a72fcca58-84f2e021ff5mr39961380b3a.3.1786314989757; Sun, 09 Aug 2026 15:36:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 35/56] disas/riscv: Chain "ret" pseudo off "jr" pseudo Date: Sun, 9 Aug 2026 15:35:24 -0700 Message-ID: <20260809223545.730664-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315438584158500 Content-Type: text/plain; charset="utf-8" "jr" has already checked two conditions that apply to "ret". Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index bb4779614b..2fec135b5f 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1061,8 +1061,7 @@ static const rvc_constraint rvcc_bgez[] =3D { rvc_rs2= _eq_x0, rvc_end }; static const rvc_constraint rvcc_bltz[] =3D { rvc_rs2_eq_x0, rvc_end }; static const rvc_constraint rvcc_bgtz[] =3D { rvc_rs1_eq_x0, rvc_end }; static const rvc_constraint rvcc_j[] =3D { rvc_rd_eq_x0, rvc_end }; -static const rvc_constraint rvcc_ret[] =3D { rvc_rd_eq_x0, rvc_rs1_eq_ra, - rvc_end }; +static const rvc_constraint rvcc_ret[] =3D { rvc_rs1_eq_ra, rvc_end }; static const rvc_constraint rvcc_jr[] =3D { rvc_rd_eq_x0, rvc_imm_eq_zero, rvc_end }; static const rvc_constraint rvcc_true[] =3D { rvc_end }; @@ -1076,12 +1075,16 @@ static const rv_comp_data rvcp_jal[] =3D { }; =20 static const rv_comp_data rvcp_jalr[] =3D { - { rv_op_ret, rvcc_ret }, { rv_op_jr, rvcc_jr }, { rv_op_jalr_ra, rvcc_jalr_ra }, { }, }; =20 +static const rv_comp_data rvcp_jr[] =3D { + { rv_op_ret, rvcc_ret }, + { }, +}; + static const rv_comp_data rvcp_beq[] =3D { { rv_op_beqz, rvcc_beqz }, { }, @@ -1896,7 +1899,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { }, { "j", rv_codec_uj, rv_fmt_offset }, { "ret", rv_codec_i, rv_fmt_none }, - { "jr", rv_codec_i, rv_fmt_rs1 }, + { "jr", rv_codec_i, rv_fmt_rs1, rvcp_jr }, { "rdcycle", rv_codec_i_csr, rv_fmt_rd }, { "rdtime", rv_codec_i_csr, rv_fmt_rd }, { "rdinstret", rv_codec_i_csr, rv_fmt_rd }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315221; cv=none; d=zohomail.com; s=zohoarc; b=jqeFGyxeuloylnnM0OSRvMg6qsKHGQkkMwNiWiwmmXgEeFYZjgFeEIN7XfovM0Wva6Y6rdmdo2rzIMqxuxDp11QzegcMB5IxkWVtbfP91uS49r1m2eO9dwljI/oi8MkX2WA07gwbIgRVJlKIr/Tj4ZbMCEYszgBflrxfh98jiag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315221; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1B1clRZ2sxLvuLYBilMUBWv+75W8rJPRUtukNd1MOmM=; b=DSiTcAFtObizB8Mjoi+v3yCA90qf1Yotb7Hxij3OZtli2r8TzitsyvcbBViNN7p2HXzSQAvDIbsjtlFoa6Jxxw3aBjVBH3uOR1gdWzTTYRlUjKOjXfRgl5ftOm8am0tvGcn5MMifk50FCcD0p6j7VB3MPGz1BVIXEJYo1w2rn50= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315221084718.7961854042705; Sun, 9 Aug 2026 15:40:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8B-0001IT-C6; Sun, 09 Aug 2026 18:36:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC8A-0001H3-2L for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:34 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC88-0007Vg-FI for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:33 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-ca00f126b7eso671904a12.2 for ; Sun, 09 Aug 2026 15:36:32 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314991; x=1786919791; darn=nongnu.org; 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:content-type; bh=1B1clRZ2sxLvuLYBilMUBWv+75W8rJPRUtukNd1MOmM=; b=K5/RsD3BWTdc/FPXPi6qxtO3s/4a2R9RZBoPqOm9xhs4IhUMKSKDVirCLPnzQbdNE1 BB7uGm7dWmFp9Z37HYEVXwsyJzYqbPoO3uWQLbCcrgpkrqFU0/ZtJ+s5qT6qpxk2YJqc eVPMYK2sf9GAqZcd5509ro0O7J4rAb5HzgjlbOWBtoUYYyDdt1AZK7A4VX+wecxZVjY3 xlr7mqAQZRbDYScVSxNJzHbqRiyGX/uO/ASB7v/E9Qc8SN+3LSd2oozEdGmtedkLvvxj yCYp0Fiz60h4PNPJzzIX/nn1j+0XAgszaaEKK+22MHaDXXt8P9Y84Mr6exLrI36dMSOb opKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314991; x=1786919791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1B1clRZ2sxLvuLYBilMUBWv+75W8rJPRUtukNd1MOmM=; b=EgC3yEryFFlBdZHn/h8rvzILfxHD3k2VnU2W2gvPRHlRDaSOtYwYONyZtrEHRFwIlB IQZfhLcnAAjDyYjuzx4DaFCQp6SKJbf5teSne+LcRzpXVro5EhVtEsZnLSEr/nanByJd qPZhjLQeH5okAfszUu2nLRYM/p1sseOaQdZtzfCQk3TGNKapBi0y6desLgBtAMgpb0uM eRXnTtIU0Xy+07RpBRgOQ/Y3cTfi6kQA/0TMqPXJDIuHFvLYsBRVCJ9tSnle97lwWLrh X+SCTSyRJfSH7cjEO5s6mEGDxt2tIhW5G1IojpdfI2rFCjMZuG3JLAiabzI0OPl88y4j RFTA== X-Gm-Message-State: AOJu0YxUtM30Wn+JrvWLmFfw3ATh/Rz+NRR4Giom+bJJrf367MK5ugBV 7Hb4DmxRudGvKmU6K49PYm0SO0UY+x5c7e/tsaCQ0PzTd/PWoxqtCAxTmOyj/x1GP9iZDZVmlhW O8Baz X-Gm-Gg: AR+sD10H6n5N5hQzdjheayhRlGxITgptqw+/DWFsVAeI/hdj+tFVO+iA5UfgpRCRjO2 j3daDqk+qOzwC2Rt2O1eFsh0MbL+vKR3cGG9LS5pQ3WieSVciSIFXgCPNKyweqVOynqZoa7NWAj alk2DTL6fEDbU1Qpg7hiFDCep/Fq4nj9ic/vDCrfVmA4+vo4NsNsNTNJMxTUept+z5Y7Gn85QLo VjLww7h0H00pJzA8rsGHLeF7qMv0EV8vApaPvKld4zariHCKJp4NmiplaTr75zw4eViWfgDOFSr RjVtdxMSEnziQGRoyAPRaXXK8Bq9e9CYUs7DGN5w0r2KKnvuzQZz3fGR3x7INcpsc7t5Br7pLL8 vJB8qDU8oyXhoS8QKAHMj9fPzE8ONGlQqihrDzjyxugX0gNvDB8RZhZX/6uVvnOLEKBsjBGA9fm /SvxYBB4pD11WxqYfL+OP16A+SPBqrUolmkjQHgNCRl5eUT6e6gPzMJqaAjPh7Oy92iRG15rTqj d41aawpTJl7GKA75PQI X-Received: by 2002:a05:6a00:3305:b0:845:eb88:3d74 with SMTP id d2e1a72fcca58-84f2e06b682mr45239468b3a.29.1786314991010; Sun, 09 Aug 2026 15:36:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 36/56] disas/riscv: Chain "nop" pseudo off "mv" pseudo Date: Sun, 9 Aug 2026 15:35:25 -0700 Message-ID: <20260809223545.730664-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315221859158500 Content-Type: text/plain; charset="utf-8" "mv" has already checked a condition that applies to "nop". Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 2fec135b5f..37f6440831 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1035,7 +1035,7 @@ static const rvc_constraint rvcc_jal_ra[] =3D { rvc_r= d_eq_ra, rvc_end }; static const rvc_constraint rvcc_jalr_ra[] =3D { rvc_rd_eq_ra, rvc_imm_eq_= zero, rvc_end }; static const rvc_constraint rvcc_nop[] =3D { rvc_rd_eq_x0, rvc_rs1_eq_x0, - rvc_imm_eq_zero, rvc_end }; + rvc_end }; static const rvc_constraint rvcc_mv[] =3D { rvc_imm_eq_zero, rvc_end }; static const rvc_constraint rvcc_not[] =3D { rvc_imm_eq_n1, rvc_end }; static const rvc_constraint rvcc_neg[] =3D { rvc_rs1_eq_x0, rvc_end }; @@ -1108,11 +1108,15 @@ static const rv_comp_data rvcp_bge[] =3D { }; =20 static const rv_comp_data rvcp_addi[] =3D { - { rv_op_nop, rvcc_nop }, { rv_op_mv, rvcc_mv }, { }, }; =20 +static const rv_comp_data rvcp_mv[] =3D { + { rv_op_nop, rvcc_nop }, + { }, +}; + static const rv_comp_data rvcp_sltiu[] =3D { { rv_op_seqz, rvcc_seqz }, { }, @@ -1869,7 +1873,7 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq) }, { "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq) }, { "nop", rv_codec_i, rv_fmt_none }, - { "mv", rv_codec_i, rv_fmt_rd_rs1 }, + { "mv", rv_codec_i, rv_fmt_rd_rs1, rvcp_mv }, { "not", rv_codec_i, rv_fmt_rd_rs1 }, { "neg", rv_codec_r, rv_fmt_rd_rs2 }, { "negw", rv_codec_r, rv_fmt_rd_rs2 }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315047; cv=none; d=zohomail.com; s=zohoarc; b=hAnZ9pQSkx5GwGcGhFGZ1EFndc8+LR5KR3iCN94mXPMJ009bOvHX/Y3geJtrc743exk5IUDra7OJTLdXW14LNoTKgQ7UBU/2MfwWilv5vwLxONXo04suFe6Fx+Ciads7dk53akXOY9xdeWRTwEmcdCg0uGtfLBAd7hAlkDzaoCU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315047; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QDdGXOAjRCRTBpAOJM0ehmKygQxg7qLy2hsExy2wv8c=; b=U+w47XZJd4hY20p6wEOE3jt7T3i5oMmVu+5XvmM4xyIwHqeRUxM2B7SuAju6KnIkbEy3DpzBX4JVVbaxPQC7CgngvGkouYuICiwqI09gA+mWUXJDapTMHUVoqE3a7JMvkncCBpq5g/NLIOn9hOZAic7gNcwB7hTyHBwwHUYEY0k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315047094278.1644270483305; Sun, 9 Aug 2026 15:37:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8C-0001Jv-VM; Sun, 09 Aug 2026 18:36:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC8B-0001IX-Fz for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:35 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC89-0007WE-OK for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:35 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2cf27856f9cso14728295ad.2 for ; Sun, 09 Aug 2026 15:36:33 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314992; x=1786919792; darn=nongnu.org; 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:content-type; bh=QDdGXOAjRCRTBpAOJM0ehmKygQxg7qLy2hsExy2wv8c=; b=N9eeUU0Y44OOgZHAhmnff0qzPFauKrVHJJfw5X1bMy31fXseJaAh33QppIIT9Xc/E1 zyIyi6FyxClf1LFITx4vrF0ziOKnB6yMBbbUUSMVXqr94cjQukw8ClIsrYWPOTKXtdvO ZB3Tp1bxh9udzQpYsO1xh8e9hjlDTYeI+oKY6ilyHCS0Eljly6G/h/baX7C3mXtceV+j ghVLXbXH8cTtEUGSA6R0BuU9pWLcbrZwPP1GWqtU4TZfyNoiRq9tTf9Ze7P0yV5FJYl8 xKq+PmHx8IlGT/8xD9+xQMXXv76JR/swMXDhnVAKThhj9MpaeqgZgWVJbsf7RP+bOWAI /l8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314992; x=1786919792; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=QDdGXOAjRCRTBpAOJM0ehmKygQxg7qLy2hsExy2wv8c=; b=R3Q5AIBbMryuZuTL3/7RQwqDf50u/HoqTSHJzaCSrnUuYJuIV3lGc8TuOdXQlvE3MD 0Bs2YDKNE4BGh/8xGPHX1QkkQgWIIAt6n7PeX7algsTH9tOIndzKovWW6jko99yxMRax 4YY8BbvN0lj++OmnxeKK5hnhEPzcjQKINeh0DFdrGs/ZKol1TRbj7Wcl8DDboJ+81Hmt MDcoi7xDCkgbtkPQcQ68zFrhbvnwT+/pBCqn+4UMs7u09tUZLdBpsiRty+xJo5qf3o4c kBwdZz7Pof0lyhwamshFQib21wssILgf/JuE+KqKXrGNkHCi42W6ahU68hgMgsiK0Gvt g3NA== X-Gm-Message-State: AOJu0YzOXtlecyQkw8IT0FK+x2rHtd8dS6m2BgqUf/Xd1AR0J5eeDriJ 4+axbJCBIdRnR06BCZL0RACV2iH7DctwtDNyHjqPFrM1hPSkeohd3dczo9lTy+GbE6QdPRiOWFl yb+RH X-Gm-Gg: AR+sD11VzJIZvsWe/Cy3Sh4LFWAEBuIG0UNot90WtMO5JUIGXXhI/0wRFnArJKaEBAs bMQySPP2zh7fuvjsYXCyP5ySW5h6LZIAPvHyxIF522Ozpd6KtFaA+VAkXkLBc/wbgZ+xx+Go4z8 ADBI4wVDCs+PCYjPAom7rbxlrN2+Fwi7fRPZ+/24ej0EFBsxHI3EDiBbmk4tWwJW+PiEdUyO+Gt j8xJ4yAQ1jb+N/kHEHk7bL7JDOt4WbiOU3otX1UwXVBCvntmVXpD7vblxgg6MbWCql6TEVMCxMv gzOv9YFbDneJ3QPOFgp8QRPXY3uG9t+3s+9z/yVJ828uRdoE1aVe8A4FT1So+yBNJZhf+xe/4lE 7WwlYP5Zec3EdwTwwsBd7SxGsY7jxHj3TmcbqzCwQWSoRERb7YF5rwVDsPCLSVrBjZAKJ7YJuP1 5MxGG9xS2YmnWTWmeigaeaWgNwDXuwYUq9Qxugafx9A807OS+eako2otcMAhZ8mUzNtstAKMWcd TZWm1wbEMLsv3n/8aTj X-Received: by 2002:a05:6300:4049:b0:3bf:a638:4376 with SMTP id adf61e73a8af0-3cb85ea369dmr44314498637.21.1786314992183; Sun, 09 Aug 2026 15:36:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 37/56] disas/riscv: Use rv_codec_illegal for pseudos Date: Sun, 9 Aug 2026 15:35:26 -0700 Message-ID: <20260809223545.730664-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315049368158500 Content-Type: text/plain; charset="utf-8" The codec is never used, since we arrive into pseudos from a decoding of another opcode. Assert that rv_codec_illegal is never decoded. Use rv_codec_none for rv_op_illegal. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 37f6440831..fc821355fe 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1599,7 +1599,7 @@ static uint32_t operand_lpl(rv_inst inst) /* instruction metadata */ =20 static const rv_opcode_data rvi_opcode_data[] =3D { - { "illegal", rv_codec_illegal, rv_fmt_none }, + { "illegal", rv_codec_none, rv_fmt_none }, { "lui", rv_codec_u, rv_fmt_rd_uimm }, { "auipc", rv_codec_u, rv_fmt_rd_uoffset }, { "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal }, @@ -1872,38 +1872,38 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq) }, { "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq) }, { "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq) }, - { "nop", rv_codec_i, rv_fmt_none }, - { "mv", rv_codec_i, rv_fmt_rd_rs1, rvcp_mv }, - { "not", rv_codec_i, rv_fmt_rd_rs1 }, - { "neg", rv_codec_r, rv_fmt_rd_rs2 }, - { "negw", rv_codec_r, rv_fmt_rd_rs2 }, - { "sext.w", rv_codec_i, rv_fmt_rd_rs1 }, - { "seqz", rv_codec_i, rv_fmt_rd_rs1 }, - { "snez", rv_codec_r, rv_fmt_rd_rs2 }, - { "sltz", rv_codec_r, rv_fmt_rd_rs1 }, - { "sgtz", rv_codec_r, rv_fmt_rd_rs2 }, - { "fmv.s", rv_codec_r, rv_fmt_frd_frs1 }, - { "fabs.s", rv_codec_r, rv_fmt_frd_frs1 }, - { "fneg.s", rv_codec_r, rv_fmt_frd_frs1 }, - { "fmv.d", rv_codec_r, rv_fmt_frd_frs1 }, - { "fabs.d", rv_codec_r, rv_fmt_frd_frs1 }, - { "fneg.d", rv_codec_r, rv_fmt_frd_frs1 }, - { "fmv.q", rv_codec_r, rv_fmt_frd_frs1 }, - { "fabs.q", rv_codec_r, rv_fmt_frd_frs1 }, - { "fneg.q", rv_codec_r, rv_fmt_frd_frs1 }, - { "beqz", rv_codec_sb, rv_fmt_rs1_offset }, - { "bnez", rv_codec_sb, rv_fmt_rs1_offset }, - { "blez", rv_codec_sb, rv_fmt_rs2_offset }, - { "bgez", rv_codec_sb, rv_fmt_rs1_offset }, - { "bltz", rv_codec_sb, rv_fmt_rs1_offset }, - { "bgtz", rv_codec_sb, rv_fmt_rs2_offset }, - { "jal", rv_codec_none, rv_fmt_offset }, /* rv_op_jal_ra */ - { "jalr", rv_codec_none, rv_fmt_rs1 }, /* rv_op_jalr_ra */ + { "nop", rv_codec_illegal, rv_fmt_none }, + { "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv }, + { "not", rv_codec_illegal, rv_fmt_rd_rs1 }, + { "neg", rv_codec_illegal, rv_fmt_rd_rs2 }, + { "negw", rv_codec_illegal, rv_fmt_rd_rs2 }, + { "sext.w", rv_codec_illegal, rv_fmt_rd_rs1 }, + { "seqz", rv_codec_illegal, rv_fmt_rd_rs1 }, + { "snez", rv_codec_illegal, rv_fmt_rd_rs2 }, + { "sltz", rv_codec_illegal, rv_fmt_rd_rs1 }, + { "sgtz", rv_codec_illegal, rv_fmt_rd_rs2 }, + { "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1 }, + { "beqz", rv_codec_illegal, rv_fmt_rs1_offset }, + { "bnez", rv_codec_illegal, rv_fmt_rs1_offset }, + { "blez", rv_codec_illegal, rv_fmt_rs2_offset }, + { "bgez", rv_codec_illegal, rv_fmt_rs1_offset }, + { "bltz", rv_codec_illegal, rv_fmt_rs1_offset }, + { "bgtz", rv_codec_illegal, rv_fmt_rs2_offset }, + { "jal", rv_codec_illegal, rv_fmt_offset }, /* rv_op_jal_ra */ + { "jalr", rv_codec_illegal, rv_fmt_rs1 }, /* rv_op_jalr_ra */ { }, { }, - { "j", rv_codec_uj, rv_fmt_offset }, - { "ret", rv_codec_i, rv_fmt_none }, - { "jr", rv_codec_i, rv_fmt_rs1, rvcp_jr }, + { "j", rv_codec_illegal, rv_fmt_offset }, + { "ret", rv_codec_illegal, rv_fmt_none }, + { "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr }, { "rdcycle", rv_codec_i_csr, rv_fmt_rd }, { "rdtime", rv_codec_i_csr, rv_fmt_rd }, { "rdinstret", rv_codec_i_csr, rv_fmt_rd }, @@ -4551,8 +4551,6 @@ static void decode_inst_operands(rv_decode *dec, rv_i= sa isa, rv_inst inst =3D dec->inst; =20 switch (op->codec) { - case rv_codec_illegal: - break; case rv_codec_none: dec->rd =3D dec->rs1 =3D dec->rs2 =3D rv_ireg_zero; dec->imm =3D 0; @@ -4946,7 +4944,9 @@ static void decode_inst_operands(rv_decode *dec, rv_i= sa isa, dec->rs1 =3D dec->rs2 =3D operand_crs1(inst); dec->imm =3D 0; break; - }; + default: + g_assert_not_reached(); + } } =20 /* check constraint */ --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315343; cv=none; d=zohomail.com; s=zohoarc; b=JcBvVO+kaVkkMZ55RFaQeG1m05cj5JSYWBahHIremNdBG/mrL3OK8Tp0YY+YHIDy5Gqe2kvTtiGYuwPAST28jnpBIGnB1TaDbEeQVgx2t5rjQqmTsSFR1evOr+0VcKcQl8qX0JD5RF3lbY5k+BjlqYW09Q0M/hWfUtssxR+KTWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315343; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kYsIul/61IhCa6F/lTcoHSFIX3vKxxDLD588ZuPF2o8=; b=motk5KCF6h3cpJoK+Tv6FoPX2Gx2LybwNhLcyFZlLZyt5CHCQIB3THs6UPM5JUcBjDIiVfwa9RPjLSdMoYfAptnjB9Pdj5JPJuaiUdt5OdWQP0CFe+Ho9rbQt1+ax1TBJfu7PPiP3jRsq/yh21OCHMBEYz7/DQJZbqCrg/RYWgM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315343666816.6223030335161; Sun, 9 Aug 2026 15:42:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8D-0001K0-03; Sun, 09 Aug 2026 18:36:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC8B-0001Ix-V2 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:35 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC8A-0007Wb-D5 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:35 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-84874b52eabso1636738b3a.0 for ; Sun, 09 Aug 2026 15:36:34 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314993; x=1786919793; darn=nongnu.org; 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:content-type; bh=kYsIul/61IhCa6F/lTcoHSFIX3vKxxDLD588ZuPF2o8=; b=G4IRHYD7Trjd9bS6SRgEuZ44L4figRrGNkcwpj9IQXMnATXDLzELnLhWKdQgsf4EK2 4UXYoeW2UPPFA1PPomSDnr7pwsd/fFcZwK3uRoMZRP25Lx33uggh1OIVs3xu+GUmX0Dc DIA5Rl8ZxdmIQxelgbspvqJWLh/PfMjDR9zTry6/Cogz1z9WEkc8tBS6pU0wPSLUwj5D zNsKFUJ0sKPCHwY2y7eTY97z8wTZeBHoMssPPh4YG7bCz4DcmPR+cduwLkphlFuxQfRM VrKUvVyWaTDCPVeBWeJy1/Dl4HNX9gD6h224LOlTMx45At8f8vwQP9Ae68vhj0pkBYUW eQBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314993; x=1786919793; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kYsIul/61IhCa6F/lTcoHSFIX3vKxxDLD588ZuPF2o8=; b=ss4ORaRbRxxHg2zUlFWcKEsGuAiJ2jrYXQ4RhYMazvvCy89SiXy4XI8WUQdwmjhXM0 DhFQPe2gJnX8gKfNO4xaZQE48wwdeyRhnWs/mKu6VmVmYgf9mTbcZl9P0Xy/dydcbvLU IlNnsXYPniZwJ2WXARbHo5sozRcWsY8AwEt8jFUS2eIGE2QxAZN0OGE1wEK2Fil8yfm0 NJ06hS1RwU1WxJTxdRKbpxPo+MSg+zZ94x+RLCgZF/ESRPoP4lLwnqP2SAn/oc0rbsjP Pmk+G+xAFi8m0DO3n8JqhNneCfvKsFfI3OyeZNvu10fdF4heRTUS9seUPHJBJ3eEWyVX wHNw== X-Gm-Message-State: AOJu0YzcvKmhT6b79np4X0UjyclE5m7ZDVsVnqfbijHpK3K0rSHmyD1n bN/asqYJKnMZhrgjOwszGlaqzkZ3hqlUViY1nCQTGqaMAzYXzPl9rfgexe70tn8tpVkoUiWQC93 QBOso X-Gm-Gg: AR+sD12Vpq/lA85pP6p4OHBSMOABcE7oBO53Fq+16ufjX+XtPBYip+HjxFyVgfUXPp8 5IEu778H8Sr8S9dsb5WdH/AluWOUO9rRSqswGVIsODmT7jlt1CCS+OHi7VLBWh+HhcwM9yrHTme mO5GL7MoMcP/51CpGMDEeJlIWAqyrnDfCzWqT/jocL2Tpn5HH+yKo8dN1zTaYKqlQlgSgg2Q1EB FN0lZY85rVGGJpuAkVa52EUSiZFz3by7EkbCcCEdcag+DI0FyGloZFoRFKY9SI8xugHCBEkfC5l Et54tHj2tCccU/CwsowEIvj8JsHeGXvgttSw3sUUUmmT/t8XYTw5zHWtt/aCUCvrAAzYR0DYhuL vglekBgghtRWzvYVDUtN1g4U5jBsfYL55fv1ASUwdqp//ye/oEcvPsj+gx3XzR5z9yviCrzEvHk 6s/dPPRJxrpUpSCfMjLpV3GpTtqiPtI1QGITQImiJVUQa+v0T6ARxxRkQdMvRzbBYEu8jNILtWP HyhDAzN4IzvqTXVWe4U X-Received: by 2002:a05:6a00:2883:b0:847:902a:57b5 with SMTP id d2e1a72fcca58-84f5e1149admr22553043b3a.35.1786314993157; Sun, 09 Aug 2026 15:36:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 38/56] disas/riscv: Simplify some insn decompressions Date: Sun, 9 Aug 2026 15:35:27 -0700 Message-ID: <20260809223545.730664-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315344301158500 Content-Type: text/plain; charset="utf-8" Route "c.j" to "j" instead of "jal", etc. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index fc821355fe..9a528803e8 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1848,15 +1848,15 @@ static const rv_opcode_data rvi_opcode_data[] =3D { { "c.and", rv_codec_cs, NULL, DECOMP(rv_op_and) }, { "c.subw", rv_codec_cs, NULL, DECOMP(rv_op_subw) }, { "c.addw", rv_codec_cs, NULL, DECOMP(rv_op_addw) }, - { "c.j", rv_codec_cj, NULL, DECOMP(rv_op_jal) }, - { "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beq) }, - { "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bne) }, + { "c.j", rv_codec_cj, NULL, DECOMP(rv_op_j) }, + { "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beqz) }, + { "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bnez) }, { "c.slli", rv_codec_ci_sh6, NULL, DECOMP(rv_op_slli) }, { "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_fld) }, { "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_lw) }, { "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_flw) }, - { "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jalr) }, - { "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_addi) }, + { "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jr) }, + { "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_mv) }, { "c.ebreak", rv_codec_ci_none, NULL, DECOMP(rv_op_ebreak) }, { "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(rv_op_jalr) }, { "c.add", rv_codec_cr, NULL, DECOMP(rv_op_add) }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315068; cv=none; d=zohomail.com; s=zohoarc; b=O8ehxoXszfSlWZNwI/7aG591jA8wd407XwMs3/6luT6oLP24cFNIoTHiqV6oO4gYgPfqtwWfjNX2QV/MBh0GOuAnI1OhLMcBpr/hK6WYWMDDM8rCcR+l/3p5T8f3mP4Bzmop/hXOMNHJcCZ5OllLekQDR9yzbngOa8JSjqVGy+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315068; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TijNI4J699sNebS2fbtXyrPftVazdEGlsoRVYljRjzU=; b=UnZYDoQGCPDuD1xJH5CYGqMYn7lwNxm1J2k3f2ag+3UN/RPuYcy/FipHbYRXa74Tk9tl+e7DdUM32WKlJ81hBbdsg64DHsZLrQ6beoxIm8yfoTIijo30Y/ZAYRQk7lqR0jveAuNPQEdbQNwQ2b7g0DQ6MYu/i3rOi0ooILMJb64= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315068048446.6703238979203; Sun, 9 Aug 2026 15:37:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtC8F-0001OZ-S0; Sun, 09 Aug 2026 18:36:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtC8D-0001L0-K4 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:37 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtC8B-0007X7-Na for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:36:37 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c9e0b89e228so523731a12.1 for ; Sun, 09 Aug 2026 15:36:35 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbe8f19ace6sm2998102a12.2.2026.08.09.15.36.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:36:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786314994; x=1786919794; darn=nongnu.org; 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:content-type; bh=TijNI4J699sNebS2fbtXyrPftVazdEGlsoRVYljRjzU=; b=a062gEOyjXUDNTCQrq/5HWPyz4IP8irFZY10IPZeGledQJXWt2yNg9gjyHwE61vWcR WgVlpJvgRT0Ib+/yNmtS69V+0/WKPlDXeB+WFkpTed0acsRjpfJz7dY4WBtXPfyJP6Jo 5Nx9RvS7Ij3cuVUgrUN2cgGDNqLEs5cQfrW2erCxRmoSFi5QCyAallimW7Kz9ImLCKjj M9QN3wyT8/DUyrnOJB8t84eeywNtRcP7DDTGjAcY7UOB6izR71XFPtOg8fGWR+VLUqaM 72nEu05KCFdB7Vit4Ug8YYiGcxhffYDsusYHHMNQ15+FaMGDo9uHaaRBXvw/qCzSzRg6 AtPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786314994; x=1786919794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=TijNI4J699sNebS2fbtXyrPftVazdEGlsoRVYljRjzU=; b=TTHBpu5PK+X7L46zueWo8UlBO8QGrvVirUehd7ObVESTNQxzmkD6NxJuwJ7jrvKJYl 9M4gyLjlYTaU3oNwXOq0cl5mtCw/hEn4zhzwPRWC+C8tUVgrCVZoUF6VfpzqclyTT+be KVzcvBlLlxH0L25gEponiSLgU7ds/cCrBgrd6ZDfzUPsafSeVLbRHSI3WbWulA+arEr9 C7oA1fPKSGRz+E+S+Tp3HvNcbDJPs1RiUUEtdEViZJTjw520mT4bz714RNwm87KIiLwg q37ys0/2w2oapBLp+4U05zHKe3FneOTZI0IFJk89a6muLkuYuHLkGGNi86ruqriJ1HUr 0pVA== X-Gm-Message-State: AOJu0YwHbHLCtDeVKjBcXLL07Zuj39quIuw7vuGAby/ki2XWWceTBYrU lCKwhlxX9WbABRHkPQBJEMP80jQqU6f4hxKkve8CDJnfWHjdS5sCuu+FsQKzCzcrTKFQUMGdvRh Hg6w8 X-Gm-Gg: AR+sD12J3lgSZ26mMcEzz3eT2wfmiD0NzJDieIzZIC7f6VRZruH+wxTXIqFk5bHu4ij lMOdo2gineDlv8hvbxES/56Rm+v9+6yjZqPGSYrYSyqoQP+b7ZzcVGdwsyzHDT+55d1qyklRFBH S2BBM+W9Ks+TBFTbJ6YddverlYLb2RVkecW1kCind22s7bsXSSLNnuCKT75qfyxYRR3GG9SrzGH im9lzATAdBrd40cnDTki96TCoWztxcsJtuDxjuGI3zyxni7jRVouO5v2wh9Lmj+pnZs0BH8aFxc 9HfuLmwHDxRjbhmgevZ+mSMkBDln6HWpQZo3yxYliudc0v4WnnGIVHUYgfAfcXtOIfLme1dX8wz TbEBu0dra8O46hPn7qg01jbSEc07bvDI5VyEMvo5TIwDmjCXjb94PQjLMmWvfwDNmm2oPP8Pusx Bk7d3oTEjk796im7hzY2rJsYVhHfslKCIuq7nJE2uG66ogubxdJRVdHuEo+aW9IVGoWmZSzkzPG PcMPIz+LdXhgGrLO0mR X-Received: by 2002:a05:6a20:d0b0:b0:3bf:6d96:ac40 with SMTP id adf61e73a8af0-3cbce78f7dfmr19216328637.12.1786314994323; Sun, 09 Aug 2026 15:36:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 39/56] disas/riscv: Store op pointer in rv_comp_data Date: Sun, 9 Aug 2026 15:35:28 -0700 Message-ID: <20260809223545.730664-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315069391158500 Content-Type: text/plain; charset="utf-8" Store a pointer instead of an array index. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 8 +++--- disas/riscv.c | 69 ++++++++++++++++++++++++++------------------------- 2 files changed, 40 insertions(+), 37 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index ea7141d3b5..ab62c0db94 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -164,17 +164,19 @@ typedef enum { =20 /* structures */ =20 +typedef struct rv_opcode_data rv_opcode_data; + typedef struct { - int op; + const rv_opcode_data *op; const rvc_constraint *constraints; } rv_comp_data; =20 -typedef struct { +struct rv_opcode_data { const char *name; rv_codec codec; const char *format; const rv_comp_data *pseudo; -} rv_opcode_data; +}; =20 typedef struct { const RISCVCPUConfig *cfg; diff --git a/disas/riscv.c b/disas/riscv.c index 9a528803e8..171c60238f 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1068,138 +1068,140 @@ static const rvc_constraint rvcc_true[] =3D { rvc= _end }; =20 /* pseudo-instruction metadata */ =20 +static const rv_opcode_data rvi_opcode_data[]; + static const rv_comp_data rvcp_jal[] =3D { - { rv_op_j, rvcc_j }, - { rv_op_jal_ra, rvcc_jal_ra }, + { &rvi_opcode_data[rv_op_j], rvcc_j }, + { &rvi_opcode_data[rv_op_jal_ra], rvcc_jal_ra }, { }, }; =20 static const rv_comp_data rvcp_jalr[] =3D { - { rv_op_jr, rvcc_jr }, - { rv_op_jalr_ra, rvcc_jalr_ra }, + { &rvi_opcode_data[rv_op_jr], rvcc_jr }, + { &rvi_opcode_data[rv_op_jalr_ra], rvcc_jalr_ra }, { }, }; =20 static const rv_comp_data rvcp_jr[] =3D { - { rv_op_ret, rvcc_ret }, + { &rvi_opcode_data[rv_op_ret], rvcc_ret }, { }, }; =20 static const rv_comp_data rvcp_beq[] =3D { - { rv_op_beqz, rvcc_beqz }, + { &rvi_opcode_data[rv_op_beqz], rvcc_beqz }, { }, }; =20 static const rv_comp_data rvcp_bne[] =3D { - { rv_op_bnez, rvcc_bnez }, + { &rvi_opcode_data[rv_op_bnez], rvcc_bnez }, { }, }; =20 static const rv_comp_data rvcp_blt[] =3D { - { rv_op_bltz, rvcc_bltz }, - { rv_op_bgtz, rvcc_bgtz }, + { &rvi_opcode_data[rv_op_bltz], rvcc_bltz }, + { &rvi_opcode_data[rv_op_bgtz], rvcc_bgtz }, { }, }; =20 static const rv_comp_data rvcp_bge[] =3D { - { rv_op_blez, rvcc_blez }, - { rv_op_bgez, rvcc_bgez }, + { &rvi_opcode_data[rv_op_blez], rvcc_blez }, + { &rvi_opcode_data[rv_op_bgez], rvcc_bgez }, { }, }; =20 static const rv_comp_data rvcp_addi[] =3D { - { rv_op_mv, rvcc_mv }, + { &rvi_opcode_data[rv_op_mv], rvcc_mv }, { }, }; =20 static const rv_comp_data rvcp_mv[] =3D { - { rv_op_nop, rvcc_nop }, + { &rvi_opcode_data[rv_op_nop], rvcc_nop }, { }, }; =20 static const rv_comp_data rvcp_sltiu[] =3D { - { rv_op_seqz, rvcc_seqz }, + { &rvi_opcode_data[rv_op_seqz], rvcc_seqz }, { }, }; =20 static const rv_comp_data rvcp_xori[] =3D { - { rv_op_not, rvcc_not }, + { &rvi_opcode_data[rv_op_not], rvcc_not }, { }, }; =20 static const rv_comp_data rvcp_sub[] =3D { - { rv_op_neg, rvcc_neg }, + { &rvi_opcode_data[rv_op_neg], rvcc_neg }, { }, }; =20 static const rv_comp_data rvcp_slt[] =3D { - { rv_op_sltz, rvcc_sltz }, - { rv_op_sgtz, rvcc_sgtz }, + { &rvi_opcode_data[rv_op_sltz], rvcc_sltz }, + { &rvi_opcode_data[rv_op_sgtz], rvcc_sgtz }, { }, }; =20 static const rv_comp_data rvcp_sltu[] =3D { - { rv_op_snez, rvcc_snez }, + { &rvi_opcode_data[rv_op_snez], rvcc_snez }, { }, }; =20 static const rv_comp_data rvcp_addiw[] =3D { - { rv_op_sext_w, rvcc_sext_w }, + { &rvi_opcode_data[rv_op_sext_w], rvcc_sext_w }, { }, }; =20 static const rv_comp_data rvcp_subw[] =3D { - { rv_op_negw, rvcc_negw }, + { &rvi_opcode_data[rv_op_negw], rvcc_negw }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_s[] =3D { - { rv_op_fmv_s, rvcc_fmv_s }, + { &rvi_opcode_data[rv_op_fmv_s], rvcc_fmv_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_s[] =3D { - { rv_op_fneg_s, rvcc_fneg_s }, + { &rvi_opcode_data[rv_op_fneg_s], rvcc_fneg_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_s[] =3D { - { rv_op_fabs_s, rvcc_fabs_s }, + { &rvi_opcode_data[rv_op_fabs_s], rvcc_fabs_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_d[] =3D { - { rv_op_fmv_d, rvcc_fmv_d }, + { &rvi_opcode_data[rv_op_fmv_d], rvcc_fmv_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_d[] =3D { - { rv_op_fneg_d, rvcc_fneg_d }, + { &rvi_opcode_data[rv_op_fneg_d], rvcc_fneg_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_d[] =3D { - { rv_op_fabs_d, rvcc_fabs_d }, + { &rvi_opcode_data[rv_op_fabs_d], rvcc_fabs_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_q[] =3D { - { rv_op_fmv_q, rvcc_fmv_q }, + { &rvi_opcode_data[rv_op_fmv_q], rvcc_fmv_q }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_q[] =3D { - { rv_op_fneg_q, rvcc_fneg_q }, + { &rvi_opcode_data[rv_op_fneg_q], rvcc_fneg_q }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_q[] =3D { - { rv_op_fabs_q, rvcc_fabs_q }, + { &rvi_opcode_data[rv_op_fabs_q], rvcc_fabs_q }, { }, }; =20 /* Convert compressed insns into normal insns via pseudo expansion. */ -#define DECOMP(X) (static const rv_comp_data[1]){ { X, rvcc_true } } +#define DECOMP(X) (static const rv_comp_data[1]){ { &rvi_opcode_data[X], r= vcc_true } } =20 /* operand extractors */ =20 @@ -5270,9 +5272,8 @@ static const rv_opcode_data *decode_inst_lift_pseudo(= rv_decode *dec, if (comp_data) { while (comp_data->constraints) { if (check_constraints(dec, comp_data->constraints)) { - const rv_opcode_data *new_op =3D &dec->opcode_data[comp_da= ta->op]; - assert(new_op !=3D op); - return decode_inst_lift_pseudo(dec, new_op); + assert(op !=3D comp_data->op); + return decode_inst_lift_pseudo(dec, comp_data->op); } comp_data++; } --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315602; cv=none; d=zohomail.com; s=zohoarc; b=DXTbwBlSTBvEbe1HcT/ObCj7KlLrWjQLYKynqmZwFK2hbcw0KoeEy97RbiwdmUA75tXzgIQ3oAnXeippUFhh5adpjNhFBnQHks4yhNZbUz9XKvw5vCL7DvGIv+/zxr4dPqiwkqzn7oqBIV612mTlgSnZPsZmVZNOieuUutBLrwo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wrVOzQEoLp3rMXSEpQrDmR8U9V+/O+1y66nnFrsT6yo=; b=jxl6NdCN8oNlveuTM52TN8+yvTGGcSpygp/t+DVCF9Z1cmrcaVvVSAu2n9zGqoKhNS9Vblw5lIwLyxzFY+IdPV/MGGV+CIdvxviDJCerX/GL/63cajFKPYNUoVSzWvaFb8GI8cvJufnzGciwSMc/IupnNtaBeFdTnOSiXF0OgR0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178631560232382.32964454490616; Sun, 9 Aug 2026 15:46:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBH-0005vk-C2; Sun, 09 Aug 2026 18:39:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBD-0005s1-IR for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:43 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCB7-00081n-L8 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:43 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-381c51fde6bso1426821a91.2 for ; Sun, 09 Aug 2026 15:39:37 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315176; x=1786919976; darn=nongnu.org; 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:content-type; bh=wrVOzQEoLp3rMXSEpQrDmR8U9V+/O+1y66nnFrsT6yo=; b=ZrZffgM7rpxt/KBC/Ktfv8Hm6q0hcTUpCd1zaqb5hb7Ceo6k5863PCogMa7eg1uvAG Gs8aL9lJPEl64QwvZpPlBTxuWp1twp97WaDtaC4U4SX2H2TZIxP3oB6lpF44CvwgA+Rk U7GAj0iRQ0JejN/g83dcw+Lw+fOZPrwXzUdFpDcc04d+I3irzWJ5764wbjecNROfhiGP gx3CWEsjymjkNKTYkkeJNzVXj6BgpgOdCCFVoKDuqm1/HDsHvto/BcAzDCmDgKqNnGpj qoIS8GmF0uUtyCRWKXDgoWXbvzUCJ/x2cR7VUc2eQaG0yIyZidFA+LeFs9Jz7qkQ3xoW y1XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315176; x=1786919976; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=wrVOzQEoLp3rMXSEpQrDmR8U9V+/O+1y66nnFrsT6yo=; b=Wa3fYRh4X52vid0jgXwMA9eyTPFjiDBT+KMt8vG1/H1nlcz2tnFRtS7JU0UOUgQnwx h4re7XwoQT+ty2SanGjBnKqUGGJY/9rE27fOBBPdaF/xUW6L9UPFZSYUQk1Q0UnAv0p3 Ukhvk/wDgZALkJeQrNylsi7Iza5n7isa6htTJYNvAlHZ79b8l7nlJzmtgcrE1ZSgBHze p2BjMfPokHNxfMbWxL31R1cmgvD8iOwN3swgw4XYqwsLJEARQRJoqADd/UH7xfA7b+Ul fyDqbUBW3WU8f9wm5dKfjdQZSfUDjCiW5xFsbYp/zrSjNyJKXcJHjTw3q0MvUFh3UcWG 9PQg== X-Gm-Message-State: AOJu0Yy9aDwx0VhlfbeFEIMcL4MYtDxOVJmj6qs1FmLEY4C4FSCIcWNK phbZLL8Jh9zjlq9sGzcp+s0XIWqNS88ueT40qrkbIkCmDEoV2FXLOOPAwM+UM4RnPwO2nIgJn0P hgPAQ X-Gm-Gg: AR+sD10GLy9y3HAloR0gezL374FdsPHyK7s4N524JzaTrLENEcQ33Mh1Bb+g1v8CPMH N5Pf7M92s3SU+R3IR4iyaorwp4+5ayAJQ40gdHY79ovPQuOekiLHdIcRKMq83zgvHUf1DWY1x13 x+aJGiJgM6Iuo/1GHIgLAB3wvdKX/2PatAOFDrGQ6V6gjDWZ5xHHX7DkM6NJI1B+N69iWIe/XOu b5A9KLPag4cQp7O62P5NWU52rgIqe2L8q1zWMsJRu9o6ooJgfTBZc7wB0C6pgp8WEtyK4T3VEkP Tay3AzmRha4rQc98/n6eGmJPoLaG4PpvU+109W65Hoxam4RAIeoZf7LyphWk6/HAk9CpSl4SJS3 dEoq7DCh0HRuuoQcXRMYRtdOArq+j/so56wOs5gt0mmPRlrJUNTbdb3llU9W1CfmvTba9N8GMhF AMya02RsiuwjIr4YsBucbwJ5FYBvlUuiViQNN1eJELGWOVA9NrvcffNgsv+Aw0BLMhkbPKFrM86 1K81+3/PgJnMIos9x5a X-Received: by 2002:a17:90b:2249:b0:36b:bec8:94c5 with SMTP id 98e67ed59e1d1-3928242ffc4mr14190384a91.10.1786315175840; Sun, 09 Aug 2026 15:39:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 40/56] disas/riscv: Return rv_opcode_data pointer from decoders Date: Sun, 9 Aug 2026 15:35:29 -0700 Message-ID: <20260809223545.730664-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315603151158500 Content-Type: text/plain; charset="utf-8" Rather than putting array + index into rv_decode, return the pointer to the object directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xlrbr.h | 2 +- disas/riscv-xthead.h | 22 ++++++++--------- disas/riscv-xventana.h | 2 +- disas/riscv.h | 2 -- disas/riscv-xlrbr.c | 5 ++-- disas/riscv-xthead.c | 55 +++++++++++++++++------------------------- disas/riscv-xventana.c | 5 ++-- disas/riscv.c | 23 +++++++----------- 8 files changed, 48 insertions(+), 68 deletions(-) diff --git a/disas/riscv-xlrbr.h b/disas/riscv-xlrbr.h index ebf3d4c133..da14f1b340 100644 --- a/disas/riscv-xlrbr.h +++ b/disas/riscv-xlrbr.h @@ -12,6 +12,6 @@ =20 #include "disas/riscv.h" =20 -void decode_xlrbr(rv_decode *, rv_isa); +const rv_opcode_data *decode_xlrbr(rv_decode *, rv_isa); =20 #endif /* DISAS_RISCV_XLRBR_H */ diff --git a/disas/riscv-xthead.h b/disas/riscv-xthead.h index 0c65c8e0af..f2160be8a4 100644 --- a/disas/riscv-xthead.h +++ b/disas/riscv-xthead.h @@ -11,16 +11,16 @@ =20 #include "disas/riscv.h" =20 -void decode_xtheadba(rv_decode *, rv_isa); -void decode_xtheadbb(rv_decode *, rv_isa); -void decode_xtheadbs(rv_decode *, rv_isa); -void decode_xtheadcmo(rv_decode *, rv_isa); -void decode_xtheadcondmov(rv_decode *, rv_isa); -void decode_xtheadfmemidx(rv_decode *, rv_isa); -void decode_xtheadfmv(rv_decode *, rv_isa); -void decode_xtheadmac(rv_decode *, rv_isa); -void decode_xtheadmemidx(rv_decode *, rv_isa); -void decode_xtheadmempair(rv_decode *, rv_isa); -void decode_xtheadsync(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadba(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadbb(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadbs(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadcmo(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadcondmov(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadfmemidx(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadfmv(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadmac(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadmemidx(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadmempair(rv_decode *, rv_isa); +const rv_opcode_data *decode_xtheadsync(rv_decode *, rv_isa); =20 #endif /* DISAS_RISCV_XTHEAD_H */ diff --git a/disas/riscv-xventana.h b/disas/riscv-xventana.h index 1006c3be00..d28e84c7e4 100644 --- a/disas/riscv-xventana.h +++ b/disas/riscv-xventana.h @@ -11,6 +11,6 @@ =20 #include "disas/riscv.h" =20 -void decode_xventanacondops(rv_decode*, rv_isa); +const rv_opcode_data *decode_xventanacondops(rv_decode*, rv_isa); =20 #endif /* DISAS_RISCV_XVENTANA_H */ diff --git a/disas/riscv.h b/disas/riscv.h index ab62c0db94..241dd47d7f 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -182,10 +182,8 @@ typedef struct { const RISCVCPUConfig *cfg; uint64_t pc; uint64_t inst; - const rv_opcode_data *opcode_data; int32_t imm; int32_t imm1; - uint16_t op; uint8_t rd; uint8_t rs1; uint8_t rs2; diff --git a/disas/riscv-xlrbr.c b/disas/riscv-xlrbr.c index d0092e9edd..b12916c9da 100644 --- a/disas/riscv-xlrbr.c +++ b/disas/riscv-xlrbr.c @@ -36,7 +36,7 @@ static const rv_opcode_data xlrbr_opcode_data[] =3D { { "crc32c.d", rv_codec_r, rv_fmt_rd_rs1 }, }; =20 -void decode_xlrbr(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xlrbr(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -76,6 +76,5 @@ void decode_xlrbr(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xlrbr_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xlrbr_opcode_data[op]; } diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index 757d6ff39f..428a6380e9 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -246,7 +246,7 @@ static const rv_opcode_data xthead_opcode_data[] =3D { { "th.sync.s", rv_codec_none, rv_fmt_none }, }; =20 -void decode_xtheadba(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadba(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -272,11 +272,10 @@ void decode_xtheadba(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadbb(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadbb(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -331,11 +330,10 @@ void decode_xtheadbb(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadbs(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadbs(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -358,11 +356,10 @@ void decode_xtheadbs(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadcmo(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadcmo(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -437,11 +434,10 @@ void decode_xtheadcmo(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadcondmov(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadcondmov(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -465,11 +461,10 @@ void decode_xtheadcondmov(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadfmemidx(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadfmemidx(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -503,11 +498,10 @@ void decode_xtheadfmemidx(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadfmv(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadfmv(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -539,11 +533,10 @@ void decode_xtheadfmv(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadmac(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadmac(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -571,11 +564,10 @@ void decode_xtheadmac(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadmemidx(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadmemidx(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -646,11 +638,10 @@ void decode_xtheadmemidx(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadmempair(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadmempair(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -681,11 +672,10 @@ void decode_xtheadmempair(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } =20 -void decode_xtheadsync(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xtheadsync(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -716,6 +706,5 @@ void decode_xtheadsync(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D xthead_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; } diff --git a/disas/riscv-xventana.c b/disas/riscv-xventana.c index 4fb9a29d0b..a4e59312d0 100644 --- a/disas/riscv-xventana.c +++ b/disas/riscv-xventana.c @@ -20,7 +20,7 @@ static const rv_opcode_data ventana_opcode_data[] =3D { { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, }; =20 -void decode_xventanacondops(rv_decode *dec, rv_isa isa) +const rv_opcode_data *decode_xventanacondops(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -38,6 +38,5 @@ void decode_xventanacondops(rv_decode *dec, rv_isa isa) break; } =20 - dec->opcode_data =3D ventana_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &ventana_opcode_data[op]; } diff --git a/disas/riscv.c b/disas/riscv.c index 171c60238f..c4b8ee7d07 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -2846,7 +2846,7 @@ static const char *csr_name(int csrno) =20 /* decode opcode */ =20 -static void decode_inst_opcode(rv_decode *dec, rv_isa isa) +static const rv_opcode_data *decode_inst_opcode(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; rv_opcode op =3D rv_op_illegal; @@ -4541,8 +4541,7 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa= isa) break; } =20 - dec->opcode_data =3D rvi_opcode_data; - dec->op =3D op; + return op =3D=3D rv_op_illegal ? NULL : &rvi_opcode_data[op]; } =20 /* decode operands */ @@ -5291,14 +5290,12 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc= , rv_inst inst, .inst =3D inst, .cfg =3D cfg, }; - const rv_opcode_data *op; + const rv_opcode_data *op =3D decode_inst_opcode(&dec, isa); =20 - decode_inst_opcode(&dec, isa); - - if (dec.op =3D=3D rv_op_illegal && cfg) { + if (!op && cfg) { static const struct { bool (*guard_func)(const RISCVCPUConfig *); - void (*decode_func)(rv_decode *, rv_isa); + const rv_opcode_data *(*decode_func)(rv_decode *, rv_isa); } decoders[] =3D { { has_xtheadba_p, decode_xtheadba }, { has_xtheadbb_p, decode_xtheadbb }, @@ -5317,19 +5314,17 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc= , rv_inst inst, =20 for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { if (decoders[i].guard_func(cfg)) { - decoders[i].decode_func(&dec, isa); - if (dec.op !=3D rv_op_illegal) { + op =3D decoders[i].decode_func(&dec, isa); + if (op) { break; } } } } - - if (dec.op =3D=3D rv_op_illegal) { - dec.opcode_data =3D rvi_opcode_data; + if (!op) { + op =3D &rvi_opcode_data[rv_op_illegal]; } =20 - op =3D &dec.opcode_data[dec.op]; decode_inst_operands(&dec, isa, op); op =3D decode_inst_lift_pseudo(&dec, op); return format_inst(24, &dec, op); --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315562; cv=none; d=zohomail.com; s=zohoarc; b=hBfKDzhoQg3/L+eNG2h/aWynPPXZXCy651aI9oicfT45hsRQyS2/rFOiDX5cY1gRg4gS7mRR9M1N8GdYM3zXjz8Ck8m10nkeGhRUw5hU68ojjzAArX/XzMBG6U3DsiyK4mSEXUy8JU68OMzgIkgJG6kdahMdNq94IsZAvCsk/yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315562; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c4YWKqyY4eNXi7PgeIWNzfK2Wfxn5QCYHY9ARlmugvs=; b=kwS0ZWAemC+XYkh3KPCt55YxWX/ML+5HFFtDuvd4jjr/Lmf/UaHfxWQ2gFzMZR5IFl6hS1bZjiQa5IDMJSmOuyiaYdYVdL+Fqz7dEYMyba/V7lR2tqVcBo7l8qphAmhYbM2trSVGgacNxllb4qokE2cijVtdkyGJkeEvV94f098= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315562476181.06163624829287; Sun, 9 Aug 2026 15:46:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBC-0005ql-Ie; Sun, 09 Aug 2026 18:39:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBB-0005pr-87 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:41 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCB8-00081t-7i for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:40 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-383cb94f742so1193637a91.3 for ; Sun, 09 Aug 2026 15:39:37 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315177; x=1786919977; darn=nongnu.org; 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:content-type; bh=c4YWKqyY4eNXi7PgeIWNzfK2Wfxn5QCYHY9ARlmugvs=; b=e/8qTw/zg+iV6ZZLQnmQcg2OfZXvHddY9i3i8KhqzJ83hoPQLMZSg9a8hSfJxdj3dU Q1nJ7RI3zfEmI73n/Sl3VS5zvmQWygEaUa5JrkVyRHIYOLh7goyMN0iwScPOQHdKDSrL 8QWj/fiZ0r0+WHQW4etjBdGKHfVm01dHIlk64FsUNcTlIDKrYtmmmHWSIJP514+PXsOe /002ScxFILnEZMBbo3FcHHs2GU+TnIMswzCpvJ63Q+W+DRmxZhU2SkYcrAbNY2rxy/iA /nmsy9m82LZF6XsytToHSru3PpBwvceTMgkLPzZ5msg0plCl2Vu5Mv6+yROZD6n6qBcs tuUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315177; x=1786919977; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=c4YWKqyY4eNXi7PgeIWNzfK2Wfxn5QCYHY9ARlmugvs=; b=Xr3biaGghMX3zADK/Exad9LUIumI2ZrUC6aU+6yYv+Y5WP1J8MSvM5mksL4WC9OXdz 3i13FJGImK7ODjV2PMdeTnE9b8gQnBBcLsPaqDUuFGp7nzj4p0dpvE3ex2zTLoypl/IR teaDfQzII+1EeZqPvhko6YPP9SCqchTsPSDPfEZWKn0fZBWRlh09HWNHt66KWv7JH9Zg B2wHWVbSLiTAR7WAM5Ld857pj93nXVZupdAG9YG3kZr76vMo8C6H3Y5G6+9ZJL6fYj/K Tcwz0onVJChxuCziuycxvZNRjHGEyrxRd458rid5mDKSkc1yuUA7AxlODPE2BuycHwU9 W5Eg== X-Gm-Message-State: AOJu0Yzj94VwneuZ9aJfCU2/4KNMcmoTx4HiDMRged2r58Nr81VDtzc7 kgpFGvGY7Qp7UgoTx9R60LJ+vAI+ytwuQurFJYusBZn1uPbj1QPDABxdqrWN2zJpJjbiP+7gADt A3i6a X-Gm-Gg: AR+sD137UiZBc8qLw1Le65G9vu098GsLIDcHOJtBrTLrH1+ISPovKyhU3hS3TgWxWbB E95Q47HZo/qOjQDAmF2bhTWHqzJAmJpsnHH+Qp9VQg9WCWt57JZYXhxo0Rlee3boC/lZL4VNyUU KsnHnkeoG6gxQy3ri9emnm3f+917Lbq+VN1tB8XNB5d0H3bsE+iNC6bCzAF3L7JAbg4guygU34l /tnc4duOO6cbHv4woQLCQ8x9VWN7pot+bXJf8trJOvhX7TKg8/e5hWwMR0VPJdk2tJw/KCFKe8H mzHUFnXSe+GBCQU4MmCKntesSI6RPvKw69sNOyJ207ymZ7SS8AzIS3nE/Frz1oZNwuZA/I0rmw3 UU6Yd/v8IlnD7Zdw4qPGv6rjS9HWZQ4jU9Vh7JpLucsR9W5f96806mqITZ5wD5y1Hhqr7HGUWzh +VTYBPkWFghWtSJYW3UYBL/Raacdd2KpQbWQGITvTaoCagBYFW2dA7jtHjMeBy36F6vNJURd2X/ zZVthpV2MQhJuVm5yZdl2KBjLDRvLr3 X-Received: by 2002:a17:90b:52c6:b0:38e:75f3:ad4d with SMTP id 98e67ed59e1d1-3903c5381efmr36280712a91.7.1786315176678; Sun, 09 Aug 2026 15:39:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 41/56] disas/riscv: Reject all of OP-32 and OP-IMM-32 for RV32 Date: Sun, 9 Aug 2026 15:35:30 -0700 Message-ID: <20260809223545.730664-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315562976158500 Content-Type: text/plain; charset="utf-8" These entire base opcodes are RV64. Reject them all at once rather than one at a time. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/disas/riscv.c b/disas/riscv.c index c4b8ee7d07..f51d45674e 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -3311,6 +3311,10 @@ static const rv_opcode_data *decode_inst_opcode(rv_d= ecode *dec, rv_isa isa) } break; case 6: + /* OP-IMM-32 */ + if (isa =3D=3D rv32) { + break; + } switch ((inst >> 12) & 0b111) { case 0: op =3D rv_op_addiw; break; case 1: @@ -3557,6 +3561,10 @@ static const rv_opcode_data *decode_inst_opcode(rv_d= ecode *dec, rv_isa isa) break; case 13: op =3D rv_op_lui; break; case 14: + /* OP-32 */ + if (isa =3D=3D rv32) { + break; + } switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { case 0: op =3D rv_op_addw; break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315597; cv=none; d=zohomail.com; s=zohoarc; b=jexMlIJ2uPXDkKQ2kozyvPCNEOR07QIRbWWCILwg3sWPn5/O2WEO7XeQa6Xzf7dzdYfK0GyGIoQ8q9MDNi8pzvag5m3MtVBcuSm5Yufw4ZyEAAI0ZYAMLJxPpSGgToUf6FzH/LypBAZDoKincoSP7i1XVygNdLlf9UMV377cCgM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315597; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5DQbRX5f/62CNinSFDzMgqzdrZpodmgnCW/Zss7oPVw=; b=IUZ7IUtNE71FbYnHxit5By/9Q7XeMktHBt+uzKtV9M7l2krnw5QdjHYkKjA8K6HXzkJ95rEwh3bB9NuJxQPB8mhRxjnhXnx93bxPRUUyAGFdGdspritrYy/rzH8wrIHQQ6L7o6rUVQ1nBXuKhRcDz3EBL2pYHj/i9uYTobsiJdI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315597673497.18752016748215; Sun, 9 Aug 2026 15:46:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBD-0005r7-8f; Sun, 09 Aug 2026 18:39:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBB-0005px-CY for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:41 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCB9-000829-AO for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:40 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-38e08baf860so1118465a91.2 for ; Sun, 09 Aug 2026 15:39:38 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315178; x=1786919978; darn=nongnu.org; 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:content-type; bh=5DQbRX5f/62CNinSFDzMgqzdrZpodmgnCW/Zss7oPVw=; b=EGV05ZvFGCAtGbwI7X10VXMPbXUnrFlz4n9oC9mE1kJ6Q0qib3wbXdTdx1D6QuHk33 UAlmZwMF5idklplrZOFRMNKKY3toopHk6Qp5CRRK3AWqbZqu3zld2f0yOaLu6wNROcg3 /+2itht6Z33znJllcxBqcU9HaQJrgudt4NSc7iOVLBR/xt1uN8u7JivFteKO8wma/PZp 26zYg881tO+X2Y2mTDRpfBFxbx8zLhY6uvVH9kO+/811Zl6Yl6rpowUl5Yk0R58zGkpU whoT2QwJ1rSFyHvUB3WzMdFEgTDBWrFFklZE7pfc33RMYCD1Rlv0szcIGkNV3t6iQhLe XeeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315178; x=1786919978; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5DQbRX5f/62CNinSFDzMgqzdrZpodmgnCW/Zss7oPVw=; b=QMtJT5A7KZeBnKI9Q6ci23pxftwHEu8KfKX8Spy/p57s1CeasGN09U+CmeHVEgWgcB WS/5RUbaAcXfUKgOCk2I0te+mbd4snFpBMyK/L+P/wg+/CYsP0tp/izg1kUHNK+Kssj3 K4BVAXVfxCCbfpPBITjqqbNUX3GV/4vtCXD07Ajlr1K1okg/SbY07Jh4Lowd3/CI1cyn QpnFIO5NZ6ZaKqXSXj4wRaALsqqARgQjWJRpavc+uLleeR9yVWLcSBExWG8YFnmHLNLc WocYyld/ISMUCtxmP3RhQD8/FW9eRKvdSbjjBfbzsBxc0gt9t+Nxsw+yHUAZDG5tBCs7 ICVg== X-Gm-Message-State: AOJu0YxO+CE+zY8vI0hvTQSHlF4q8zX3acwkkr3itvxQpr21L6IXKwKK LzBplIanS7Eg+ADop4mfktq6fuobez8HnS8B22uld8XgCzNRalvJ18vDX4hgfHU6atanqMIUASk +eVx9 X-Gm-Gg: AR+sD10iM/wYTXDeX093VG5eDob5RltS4luR9CEKbc1LRpy6t4y/x9aLhMa54bIA0rt puuJOVGfydQ9jHedQArq+PXL1LAyN/rtft744wBV+ATO6cqeKQrlSNNAVGAFq5QVOpkuurM9ZNT ecNS2MfbrciDeXyVoio9iBRqqXZXqHZp7TDnBzoRh6INCXS7tScKvcMyvywD6ju94/yCfBURXVU u9Jds4TDpnlblnZHnE5jrV8p7u4fp5RPCsOWoX1gkov3I8SGDlmge/oHtkTT0iNFchhI3QTAq7y 8Lr/FHhYxVHKoBCi7idzKzFCYVRRG8V3WBINcKUPAkPwgh9xp0HunOekVBJ7T8xQfGEip+RJ/+K hoD/D/xWYZ4kLlAAXGiAhrcofQstWsJn1KNYwKNkSU3FwZnkOSJoDeEqZ4cYwYIzV/cz77fMKUU qrRTE++Sq5hkMixOTrbpC1sPuTjYNqzWmUfvy1ONesV0iSyOf4l2sla/PTUqYRy6LuZ3ehgNs8X WhVC+PHKrnvWf7BRoLX X-Received: by 2002:a17:90b:1d8d:b0:38f:5869:387b with SMTP id 98e67ed59e1d1-3903c56c2eamr35641523a91.9.1786315177588; Sun, 09 Aug 2026 15:39:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 42/56] disas/riscv: Fix rv32 encoding of zext.h Date: Sun, 9 Aug 2026 15:35:31 -0700 Message-ID: <20260809223545.730664-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315599090158500 Content-Type: text/plain; charset="utf-8" For rv64, pack with rs2 =3D 0 does not encode zext.h. Cc: qemu-stable@nongnu.org Fixes: 02c1b569a15 ("disas/riscv: Add Zb[abcs] instructions") Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index f51d45674e..9442a6c115 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -3506,9 +3506,10 @@ static const rv_opcode_data *decode_inst_opcode(rv_d= ecode *dec, rv_isa isa) case 14: op =3D rv_op_rem; break; case 15: op =3D rv_op_remu; break; case 36: - switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_zext_h; break; - default: op =3D rv_op_pack; break; + if (isa =3D=3D rv32 && !((inst >> 20) & 0b11111)) { + op =3D rv_op_zext_h; + } else { + op =3D rv_op_pack; } break; case 39: op =3D rv_op_packh; break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315342; cv=none; d=zohomail.com; s=zohoarc; b=Ngb/QGyY1cLlMx2eS6yumyTgYQhiXfN/BuS729HFmEkeOu0rRSeCsVCGWXB0XNawbty1lm0gyqPJeL+LqeWYyinPGv48F1JbAEOjRxkdFRVUV2GBQyD52RBxLi5ou9I59oVpbUfuYRpM+SWWsfwx8TmELlBNZYOf0/yIwhW5xVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315342; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T1H7VF/d42IFKoSTDJ1NFiOykSCIxfrWxgFii+Z0hmw=; b=VjzMy0Qr6AiIiCzJluFcnAxB4jQO70nmnNAQMN0sJq+2L425q7AuQrTE3WH296oE1uk2kTI9/dCe/AHrwtzyeu9LNwtPR25lSPoi1m7TGmwXTK7YMGuoR3GjOVhLh1b4QaYxo2jbwNa9S0pJQunACZeD66ac/41oJdcS9r55hsU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315342746622.9634434667603; Sun, 9 Aug 2026 15:42:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBF-0005u3-Ha; Sun, 09 Aug 2026 18:39:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBC-0005qc-Cp for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:42 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBA-00082Z-L7 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:42 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-38dc69c74b8so1140527a91.0 for ; Sun, 09 Aug 2026 15:39:40 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315179; x=1786919979; darn=nongnu.org; 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:content-type; bh=T1H7VF/d42IFKoSTDJ1NFiOykSCIxfrWxgFii+Z0hmw=; b=RK6iD846Q6jU6tLWfW+EpAntnNCcmlr/QSTfdZd+xSTIR66I8Toqvitv6AMtGCsMpj ovG/6qD985kERxxtC3Kog+STfk0IHrN+6g+s8YPAt1F7GDcIpXjKj6jZ6u6eeMeOFn/K OePP4rBMhdW8dwxS+qEzmfj3x776vfXjF+btCCI8c3rjXVoE3ugQ3FRSOvlxwoo0jSa3 i7PYtAgZZgM/hHdTpVSr2BPn1xwfPrSNdJHjjtPjC/qUsg1TI9x8+92SEeieOm3SlyQ4 YJ5eH7s0TavTsmjUEAL9Lq6vevXYBi9ilDXZ0nBzFfrPBj0RrBoF1q+8Bw5+Z76ipkj9 7Xjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315179; x=1786919979; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=T1H7VF/d42IFKoSTDJ1NFiOykSCIxfrWxgFii+Z0hmw=; b=mX3Q8kIAirWDJzoUAeJqTmWSkbBpbeX5KTjnNBuHeyITfsqBaISlxFGEfrglhdm8/H knjbMknL5YseFgUVN12/BCDGYTxgdBJcHMvYrBsrmcXj9b6U8IPInry7WfMgwZTWsU1b XzNoFXbwAaAoRIpka5Lm1TU5mTKhDkb2Q60TPJu8hblPa6ujDbYwmgfyDuwslkzAfbCo l67h0FKbeXQ3XkOK3KdslfAZectiUqwkTg3K2A33yUzJuNqDX3gTNbpUmPbQuMsBq2yK u4FDwdUcCmeRmzTPtEWUJx6gQHPu9SXXECUZSf1/PzdZ6GQlQFWj1SxLQBh10Ugkjy1Y Q7VQ== X-Gm-Message-State: AOJu0YwU0te/jUDTZf7kp+ynjUk577FBnabuRkTCoOdcmVWdKha73XL9 h4PfX1QKFWPvfigrHn/M8lLg3SqOy+otW1dUhCknYRhdme8VF/mceX+T1xAuqGsdazIwn/Ppd37 eY48S X-Gm-Gg: AR+sD10nRQJPyJUJPWm1oOVD9wKkNYDu+0oY7GdtjRNv/sjYHYLFehWi79buNzYa8X1 o0UddgiRUXfqdzsbZrvwfLvYOEDXcOBCg8TrmTfFGHJJ9dg1xiWALkuCJFVOFHHeTm5fWP84AUN NN5Fw8dds6DBvWkxDu+X6/GUAsb/YsyA6syNXT9YMlptGiV/Gm6YinxqF3m0PsRTmXOaE3+WqOw Bx0Y908OMA1nNVK9d6M9JuTbSHUg7VgIqOkeK6BO78RaXnOxJyvDNYLVjgMS7AdkOPv9Jq2eu4X jqsU95kejQ2SnygT4SgT6AT+Ub3me1CZSXbqb0NHQ4iqGdD1JcjBHolijWg4Bh2Lmpjm0V3E6d5 NwVtT6uLvmiPnIQHAAQVv9wYrMqabPdHrSk5ycIuNr3IERmlalE52w0FSaIW2CYLcHCv4CJkzwE aA/HQ/KzrDGV+mAJHWOZTPm0bv5UCYP92tfybeW2JbF++R2Ilx3AbQoYUGAIAnKSss+hxDxVl0m e7guF9AqutFgh5qan6G X-Received: by 2002:a17:90b:2d84:b0:38e:11ba:992c with SMTP id 98e67ed59e1d1-3903c58ece8mr38289616a91.12.1786315179095; Sun, 09 Aug 2026 15:39:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 43/56] disas/riscv: Fix isa decoding of rev8 Date: Sun, 9 Aug 2026 15:35:32 -0700 Message-ID: <20260809223545.730664-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315344315158500 Content-Type: text/plain; charset="utf-8" The encoding of rev8 is different for rv32 and rv64. Cc: qemu-stable@nongnu.org Fixes: 02c1b569a15 ("disas/riscv: Add Zb[abcs] instructions") Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 9442a6c115..4141741d79 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -3292,8 +3292,16 @@ static const rv_opcode_data *decode_inst_opcode(rv_d= ecode *dec, rv_isa isa) case 0b01100: op =3D rv_op_rori; break; case 0b01101: switch ((inst >> 20) & 0b1111111) { - case 0b0011000: op =3D rv_op_rev8; break; - case 0b0111000: op =3D rv_op_rev8; break; + case 0b0011000: + if (isa =3D=3D rv32) { + op =3D rv_op_rev8; + } + break; + case 0b0111000: + if (isa =3D=3D rv64) { + op =3D rv_op_rev8; + } + break; case 0b0000111: op =3D rv_op_brev8; break; } break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315434; cv=none; d=zohomail.com; s=zohoarc; b=J6SqDNeqPiOSqxTfVbXsjIYes7af86FADF9qto0pTiHvqsQehOv7nlDrtyTVysmUdSCKrX9Z9gJNHDAB09o63ZQgxVk0iI8Co4EcCDSGpUwzfTZFdV86hZsEzXyXiGsSnvbAn+N0XCBiTg+Ogz240yjV13ph2zXfuJ6xgvjnZ8w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315434; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2Cjtp0kSC2EC9ntVOyIYKDIN43KY5qOuxwt7Sk7NLWA=; b=DOWtbBHCkCtX/ZOBCqoDeKPlo0iVYqyK8xZA56vCLyobcBh8Cmvgy92WfSGwRWBGx9pVy71O8EhUjq+ZIvVqtQLaVeNZlwZnNnC5nnU6lE6uMcdaBIwJ5o7kwHcUly61Pt94YqTfFtZc219aDsJp9q8j19p4RwAZO5bAfYw2nHc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315434287767.9055466241939; Sun, 9 Aug 2026 15:43:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBG-0005ux-Kf; Sun, 09 Aug 2026 18:39:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBE-0005se-GC for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:44 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBB-00082r-AG for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:44 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-381b831d535so1581363a91.0 for ; Sun, 09 Aug 2026 15:39:40 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315180; x=1786919980; darn=nongnu.org; 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:content-type; bh=2Cjtp0kSC2EC9ntVOyIYKDIN43KY5qOuxwt7Sk7NLWA=; b=ZKQxw7zzsg+IwVH/0o/7oc2vdIIWDlMVWtw1TpfjcMZipfiqn2MFvvehWcGdOknK1F eGj/1KLj1rK3PDGbQ5H+ut/SXNL2/eZ/wNrrtKeQ+Jlu6EqdYEuDmUT0O/HaqvC1jZZg SDLHJBGcks4Gqldj5PEjac04yoO3AhePJgifF+9wOO/XjqTT0ZeAU7qXbbeDzgeuxclv bto/4zlyPIDH0aQXGhSJOFrbrfIezllZDolLxrRKh4OohjoXtv2NIboPLyXOcxxD0t6B jCKblmmp+rSlyf0SRPD7rtRb3OS0Hg9Zuq1v1jLf1RWgWm03iHQuc8nbM7cLmIJiKUER DZGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315180; x=1786919980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=2Cjtp0kSC2EC9ntVOyIYKDIN43KY5qOuxwt7Sk7NLWA=; b=WP3fi7tURb/7WPp88jutfZlKxswRaob1hPLt1Kxj1aUx375zFc4hkO2vsB554RZhCM gzQHgfMaSB8LACbnrQ9/7yElMlpBgV7eKOn/Oh9Ih0jPIE2vrzMRht3v/ePJKkmKkV3j StgkUhdi9xIdHbXAMEvlqbHT8uGE2SjtI+m2oELay2UsdN/C1//Dj1GQ63nBd7h9Ivzs JOgBP4qtM1ribNy4x8hkSiwsaeQJ+Zm3yb+dvtjd7+CRBaf7EcT3M/vllxm17suZxJ46 yBnamRviaes6dwjTy1uVuu/NZ0pfWi0apVnQEVmZjPc+rsqNAPXSK1K6Nu6R4FB0y5xH kdtA== X-Gm-Message-State: AOJu0YzkXWN6c03rWfOicc23TkGvOcaYPjbrzU+sZGbSws+BiMLwocbc YEsOAEokLuGnTbiw6KoI7UGqdi6eHZtxFYYxk7ig3H+rD/yemBzW3FuKs9LJSYKEOH+cfcheVcO CbmUU X-Gm-Gg: AR+sD13amTeZmQCmzF6EFF2rjwYfzdd2dxUgrfcUTQYXdrewDDL9vs1ldXl+3RJWfJy mVCIkm1H6Qap0BxBVD0Nd2b5gl1NX6EvWgK69nSoDj0JSalKCy3mG6r03WLZ+SATzYLzGs/gSxM K+3D7q70WXMEZbn9OrakN+NLTClBaJ6KR2qEdaVcTgybUnywu9+Zzs8nkkRoGZjxwotbLOAcGCF OiEPHEBeL1UOu4XfNrfwaDmevtwtfHtJWiZ8zTHGKSw87dv/BEOBX5MLRTEElAr6DZzqZPqN4KB UJcnneF1Wd3SmYcU1Dlz9Uy4It2GML7pLdyZz7lFo558a5RZPuQUkyQ4OK6hfZGy7yDRrBjerGW ymaG25mmKEsscivOijfI5v5xpWYEpE5jKc12MH8EJQ1tkKp/7sGhm3LjtCPsJTRkWyn5PFPsAM8 tI/5h+3oWdrmbrDjkVVz76MWUEd0/DShq9Q52/Stf/zy/pHYhC8YuZ5ut8YxDuy7Qb1lPyzNGIo MowGmmmZYi/A1Jx5c7a X-Received: by 2002:a17:90b:590d:b0:38f:5801:cd76 with SMTP id 98e67ed59e1d1-39261f71c4cmr21641790a91.3.1786315179908; Sun, 09 Aug 2026 15:39:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 44/56] disas/riscv: Fix typo in th.lbib format Date: Sun, 9 Aug 2026 15:35:33 -0700 Message-ID: <20260809223545.730664-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315434613158500 Content-Type: text/plain; charset="utf-8" th.lbib should format the same as th.lbia, and the other increment insns, with the address register in parenthesis. Cc: qemu-stable@nongnu.org Fixes: 318df7238b9 ("disas/riscv: Add support for XThead* instructions") Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xthead.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index 428a6380e9..fbc96631fd 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -189,7 +189,7 @@ static const rv_opcode_data xthead_opcode_data[] =3D { { "th.mulsh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, /* XTheadMemIdx */ { "th.lbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml }, + { "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, { "th.lbuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, { "th.lbuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, { "th.lhia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315446; cv=none; d=zohomail.com; s=zohoarc; b=C6kNSCVkuNXhrd92LOCplQatQt8QJSFQv/6MRNB/1439Bl7QJP646uD8+hRL/GWh4+ofkm8pQFFdn6VAIDsIq6EG9dsf7lL8YmakmGcynuniSHmgKE7slIPpAzfY7WA7ClGfMZ/UHj5LJTniB9cUrdnlmYQzP5h0B2/0b03KiWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315446; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HPktSh0uMMuMi7kM/ExryJclVyqS0CaAF0oCr9EJbrc=; b=H5q8VJbWALE8oUdfTo2DLaR72IYeSBtJBUndXwj4uPn/QYTowE1gGkYmMvMY7PUr/D4n378yqs++FnZVq5bRkxk6tQ0cjiw94jg17k0fWOhh1T0mPJDpWSYnrV6slbdNutExh6onDXeaTm1bac7q6yINN/niVSmXTeJx+AZAHOg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315446795223.05453831586476; Sun, 9 Aug 2026 15:44:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBG-0005uc-8K; Sun, 09 Aug 2026 18:39:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBE-0005tG-Vc for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:45 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBC-00083N-0o for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:44 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-38101f85591so3261646a91.1 for ; Sun, 09 Aug 2026 15:39:41 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315181; x=1786919981; darn=nongnu.org; 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:content-type; bh=HPktSh0uMMuMi7kM/ExryJclVyqS0CaAF0oCr9EJbrc=; b=TcZcinHiGmE8XVFCmU2JTpxSnmEgtugbpFfcpJzXLCl1Hd3UCo4O5ydg3CwAEH6RpC xuZUqohl/bzpgIqmuPj2MAlTMq3HeHjykBRQ3FGpI/rGF8gTeTGVycWQZDADQkRy6sOR Lo8MyNmUz9vDC1szUdtx+FQPmTY17x/AVeET1cV3fgIpAtgkej8Kxty5HyonHgEHbOfp iFSsDL5N6+hk/BPwKrT3Om15stNa2+HPOUN1C1CV2dRWDYZ9u3XWOh6xdXBPgAihQghW HdxBBKhT8x2Lrh2yqTJbXOp8bdqt9VGLT/nSfWl2vXzh/6Uwpvcu8CqhrAAzn/faRQy5 up4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315181; x=1786919981; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HPktSh0uMMuMi7kM/ExryJclVyqS0CaAF0oCr9EJbrc=; b=XITypmBXH/WliqHEWWH8IbCJhkLhlg6P7u9Y0uquL5f05eY83TVEesj9sxIc1u59Hz po5YAAAXfL3LNGVymMu1HWhrMddVoLoPACzbaXyTtEwv+eKWHsie38hImmqfp5bYL19z TBHljS6sKrZWT9hGLvqa79G6feZ4agNRXHBaTGE8o9RgkDYWq1p5m9O+SuKJMiomZ82a nU4Xr82t3D1fJymGF8daiy5qDZBsj2jW/7UJy9QGB6iHlahH/ieiajjYXDC5QnQiQcoi QOwCQLgpe9oEqWxXgJFFzlHcYGb/VewRZ/li9o7L7T46lrQ3bRa0EwBfiz6djGd+Inte bzBQ== X-Gm-Message-State: AOJu0YwGg7W1sE2A9RCXmO1qMgMRzKYhiZx8BuhvDZBSD/s0vD2kHZ7b a38Fg2iWcXeJrI1Sm1O6moc7ETLtV+RmH99hCFTpr9tUmnBd6+csizYJh8wOC3d/ty/JTQNoDhm TYBVu X-Gm-Gg: AR+sD13CsAPUSd1vl73exi82E0nCbNcK5xfwOmg1TvsionbCfBYHE7Ww18T0843a+7d cgqnxBU+ip0NlpaGNUbv99nfvodYW97vG8MC5B+yIwDXr99pN98RJXKWC0E3Zw8HCDJJTrk+Dxx EIXnVmbScgl07ErBW1TOoUhfbZ/AKdrxPlu0KKNoSutauSqApdiF8zQblIh7M9yPr0+PejqBnUa bMc0arqv71TxDanvv0RrXvKSlsvDbLfheiadnUVpyGkC6iPwkJa2SxZR71/CsxGtX5ytIKdh1ee 4upuPGBazGNRsO3apr9zzfaaBlepFQBl4O09O0zhXlq/eLhYy0ywPUVudSpgnAvSmmvgewr9H4U z7IDt+uUvyk3LuBtrfy7PgVdYGvK3AyA7RiNUrsnXBLXr0IF3k2b8/nLxX5hJKS9Q65jcShsf35 Nj0YpYrrdH1DHWCD5S3nN+z7vsyLwr6UBlLOicLvEFIcXuss9BqgJZKoDA5Fol8dD/2GTT1u0Z9 DpY6fmWUwvAQ7vUfUWAobu/9f+rT84= X-Received: by 2002:a17:90b:268d:b0:38e:5ce1:ae30 with SMTP id 98e67ed59e1d1-392846b0c3amr6105498a91.14.1786315180567; Sun, 09 Aug 2026 15:39:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 45/56] disas/riscv: Split ventana_opcode_data Date: Sun, 9 Aug 2026 15:35:34 -0700 Message-ID: <20260809223545.730664-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315448692158500 Content-Type: text/plain; charset="utf-8" Move the table to riscv-xventana-op.c.inc and massage the lines into OP() form. Drop vt.illegal as unused. Return pointers to objects directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xventana.c | 21 ++++++--------------- disas/riscv-xventana-op.c.inc | 2 ++ 2 files changed, 8 insertions(+), 15 deletions(-) create mode 100644 disas/riscv-xventana-op.c.inc diff --git a/disas/riscv-xventana.c b/disas/riscv-xventana.c index a4e59312d0..5d2e07865f 100644 --- a/disas/riscv-xventana.c +++ b/disas/riscv-xventana.c @@ -8,35 +8,26 @@ #include "disas/riscv.h" #include "disas/riscv-xventana.h" =20 -typedef enum { - /* 0 is reserved for rv_op_illegal. */ - ventana_op_vt_maskc =3D 1, - ventana_op_vt_maskcn =3D 2, -} rv_ventana_op; - -static const rv_opcode_data ventana_opcode_data[] =3D { - { "vt.illegal", rv_codec_illegal, rv_fmt_none }, - { "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, -}; +#define OP(N, ...) static const rv_opcode_data op_##N =3D { __VA_ARGS__ }; +#include "riscv-xventana-op.c.inc" +#undef OP =20 const rv_opcode_data *decode_xventanacondops(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: switch (((inst >> 2) & 0b11111)) { case 30: switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000= 000111)) { - case 6: op =3D ventana_op_vt_maskc; break; - case 7: op =3D ventana_op_vt_maskcn; break; + case 6: return &op_vt_maskc; + case 7: return &op_vt_maskcn; } break; } break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &ventana_opcode_data[op]; + return NULL; } diff --git a/disas/riscv-xventana-op.c.inc b/disas/riscv-xventana-op.c.inc new file mode 100644 index 0000000000..0fe4666aee --- /dev/null +++ b/disas/riscv-xventana-op.c.inc @@ -0,0 +1,2 @@ +OP(vt_maskc, "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(vt_maskcn, "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315601; cv=none; d=zohomail.com; s=zohoarc; b=CniM13ZmO5bQYwoWuthq+j3k1rz4fodtMcrq+/cHmSgW4Be2dM3lYallb7p/jNuOQNJxj1/ZlSHMUZYB2I7kIRIPtWboEPCjhg09apoMTp/r9VCwUXZlz91LnwCHMXt5P4LNhgq9kBx1MW+w6YPNARFBH8IUqW4eEYHyzJrl1V8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315601; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5s0IwffoMRvG3Wnu8+sauk7FlicdbDb2VjR30Cy60eg=; b=CAF8RvaNwAsOqA83h2XvpSOl1KOy8+3onsvU80aTDM/SvlB0/UUgfbNZExDIbiwYVbBx/K82dXrO39MGZgF6hZSQbMFVVD0S4j0eg3WasDWfQiTJnpdo6ynLmJqR/v98AthLxHUoPk3rcszlP5yQ4PyuTV8ETREKnpajycrx+ME= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315601552682.9772418391179; Sun, 9 Aug 2026 15:46:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBH-0005vn-LY; Sun, 09 Aug 2026 18:39:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBF-0005uL-Rp for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:45 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBD-000843-Jc for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:45 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-38dc4553f62so1331864a91.0 for ; Sun, 09 Aug 2026 15:39:43 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315182; x=1786919982; darn=nongnu.org; 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:content-type; bh=5s0IwffoMRvG3Wnu8+sauk7FlicdbDb2VjR30Cy60eg=; b=bx/58W/A0vkkGT/rmCMppQdeuIyBCnR8lGEk79iLtnA6kIR8JA9jkYH18Gje4Kbn/o 950pxh/9JtglXYHVXnVZK8HkZidFmORWkO1k46UhQu4/V2VSGSHleRTXjOS9ATpq8D7T yrLxv+KGYWUrFZJnK0uq+BA63Ou1nJFIY2XDAnXtIMucYXnSyLooo1+ZUjAzeTnnusR1 ROOos2fzYJKEJM+nnHw30D4hl/2SqMmE/TgmPa+WiEmUWAKgkFj05s2S7/9yGA4opOXY xBkruu27M+RKlq3BXvHjOoAzCucq3cpYynip85QBbPQ+ZpADIPpXAo37Ci1aLFqXA2UD 56DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315182; x=1786919982; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5s0IwffoMRvG3Wnu8+sauk7FlicdbDb2VjR30Cy60eg=; b=WcZDiHt+pBb5lR3zVufJIfPwBIcCd6uZ6i9McPyvQkFq/w1iGc3o9GzWOmfaNoOlBB LG1kPAhui3vJsMMA9YXDdJgWWw/kbRXlOXjh+R4AB+gkZv1NIA7+iYOxNFQcdAiChuKG Iy3Y7ecyrXEUjanWNoOmdE1Rjt70+O9dSZYqMzwNd2JJfHz1hhDeig+rF2vowzMDWThc KgsxDP1/3qgVfDEzF54xQ+x7tzknNxL2Re6S19y+MlfLWpbdlfToYUM7QmaqMMgenCZD uKarAvqDnogSVCmoQSNHr0pTr24r6ZuB10uDtgydeQxvvkFeXLcSXK+7yG+6gVtfL7xp vDow== X-Gm-Message-State: AOJu0YwZCGXflKENqqKqAwwwXOWBVWvW7MB552YLnPqcGuyLFCSd3wQ6 eS4kSrLG3UzE33owfBG/iNCD92gXpAp2g0vGEJnEuacx4unypcQMsqVORGcsGYerowg8WYQlcEq i8Aih X-Gm-Gg: AR+sD11pdnSNX35MIVjOyVRXviQgMbb86tvHi9hODs2lfYpJFlFpcsc0P16T9Jjl1BB IQ3m0oz/qDa53ZGml/+vF/UDAsQKhy36VTkfLqkSrWKNFtqbHgu+psNpWiE+J+JRVNTJoCce2q8 3kHFkkeFCI35s+3HTFSc/AAuhV5fUeudxJbwjnBfM4DEt96Ib6fBmmNHJkBKdREulRYKBXlrBzO 21ToAXcRUVe8t4oEB+NhzdtVvp3Z8tny/hTK+Gm0xPbX8dTgvgSeaOnVcFi3EWdzvxg/EfNe0bt M4sPneHYneDtro62cCHf1oOya4+cuY8e9ogoBFPrWm59U4zlmNI+eg461C3b3RugFsG46KknZcc EJI7IrKjXjUvsF1J54YBmQs5dhbjDL1YAP7iYO0DsCPE7eeTSsxnfZbnU9wqfiW+IogiVD5cq3v I5XinpaY2YENq1Y1im8/jl5VvK78NKf7kZf2hauJEuOf4fahs/bfh7eUNTlvf8KLjeMpKOe3nEZ dquKyFAhJ5EZFLFryiG X-Received: by 2002:a17:90b:3c06:b0:38d:e658:595a with SMTP id 98e67ed59e1d1-3903c54f1fdmr37648474a91.2.1786315182209; Sun, 09 Aug 2026 15:39:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 46/56] disas/riscv: Split xlrbr_opcode_data Date: Sun, 9 Aug 2026 15:35:35 -0700 Message-ID: <20260809223545.730664-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315603120158500 Content-Type: text/plain; charset="utf-8" Move the table to riscv-xlrbr-op.c.inc and massage the lines into OP() form. Drop illegal as unused. Return pointers to objects directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xlrbr.c | 54 +++++++++----------------------------- disas/riscv-xlrbr-op.c.inc | 8 ++++++ 2 files changed, 20 insertions(+), 42 deletions(-) create mode 100644 disas/riscv-xlrbr-op.c.inc diff --git a/disas/riscv-xlrbr.c b/disas/riscv-xlrbr.c index b12916c9da..b4229e5c83 100644 --- a/disas/riscv-xlrbr.c +++ b/disas/riscv-xlrbr.c @@ -8,38 +8,16 @@ */ =20 #include "qemu/osdep.h" - #include "disas/riscv.h" #include "disas/riscv-xlrbr.h" =20 -typedef enum { - /* 0 is reserved for rv_op_illegal. */ - rv_op_crc32_b =3D 1, - rv_op_crc32_h =3D 2, - rv_op_crc32_w =3D 3, - rv_op_crc32_d =3D 4, - rv_op_crc32c_b =3D 5, - rv_op_crc32c_h =3D 6, - rv_op_crc32c_w =3D 7, - rv_op_crc32c_d =3D 8, -} rv_xlrbr_op; - -static const rv_opcode_data xlrbr_opcode_data[] =3D { - { "illegal", rv_codec_illegal, rv_fmt_none }, - { "crc32.b", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32.h", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32.w", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32.d", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32c.b", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32c.h", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32c.w", rv_codec_r, rv_fmt_rd_rs1 }, - { "crc32c.d", rv_codec_r, rv_fmt_rd_rs1 }, -}; +#define OP(N, ...) static const rv_opcode_data op_##N =3D { __VA_ARGS__ }; +#include "riscv-xlrbr-op.c.inc" +#undef OP =20 const rv_opcode_data *decode_xlrbr(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch ((inst >> 0) & 0b1111111) { case 0b0010011: @@ -47,34 +25,26 @@ const rv_opcode_data *decode_xlrbr(rv_decode *dec, rv_i= sa isa) case 0b001: switch ((inst >> 20 & 0b111111111111)) { case 0b011000010000: - op =3D rv_op_crc32_b; - break; + return &op_crc32_b; case 0b011000010001: - op =3D rv_op_crc32_h; - break; + return &op_crc32_h; case 0b011000010010: - op =3D rv_op_crc32_w; - break; + return &op_crc32_w; case 0b011000010011: - op =3D rv_op_crc32_d; - break; + return &op_crc32_d; case 0b011000011000: - op =3D rv_op_crc32c_b; - break; + return &op_crc32c_b; case 0b011000011001: - op =3D rv_op_crc32c_h; - break; + return &op_crc32c_h; case 0b011000011010: - op =3D rv_op_crc32c_w; - break; + return &op_crc32c_w; case 0b011000011011: - op =3D rv_op_crc32c_d; - break; + return &op_crc32c_d; } break; } break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xlrbr_opcode_data[op]; + return NULL; } diff --git a/disas/riscv-xlrbr-op.c.inc b/disas/riscv-xlrbr-op.c.inc new file mode 100644 index 0000000000..57add37c24 --- /dev/null +++ b/disas/riscv-xlrbr-op.c.inc @@ -0,0 +1,8 @@ +OP(crc32_b, "crc32.b", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32_h, "crc32.h", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32_w, "crc32.w", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32_d, "crc32.d", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32c_b, "crc32c.b", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32c_h, "crc32c.h", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32c_w, "crc32c.w", rv_codec_r, rv_fmt_rd_rs1) +OP(crc32c_d, "crc32c.d", rv_codec_r, rv_fmt_rd_rs1) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315434; cv=none; d=zohomail.com; s=zohoarc; b=VR29NyXGfKhdyrmuXyoyW422PGpDNW03GAoUN4UdUjL/tIw/nhM/OGoXexUrQnMM1FPmJQOKWvYxtXMAbSoUwg+cBb5usMhdZ7pkgEIhHqdKSzwWz/1QDM/TBErTv6k3hftdb69bdlPUgOD18xrowpr8L88lD8AQ23mLEDlX0lw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315434; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7tN4VtD+alE6/tQ3E3xSOuV9PnY2tppN+q2ShTJ/kZA=; b=jefpPCUY2a3cyPvs0wZ4Y9FzGUN+SMH5UaufCxxV7Tkdt//hjvyzD3ziv3YMu1xMPR4DxZ0MKSfrL6zkQlq0BHs1i/W05xnml5mLS2gweZSnLHyd8BW137WSOvMoCaY1+YIeEKWDj1BErSda5ra9sN046g5UZYz3hctgQ1B1r2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315434418921.1525599282853; Sun, 9 Aug 2026 15:43:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBL-0005yZ-C3; Sun, 09 Aug 2026 18:39:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBJ-0005xR-Bi for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:49 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBE-00084Z-UM for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:49 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-38dfe7eb825so913270a91.0 for ; Sun, 09 Aug 2026 15:39:44 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315183; x=1786919983; darn=nongnu.org; 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:content-type; bh=7tN4VtD+alE6/tQ3E3xSOuV9PnY2tppN+q2ShTJ/kZA=; b=UCJx1gNJc72fv83mx5r0V/PyTetIlL8iSZYlxVBrOPIB4e/Tb3dkDWVuL6R4qfrv8E Mi1dQoW9VxmegahMTkq2AG/GjlZffp4979UlVJyHN6Siu66omx+MVA0dGvhy/oSLjuRG tvoBChimei/YUn3a7UACNUZuaD1BAgOLqQ2mZw8grI6xjcSXpgx7e4eHSJ1QbFr4P5/X iIw4Ll1OSGkmCxtyGNdtNodqmeHYR/PTeRSqLrlnVJifjPNYpiZomgE1hQbB4tn358v1 vOFMHDWdcenMP+LLoILdHD8wX1Q0PakgHm1H+2UH6xR8W/SwlO9q2kkC/RFe/bnCpQ1J T3Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315183; x=1786919983; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7tN4VtD+alE6/tQ3E3xSOuV9PnY2tppN+q2ShTJ/kZA=; b=TbxV0lal0eNNcLnswIoeNXUhSauW5szrGQnXg5K1DPVM7vt48J54Xmcxk6JkjY0DDH iOb8A4gyfUBzCKC6AsWjCWhWAiN4kQcP+ZtNoOGPt88W9bcf+wU3P2UnXEyoE/QpAVFg tEubfhftD2dB1u1Q6ImPLDbgFDuPuWUPtZCSjrL7yUJ9S2C9DHJcCOzO7bGoC2wzn/NZ qHhBUrA8D89he0RYhcxcJn+S0Csczd1/wl0hjxr8P5/u56RMmeompTOU5cySXsgT0hJA khhxXrO3+rkOzd9euASntJtdO6pVu4ZFVMr0xSemkfDoyI/rWbz7tHfNf9lo0/wvtFoZ aqbg== X-Gm-Message-State: AOJu0YxAXAgXhKluozkMOr+XF2Lv2Djd7Nn6XF4+SGeKizoBdpnm90Vc xBabaJMX5LsZCByMQUIy532ODdfa5D2fpZpD3MN85/5yI6SeeA/6zWIsSCR3BlpfvntXb7R40bA +D/LT X-Gm-Gg: AR+sD13mzueREbbQk8FL6H1pGs5szYDn/afNlIdLFVR1moWDKU75rBC9uP4YupLSDxr fEhOkgogK+SxxKt704KZLq8oEgMlb7+iI/wEDmappzmkykCZecpjgPIVDOJGiHsWLJsZAYBjyzt cq0XJn0g0F39D7+LhDviQHjpYfbIA1nquULeVmivB5YDTwJ/fr2Gq0jWkwtIRn+81hDw59ctnco xV5uIYTDdFjLkbls+jW+7RkoNdTKRdosDKx8xLa3QrRe8KJLW+75oQginbgwK3URqZM9SbF3FUM uJAGQyJkZpGpbWBdfaRC8slVfJmQlv5w9eziNa0ge6YUflJUTLoaPZ2O1eJsjRo97/oZuyzPMRs 1HA5iJtdKoRwjYwvTpzvd9NacgjYG2KwjtZQyAKffFrDHLadvRvKSYQQ3jLOjddBeaDN0pnJ9xj iK/1TYRl1W7lQODhxCJHLQzTwLx1xn7D1BzPs2Pe9xa1HX7lrwdrOwoBtR/P7uLtCsrccmyJbJ4 lo+n3dWjdu31K1MkjzO X-Received: by 2002:a17:90b:2dc5:b0:38e:ad9d:1151 with SMTP id 98e67ed59e1d1-3909d79f314mr28411965a91.4.1786315183072; Sun, 09 Aug 2026 15:39:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 47/56] disas/riscv: Split xthead_opcode_data Date: Sun, 9 Aug 2026 15:35:36 -0700 Message-ID: <20260809223545.730664-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315434720158500 Content-Type: text/plain; charset="utf-8" Move the table to riscv-xthead-op.c.inc and massage the lines into OP() form. Drop th.illegal as unused. Return pointers to objects directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv-xthead.c | 481 +++++++++--------------------------- disas/riscv-xthead-op.c.inc | 125 ++++++++++ 2 files changed, 243 insertions(+), 363 deletions(-) create mode 100644 disas/riscv-xthead-op.c.inc diff --git a/disas/riscv-xthead.c b/disas/riscv-xthead.c index fbc96631fd..387c22c869 100644 --- a/disas/riscv-xthead.c +++ b/disas/riscv-xthead.c @@ -8,248 +8,13 @@ #include "disas/riscv.h" #include "disas/riscv-xthead.h" =20 -typedef enum { - /* 0 is reserved for rv_op_illegal. */ - /* XTheadBa */ - rv_op_th_addsl =3D 1, - /* XTheadBb */ - rv_op_th_srri, - rv_op_th_srriw, - rv_op_th_ext, - rv_op_th_extu, - rv_op_th_ff0, - rv_op_th_ff1, - rv_op_th_rev, - rv_op_th_revw, - rv_op_th_tstnbz, - /* XTheadBs */ - rv_op_th_tst, - /* XTheadCmo */ - rv_op_th_dcache_call, - rv_op_th_dcache_ciall, - rv_op_th_dcache_iall, - rv_op_th_dcache_cpa, - rv_op_th_dcache_cipa, - rv_op_th_dcache_ipa, - rv_op_th_dcache_cva, - rv_op_th_dcache_civa, - rv_op_th_dcache_iva, - rv_op_th_dcache_csw, - rv_op_th_dcache_cisw, - rv_op_th_dcache_isw, - rv_op_th_dcache_cpal1, - rv_op_th_dcache_cval1, - rv_op_th_icache_iall, - rv_op_th_icache_ialls, - rv_op_th_icache_ipa, - rv_op_th_icache_iva, - rv_op_th_l2cache_call, - rv_op_th_l2cache_ciall, - rv_op_th_l2cache_iall, - /* XTheadCondMov */ - rv_op_th_mveqz, - rv_op_th_mvnez, - /* XTheadFMemIdx */ - rv_op_th_flrd, - rv_op_th_flrw, - rv_op_th_flurd, - rv_op_th_flurw, - rv_op_th_fsrd, - rv_op_th_fsrw, - rv_op_th_fsurd, - rv_op_th_fsurw, - /* XTheadFmv */ - rv_op_th_fmv_hw_x, - rv_op_th_fmv_x_hw, - /* XTheadMac */ - rv_op_th_mula, - rv_op_th_mulah, - rv_op_th_mulaw, - rv_op_th_muls, - rv_op_th_mulsw, - rv_op_th_mulsh, - /* XTheadMemIdx */ - rv_op_th_lbia, - rv_op_th_lbib, - rv_op_th_lbuia, - rv_op_th_lbuib, - rv_op_th_lhia, - rv_op_th_lhib, - rv_op_th_lhuia, - rv_op_th_lhuib, - rv_op_th_lwia, - rv_op_th_lwib, - rv_op_th_lwuia, - rv_op_th_lwuib, - rv_op_th_ldia, - rv_op_th_ldib, - rv_op_th_sbia, - rv_op_th_sbib, - rv_op_th_shia, - rv_op_th_shib, - rv_op_th_swia, - rv_op_th_swib, - rv_op_th_sdia, - rv_op_th_sdib, - rv_op_th_lrb, - rv_op_th_lrbu, - rv_op_th_lrh, - rv_op_th_lrhu, - rv_op_th_lrw, - rv_op_th_lrwu, - rv_op_th_lrd, - rv_op_th_srb, - rv_op_th_srh, - rv_op_th_srw, - rv_op_th_srd, - rv_op_th_lurb, - rv_op_th_lurbu, - rv_op_th_lurh, - rv_op_th_lurhu, - rv_op_th_lurw, - rv_op_th_lurwu, - rv_op_th_lurd, - rv_op_th_surb, - rv_op_th_surh, - rv_op_th_surw, - rv_op_th_surd, - /* XTheadMemPair */ - rv_op_th_ldd, - rv_op_th_lwd, - rv_op_th_lwud, - rv_op_th_sdd, - rv_op_th_swd, - /* XTheadSync */ - rv_op_th_sfence_vmas, - rv_op_th_sync, - rv_op_th_sync_i, - rv_op_th_sync_is, - rv_op_th_sync_s, -} rv_xthead_op; - -static const rv_opcode_data xthead_opcode_data[] =3D { - { "th.illegal", rv_codec_illegal, rv_fmt_none }, - /* XTheadBa */ - { "th.addsl", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - /* XTheadBb */ - { "th.srri", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm }, - { "th.srriw", rv_codec_r2_imm5, rv_fmt_rd_rs1_imm }, - { "th.ext", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml }, - { "th.extu", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml }, - { "th.ff0", rv_codec_r2, rv_fmt_rd_rs1 }, - { "th.ff1", rv_codec_r2, rv_fmt_rd_rs1 }, - { "th.rev", rv_codec_r2, rv_fmt_rd_rs1 }, - { "th.revw", rv_codec_r2, rv_fmt_rd_rs1 }, - { "th.tstnbz", rv_codec_r2, rv_fmt_rd_rs1 }, - /* XTheadBs */ - { "th.tst", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm }, - /* XTheadCmo */ - { "th.dcache.call", rv_codec_none, rv_fmt_none }, - { "th.dcache.ciall", rv_codec_none, rv_fmt_none }, - { "th.dcache.iall", rv_codec_none, rv_fmt_none }, - { "th.dcache.cpa", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.cipa", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.ipa", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.cva", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.civa", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.iva", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.csw", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.cisw", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.isw", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.cpal1", rv_codec_r, rv_fmt_rs1 }, - { "th.dcache.cval1", rv_codec_r, rv_fmt_rs1 }, - { "th.icache.iall", rv_codec_none, rv_fmt_none }, - { "th.icache.ialls", rv_codec_none, rv_fmt_none }, - { "th.icache.ipa", rv_codec_r, rv_fmt_rs1 }, - { "th.icache.iva", rv_codec_r, rv_fmt_rs1 }, - { "th.l2cache.call", rv_codec_none, rv_fmt_none }, - { "th.l2cache.ciall", rv_codec_none, rv_fmt_none }, - { "th.l2cache.iall", rv_codec_none, rv_fmt_none }, - /* XTheadCondMov */ - { "th.mveqz", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.mvnez", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - /* XTheadFMemIdx */ - { "th.flrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.flrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.flurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.flurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.fsrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.fsrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.fsurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - { "th.fsurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm }, - /* XTheadFmv */ - { "th.fmv.hw.x", rv_codec_r, rv_fmt_rd_frs1 }, - { "th.fmv.x.hw", rv_codec_r, rv_fmt_rd_frs1 }, - /* XTheadMac */ - { "th.mula", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.mulaw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.mulah", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.muls", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.mulsw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "th.mulsh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - /* XTheadMemIdx */ - { "th.lbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lbuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lbuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lhia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lhib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lhuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lhuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lwia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lwib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lwuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lwuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.ldia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.ldib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.sbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.sbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.shia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.shib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.swia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.swib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.sdia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.sdib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr }, - { "th.lrb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lrd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.srb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.srh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.srw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.srd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.lurd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.surb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.surh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.surw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - { "th.surd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm }, - /* XTheadMemPair */ - { "th.ldd", rv_codec_r_imm2, rv_fmt_rd2_imm }, - { "th.lwd", rv_codec_r_imm2, rv_fmt_rd2_imm }, - { "th.lwud", rv_codec_r_imm2, rv_fmt_rd2_imm }, - { "th.sdd", rv_codec_r_imm2, rv_fmt_rd2_imm }, - { "th.swd", rv_codec_r_imm2, rv_fmt_rd2_imm }, - /* XTheadSync */ - { "th.sfence.vmas", rv_codec_r, rv_fmt_rs1_rs2 }, - { "th.sync", rv_codec_none, rv_fmt_none }, - { "th.sync.i", rv_codec_none, rv_fmt_none }, - { "th.sync.is", rv_codec_none, rv_fmt_none }, - { "th.sync.s", rv_codec_none, rv_fmt_none }, -}; +#define OP(N, ...) static const rv_opcode_data op_##N =3D { __VA_ARGS__ }; +#include "riscv-xthead-op.c.inc" +#undef OP =20 const rv_opcode_data *decode_xtheadba(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -262,7 +27,7 @@ const rv_opcode_data *decode_xtheadba(rv_decode *dec, rv= _isa isa) case 0b0000000: case 0b0000001: case 0b0000010: - case 0b0000011: op =3D rv_op_th_addsl; break; + case 0b0000011: return &op_th_addsl; } break; } @@ -272,13 +37,12 @@ const rv_opcode_data *decode_xtheadba(rv_decode *dec, = rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadbb(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -288,41 +52,41 @@ const rv_opcode_data *decode_xtheadbb(rv_decode *dec, = rv_isa isa) switch ((inst >> 12) & 0b111) { case 1: switch ((inst >> 25) & 0b1111111) { - case 0b0001010: op =3D rv_op_th_srriw; break; + case 0b0001010: return &op_th_srriw; case 0b1000000: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_tstnbz; + return &op_th_tstnbz; } break; case 0b1000001: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_rev; + return &op_th_rev; } break; case 0b1000010: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_ff0; + return &op_th_ff0; } break; case 0b1000011: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_ff1; + return &op_th_ff1; } break; case 0b1000100: case 0b1001000: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_revw; + return &op_th_revw; } break; case 0b0001000: case 0b0001001: - op =3D rv_op_th_srri; + return &op_th_srri; break; } break; - case 2: op =3D rv_op_th_ext; break; - case 3: op =3D rv_op_th_extu; break; + case 2: return &op_th_ext; + case 3: return &op_th_extu; } break; /* custom-0 */ @@ -330,13 +94,12 @@ const rv_opcode_data *decode_xtheadbb(rv_decode *dec, = rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadbs(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -346,7 +109,7 @@ const rv_opcode_data *decode_xtheadbs(rv_decode *dec, r= v_isa isa) switch ((inst >> 12) & 0b111) { case 1: switch ((inst >> 26) & 0b111111) { - case 0b100010: op =3D rv_op_th_tst; break; + case 0b100010: return &op_th_tst; } break; } @@ -356,13 +119,12 @@ const rv_opcode_data *decode_xtheadbs(rv_decode *dec,= rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadcmo(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -374,55 +136,55 @@ const rv_opcode_data *decode_xtheadcmo(rv_decode *dec= , rv_isa isa) switch ((inst >> 20 & 0b111111111111)) { case 0b000000000001: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_dcache_call; + return &op_th_dcache_call; } break; case 0b000000000011: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_dcache_ciall; + return &op_th_dcache_ciall; } break; case 0b000000000010: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_dcache_iall; + return &op_th_dcache_iall; } break; - case 0b000000101001: op =3D rv_op_th_dcache_cpa; break; - case 0b000000101011: op =3D rv_op_th_dcache_cipa; break; - case 0b000000101010: op =3D rv_op_th_dcache_ipa; break; - case 0b000000100101: op =3D rv_op_th_dcache_cva; break; - case 0b000000100111: op =3D rv_op_th_dcache_civa; break; - case 0b000000100110: op =3D rv_op_th_dcache_iva; break; - case 0b000000100001: op =3D rv_op_th_dcache_csw; break; - case 0b000000100011: op =3D rv_op_th_dcache_cisw; break; - case 0b000000100010: op =3D rv_op_th_dcache_isw; break; - case 0b000000101000: op =3D rv_op_th_dcache_cpal1; break; - case 0b000000100100: op =3D rv_op_th_dcache_cval1; break; + case 0b000000101001: return &op_th_dcache_cpa; + case 0b000000101011: return &op_th_dcache_cipa; + case 0b000000101010: return &op_th_dcache_ipa; + case 0b000000100101: return &op_th_dcache_cva; + case 0b000000100111: return &op_th_dcache_civa; + case 0b000000100110: return &op_th_dcache_iva; + case 0b000000100001: return &op_th_dcache_csw; + case 0b000000100011: return &op_th_dcache_cisw; + case 0b000000100010: return &op_th_dcache_isw; + case 0b000000101000: return &op_th_dcache_cpal1; + case 0b000000100100: return &op_th_dcache_cval1; case 0b000000010000: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_icache_iall; + return &op_th_icache_iall; } break; case 0b000000010001: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_icache_ialls; + return &op_th_icache_ialls; } break; - case 0b000000111000: op =3D rv_op_th_icache_ipa; break; - case 0b000000110000: op =3D rv_op_th_icache_iva; break; + case 0b000000111000: return &op_th_icache_ipa; + case 0b000000110000: return &op_th_icache_iva; case 0b000000010101: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_l2cache_call; + return &op_th_l2cache_call; } break; case 0b000000010111: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_l2cache_ciall; + return &op_th_l2cache_ciall; } break; case 0b000000010110: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_l2cache_iall; + return &op_th_l2cache_iall; } break; } @@ -434,13 +196,12 @@ const rv_opcode_data *decode_xtheadcmo(rv_decode *dec= , rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadcondmov(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -450,8 +211,8 @@ const rv_opcode_data *decode_xtheadcondmov(rv_decode *d= ec, rv_isa isa) switch ((inst >> 12) & 0b111) { case 1: switch ((inst >> 25) & 0b1111111) { - case 0b0100000: op =3D rv_op_th_mveqz; break; - case 0b0100001: op =3D rv_op_th_mvnez; break; + case 0b0100000: return &op_th_mveqz; + case 0b0100001: return &op_th_mvnez; } break; } @@ -461,13 +222,12 @@ const rv_opcode_data *decode_xtheadcondmov(rv_decode = *dec, rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadfmemidx(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -477,18 +237,18 @@ const rv_opcode_data *decode_xtheadfmemidx(rv_decode = *dec, rv_isa isa) switch ((inst >> 12) & 0b111) { case 6: switch ((inst >> 27) & 0b11111) { - case 8: op =3D rv_op_th_flrw; break; - case 10: op =3D rv_op_th_flurw; break; - case 12: op =3D rv_op_th_flrd; break; - case 14: op =3D rv_op_th_flurd; break; + case 8: return &op_th_flrw; + case 10: return &op_th_flurw; + case 12: return &op_th_flrd; + case 14: return &op_th_flurd; } break; case 7: switch ((inst >> 27) & 0b11111) { - case 8: op =3D rv_op_th_fsrw; break; - case 10: op =3D rv_op_th_fsurw; break; - case 12: op =3D rv_op_th_fsrd; break; - case 14: op =3D rv_op_th_fsurd; break; + case 8: return &op_th_fsrw; + case 10: return &op_th_fsurw; + case 12: return &op_th_fsrd; + case 14: return &op_th_fsurd; } break; } @@ -498,13 +258,12 @@ const rv_opcode_data *decode_xtheadfmemidx(rv_decode = *dec, rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadfmv(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -516,12 +275,12 @@ const rv_opcode_data *decode_xtheadfmv(rv_decode *dec= , rv_isa isa) switch ((inst >> 25) & 0b1111111) { case 0b1010000: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_fmv_hw_x; + return &op_th_fmv_hw_x; } break; case 0b1100000: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_th_fmv_x_hw; + return &op_th_fmv_x_hw; } break; } @@ -533,13 +292,12 @@ const rv_opcode_data *decode_xtheadfmv(rv_decode *dec= , rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadmac(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -549,12 +307,12 @@ const rv_opcode_data *decode_xtheadmac(rv_decode *dec= , rv_isa isa) switch ((inst >> 12) & 0b111) { case 1: switch ((inst >> 25) & 0b1111111) { - case 0b0010000: op =3D rv_op_th_mula; break; - case 0b0010001: op =3D rv_op_th_muls; break; - case 0b0010010: op =3D rv_op_th_mulaw; break; - case 0b0010011: op =3D rv_op_th_mulsw; break; - case 0b0010100: op =3D rv_op_th_mulah; break; - case 0b0010101: op =3D rv_op_th_mulsh; break; + case 0b0010000: return &op_th_mula; + case 0b0010001: return &op_th_muls; + case 0b0010010: return &op_th_mulaw; + case 0b0010011: return &op_th_mulsw; + case 0b0010100: return &op_th_mulah; + case 0b0010101: return &op_th_mulsh; } break; } @@ -564,13 +322,12 @@ const rv_opcode_data *decode_xtheadmac(rv_decode *dec= , rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadmemidx(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -580,54 +337,54 @@ const rv_opcode_data *decode_xtheadmemidx(rv_decode *= dec, rv_isa isa) switch ((inst >> 12) & 0b111) { case 4: switch ((inst >> 27) & 0b11111) { - case 0: op =3D rv_op_th_lrb; break; - case 1: op =3D rv_op_th_lbib; break; - case 2: op =3D rv_op_th_lurb; break; - case 3: op =3D rv_op_th_lbia; break; - case 4: op =3D rv_op_th_lrh; break; - case 5: op =3D rv_op_th_lhib; break; - case 6: op =3D rv_op_th_lurh; break; - case 7: op =3D rv_op_th_lhia; break; - case 8: op =3D rv_op_th_lrw; break; - case 9: op =3D rv_op_th_lwib; break; - case 10: op =3D rv_op_th_lurw; break; - case 11: op =3D rv_op_th_lwia; break; - case 12: op =3D rv_op_th_lrd; break; - case 13: op =3D rv_op_th_ldib; break; - case 14: op =3D rv_op_th_lurd; break; - case 15: op =3D rv_op_th_ldia; break; - case 16: op =3D rv_op_th_lrbu; break; - case 17: op =3D rv_op_th_lbuib; break; - case 18: op =3D rv_op_th_lurbu; break; - case 19: op =3D rv_op_th_lbuia; break; - case 20: op =3D rv_op_th_lrhu; break; - case 21: op =3D rv_op_th_lhuib; break; - case 22: op =3D rv_op_th_lurhu; break; - case 23: op =3D rv_op_th_lhuia; break; - case 24: op =3D rv_op_th_lrwu; break; - case 25: op =3D rv_op_th_lwuib; break; - case 26: op =3D rv_op_th_lurwu; break; - case 27: op =3D rv_op_th_lwuia; break; + case 0: return &op_th_lrb; + case 1: return &op_th_lbib; + case 2: return &op_th_lurb; + case 3: return &op_th_lbia; + case 4: return &op_th_lrh; + case 5: return &op_th_lhib; + case 6: return &op_th_lurh; + case 7: return &op_th_lhia; + case 8: return &op_th_lrw; + case 9: return &op_th_lwib; + case 10: return &op_th_lurw; + case 11: return &op_th_lwia; + case 12: return &op_th_lrd; + case 13: return &op_th_ldib; + case 14: return &op_th_lurd; + case 15: return &op_th_ldia; + case 16: return &op_th_lrbu; + case 17: return &op_th_lbuib; + case 18: return &op_th_lurbu; + case 19: return &op_th_lbuia; + case 20: return &op_th_lrhu; + case 21: return &op_th_lhuib; + case 22: return &op_th_lurhu; + case 23: return &op_th_lhuia; + case 24: return &op_th_lrwu; + case 25: return &op_th_lwuib; + case 26: return &op_th_lurwu; + case 27: return &op_th_lwuia; } break; case 5: switch ((inst >> 27) & 0b11111) { - case 0: op =3D rv_op_th_srb; break; - case 1: op =3D rv_op_th_sbib; break; - case 2: op =3D rv_op_th_surb; break; - case 3: op =3D rv_op_th_sbia; break; - case 4: op =3D rv_op_th_srh; break; - case 5: op =3D rv_op_th_shib; break; - case 6: op =3D rv_op_th_surh; break; - case 7: op =3D rv_op_th_shia; break; - case 8: op =3D rv_op_th_srw; break; - case 9: op =3D rv_op_th_swib; break; - case 10: op =3D rv_op_th_surw; break; - case 11: op =3D rv_op_th_swia; break; - case 12: op =3D rv_op_th_srd; break; - case 13: op =3D rv_op_th_sdib; break; - case 14: op =3D rv_op_th_surd; break; - case 15: op =3D rv_op_th_sdia; break; + case 0: return &op_th_srb; + case 1: return &op_th_sbib; + case 2: return &op_th_surb; + case 3: return &op_th_sbia; + case 4: return &op_th_srh; + case 5: return &op_th_shib; + case 6: return &op_th_surh; + case 7: return &op_th_shia; + case 8: return &op_th_srw; + case 9: return &op_th_swib; + case 10: return &op_th_surw; + case 11: return &op_th_swia; + case 12: return &op_th_srd; + case 13: return &op_th_sdib; + case 14: return &op_th_surd; + case 15: return &op_th_sdia; } break; break; @@ -638,13 +395,12 @@ const rv_opcode_data *decode_xtheadmemidx(rv_decode *= dec, rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadmempair(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -654,15 +410,15 @@ const rv_opcode_data *decode_xtheadmempair(rv_decode = *dec, rv_isa isa) switch ((inst >> 12) & 0b111) { case 4: switch ((inst >> 27) & 0b11111) { - case 28: op =3D rv_op_th_lwd; break; - case 30: op =3D rv_op_th_lwud; break; - case 31: op =3D rv_op_th_ldd; break; + case 28: return &op_th_lwd; + case 30: return &op_th_lwud; + case 31: return &op_th_ldd; } break; case 5: switch ((inst >> 27) & 0b11111) { - case 28: op =3D rv_op_th_swd; break; - case 31: op =3D rv_op_th_sdd; break; + case 28: return &op_th_swd; + case 31: return &op_th_sdd; } break; } @@ -672,13 +428,12 @@ const rv_opcode_data *decode_xtheadmempair(rv_decode = *dec, rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } =20 const rv_opcode_data *decode_xtheadsync(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch (((inst >> 0) & 0b11)) { case 3: @@ -688,13 +443,13 @@ const rv_opcode_data *decode_xtheadsync(rv_decode *de= c, rv_isa isa) switch ((inst >> 12) & 0b111) { case 0: switch ((inst >> 25) & 0b1111111) { - case 0b0000010: op =3D rv_op_th_sfence_vmas; break; + case 0b0000010: return &op_th_sfence_vmas; case 0b0000000: switch ((inst >> 20) & 0b11111) { - case 0b11000: op =3D rv_op_th_sync; break; - case 0b11010: op =3D rv_op_th_sync_i; break; - case 0b11011: op =3D rv_op_th_sync_is; break; - case 0b11001: op =3D rv_op_th_sync_s; break; + case 0b11000: return &op_th_sync; + case 0b11010: return &op_th_sync_i; + case 0b11011: return &op_th_sync_is; + case 0b11001: return &op_th_sync_s; } break; } @@ -706,5 +461,5 @@ const rv_opcode_data *decode_xtheadsync(rv_decode *dec,= rv_isa isa) break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &xthead_opcode_data[op]; + return NULL; } diff --git a/disas/riscv-xthead-op.c.inc b/disas/riscv-xthead-op.c.inc new file mode 100644 index 0000000000..1e4e0557cd --- /dev/null +++ b/disas/riscv-xthead-op.c.inc @@ -0,0 +1,125 @@ +/* XTheadBa */ +OP(th_addsl, "th.addsl", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) + +/* XTheadBb */ +OP(th_srri, "th.srri", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm) +OP(th_srriw, "th.srriw", rv_codec_r2_imm5, rv_fmt_rd_rs1_imm) +OP(th_ext, "th.ext", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml) +OP(th_extu, "th.extu", rv_codec_r2_immhl, rv_fmt_rd_rs1_immh_imml) +OP(th_ff0, "th.ff0", rv_codec_r2, rv_fmt_rd_rs1) +OP(th_ff1, "th.ff1", rv_codec_r2, rv_fmt_rd_rs1) +OP(th_rev, "th.rev", rv_codec_r2, rv_fmt_rd_rs1) +OP(th_revw, "th.revw", rv_codec_r2, rv_fmt_rd_rs1) +OP(th_tstnbz, "th.tstnbz", rv_codec_r2, rv_fmt_rd_rs1) + +/* XTheadBs */ +OP(th_tst, "th.tst", rv_codec_r2_imm6, rv_fmt_rd_rs1_imm) + +/* XTheadCmo */ +OP(th_dcache_call, "th.dcache.call", rv_codec_none, rv_fmt_none) +OP(th_dcache_ciall, "th.dcache.ciall", rv_codec_none, rv_fmt_none) +OP(th_dcache_iall, "th.dcache.iall", rv_codec_none, rv_fmt_none) +OP(th_dcache_cpa, "th.dcache.cpa", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_cipa, "th.dcache.cipa", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_ipa, "th.dcache.ipa", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_cva, "th.dcache.cva", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_civa, "th.dcache.civa", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_iva, "th.dcache.iva", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_csw, "th.dcache.csw", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_cisw, "th.dcache.cisw", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_isw, "th.dcache.isw", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_cpal1, "th.dcache.cpal1", rv_codec_r, rv_fmt_rs1) +OP(th_dcache_cval1, "th.dcache.cval1", rv_codec_r, rv_fmt_rs1) +OP(th_icache_iall, "th.icache.iall", rv_codec_none, rv_fmt_none) +OP(th_icache_ialls, "th.icache.ialls", rv_codec_none, rv_fmt_none) +OP(th_icache_ipa, "th.icache.ipa", rv_codec_r, rv_fmt_rs1) +OP(th_icache_iva, "th.icache.iva", rv_codec_r, rv_fmt_rs1) +OP(th_l2cache_call, "th.l2cache.call", rv_codec_none, rv_fmt_none) +OP(th_l2cache_ciall, "th.l2cache.ciall", rv_codec_none, rv_fmt_none) +OP(th_l2cache_iall, "th.l2cache.iall", rv_codec_none, rv_fmt_none) + +/* XTheadCondMov */ +OP(th_mveqz, "th.mveqz", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_mvnez, "th.mvnez", rv_codec_r, rv_fmt_rd_rs1_rs2) + +/* XTheadFMemIdx */ +OP(th_flrd, "th.flrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_flrw, "th.flrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_flurd, "th.flurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_flurw, "th.flurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_fsrd, "th.fsrd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_fsrw, "th.fsrw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_fsurd, "th.fsurd", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) +OP(th_fsurw, "th.fsurw", rv_codec_r_imm2, rv_fmt_frd_rs1_rs2_imm) + +/* XTheadFmv */ +OP(th_fmv_hw_x, "th.fmv.hw.x", rv_codec_r, rv_fmt_rd_frs1) +OP(th_fmv_x_hw, "th.fmv.x.hw", rv_codec_r, rv_fmt_rd_frs1) + +/* XTheadMac */ +OP(th_mula, "th.mula", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_mulaw, "th.mulaw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_mulah, "th.mulah", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_muls, "th.muls", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_mulsw, "th.mulsw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(th_mulsh, "th.mulsh", rv_codec_r, rv_fmt_rd_rs1_rs2) + +/* XTheadMemIdx */ +OP(th_lbia, "th.lbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lbib, "th.lbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lbuia, "th.lbuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_lbuib, "th.lbuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_lhia, "th.lhia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lhib, "th.lhib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lhuia, "th.lhuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_lhuib, "th.lhuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_lwia, "th.lwia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lwib, "th.lwib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lwuia, "th.lwuia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_lwuib, "th.lwuib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_ad= dr) +OP(th_ldia, "th.ldia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_ldib, "th.ldib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_sbia, "th.sbia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_sbib, "th.sbib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_shia, "th.shia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_shib, "th.shib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_swia, "th.swia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_swib, "th.swib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_sdia, "th.sdia", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_sdib, "th.sdib", rv_codec_r2_imm2_imm5, rv_fmt_rd_rs1_immh_imml_addr) +OP(th_lrb, "th.lrb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrbu, "th.lrbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrh, "th.lrh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrhu, "th.lrhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrw, "th.lrw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrwu, "th.lrwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lrd, "th.lrd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_srb, "th.srb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_srh, "th.srh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_srw, "th.srw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_srd, "th.srd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurb, "th.lurb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurbu, "th.lurbu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurh, "th.lurh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurhu, "th.lurhu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurw, "th.lurw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurwu, "th.lurwu", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_lurd, "th.lurd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_surb, "th.surb", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_surh, "th.surh", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_surw, "th.surw", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) +OP(th_surd, "th.surd", rv_codec_r_imm2, rv_fmt_rd_rs1_rs2_imm) + +/* XTheadMemPair */ +OP(th_ldd, "th.ldd", rv_codec_r_imm2, rv_fmt_rd2_imm) +OP(th_lwd, "th.lwd", rv_codec_r_imm2, rv_fmt_rd2_imm) +OP(th_lwud, "th.lwud", rv_codec_r_imm2, rv_fmt_rd2_imm) +OP(th_sdd, "th.sdd", rv_codec_r_imm2, rv_fmt_rd2_imm) +OP(th_swd, "th.swd", rv_codec_r_imm2, rv_fmt_rd2_imm) + +/* XTheadSync */ +OP(th_sfence_vmas, "th.sfence.vmas", rv_codec_r, rv_fmt_rs1_rs2) +OP(th_sync, "th.sync", rv_codec_none, rv_fmt_none) +OP(th_sync_i, "th.sync.i", rv_codec_none, rv_fmt_none) +OP(th_sync_is, "th.sync.is", rv_codec_none, rv_fmt_none) +OP(th_sync_s, "th.sync.s", rv_codec_none, rv_fmt_none) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315362; cv=none; d=zohomail.com; s=zohoarc; b=AHFWHMwKNSpiEIMiRQ3UbK077+vzoXPSIbm8SWrKvaYdmunXCpcSycGViUA2ibXZCPonyW8ef/WUDU1Zb8249pRW/wFVva/BrrUlUnpbPmGvmtKUWpt6XCyM9QbNnKe1yE5Ffg415ZuJP6MdGIvVv6RQib1UGe0ZC2ElHsNw4MA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315362; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0lRDNSDUDQZKTjH9ncofcENwlBstnuafbn8Teum35fE=; b=FQQxoH4S9+zso2cpTqDSFz+x1pd185zujWhM9nxKbz3RWHAGSJx2KRh/AeC9v7wxu3PBnNmJ8xAB6S6WWewA7qN7ZtV8wrO9zzjbo6sDiPp+CobO1rHiRd1pGGK4ItaW6Cvn941alDVv7YLDLfT6D/bKlsLUzpDJHbgIg9gc6KA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315362340242.20450799831542; Sun, 9 Aug 2026 15:42:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBJ-0005xQ-CS; Sun, 09 Aug 2026 18:39:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBG-0005vU-T7 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:46 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBF-00084j-Cu for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:46 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-38125cebfdaso1642234a91.1 for ; Sun, 09 Aug 2026 15:39:44 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315184; x=1786919984; darn=nongnu.org; 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:content-type; bh=0lRDNSDUDQZKTjH9ncofcENwlBstnuafbn8Teum35fE=; b=D+bQk6HYbx0iEc6MXp08aWl0/TjbyfP93CaIU8wdTHRdbZ+hJTjNUcHE9h1QTNfGRs ipXXSmb4RMeQgTcB+XttUPLhxHm0io20WB51skZAGKdbGbtgbQLqDMhKUhZmQkRczXcm 6opbfCva6joKzqEy55Bjh6SK/KZx75KquDaC/KGhBDDtPerDverGMCm9unN0Qbwa/nD/ ljTgC9jgp8i7Z3QPL6G18Qzt11soC5no5euznXn+ga+GwXNOfFmyNUwrvADWfDYRjcpJ 8frkP5WmNyVc4qEEoy5k0XBOMX6ixeHQ6l0kZFwZuO/EoiCY2UifaHc6HaMBaRjpwBsx E2oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315184; x=1786919984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0lRDNSDUDQZKTjH9ncofcENwlBstnuafbn8Teum35fE=; b=sSyEgyfDv/No6Jye9gplJmnLyVve8AyvEBFUiS13d6kG+dMWFjHWqV3+D2Wj+nyV3k 4b9bH0u4jew7byb5y2VLt0Az9SovIarHddtBnNjXa/8pAqgmYy2RpX/Fr4euZfgNbykr gNO0zrnI7RbfgPiMmEBLAX7xFhCBH8L3DSZ4v/O6bOZPVjqS1jLZgpcX/sf3OV1sZqUK jDukw+nnKTr+xGfDNAoVnoVMS553pTTI4bF4ztiscW0/0h638gJdNiJxurMBiAEgsQu/ 10vPv4ZMdcyyqXSQx5/iTLnjFRiKtuoTCQbfN+mMumUB2SrNQ7MEflqwr0cAGXGdeY51 ohTw== X-Gm-Message-State: AOJu0YwFKWy+yYVZx6p8VXZb9DR/aRQF/qWSU60b1gY/mfaN9GMMvJqk 3vDJg5UUyJUV2sAN/k91vaenTrzyT8tYAXD5JVEuXtRWdPb33o8qg4oMNNZbkS/Rr+lVnwlVv8N 4Ra/H X-Gm-Gg: AR+sD11OnvcFI9F25/BPSt1Vm1jnb4xpGf1t4tDXq7sqH8TYzGk3TayyjDM0aA+P1hv JsDZFcF8mV/AcqJdIOQACqpejxPSNa4eTxtxYFdKpjRYz/K3WFD+iU7konQJVFjIXI/9MEXNCxi o98E8VII1DV+YNo49vgXXbTTPEZrHcYYDsrhmHmSXSACIVVoqNk7W9pIChs65NaBH1AgU2cX79i 5jiBGb/LbG2xIGmBhAu7u7SoUXefPQuu1ElWGxJcQl60nHiWCZU0NDpW3F55TA/jMAtIjYdbcUH QFUxa9DKRIeoNWsfQcVX6C80mrtmbJW8NnTHy3d3elyAsph1t6EJX40Y+vIp3Ept2dQc+o/oc9H 2wXvK7AEazAccG7nzrcYsCTd333GX+l8ReYvM6mPMoT/xewMkI7SLsf6IRZ4391SCK53gGAuplm YOxFi2thnK/+crAYCGHk/AB+BugZMzQSKSj6ons752Qmx72g9+X7G4eyHC97JCiznQAOlSUYE4G kidS2f97Pwy+hfdUf+n X-Received: by 2002:a17:90b:2788:b0:38e:64b0:8bce with SMTP id 98e67ed59e1d1-39262309a8bmr20357489a91.20.1786315183785; Sun, 09 Aug 2026 15:39:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 48/56] disas/riscv: Move rv_op_illegal to riscv.c Date: Sun, 9 Aug 2026 15:35:37 -0700 Message-ID: <20260809223545.730664-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315364416158500 Content-Type: text/plain; charset="utf-8" illegal is no longer used in other files. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 4 ---- disas/riscv.c | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 241dd47d7f..5ac8c41616 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -200,10 +200,6 @@ typedef struct { uint8_t rlist; } rv_decode; =20 -enum { - rv_op_illegal =3D 0 -}; - /* instruction formats */ =20 #define rv_fmt_none "O\t" diff --git a/disas/riscv.c b/disas/riscv.c index 4141741d79..f0b3bc6be7 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -29,7 +29,7 @@ #include "disas/riscv-xlrbr.h" =20 typedef enum { - /* 0 is reserved for rv_op_illegal. */ + rv_op_illegal =3D 0, rv_op_lui =3D 1, rv_op_auipc =3D 2, rv_op_jal =3D 3, --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315405; cv=none; d=zohomail.com; s=zohoarc; b=hQqiS+BlE3zEKkOGBDhuYoPlsssJZIEDFYzL99i9IKB48qosGFbKm//nkRf1gTPG7/ICEZYjUrePqbhxo8HP4cNWCx9vSlpeyrOKjNrJThG9XWq7qtyY5DbljknKk9SR9QQci6qobxr/oA1VSxxHGTNl6SZwqxoU/7Qg5Ophf/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315405; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hFwq0fVJubmae8QT1R7NoH93dEFhvjDfs8gaJYcm2sM=; b=bUarQsWvLbyYIx+IaO1np74+/hp9Kz3YVst7lQIGg0iSdtA0gCPlvheRDY288Ug3uJvZ8EghlNxImxhUh2tI+bbosf4axaUOQ4W/KoMx0N8Mg2krfjslKGZwUSSsCJjwn//RrTap/xKP2UrZ9mmuzlSON3QkeyZBCm48h8F9OdE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315405197916.9299278211929; Sun, 9 Aug 2026 15:43:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBQ-00062T-LA; Sun, 09 Aug 2026 18:39:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBN-000613-Rg for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:53 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBH-00085g-Cq for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:53 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-381b831d535so1581422a91.0 for ; Sun, 09 Aug 2026 15:39:46 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315186; x=1786919986; darn=nongnu.org; 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:content-type; bh=hFwq0fVJubmae8QT1R7NoH93dEFhvjDfs8gaJYcm2sM=; b=g2/N4ejMgl89mr3lRvK68QdAZVaktNOc/Ug82bnC90czvGiAUuIBpz2AxXRM6ImgVr 8eFIEb9d6KZcjla7kXeWfJVttoB65M4UZj2MOG92BM9Le6i+3bRzdOECyB0gjkZE2XwC 4j8r+S8oNJex39TZHiNtmYrnXWNftAcVU54Rgb4rQN4sNMIxQDxM3cRf8j030HSA/Bhc xd1msk83gp3t2KQlNBPkobjjxlnXCAcwOd2ceQyLAzVQqWgyZv0o1cGGkUWJXoCpmWKr 6zLFL2el8npXprjzeHjY8ps9ZDSQdb8FKaPCMqrc9R/z/i3yjeM+0xsk45trpUyPRYTA OuOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315186; x=1786919986; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hFwq0fVJubmae8QT1R7NoH93dEFhvjDfs8gaJYcm2sM=; b=Hoyszpj+jqesCMQAwqIkE7bSrMHOMcvui41wemqz2ZC/Z8Yd2C6CPYh0f6J7eI7ncU IAWtT/v8wELWybmYYChf/fdqAEModVGZDLnKjcUP+PRQT3WJonXfgDOU9H8N1MZEQctk If1sL7wbNc4NbXm+lAwZhlj9HeJZtYKsXKE/QIU6s45Kcs4RKBnTcfMVmr6ystea5vJX l/bnaTxLrUCLZ4ByVKk7vfwzDr7d6NC0SPUthUWbrjAry/gYFheA03/gqaKsZZfVfeiU ryaKN5WHLPk10pCjFsr4mOFQIbJdBJY6gLSq9mXzY9A1NY7wHNsLGSB0fCgFWLqHGJ98 Xn5Q== X-Gm-Message-State: AOJu0Yz0OT0rIaiFxJ4R6TlsBxudqrwwofl72Qubh/0dVvd7SUu4xQb5 Fkazod9xNRLDbSu5RHnMYxG5BmpJ0R9aSmllwP/FMl8vWQssAKR+ZbvL6iPdDVtMd4uPcULou5F dV9YO X-Gm-Gg: AR+sD10i1GH8NEwkM0xOkwFsFpssA+Mt4w9X2Hzh/Pj1qgcOLWNP5CQqjj5rP4kA2+0 mwD29Qd5axYynhkaYyNGI2B+0wkW2lIjAp3zylQ8cy7Dau3i7KiB+h/lS9pY+qYMoTDt/Sm6GJ+ K6ivedm9EYC6VVu3U0nyHflnq4kAnOH4L18vmY6sQ9Cx9Sc06WtU0sv7oZcRSCLmjlg5JI+8tCd p0wDoro9cAJpQQaZSozXXWrfouW0FX6W2P/g5okd3xMcK4qAq1g35nb+OFVrlvfdxF4Dar6EgAV 2JLshpEH4ydPOmP7IsMZQHRA9uk2+t/JV9p9S8jlSWtYyflKglu9Mca6LtOe22Ua7qfiBMIS7wz TCcjdZrw8DGTSwNrdYV7umyXmc5qh3+Q0kjtH6bWVWy3tPmJE9qHl9mAcgceRBzb0NHyttKZDw3 tONo0zMA3ag3ej6Pnn/5e3H2XP6ANHc4ADJgNcwz2cmaOguz+PBmJRCzCQI0aJrZGenY0HgIdXi XeZ8vHP9C2k7Qj/Z5XN X-Received: by 2002:a17:90b:52c4:b0:38d:ef48:b04 with SMTP id 98e67ed59e1d1-392620e70b5mr21919538a91.10.1786315184650; Sun, 09 Aug 2026 15:39:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 49/56] disas/riscv: Split out riscv-op.c.inc Date: Sun, 9 Aug 2026 15:35:38 -0700 Message-ID: <20260809223545.730664-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315406514158500 Content-Type: text/plain; charset="utf-8" Move rvi_opcode_data to riscv-op.c.inc and massage the lines into OP() form. Unlike other files, keep the enumeration and the table intact for now, but build them both from the same source. Adjust the names of rv_*mop to include _op_ to match the general pattern. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 1931 +----------------------------------------- disas/riscv-op.c.inc | 958 +++++++++++++++++++++ 2 files changed, 967 insertions(+), 1922 deletions(-) create mode 100644 disas/riscv-op.c.inc diff --git a/disas/riscv.c b/disas/riscv.c index f0b3bc6be7..9dad56b486 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -29,964 +29,9 @@ #include "disas/riscv-xlrbr.h" =20 typedef enum { - rv_op_illegal =3D 0, - rv_op_lui =3D 1, - rv_op_auipc =3D 2, - rv_op_jal =3D 3, - rv_op_jalr =3D 4, - rv_op_beq =3D 5, - rv_op_bne =3D 6, - rv_op_blt =3D 7, - rv_op_bge =3D 8, - rv_op_bltu =3D 9, - rv_op_bgeu =3D 10, - rv_op_lb =3D 11, - rv_op_lh =3D 12, - rv_op_lw =3D 13, - rv_op_lbu =3D 14, - rv_op_lhu =3D 15, - rv_op_sb =3D 16, - rv_op_sh =3D 17, - rv_op_sw =3D 18, - rv_op_addi =3D 19, - rv_op_slti =3D 20, - rv_op_sltiu =3D 21, - rv_op_xori =3D 22, - rv_op_ori =3D 23, - rv_op_andi =3D 24, - rv_op_slli =3D 25, - rv_op_srli =3D 26, - rv_op_srai =3D 27, - rv_op_add =3D 28, - rv_op_sub =3D 29, - rv_op_sll =3D 30, - rv_op_slt =3D 31, - rv_op_sltu =3D 32, - rv_op_xor =3D 33, - rv_op_srl =3D 34, - rv_op_sra =3D 35, - rv_op_or =3D 36, - rv_op_and =3D 37, - rv_op_fence =3D 38, - rv_op_fence_i =3D 39, - rv_op_lwu =3D 40, - rv_op_ld =3D 41, - rv_op_sd =3D 42, - rv_op_addiw =3D 43, - rv_op_slliw =3D 44, - rv_op_srliw =3D 45, - rv_op_sraiw =3D 46, - rv_op_addw =3D 47, - rv_op_subw =3D 48, - rv_op_sllw =3D 49, - rv_op_srlw =3D 50, - rv_op_sraw =3D 51, - rv_op_ldu =3D 52, - rv_op_lq =3D 53, - rv_op_sq =3D 54, - rv_op_addid =3D 55, - rv_op_sllid =3D 56, - rv_op_srlid =3D 57, - rv_op_sraid =3D 58, - rv_op_addd =3D 59, - rv_op_subd =3D 60, - rv_op_slld =3D 61, - rv_op_srld =3D 62, - rv_op_srad =3D 63, - rv_op_mul =3D 64, - rv_op_mulh =3D 65, - rv_op_mulhsu =3D 66, - rv_op_mulhu =3D 67, - rv_op_div =3D 68, - rv_op_divu =3D 69, - rv_op_rem =3D 70, - rv_op_remu =3D 71, - rv_op_mulw =3D 72, - rv_op_divw =3D 73, - rv_op_divuw =3D 74, - rv_op_remw =3D 75, - rv_op_remuw =3D 76, - rv_op_muld =3D 77, - rv_op_divd =3D 78, - rv_op_divud =3D 79, - rv_op_remd =3D 80, - rv_op_remud =3D 81, - rv_op_lr_w =3D 82, - rv_op_sc_w =3D 83, - rv_op_amoswap_w =3D 84, - rv_op_amoadd_w =3D 85, - rv_op_amoxor_w =3D 86, - rv_op_amoor_w =3D 87, - rv_op_amoand_w =3D 88, - rv_op_amomin_w =3D 89, - rv_op_amomax_w =3D 90, - rv_op_amominu_w =3D 91, - rv_op_amomaxu_w =3D 92, - rv_op_lr_d =3D 93, - rv_op_sc_d =3D 94, - rv_op_amoswap_d =3D 95, - rv_op_amoadd_d =3D 96, - rv_op_amoxor_d =3D 97, - rv_op_amoor_d =3D 98, - rv_op_amoand_d =3D 99, - rv_op_amomin_d =3D 100, - rv_op_amomax_d =3D 101, - rv_op_amominu_d =3D 102, - rv_op_amomaxu_d =3D 103, - rv_op_lr_q =3D 104, - rv_op_sc_q =3D 105, - rv_op_amoswap_q =3D 106, - rv_op_amoadd_q =3D 107, - rv_op_amoxor_q =3D 108, - rv_op_amoor_q =3D 109, - rv_op_amoand_q =3D 110, - rv_op_amomin_q =3D 111, - rv_op_amomax_q =3D 112, - rv_op_amominu_q =3D 113, - rv_op_amomaxu_q =3D 114, - rv_op_ecall =3D 115, - rv_op_ebreak =3D 116, - rv_op_uret =3D 117, - rv_op_sret =3D 118, - rv_op_hret =3D 119, - rv_op_mret =3D 120, - rv_op_dret =3D 121, - rv_op_sfence_vm =3D 122, - rv_op_sfence_vma =3D 123, - rv_op_wfi =3D 124, - rv_op_csrrw =3D 125, - rv_op_csrrs =3D 126, - rv_op_csrrc =3D 127, - rv_op_csrrwi =3D 128, - rv_op_csrrsi =3D 129, - rv_op_csrrci =3D 130, - rv_op_flw =3D 131, - rv_op_fsw =3D 132, - rv_op_fmadd_s =3D 133, - rv_op_fmsub_s =3D 134, - rv_op_fnmsub_s =3D 135, - rv_op_fnmadd_s =3D 136, - rv_op_fadd_s =3D 137, - rv_op_fsub_s =3D 138, - rv_op_fmul_s =3D 139, - rv_op_fdiv_s =3D 140, - rv_op_fsgnj_s =3D 141, - rv_op_fsgnjn_s =3D 142, - rv_op_fsgnjx_s =3D 143, - rv_op_fmin_s =3D 144, - rv_op_fmax_s =3D 145, - rv_op_fsqrt_s =3D 146, - rv_op_fle_s =3D 147, - rv_op_flt_s =3D 148, - rv_op_feq_s =3D 149, - rv_op_fcvt_w_s =3D 150, - rv_op_fcvt_wu_s =3D 151, - rv_op_fcvt_s_w =3D 152, - rv_op_fcvt_s_wu =3D 153, - rv_op_fmv_x_s =3D 154, - rv_op_fclass_s =3D 155, - rv_op_fmv_s_x =3D 156, - rv_op_fcvt_l_s =3D 157, - rv_op_fcvt_lu_s =3D 158, - rv_op_fcvt_s_l =3D 159, - rv_op_fcvt_s_lu =3D 160, - rv_op_fld =3D 161, - rv_op_fsd =3D 162, - rv_op_fmadd_d =3D 163, - rv_op_fmsub_d =3D 164, - rv_op_fnmsub_d =3D 165, - rv_op_fnmadd_d =3D 166, - rv_op_fadd_d =3D 167, - rv_op_fsub_d =3D 168, - rv_op_fmul_d =3D 169, - rv_op_fdiv_d =3D 170, - rv_op_fsgnj_d =3D 171, - rv_op_fsgnjn_d =3D 172, - rv_op_fsgnjx_d =3D 173, - rv_op_fmin_d =3D 174, - rv_op_fmax_d =3D 175, - rv_op_fcvt_s_d =3D 176, - rv_op_fcvt_d_s =3D 177, - rv_op_fsqrt_d =3D 178, - rv_op_fle_d =3D 179, - rv_op_flt_d =3D 180, - rv_op_feq_d =3D 181, - rv_op_fcvt_w_d =3D 182, - rv_op_fcvt_wu_d =3D 183, - rv_op_fcvt_d_w =3D 184, - rv_op_fcvt_d_wu =3D 185, - rv_op_fclass_d =3D 186, - rv_op_fcvt_l_d =3D 187, - rv_op_fcvt_lu_d =3D 188, - rv_op_fmv_x_d =3D 189, - rv_op_fcvt_d_l =3D 190, - rv_op_fcvt_d_lu =3D 191, - rv_op_fmv_d_x =3D 192, - rv_op_flq =3D 193, - rv_op_fsq =3D 194, - rv_op_fmadd_q =3D 195, - rv_op_fmsub_q =3D 196, - rv_op_fnmsub_q =3D 197, - rv_op_fnmadd_q =3D 198, - rv_op_fadd_q =3D 199, - rv_op_fsub_q =3D 200, - rv_op_fmul_q =3D 201, - rv_op_fdiv_q =3D 202, - rv_op_fsgnj_q =3D 203, - rv_op_fsgnjn_q =3D 204, - rv_op_fsgnjx_q =3D 205, - rv_op_fmin_q =3D 206, - rv_op_fmax_q =3D 207, - rv_op_fcvt_s_q =3D 208, - rv_op_fcvt_q_s =3D 209, - rv_op_fcvt_d_q =3D 210, - rv_op_fcvt_q_d =3D 211, - rv_op_fsqrt_q =3D 212, - rv_op_fle_q =3D 213, - rv_op_flt_q =3D 214, - rv_op_feq_q =3D 215, - rv_op_fcvt_w_q =3D 216, - rv_op_fcvt_wu_q =3D 217, - rv_op_fcvt_q_w =3D 218, - rv_op_fcvt_q_wu =3D 219, - rv_op_fclass_q =3D 220, - rv_op_fcvt_l_q =3D 221, - rv_op_fcvt_lu_q =3D 222, - rv_op_fcvt_q_l =3D 223, - rv_op_fcvt_q_lu =3D 224, - rv_op_fmv_x_q =3D 225, - rv_op_fmv_q_x =3D 226, - rv_op_c_addi4spn =3D 227, - rv_op_c_fld =3D 228, - rv_op_c_lw =3D 229, - rv_op_c_flw =3D 230, - rv_op_c_fsd =3D 231, - rv_op_c_sw =3D 232, - rv_op_c_fsw =3D 233, - rv_op_c_addi =3D 235, - rv_op_c_jal =3D 236, - rv_op_c_li =3D 237, - rv_op_c_addi16sp =3D 238, - rv_op_c_lui =3D 239, - rv_op_c_srli =3D 240, - rv_op_c_srai =3D 241, - rv_op_c_andi =3D 242, - rv_op_c_sub =3D 243, - rv_op_c_xor =3D 244, - rv_op_c_or =3D 245, - rv_op_c_and =3D 246, - rv_op_c_subw =3D 247, - rv_op_c_addw =3D 248, - rv_op_c_j =3D 249, - rv_op_c_beqz =3D 250, - rv_op_c_bnez =3D 251, - rv_op_c_slli =3D 252, - rv_op_c_fldsp =3D 253, - rv_op_c_lwsp =3D 254, - rv_op_c_flwsp =3D 255, - rv_op_c_jr =3D 256, - rv_op_c_mv =3D 257, - rv_op_c_ebreak =3D 258, - rv_op_c_jalr =3D 259, - rv_op_c_add =3D 260, - rv_op_c_fsdsp =3D 261, - rv_op_c_swsp =3D 262, - rv_op_c_fswsp =3D 263, - rv_op_c_ld =3D 264, - rv_op_c_sd =3D 265, - rv_op_c_addiw =3D 266, - rv_op_c_ldsp =3D 267, - rv_op_c_sdsp =3D 268, - rv_op_c_lq =3D 269, - rv_op_c_sq =3D 270, - rv_op_c_lqsp =3D 271, - rv_op_c_sqsp =3D 272, - rv_op_nop =3D 273, - rv_op_mv =3D 274, - rv_op_not =3D 275, - rv_op_neg =3D 276, - rv_op_negw =3D 277, - rv_op_sext_w =3D 278, - rv_op_seqz =3D 279, - rv_op_snez =3D 280, - rv_op_sltz =3D 281, - rv_op_sgtz =3D 282, - rv_op_fmv_s =3D 283, - rv_op_fabs_s =3D 284, - rv_op_fneg_s =3D 285, - rv_op_fmv_d =3D 286, - rv_op_fabs_d =3D 287, - rv_op_fneg_d =3D 288, - rv_op_fmv_q =3D 289, - rv_op_fabs_q =3D 290, - rv_op_fneg_q =3D 291, - rv_op_beqz =3D 292, - rv_op_bnez =3D 293, - rv_op_blez =3D 294, - rv_op_bgez =3D 295, - rv_op_bltz =3D 296, - rv_op_bgtz =3D 297, - rv_op_jal_ra =3D 298, - rv_op_jalr_ra =3D 299, - rv_op_j =3D 302, - rv_op_ret =3D 303, - rv_op_jr =3D 304, - rv_op_rdcycle =3D 305, - rv_op_rdtime =3D 306, - rv_op_rdinstret =3D 307, - rv_op_rdcycleh =3D 308, - rv_op_rdtimeh =3D 309, - rv_op_rdinstreth =3D 310, - rv_op_frcsr =3D 311, - rv_op_frrm =3D 312, - rv_op_frflags =3D 313, - rv_op_fscsr =3D 314, - rv_op_fsrm =3D 315, - rv_op_fsflags =3D 316, - rv_op_fsrmi =3D 317, - rv_op_fsflagsi =3D 318, - rv_op_bseti =3D 319, - rv_op_bclri =3D 320, - rv_op_binvi =3D 321, - rv_op_bexti =3D 322, - rv_op_rori =3D 323, - rv_op_clz =3D 324, - rv_op_ctz =3D 325, - rv_op_cpop =3D 326, - rv_op_sext_h =3D 327, - rv_op_sext_b =3D 328, - rv_op_xnor =3D 329, - rv_op_orn =3D 330, - rv_op_andn =3D 331, - rv_op_rol =3D 332, - rv_op_ror =3D 333, - rv_op_sh1add =3D 334, - rv_op_sh2add =3D 335, - rv_op_sh3add =3D 336, - rv_op_sh1add_uw =3D 337, - rv_op_sh2add_uw =3D 338, - rv_op_sh3add_uw =3D 339, - rv_op_clmul =3D 340, - rv_op_clmulr =3D 341, - rv_op_clmulh =3D 342, - rv_op_min =3D 343, - rv_op_minu =3D 344, - rv_op_max =3D 345, - rv_op_maxu =3D 346, - rv_op_clzw =3D 347, - rv_op_ctzw =3D 348, - rv_op_cpopw =3D 349, - rv_op_slli_uw =3D 350, - rv_op_add_uw =3D 351, - rv_op_rolw =3D 352, - rv_op_rorw =3D 353, - rv_op_rev8 =3D 354, - rv_op_zext_h =3D 355, - rv_op_roriw =3D 356, - rv_op_orc_b =3D 357, - rv_op_bset =3D 358, - rv_op_bclr =3D 359, - rv_op_binv =3D 360, - rv_op_bext =3D 361, - rv_op_aes32esmi =3D 362, - rv_op_aes32esi =3D 363, - rv_op_aes32dsmi =3D 364, - rv_op_aes32dsi =3D 365, - rv_op_aes64ks1i =3D 366, - rv_op_aes64ks2 =3D 367, - rv_op_aes64im =3D 368, - rv_op_aes64esm =3D 369, - rv_op_aes64es =3D 370, - rv_op_aes64dsm =3D 371, - rv_op_aes64ds =3D 372, - rv_op_sha256sig0 =3D 373, - rv_op_sha256sig1 =3D 374, - rv_op_sha256sum0 =3D 375, - rv_op_sha256sum1 =3D 376, - rv_op_sha512sig0 =3D 377, - rv_op_sha512sig1 =3D 378, - rv_op_sha512sum0 =3D 379, - rv_op_sha512sum1 =3D 380, - rv_op_sha512sum0r =3D 381, - rv_op_sha512sum1r =3D 382, - rv_op_sha512sig0l =3D 383, - rv_op_sha512sig0h =3D 384, - rv_op_sha512sig1l =3D 385, - rv_op_sha512sig1h =3D 386, - rv_op_sm3p0 =3D 387, - rv_op_sm3p1 =3D 388, - rv_op_sm4ed =3D 389, - rv_op_sm4ks =3D 390, - rv_op_brev8 =3D 391, - rv_op_pack =3D 392, - rv_op_packh =3D 393, - rv_op_packw =3D 394, - rv_op_unzip =3D 395, - rv_op_zip =3D 396, - rv_op_xperm4 =3D 397, - rv_op_xperm8 =3D 398, - rv_op_vle8_v =3D 399, - rv_op_vle16_v =3D 400, - rv_op_vle32_v =3D 401, - rv_op_vle64_v =3D 402, - rv_op_vse8_v =3D 403, - rv_op_vse16_v =3D 404, - rv_op_vse32_v =3D 405, - rv_op_vse64_v =3D 406, - rv_op_vlm_v =3D 407, - rv_op_vsm_v =3D 408, - rv_op_vlse8_v =3D 409, - rv_op_vlse16_v =3D 410, - rv_op_vlse32_v =3D 411, - rv_op_vlse64_v =3D 412, - rv_op_vsse8_v =3D 413, - rv_op_vsse16_v =3D 414, - rv_op_vsse32_v =3D 415, - rv_op_vsse64_v =3D 416, - rv_op_vluxei8_v =3D 417, - rv_op_vluxei16_v =3D 418, - rv_op_vluxei32_v =3D 419, - rv_op_vluxei64_v =3D 420, - rv_op_vloxei8_v =3D 421, - rv_op_vloxei16_v =3D 422, - rv_op_vloxei32_v =3D 423, - rv_op_vloxei64_v =3D 424, - rv_op_vsuxei8_v =3D 425, - rv_op_vsuxei16_v =3D 426, - rv_op_vsuxei32_v =3D 427, - rv_op_vsuxei64_v =3D 428, - rv_op_vsoxei8_v =3D 429, - rv_op_vsoxei16_v =3D 430, - rv_op_vsoxei32_v =3D 431, - rv_op_vsoxei64_v =3D 432, - rv_op_vle8ff_v =3D 433, - rv_op_vle16ff_v =3D 434, - rv_op_vle32ff_v =3D 435, - rv_op_vle64ff_v =3D 436, - rv_op_vl1re8_v =3D 437, - rv_op_vl1re16_v =3D 438, - rv_op_vl1re32_v =3D 439, - rv_op_vl1re64_v =3D 440, - rv_op_vl2re8_v =3D 441, - rv_op_vl2re16_v =3D 442, - rv_op_vl2re32_v =3D 443, - rv_op_vl2re64_v =3D 444, - rv_op_vl4re8_v =3D 445, - rv_op_vl4re16_v =3D 446, - rv_op_vl4re32_v =3D 447, - rv_op_vl4re64_v =3D 448, - rv_op_vl8re8_v =3D 449, - rv_op_vl8re16_v =3D 450, - rv_op_vl8re32_v =3D 451, - rv_op_vl8re64_v =3D 452, - rv_op_vs1r_v =3D 453, - rv_op_vs2r_v =3D 454, - rv_op_vs4r_v =3D 455, - rv_op_vs8r_v =3D 456, - rv_op_vadd_vv =3D 457, - rv_op_vadd_vx =3D 458, - rv_op_vadd_vi =3D 459, - rv_op_vsub_vv =3D 460, - rv_op_vsub_vx =3D 461, - rv_op_vrsub_vx =3D 462, - rv_op_vrsub_vi =3D 463, - rv_op_vwaddu_vv =3D 464, - rv_op_vwaddu_vx =3D 465, - rv_op_vwadd_vv =3D 466, - rv_op_vwadd_vx =3D 467, - rv_op_vwsubu_vv =3D 468, - rv_op_vwsubu_vx =3D 469, - rv_op_vwsub_vv =3D 470, - rv_op_vwsub_vx =3D 471, - rv_op_vwaddu_wv =3D 472, - rv_op_vwaddu_wx =3D 473, - rv_op_vwadd_wv =3D 474, - rv_op_vwadd_wx =3D 475, - rv_op_vwsubu_wv =3D 476, - rv_op_vwsubu_wx =3D 477, - rv_op_vwsub_wv =3D 478, - rv_op_vwsub_wx =3D 479, - rv_op_vadc_vvm =3D 480, - rv_op_vadc_vxm =3D 481, - rv_op_vadc_vim =3D 482, - rv_op_vmadc_vvm =3D 483, - rv_op_vmadc_vxm =3D 484, - rv_op_vmadc_vim =3D 485, - rv_op_vsbc_vvm =3D 486, - rv_op_vsbc_vxm =3D 487, - rv_op_vmsbc_vvm =3D 488, - rv_op_vmsbc_vxm =3D 489, - rv_op_vand_vv =3D 490, - rv_op_vand_vx =3D 491, - rv_op_vand_vi =3D 492, - rv_op_vor_vv =3D 493, - rv_op_vor_vx =3D 494, - rv_op_vor_vi =3D 495, - rv_op_vxor_vv =3D 496, - rv_op_vxor_vx =3D 497, - rv_op_vxor_vi =3D 498, - rv_op_vsll_vv =3D 499, - rv_op_vsll_vx =3D 500, - rv_op_vsll_vi =3D 501, - rv_op_vsrl_vv =3D 502, - rv_op_vsrl_vx =3D 503, - rv_op_vsrl_vi =3D 504, - rv_op_vsra_vv =3D 505, - rv_op_vsra_vx =3D 506, - rv_op_vsra_vi =3D 507, - rv_op_vnsrl_wv =3D 508, - rv_op_vnsrl_wx =3D 509, - rv_op_vnsrl_wi =3D 510, - rv_op_vnsra_wv =3D 511, - rv_op_vnsra_wx =3D 512, - rv_op_vnsra_wi =3D 513, - rv_op_vmseq_vv =3D 514, - rv_op_vmseq_vx =3D 515, - rv_op_vmseq_vi =3D 516, - rv_op_vmsne_vv =3D 517, - rv_op_vmsne_vx =3D 518, - rv_op_vmsne_vi =3D 519, - rv_op_vmsltu_vv =3D 520, - rv_op_vmsltu_vx =3D 521, - rv_op_vmslt_vv =3D 522, - rv_op_vmslt_vx =3D 523, - rv_op_vmsleu_vv =3D 524, - rv_op_vmsleu_vx =3D 525, - rv_op_vmsleu_vi =3D 526, - rv_op_vmsle_vv =3D 527, - rv_op_vmsle_vx =3D 528, - rv_op_vmsle_vi =3D 529, - rv_op_vmsgtu_vx =3D 530, - rv_op_vmsgtu_vi =3D 531, - rv_op_vmsgt_vx =3D 532, - rv_op_vmsgt_vi =3D 533, - rv_op_vminu_vv =3D 534, - rv_op_vminu_vx =3D 535, - rv_op_vmin_vv =3D 536, - rv_op_vmin_vx =3D 537, - rv_op_vmaxu_vv =3D 538, - rv_op_vmaxu_vx =3D 539, - rv_op_vmax_vv =3D 540, - rv_op_vmax_vx =3D 541, - rv_op_vmul_vv =3D 542, - rv_op_vmul_vx =3D 543, - rv_op_vmulh_vv =3D 544, - rv_op_vmulh_vx =3D 545, - rv_op_vmulhu_vv =3D 546, - rv_op_vmulhu_vx =3D 547, - rv_op_vmulhsu_vv =3D 548, - rv_op_vmulhsu_vx =3D 549, - rv_op_vdivu_vv =3D 550, - rv_op_vdivu_vx =3D 551, - rv_op_vdiv_vv =3D 552, - rv_op_vdiv_vx =3D 553, - rv_op_vremu_vv =3D 554, - rv_op_vremu_vx =3D 555, - rv_op_vrem_vv =3D 556, - rv_op_vrem_vx =3D 557, - rv_op_vwmulu_vv =3D 558, - rv_op_vwmulu_vx =3D 559, - rv_op_vwmulsu_vv =3D 560, - rv_op_vwmulsu_vx =3D 561, - rv_op_vwmul_vv =3D 562, - rv_op_vwmul_vx =3D 563, - rv_op_vmacc_vv =3D 564, - rv_op_vmacc_vx =3D 565, - rv_op_vnmsac_vv =3D 566, - rv_op_vnmsac_vx =3D 567, - rv_op_vmadd_vv =3D 568, - rv_op_vmadd_vx =3D 569, - rv_op_vnmsub_vv =3D 570, - rv_op_vnmsub_vx =3D 571, - rv_op_vwmaccu_vv =3D 572, - rv_op_vwmaccu_vx =3D 573, - rv_op_vwmacc_vv =3D 574, - rv_op_vwmacc_vx =3D 575, - rv_op_vwmaccsu_vv =3D 576, - rv_op_vwmaccsu_vx =3D 577, - rv_op_vwmaccus_vx =3D 578, - rv_op_vmv_v_v =3D 579, - rv_op_vmv_v_x =3D 580, - rv_op_vmv_v_i =3D 581, - rv_op_vmerge_vvm =3D 582, - rv_op_vmerge_vxm =3D 583, - rv_op_vmerge_vim =3D 584, - rv_op_vsaddu_vv =3D 585, - rv_op_vsaddu_vx =3D 586, - rv_op_vsaddu_vi =3D 587, - rv_op_vsadd_vv =3D 588, - rv_op_vsadd_vx =3D 589, - rv_op_vsadd_vi =3D 590, - rv_op_vssubu_vv =3D 591, - rv_op_vssubu_vx =3D 592, - rv_op_vssub_vv =3D 593, - rv_op_vssub_vx =3D 594, - rv_op_vaadd_vv =3D 595, - rv_op_vaadd_vx =3D 596, - rv_op_vaaddu_vv =3D 597, - rv_op_vaaddu_vx =3D 598, - rv_op_vasub_vv =3D 599, - rv_op_vasub_vx =3D 600, - rv_op_vasubu_vv =3D 601, - rv_op_vasubu_vx =3D 602, - rv_op_vsmul_vv =3D 603, - rv_op_vsmul_vx =3D 604, - rv_op_vssrl_vv =3D 605, - rv_op_vssrl_vx =3D 606, - rv_op_vssrl_vi =3D 607, - rv_op_vssra_vv =3D 608, - rv_op_vssra_vx =3D 609, - rv_op_vssra_vi =3D 610, - rv_op_vnclipu_wv =3D 611, - rv_op_vnclipu_wx =3D 612, - rv_op_vnclipu_wi =3D 613, - rv_op_vnclip_wv =3D 614, - rv_op_vnclip_wx =3D 615, - rv_op_vnclip_wi =3D 616, - rv_op_vfadd_vv =3D 617, - rv_op_vfadd_vf =3D 618, - rv_op_vfsub_vv =3D 619, - rv_op_vfsub_vf =3D 620, - rv_op_vfrsub_vf =3D 621, - rv_op_vfwadd_vv =3D 622, - rv_op_vfwadd_vf =3D 623, - rv_op_vfwadd_wv =3D 624, - rv_op_vfwadd_wf =3D 625, - rv_op_vfwsub_vv =3D 626, - rv_op_vfwsub_vf =3D 627, - rv_op_vfwsub_wv =3D 628, - rv_op_vfwsub_wf =3D 629, - rv_op_vfmul_vv =3D 630, - rv_op_vfmul_vf =3D 631, - rv_op_vfdiv_vv =3D 632, - rv_op_vfdiv_vf =3D 633, - rv_op_vfrdiv_vf =3D 634, - rv_op_vfwmul_vv =3D 635, - rv_op_vfwmul_vf =3D 636, - rv_op_vfmacc_vv =3D 637, - rv_op_vfmacc_vf =3D 638, - rv_op_vfnmacc_vv =3D 639, - rv_op_vfnmacc_vf =3D 640, - rv_op_vfmsac_vv =3D 641, - rv_op_vfmsac_vf =3D 642, - rv_op_vfnmsac_vv =3D 643, - rv_op_vfnmsac_vf =3D 644, - rv_op_vfmadd_vv =3D 645, - rv_op_vfmadd_vf =3D 646, - rv_op_vfnmadd_vv =3D 647, - rv_op_vfnmadd_vf =3D 648, - rv_op_vfmsub_vv =3D 649, - rv_op_vfmsub_vf =3D 650, - rv_op_vfnmsub_vv =3D 651, - rv_op_vfnmsub_vf =3D 652, - rv_op_vfwmacc_vv =3D 653, - rv_op_vfwmacc_vf =3D 654, - rv_op_vfwnmacc_vv =3D 655, - rv_op_vfwnmacc_vf =3D 656, - rv_op_vfwmsac_vv =3D 657, - rv_op_vfwmsac_vf =3D 658, - rv_op_vfwnmsac_vv =3D 659, - rv_op_vfwnmsac_vf =3D 660, - rv_op_vfsqrt_v =3D 661, - rv_op_vfrsqrt7_v =3D 662, - rv_op_vfrec7_v =3D 663, - rv_op_vfmin_vv =3D 664, - rv_op_vfmin_vf =3D 665, - rv_op_vfmax_vv =3D 666, - rv_op_vfmax_vf =3D 667, - rv_op_vfsgnj_vv =3D 668, - rv_op_vfsgnj_vf =3D 669, - rv_op_vfsgnjn_vv =3D 670, - rv_op_vfsgnjn_vf =3D 671, - rv_op_vfsgnjx_vv =3D 672, - rv_op_vfsgnjx_vf =3D 673, - rv_op_vfslide1up_vf =3D 674, - rv_op_vfslide1down_vf =3D 675, - rv_op_vmfeq_vv =3D 676, - rv_op_vmfeq_vf =3D 677, - rv_op_vmfne_vv =3D 678, - rv_op_vmfne_vf =3D 679, - rv_op_vmflt_vv =3D 680, - rv_op_vmflt_vf =3D 681, - rv_op_vmfle_vv =3D 682, - rv_op_vmfle_vf =3D 683, - rv_op_vmfgt_vf =3D 684, - rv_op_vmfge_vf =3D 685, - rv_op_vfclass_v =3D 686, - rv_op_vfmerge_vfm =3D 687, - rv_op_vfmv_v_f =3D 688, - rv_op_vfcvt_xu_f_v =3D 689, - rv_op_vfcvt_x_f_v =3D 690, - rv_op_vfcvt_f_xu_v =3D 691, - rv_op_vfcvt_f_x_v =3D 692, - rv_op_vfcvt_rtz_xu_f_v =3D 693, - rv_op_vfcvt_rtz_x_f_v =3D 694, - rv_op_vfwcvt_xu_f_v =3D 695, - rv_op_vfwcvt_x_f_v =3D 696, - rv_op_vfwcvt_f_xu_v =3D 697, - rv_op_vfwcvt_f_x_v =3D 698, - rv_op_vfwcvt_f_f_v =3D 699, - rv_op_vfwcvt_rtz_xu_f_v =3D 700, - rv_op_vfwcvt_rtz_x_f_v =3D 701, - rv_op_vfncvt_xu_f_w =3D 702, - rv_op_vfncvt_x_f_w =3D 703, - rv_op_vfncvt_f_xu_w =3D 704, - rv_op_vfncvt_f_x_w =3D 705, - rv_op_vfncvt_f_f_w =3D 706, - rv_op_vfncvt_rod_f_f_w =3D 707, - rv_op_vfncvt_rtz_xu_f_w =3D 708, - rv_op_vfncvt_rtz_x_f_w =3D 709, - rv_op_vredsum_vs =3D 710, - rv_op_vredand_vs =3D 711, - rv_op_vredor_vs =3D 712, - rv_op_vredxor_vs =3D 713, - rv_op_vredminu_vs =3D 714, - rv_op_vredmin_vs =3D 715, - rv_op_vredmaxu_vs =3D 716, - rv_op_vredmax_vs =3D 717, - rv_op_vwredsumu_vs =3D 718, - rv_op_vwredsum_vs =3D 719, - rv_op_vfredusum_vs =3D 720, - rv_op_vfredosum_vs =3D 721, - rv_op_vfredmin_vs =3D 722, - rv_op_vfredmax_vs =3D 723, - rv_op_vfwredusum_vs =3D 724, - rv_op_vfwredosum_vs =3D 725, - rv_op_vmand_mm =3D 726, - rv_op_vmnand_mm =3D 727, - rv_op_vmandn_mm =3D 728, - rv_op_vmxor_mm =3D 729, - rv_op_vmor_mm =3D 730, - rv_op_vmnor_mm =3D 731, - rv_op_vmorn_mm =3D 732, - rv_op_vmxnor_mm =3D 733, - rv_op_vcpop_m =3D 734, - rv_op_vfirst_m =3D 735, - rv_op_vmsbf_m =3D 736, - rv_op_vmsif_m =3D 737, - rv_op_vmsof_m =3D 738, - rv_op_viota_m =3D 739, - rv_op_vid_v =3D 740, - rv_op_vmv_x_s =3D 741, - rv_op_vmv_s_x =3D 742, - rv_op_vfmv_f_s =3D 743, - rv_op_vfmv_s_f =3D 744, - rv_op_vslideup_vx =3D 745, - rv_op_vslideup_vi =3D 746, - rv_op_vslide1up_vx =3D 747, - rv_op_vslidedown_vx =3D 748, - rv_op_vslidedown_vi =3D 749, - rv_op_vslide1down_vx =3D 750, - rv_op_vrgather_vv =3D 751, - rv_op_vrgatherei16_vv =3D 752, - rv_op_vrgather_vx =3D 753, - rv_op_vrgather_vi =3D 754, - rv_op_vcompress_vm =3D 755, - rv_op_vmv1r_v =3D 756, - rv_op_vmv2r_v =3D 757, - rv_op_vmv4r_v =3D 758, - rv_op_vmv8r_v =3D 759, - rv_op_vzext_vf2 =3D 760, - rv_op_vzext_vf4 =3D 761, - rv_op_vzext_vf8 =3D 762, - rv_op_vsext_vf2 =3D 763, - rv_op_vsext_vf4 =3D 764, - rv_op_vsext_vf8 =3D 765, - rv_op_vsetvli =3D 766, - rv_op_vsetivli =3D 767, - rv_op_vsetvl =3D 768, - rv_op_c_zext_b =3D 769, - rv_op_c_sext_b =3D 770, - rv_op_c_zext_h =3D 771, - rv_op_c_sext_h =3D 772, - rv_op_c_zext_w =3D 773, - rv_op_c_not =3D 774, - rv_op_c_mul =3D 775, - rv_op_c_lbu =3D 776, - rv_op_c_lhu =3D 777, - rv_op_c_lh =3D 778, - rv_op_c_sb =3D 779, - rv_op_c_sh =3D 780, - rv_op_cm_push =3D 781, - rv_op_cm_pop =3D 782, - rv_op_cm_popret =3D 783, - rv_op_cm_popretz =3D 784, - rv_op_cm_mva01s =3D 785, - rv_op_cm_mvsa01 =3D 786, - rv_op_cm_jt =3D 787, - rv_op_cm_jalt =3D 788, - rv_op_czero_eqz =3D 789, - rv_op_czero_nez =3D 790, - rv_op_fcvt_bf16_s =3D 791, - rv_op_fcvt_s_bf16 =3D 792, - rv_op_vfncvtbf16_f_f_w =3D 793, - rv_op_vfwcvtbf16_f_f_v =3D 794, - rv_op_vfwmaccbf16_vv =3D 795, - rv_op_vfwmaccbf16_vf =3D 796, - rv_op_flh =3D 797, - rv_op_fsh =3D 798, - rv_op_fmv_h_x =3D 799, - rv_op_fmv_x_h =3D 800, - rv_op_fli_s =3D 801, - rv_op_fli_d =3D 802, - rv_op_fli_q =3D 803, - rv_op_fli_h =3D 804, - rv_op_fminm_s =3D 805, - rv_op_fmaxm_s =3D 806, - rv_op_fminm_d =3D 807, - rv_op_fmaxm_d =3D 808, - rv_op_fminm_q =3D 809, - rv_op_fmaxm_q =3D 810, - rv_op_fminm_h =3D 811, - rv_op_fmaxm_h =3D 812, - rv_op_fround_s =3D 813, - rv_op_froundnx_s =3D 814, - rv_op_fround_d =3D 815, - rv_op_froundnx_d =3D 816, - rv_op_fround_q =3D 817, - rv_op_froundnx_q =3D 818, - rv_op_fround_h =3D 819, - rv_op_froundnx_h =3D 820, - rv_op_fcvtmod_w_d =3D 821, - rv_op_fmvh_x_d =3D 822, - rv_op_fmvp_d_x =3D 823, - rv_op_fmvh_x_q =3D 824, - rv_op_fmvp_q_x =3D 825, - rv_op_fleq_s =3D 826, - rv_op_fltq_s =3D 827, - rv_op_fleq_d =3D 828, - rv_op_fltq_d =3D 829, - rv_op_fleq_q =3D 830, - rv_op_fltq_q =3D 831, - rv_op_fleq_h =3D 832, - rv_op_fltq_h =3D 833, - rv_op_vaesdf_vv =3D 834, - rv_op_vaesdf_vs =3D 835, - rv_op_vaesdm_vv =3D 836, - rv_op_vaesdm_vs =3D 837, - rv_op_vaesef_vv =3D 838, - rv_op_vaesef_vs =3D 839, - rv_op_vaesem_vv =3D 840, - rv_op_vaesem_vs =3D 841, - rv_op_vaeskf1_vi =3D 842, - rv_op_vaeskf2_vi =3D 843, - rv_op_vaesz_vs =3D 844, - rv_op_vandn_vv =3D 845, - rv_op_vandn_vx =3D 846, - rv_op_vbrev_v =3D 847, - rv_op_vbrev8_v =3D 848, - rv_op_vclmul_vv =3D 849, - rv_op_vclmul_vx =3D 850, - rv_op_vclmulh_vv =3D 851, - rv_op_vclmulh_vx =3D 852, - rv_op_vclz_v =3D 853, - rv_op_vcpop_v =3D 854, - rv_op_vctz_v =3D 855, - rv_op_vghsh_vv =3D 856, - rv_op_vgmul_vv =3D 857, - rv_op_vrev8_v =3D 858, - rv_op_vrol_vv =3D 859, - rv_op_vrol_vx =3D 860, - rv_op_vror_vv =3D 861, - rv_op_vror_vx =3D 862, - rv_op_vror_vi =3D 863, - rv_op_vsha2ch_vv =3D 864, - rv_op_vsha2cl_vv =3D 865, - rv_op_vsha2ms_vv =3D 866, - rv_op_vsm3c_vi =3D 867, - rv_op_vsm3me_vv =3D 868, - rv_op_vsm4k_vi =3D 869, - rv_op_vsm4r_vv =3D 870, - rv_op_vsm4r_vs =3D 871, - rv_op_vwsll_vv =3D 872, - rv_op_vwsll_vx =3D 873, - rv_op_vwsll_vi =3D 874, - rv_op_amocas_w =3D 875, - rv_op_amocas_d =3D 876, - rv_op_amocas_q =3D 877, - rv_mop_r_0 =3D 878, - rv_mop_r_1 =3D 879, - rv_mop_r_2 =3D 880, - rv_mop_r_3 =3D 881, - rv_mop_r_4 =3D 882, - rv_mop_r_5 =3D 883, - rv_mop_r_6 =3D 884, - rv_mop_r_7 =3D 885, - rv_mop_r_8 =3D 886, - rv_mop_r_9 =3D 887, - rv_mop_r_10 =3D 888, - rv_mop_r_11 =3D 889, - rv_mop_r_12 =3D 890, - rv_mop_r_13 =3D 891, - rv_mop_r_14 =3D 892, - rv_mop_r_15 =3D 893, - rv_mop_r_16 =3D 894, - rv_mop_r_17 =3D 895, - rv_mop_r_18 =3D 896, - rv_mop_r_19 =3D 897, - rv_mop_r_20 =3D 898, - rv_mop_r_21 =3D 899, - rv_mop_r_22 =3D 900, - rv_mop_r_23 =3D 901, - rv_mop_r_24 =3D 902, - rv_mop_r_25 =3D 903, - rv_mop_r_26 =3D 904, - rv_mop_r_27 =3D 905, - rv_mop_r_28 =3D 906, - rv_mop_r_29 =3D 907, - rv_mop_r_30 =3D 908, - rv_mop_r_31 =3D 909, - rv_mop_rr_0 =3D 910, - rv_mop_rr_1 =3D 911, - rv_mop_rr_2 =3D 912, - rv_mop_rr_3 =3D 913, - rv_mop_rr_4 =3D 914, - rv_mop_rr_5 =3D 915, - rv_mop_rr_6 =3D 916, - rv_mop_rr_7 =3D 917, - rv_c_mop_1 =3D 918, - rv_c_mop_3 =3D 919, - rv_c_mop_5 =3D 920, - rv_c_mop_7 =3D 921, - rv_c_mop_9 =3D 922, - rv_c_mop_11 =3D 923, - rv_c_mop_13 =3D 924, - rv_c_mop_15 =3D 925, - rv_op_amoswap_b =3D 926, - rv_op_amoadd_b =3D 927, - rv_op_amoxor_b =3D 928, - rv_op_amoor_b =3D 929, - rv_op_amoand_b =3D 930, - rv_op_amomin_b =3D 931, - rv_op_amomax_b =3D 932, - rv_op_amominu_b =3D 933, - rv_op_amomaxu_b =3D 934, - rv_op_amoswap_h =3D 935, - rv_op_amoadd_h =3D 936, - rv_op_amoxor_h =3D 937, - rv_op_amoor_h =3D 938, - rv_op_amoand_h =3D 939, - rv_op_amomin_h =3D 940, - rv_op_amomax_h =3D 941, - rv_op_amominu_h =3D 942, - rv_op_amomaxu_h =3D 943, - rv_op_amocas_b =3D 944, - rv_op_amocas_h =3D 945, - rv_op_wrs_sto =3D 946, - rv_op_wrs_nto =3D 947, - rv_op_lpad =3D 948, - rv_op_sspush =3D 949, - rv_op_sspopchk =3D 950, - rv_op_ssrdp =3D 951, - rv_op_ssamoswap_w =3D 952, - rv_op_ssamoswap_d =3D 953, - rv_op_c_sspush =3D 954, - rv_op_c_sspopchk =3D 955, - rv_op_cbo_inval =3D 956, - rv_op_cbo_clean =3D 957, - rv_op_cbo_flush =3D 958, - rv_op_cbo_zero =3D 959, - rv_op_mnret =3D 960, +#define OP(N, ...) rv_op_##N, +#include "riscv-op.c.inc" +#undef OP } rv_op; =20 /* register names */ @@ -1601,967 +646,9 @@ static uint32_t operand_lpl(rv_inst inst) /* instruction metadata */ =20 static const rv_opcode_data rvi_opcode_data[] =3D { - { "illegal", rv_codec_none, rv_fmt_none }, - { "lui", rv_codec_u, rv_fmt_rd_uimm }, - { "auipc", rv_codec_u, rv_fmt_rd_uoffset }, - { "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal }, - { "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr }, - { "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq }, - { "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne }, - { "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt }, - { "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge }, - { "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset }, - { "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset }, - { "lb", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "lh", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "lw", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "lbu", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "lhu", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "sb", rv_codec_s, rv_fmt_rs2_offset_rs1 }, - { "sh", rv_codec_s, rv_fmt_rs2_offset_rs1 }, - { "sw", rv_codec_s, rv_fmt_rs2_offset_rs1 }, - { "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi }, - { "slti", rv_codec_i, rv_fmt_rd_rs1_imm }, - { "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu }, - { "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori }, - { "ori", rv_codec_i, rv_fmt_rd_rs1_imm }, - { "andi", rv_codec_i, rv_fmt_rd_rs1_imm }, - { "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub }, - { "sll", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt }, - { "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu }, - { "xor", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "srl", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sra", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "or", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "and", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "fence", rv_codec_r_f, rv_fmt_pred_succ }, - { "fence.i", rv_codec_none, rv_fmt_none }, - { "lwu", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "ld", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "sd", rv_codec_s, rv_fmt_rs2_offset_rs1 }, - { "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw }, - { "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, - { "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, - { "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, - { "addw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw }, - { "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "ldu", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "lq", rv_codec_i, rv_fmt_rd_offset_rs1 }, - { "sq", rv_codec_s, rv_fmt_rs2_offset_rs1 }, - { "addid", rv_codec_i, rv_fmt_rd_rs1_imm }, - { "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, - { "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, - { "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, - { "addd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "subd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "slld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "srld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "srad", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mul", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mulh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mulhsu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mulhu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "div", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "divu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "rem", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "remu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mulw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "divw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "remw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "muld", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "divd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "divud", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "remd", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "remud", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, - { "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, - { "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1 }, - { "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "ecall", rv_codec_none, rv_fmt_none }, - { "ebreak", rv_codec_none, rv_fmt_none }, - { "uret", rv_codec_none, rv_fmt_none }, - { "sret", rv_codec_none, rv_fmt_none }, - { "hret", rv_codec_none, rv_fmt_none }, - { "mret", rv_codec_none, rv_fmt_none }, - { "dret", rv_codec_none, rv_fmt_none }, - { "sfence.vm", rv_codec_r, rv_fmt_rs1 }, - { "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2 }, - { "wfi", rv_codec_none, rv_fmt_none }, - { "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, - { "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, - { "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1 }, - { "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, - { "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, - { "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm }, - { "flw", rv_codec_i, rv_fmt_frd_offset_rs1 }, - { "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1 }, - { "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s }, - { "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s }, - { "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s }, - { "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1 }, - { "fclass.s", rv_codec_r, rv_fmt_rd_frs1 }, - { "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fld", rv_codec_i, rv_fmt_frd_offset_rs1 }, - { "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1 }, - { "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d }, - { "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d }, - { "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d }, - { "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fclass.d", rv_codec_r, rv_fmt_rd_frs1 }, - { "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1 }, - { "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "flq", rv_codec_i, rv_fmt_frd_offset_rs1 }, - { "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1 }, - { "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3 }, - { "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2 }, - { "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q }, - { "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q }, - { "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q }, - { "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fclass.q", rv_codec_r, rv_fmt_rd_frs1 }, - { "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1 }, - { "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1 }, - { "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(rv_op_addi) }, - { "c.fld", rv_codec_cl_ld, NULL, DECOMP(rv_op_fld) }, - { "c.lw", rv_codec_cl_lw, NULL, DECOMP(rv_op_lw) }, - { "c.flw", rv_codec_cl_lw, NULL, DECOMP(rv_op_flw) }, - { "c.fsd", rv_codec_cs_sd, NULL, DECOMP(rv_op_fsd) }, - { "c.sw", rv_codec_cs_sw, NULL, DECOMP(rv_op_sw) }, - { "c.fsw", rv_codec_cs_sw, NULL, DECOMP(rv_op_fsw) }, - { }, - { "c.addi", rv_codec_ci, NULL, DECOMP(rv_op_addi) }, - { "c.jal", rv_codec_cj_jal, NULL, DECOMP(rv_op_jal) }, - { "c.li", rv_codec_ci_li, NULL, DECOMP(rv_op_addi) }, - { "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(rv_op_addi) }, - { "c.lui", rv_codec_ci_lui, NULL, DECOMP(rv_op_lui) }, - { "c.srli", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srli) }, - { "c.srai", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srai) }, - { "c.andi", rv_codec_cb_imm, NULL, DECOMP(rv_op_andi) }, - { "c.sub", rv_codec_cs, NULL, DECOMP(rv_op_sub) }, - { "c.xor", rv_codec_cs, NULL, DECOMP(rv_op_xor) }, - { "c.or", rv_codec_cs, NULL, DECOMP(rv_op_or) }, - { "c.and", rv_codec_cs, NULL, DECOMP(rv_op_and) }, - { "c.subw", rv_codec_cs, NULL, DECOMP(rv_op_subw) }, - { "c.addw", rv_codec_cs, NULL, DECOMP(rv_op_addw) }, - { "c.j", rv_codec_cj, NULL, DECOMP(rv_op_j) }, - { "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beqz) }, - { "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bnez) }, - { "c.slli", rv_codec_ci_sh6, NULL, DECOMP(rv_op_slli) }, - { "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_fld) }, - { "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_lw) }, - { "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_flw) }, - { "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jr) }, - { "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_mv) }, - { "c.ebreak", rv_codec_ci_none, NULL, DECOMP(rv_op_ebreak) }, - { "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(rv_op_jalr) }, - { "c.add", rv_codec_cr, NULL, DECOMP(rv_op_add) }, - { "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_fsd) }, - { "c.swsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_sw) }, - { "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_fsw) }, - { "c.ld", rv_codec_cl_ld, NULL, DECOMP(rv_op_ld) }, - { "c.sd", rv_codec_cs_sd, NULL, DECOMP(rv_op_sd) }, - { "c.addiw", rv_codec_ci, NULL, DECOMP(rv_op_addiw) }, - { "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_ld) }, - { "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_sd) }, - { "c.lq", rv_codec_cl_lq, NULL, DECOMP(rv_op_lq) }, - { "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq) }, - { "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq) }, - { "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq) }, - { "nop", rv_codec_illegal, rv_fmt_none }, - { "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv }, - { "not", rv_codec_illegal, rv_fmt_rd_rs1 }, - { "neg", rv_codec_illegal, rv_fmt_rd_rs2 }, - { "negw", rv_codec_illegal, rv_fmt_rd_rs2 }, - { "sext.w", rv_codec_illegal, rv_fmt_rd_rs1 }, - { "seqz", rv_codec_illegal, rv_fmt_rd_rs1 }, - { "snez", rv_codec_illegal, rv_fmt_rd_rs2 }, - { "sltz", rv_codec_illegal, rv_fmt_rd_rs1 }, - { "sgtz", rv_codec_illegal, rv_fmt_rd_rs2 }, - { "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1 }, - { "beqz", rv_codec_illegal, rv_fmt_rs1_offset }, - { "bnez", rv_codec_illegal, rv_fmt_rs1_offset }, - { "blez", rv_codec_illegal, rv_fmt_rs2_offset }, - { "bgez", rv_codec_illegal, rv_fmt_rs1_offset }, - { "bltz", rv_codec_illegal, rv_fmt_rs1_offset }, - { "bgtz", rv_codec_illegal, rv_fmt_rs2_offset }, - { "jal", rv_codec_illegal, rv_fmt_offset }, /* rv_op_jal_ra */ - { "jalr", rv_codec_illegal, rv_fmt_rs1 }, /* rv_op_jalr_ra */ - { }, - { }, - { "j", rv_codec_illegal, rv_fmt_offset }, - { "ret", rv_codec_illegal, rv_fmt_none }, - { "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr }, - { "rdcycle", rv_codec_i_csr, rv_fmt_rd }, - { "rdtime", rv_codec_i_csr, rv_fmt_rd }, - { "rdinstret", rv_codec_i_csr, rv_fmt_rd }, - { "rdcycleh", rv_codec_i_csr, rv_fmt_rd }, - { "rdtimeh", rv_codec_i_csr, rv_fmt_rd }, - { "rdinstreth", rv_codec_i_csr, rv_fmt_rd }, - { "frcsr", rv_codec_i_csr, rv_fmt_rd }, - { "frrm", rv_codec_i_csr, rv_fmt_rd }, - { "frflags", rv_codec_i_csr, rv_fmt_rd }, - { "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1 }, - { "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1 }, - { "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1 }, - { "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm }, - { "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm }, - { "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm }, - { "clz", rv_codec_r, rv_fmt_rd_rs1 }, - { "ctz", rv_codec_r, rv_fmt_rd_rs1 }, - { "cpop", rv_codec_r, rv_fmt_rd_rs1 }, - { "sext.h", rv_codec_r, rv_fmt_rd_rs1 }, - { "sext.b", rv_codec_r, rv_fmt_rd_rs1 }, - { "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "orn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "andn", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "rol", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "ror", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "min", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "minu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "max", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "clzw", rv_codec_r, rv_fmt_rd_rs1 }, - { "ctzw", rv_codec_r, rv_fmt_rd_rs1 }, - { "cpopw", rv_codec_r, rv_fmt_rd_rs1 }, - { "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm }, - { "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "rev8", rv_codec_r, rv_fmt_rd_rs1 }, - { "zext.h", rv_codec_r, rv_fmt_rd_rs1 }, - { "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm }, - { "orc.b", rv_codec_r, rv_fmt_rd_rs1 }, - { "bset", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "binv", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "bext", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum }, - { "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "aes64im", rv_codec_r, rv_fmt_rd_rs1 }, - { "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha256sig0", rv_codec_r, rv_fmt_rd_rs1 }, - { "sha256sig1", rv_codec_r, rv_fmt_rd_rs1 }, - { "sha256sum0", rv_codec_r, rv_fmt_rd_rs1 }, - { "sha256sum1", rv_codec_r, rv_fmt_rd_rs1 }, - { "sha512sig0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sig0h", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sha512sig1h", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "sm3p0", rv_codec_r, rv_fmt_rd_rs1 }, - { "sm3p1", rv_codec_r, rv_fmt_rd_rs1 }, - { "sm4ed", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "sm4ks", rv_codec_k_bs, rv_fmt_rs1_rs2_bs }, - { "brev8", rv_codec_r, rv_fmt_rd_rs1 }, - { "pack", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "packh", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "packw", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "unzip", rv_codec_r, rv_fmt_rd_rs1 }, - { "zip", rv_codec_r, rv_fmt_rd_rs1 }, - { "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "xperm8", rv_codec_r, rv_fmt_rd_rs1 }, - { "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm }, - { "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm }, - { "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm }, - { "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, - { "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, - { "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, - { "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, - { "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, - { "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, - { "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, - { "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, - { "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, - { "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, - { "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm }, - { "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1 }, - { "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1 }, - { "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm }, - { "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl }, - { "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl }, - { "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl }, - { "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm }, - { "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm }, - { "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl }, - { "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1 }, - { "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm }, - { "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm }, - { "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vid.v", rv_codec_v_r, rv_fmt_vd_vm }, - { "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2 }, - { "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1 }, - { "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2 }, - { "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1 }, - { "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli }, - { "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli }, - { "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.not", rv_codec_zcb_ext, rv_fmt_rd }, - { "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2 }, - { "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst }, - { "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, - { "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, - { "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst }, - { "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst }, - { "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist }, - { "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, - { "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, - { "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist }, - { "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2 }, - { "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2 }, - { "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index }, - { "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index }, - { "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm }, - { "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm }, - { "flh", rv_codec_i, rv_fmt_frd_offset_rs1 }, - { "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1 }, - { "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1 }, - { "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1 }, - { "fli.s", rv_codec_fli, rv_fmt_fli }, - { "fli.d", rv_codec_fli, rv_fmt_fli }, - { "fli.q", rv_codec_fli, rv_fmt_fli }, - { "fli.h", rv_codec_fli, rv_fmt_fli }, - { "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2 }, - { "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1 }, - { "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1 }, - { "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1 }, - { "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2 }, - { "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1 }, - { "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2 }, - { "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2 }, - { "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, - { "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, - { "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vbrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vclmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vclmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vclmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vclmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vclz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vcpop.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vctz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vghsh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vgmul.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm }, - { "vrol.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vrol.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vror.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vror.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm }, - { "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, - { "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1 }, - { "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm }, - { "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2 }, - { "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm }, - { "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm }, - { "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm }, - { "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "mop.r.0", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.1", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.2", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.3", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.4", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.5", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.6", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.7", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.8", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.9", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.10", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.11", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.12", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.13", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.14", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.15", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.16", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.17", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.18", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.19", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.20", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.21", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.22", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.23", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.24", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.25", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.26", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.27", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.28", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.29", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.30", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.r.31", rv_codec_r, rv_fmt_rd_rs1 }, - { "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.3", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.4", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.5", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.6", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "mop.rr.7", rv_codec_r, rv_fmt_rd_rs1_rs2 }, - { "c.mop.1", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.3", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.5", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.7", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.9", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.11", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.13", rv_codec_ci_none, rv_fmt_none }, - { "c.mop.15", rv_codec_ci_none, rv_fmt_none }, - { "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "wrs.sto", rv_codec_none, rv_fmt_none }, - { "wrs.nto", rv_codec_none, rv_fmt_none }, - { "lpad", rv_codec_lp, rv_fmt_imm }, - { "sspush", rv_codec_r, rv_fmt_rs2 }, - { "sspopchk", rv_codec_r, rv_fmt_rs1 }, - { "ssrdp", rv_codec_r, rv_fmt_rd }, - { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1 }, - { "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspush) }, - { "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspopchk) }, - { "cbo.inval", rv_codec_r, rv_fmt_rs1 }, - { "cbo.clean", rv_codec_r, rv_fmt_rs1 }, - { "cbo.flush", rv_codec_r, rv_fmt_rs1 }, - { "cbo.zero", rv_codec_r, rv_fmt_rs1 }, - { "mnret", rv_codec_none, rv_fmt_none }, +#define OP(N, ...) { __VA_ARGS__ }, +#include "riscv-op.c.inc" +#undef OP }; =20 /* CSR names */ @@ -2928,7 +1015,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) (((inst >> 11) & 0b11) =3D=3D 0b0)) { unsigned int cmop_code =3D 0; cmop_code =3D ((inst >> 8) & 0b111); - op =3D rv_c_mop_1 + cmop_code; + op =3D rv_op_c_mop_1 + cmop_code; if (dec->cfg->ext_zicfiss) { op =3D (cmop_code =3D=3D 0) ? rv_op_c_sspush : op; op =3D (cmop_code =3D=3D 2) ? rv_op_c_sspopchk : o= p; @@ -4459,7 +2546,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) 2, 2, extract32(inst, 26,= 2)), 4, 1, extract32(inst, 30, 1)); - op =3D rv_mop_r_0 + imm_mop5; + op =3D rv_op_mop_r_0 + imm_mop5; /* if zicfiss enabled and mop5 is shadow stack */ if (dec->cfg->ext_zicfiss && ((imm_mop5 & 0b11100) =3D=3D 0b11100)) { @@ -4478,7 +2565,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) =3D=3D 0b1000001) { imm_mop3 =3D deposit32(extract32(inst, 26, 2), 2, 1, extract32(inst, 30, 1)); - op =3D rv_mop_rr_0 + imm_mop3; + op =3D rv_op_mop_rr_0 + imm_mop3; /* if zicfiss enabled and mop3 is shadow stack */ if (dec->cfg->ext_zicfiss && ((imm_mop3 & 0b111) =3D=3D 0b111)) { diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc new file mode 100644 index 0000000000..3fe934688e --- /dev/null +++ b/disas/riscv-op.c.inc @@ -0,0 +1,958 @@ +OP(illegal, "illegal", rv_codec_none, rv_fmt_none) +OP(lui, "lui", rv_codec_u, rv_fmt_rd_uimm) +OP(auipc, "auipc", rv_codec_u, rv_fmt_rd_uoffset) +OP(jal, "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal) +OP(jalr, "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr) +OP(beq, "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq) +OP(bne, "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne) +OP(blt, "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt) +OP(bge, "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge) +OP(bltu, "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset) +OP(bgeu, "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset) +OP(lb, "lb", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lh, "lh", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lw, "lw", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lbu, "lbu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lhu, "lhu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(sb, "sb", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(sh, "sh", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(sw, "sw", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(addi, "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi) +OP(slti, "slti", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(sltiu, "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu) +OP(xori, "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori) +OP(ori, "ori", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(andi, "andi", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(slli, "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(srli, "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(srai, "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(add, "add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sub, "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub) +OP(sll, "sll", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(slt, "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt) +OP(sltu, "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu) +OP(xor, "xor", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srl, "srl", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sra, "sra", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(or, "or", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(and, "and", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(fence, "fence", rv_codec_r_f, rv_fmt_pred_succ) +OP(fence_i, "fence.i", rv_codec_none, rv_fmt_none) +OP(lwu, "lwu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(ld, "ld", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(sd, "sd", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(addiw, "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw) +OP(slliw, "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(srliw, "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(sraiw, "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(addw, "addw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(subw, "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw) +OP(sllw, "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srlw, "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sraw, "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ldu, "ldu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lq, "lq", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(sq, "sq", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(addid, "addid", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(sllid, "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(srlid, "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(sraid, "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(addd, "addd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(subd, "subd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(slld, "slld", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srld, "srld", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srad, "srad", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mul, "mul", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mulh, "mulh", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mulhsu, "mulhsu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mulhu, "mulhu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(div, "div", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divu, "divu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rem, "rem", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remu, "remu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mulw, "mulw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divw, "divw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divuw, "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remw, "remw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remuw, "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(muld, "muld", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divd, "divd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divud, "divud", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remd, "remd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remud, "remud", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(lr_w, "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(sc_w, "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_w, "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_w, "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_w, "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_w, "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_w, "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_w, "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_w, "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_w, "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_w, "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(lr_d, "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(sc_d, "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_d, "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_d, "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_d, "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_d, "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_d, "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_d, "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_d, "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_d, "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_d, "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(lr_q, "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(sc_q, "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_q, "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_q, "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_q, "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_q, "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_q, "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_q, "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_q, "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_q, "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_q, "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(ecall, "ecall", rv_codec_none, rv_fmt_none) +OP(ebreak, "ebreak", rv_codec_none, rv_fmt_none) +OP(uret, "uret", rv_codec_none, rv_fmt_none) +OP(sret, "sret", rv_codec_none, rv_fmt_none) +OP(hret, "hret", rv_codec_none, rv_fmt_none) +OP(mret, "mret", rv_codec_none, rv_fmt_none) +OP(dret, "dret", rv_codec_none, rv_fmt_none) +OP(sfence_vm, "sfence.vm", rv_codec_r, rv_fmt_rs1) +OP(sfence_vma, "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2) +OP(wfi, "wfi", rv_codec_none, rv_fmt_none) +OP(csrrw, "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrs, "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrc, "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrwi, "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(csrrsi, "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(csrrci, "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(flw, "flw", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fsw, "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fmadd_s, "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmsub_s, "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_s, "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmadd_s, "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fadd_s, "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsub_s, "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmul_s, "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fdiv_s, "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsgnj_s, "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s) +OP(fsgnjn_s, "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s) +OP(fsgnjx_s, "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s) +OP(fmin_s, "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmax_s, "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fsqrt_s, "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fle_s, "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flt_s, "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(feq_s, "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fcvt_w_s, "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_s, "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_s_w, "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_wu, "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fmv_x_s, "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1) +OP(fclass_s, "fclass.s", rv_codec_r, rv_fmt_rd_frs1) +OP(fmv_s_x, "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fcvt_l_s, "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_s, "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_s_l, "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_lu, "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fld, "fld", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fsd, "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fmadd_d, "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmsub_d, "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_d, "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmadd_d, "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fadd_d, "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsub_d, "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmul_d, "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fdiv_d, "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsgnj_d, "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d) +OP(fsgnjn_d, "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d) +OP(fsgnjx_d, "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d) +OP(fmin_d, "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmax_d, "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fcvt_s_d, "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_d_s, "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fsqrt_d, "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fle_d, "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flt_d, "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(feq_d, "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fcvt_w_d, "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_d, "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_d_w, "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_d_wu, "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fclass_d, "fclass.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fcvt_l_d, "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_d, "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fmv_x_d, "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fcvt_d_l, "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_d_lu, "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fmv_d_x, "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1) +OP(flq, "flq", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fsq, "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fmadd_q, "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmsub_q, "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_q, "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmadd_q, "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fadd_q, "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsub_q, "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmul_q, "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fdiv_q, "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsgnj_q, "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q) +OP(fsgnjn_q, "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q) +OP(fsgnjx_q, "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q) +OP(fmin_q, "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmax_q, "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fcvt_s_q, "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_q_s, "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_d_q, "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_q_d, "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fsqrt_q, "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fle_q, "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flt_q, "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(feq_q, "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fcvt_w_q, "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_q, "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_q_w, "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_q_wu, "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fclass_q, "fclass.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fcvt_l_q, "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_q, "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_q_l, "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_q_lu, "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fmv_x_q, "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fmv_q_x, "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1) +OP(c_addi4spn, "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(rv_op_addi)) +OP(c_fld, "c.fld", rv_codec_cl_ld, NULL, DECOMP(rv_op_fld)) +OP(c_lw, "c.lw", rv_codec_cl_lw, NULL, DECOMP(rv_op_lw)) +OP(c_flw, "c.flw", rv_codec_cl_lw, NULL, DECOMP(rv_op_flw)) +OP(c_fsd, "c.fsd", rv_codec_cs_sd, NULL, DECOMP(rv_op_fsd)) +OP(c_sw, "c.sw", rv_codec_cs_sw, NULL, DECOMP(rv_op_sw)) +OP(c_fsw, "c.fsw", rv_codec_cs_sw, NULL, DECOMP(rv_op_fsw)) +OP(c_addi, "c.addi", rv_codec_ci, NULL, DECOMP(rv_op_addi)) +OP(c_jal, "c.jal", rv_codec_cj_jal, NULL, DECOMP(rv_op_jal)) +OP(c_li, "c.li", rv_codec_ci_li, NULL, DECOMP(rv_op_addi)) +OP(c_addi16sp, "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(rv_op_addi)) +OP(c_lui, "c.lui", rv_codec_ci_lui, NULL, DECOMP(rv_op_lui)) +OP(c_srli, "c.srli", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srli)) +OP(c_srai, "c.srai", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srai)) +OP(c_andi, "c.andi", rv_codec_cb_imm, NULL, DECOMP(rv_op_andi)) +OP(c_sub, "c.sub", rv_codec_cs, NULL, DECOMP(rv_op_sub)) +OP(c_xor, "c.xor", rv_codec_cs, NULL, DECOMP(rv_op_xor)) +OP(c_or, "c.or", rv_codec_cs, NULL, DECOMP(rv_op_or)) +OP(c_and, "c.and", rv_codec_cs, NULL, DECOMP(rv_op_and)) +OP(c_subw, "c.subw", rv_codec_cs, NULL, DECOMP(rv_op_subw)) +OP(c_addw, "c.addw", rv_codec_cs, NULL, DECOMP(rv_op_addw)) +OP(c_j, "c.j", rv_codec_cj, NULL, DECOMP(rv_op_j)) +OP(c_beqz, "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beqz)) +OP(c_bnez, "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bnez)) +OP(c_slli, "c.slli", rv_codec_ci_sh6, NULL, DECOMP(rv_op_slli)) +OP(c_fldsp, "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_fld)) +OP(c_lwsp, "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_lw)) +OP(c_flwsp, "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_flw)) +OP(c_jr, "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jr)) +OP(c_mv, "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_mv)) +OP(c_ebreak, "c.ebreak", rv_codec_ci_none, NULL, DECOMP(rv_op_ebreak)) +OP(c_jalr, "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(rv_op_jalr)) +OP(c_add, "c.add", rv_codec_cr, NULL, DECOMP(rv_op_add)) +OP(c_fsdsp, "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_fsd)) +OP(c_swsp, "c.swsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_sw)) +OP(c_fswsp, "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_fsw)) +OP(c_ld, "c.ld", rv_codec_cl_ld, NULL, DECOMP(rv_op_ld)) +OP(c_sd, "c.sd", rv_codec_cs_sd, NULL, DECOMP(rv_op_sd)) +OP(c_addiw, "c.addiw", rv_codec_ci, NULL, DECOMP(rv_op_addiw)) +OP(c_ldsp, "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_ld)) +OP(c_sdsp, "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_sd)) +OP(c_lq, "c.lq", rv_codec_cl_lq, NULL, DECOMP(rv_op_lq)) +OP(c_sq, "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq)) +OP(c_lqsp, "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq)) +OP(c_sqsp, "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq)) +OP(nop, "nop", rv_codec_illegal, rv_fmt_none) +OP(mv, "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv) +OP(not, "not", rv_codec_illegal, rv_fmt_rd_rs1) +OP(neg, "neg", rv_codec_illegal, rv_fmt_rd_rs2) +OP(negw, "negw", rv_codec_illegal, rv_fmt_rd_rs2) +OP(sext_w, "sext.w", rv_codec_illegal, rv_fmt_rd_rs1) +OP(seqz, "seqz", rv_codec_illegal, rv_fmt_rd_rs1) +OP(snez, "snez", rv_codec_illegal, rv_fmt_rd_rs2) +OP(sltz, "sltz", rv_codec_illegal, rv_fmt_rd_rs1) +OP(sgtz, "sgtz", rv_codec_illegal, rv_fmt_rd_rs2) +OP(fmv_s, "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fabs_s, "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fneg_s, "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fmv_d, "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fabs_d, "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fneg_d, "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fmv_q, "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fabs_q, "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fneg_q, "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(beqz, "beqz", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bnez, "bnez", rv_codec_illegal, rv_fmt_rs1_offset) +OP(blez, "blez", rv_codec_illegal, rv_fmt_rs2_offset) +OP(bgez, "bgez", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bltz, "bltz", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bgtz, "bgtz", rv_codec_illegal, rv_fmt_rs2_offset) +OP(jal_ra, "jal", rv_codec_illegal, rv_fmt_offset) +OP(jalr_ra, "jalr", rv_codec_illegal, rv_fmt_rs1) +OP(j, "j", rv_codec_illegal, rv_fmt_offset) +OP(ret, "ret", rv_codec_illegal, rv_fmt_none) +OP(jr, "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr) +OP(rdcycle, "rdcycle", rv_codec_i_csr, rv_fmt_rd) +OP(rdtime, "rdtime", rv_codec_i_csr, rv_fmt_rd) +OP(rdinstret, "rdinstret", rv_codec_i_csr, rv_fmt_rd) +OP(rdcycleh, "rdcycleh", rv_codec_i_csr, rv_fmt_rd) +OP(rdtimeh, "rdtimeh", rv_codec_i_csr, rv_fmt_rd) +OP(rdinstreth, "rdinstreth", rv_codec_i_csr, rv_fmt_rd) +OP(frcsr, "frcsr", rv_codec_i_csr, rv_fmt_rd) +OP(frrm, "frrm", rv_codec_i_csr, rv_fmt_rd) +OP(frflags, "frflags", rv_codec_i_csr, rv_fmt_rd) +OP(fscsr, "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsrm, "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsflags, "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsrmi, "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm) +OP(fsflagsi, "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm) +OP(bseti, "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(bclri, "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(binvi, "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(bexti, "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(rori, "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(clz, "clz", rv_codec_r, rv_fmt_rd_rs1) +OP(ctz, "ctz", rv_codec_r, rv_fmt_rd_rs1) +OP(cpop, "cpop", rv_codec_r, rv_fmt_rd_rs1) +OP(sext_h, "sext.h", rv_codec_r, rv_fmt_rd_rs1) +OP(sext_b, "sext.b", rv_codec_r, rv_fmt_rd_rs1) +OP(xnor, "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(orn, "orn", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(andn, "andn", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rol, "rol", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ror, "ror", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh1add, "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh2add, "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh3add, "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh1add_uw, "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh2add_uw, "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh3add_uw, "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clmul, "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clmulr, "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clmulh, "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(min, "min", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(minu, "minu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(max, "max", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(maxu, "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clzw, "clzw", rv_codec_r, rv_fmt_rd_rs1) +OP(ctzw, "ctzw", rv_codec_r, rv_fmt_rd_rs1) +OP(cpopw, "cpopw", rv_codec_r, rv_fmt_rd_rs1) +OP(slli_uw, "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(add_uw, "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rolw, "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rorw, "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rev8, "rev8", rv_codec_r, rv_fmt_rd_rs1) +OP(zext_h, "zext.h", rv_codec_r, rv_fmt_rd_rs1) +OP(roriw, "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(orc_b, "orc.b", rv_codec_r, rv_fmt_rd_rs1) +OP(bset, "bset", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(bclr, "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(binv, "binv", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(bext, "bext", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes32esmi, "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32esi, "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32dsmi, "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32dsi, "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes64ks1i, "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum) +OP(aes64ks2, "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64im, "aes64im", rv_codec_r, rv_fmt_rd_rs1) +OP(aes64esm, "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64es, "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64dsm, "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64ds, "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha256sig0, "sha256sig0", rv_codec_r, rv_fmt_rd_rs1) +OP(sha256sig1, "sha256sig1", rv_codec_r, rv_fmt_rd_rs1) +OP(sha256sum0, "sha256sum0", rv_codec_r, rv_fmt_rd_rs1) +OP(sha256sum1, "sha256sum1", rv_codec_r, rv_fmt_rd_rs1) +OP(sha512sig0, "sha512sig0", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig1, "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum0, "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum1, "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum0r, "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum1r, "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig0l, "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig0h, "sha512sig0h", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig1l, "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig1h, "sha512sig1h", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sm3p0, "sm3p0", rv_codec_r, rv_fmt_rd_rs1) +OP(sm3p1, "sm3p1", rv_codec_r, rv_fmt_rd_rs1) +OP(sm4ed, "sm4ed", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(sm4ks, "sm4ks", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(brev8, "brev8", rv_codec_r, rv_fmt_rd_rs1) +OP(pack, "pack", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(packh, "packh", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(packw, "packw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(unzip, "unzip", rv_codec_r, rv_fmt_rd_rs1) +OP(zip, "zip", rv_codec_r, rv_fmt_rd_rs1) +OP(xperm4, "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(xperm8, "xperm8", rv_codec_r, rv_fmt_rd_rs1) +OP(vle8_v, "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle16_v, "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle32_v, "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle64_v, "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse8_v, "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse16_v, "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse32_v, "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse64_v, "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vlm_v, "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vsm_v, "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vlse8_v, "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse16_v, "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse32_v, "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse64_v, "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse8_v, "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse16_v, "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse32_v, "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse64_v, "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vluxei8_v, "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei16_v, "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei32_v, "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei64_v, "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei8_v, "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei16_v, "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei32_v, "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei64_v, "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei8_v, "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei16_v, "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei32_v, "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei64_v, "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei8_v, "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei16_v, "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei32_v, "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei64_v, "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vle8ff_v, "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle16ff_v, "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle32ff_v, "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle64ff_v, "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re8_v, "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re16_v, "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re32_v, "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re64_v, "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re8_v, "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re16_v, "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re32_v, "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re64_v, "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re8_v, "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re16_v, "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re32_v, "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re64_v, "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re8_v, "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re16_v, "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re32_v, "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re64_v, "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs1r_v, "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs2r_v, "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs4r_v, "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs8r_v, "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vadd_vv, "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vadd_vx, "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vadd_vi, "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vsub_vv, "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsub_vx, "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrsub_vx, "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrsub_vi, "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vwaddu_vv, "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwaddu_vx, "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwadd_vv, "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwadd_vx, "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsubu_vv, "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsubu_vx, "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsub_vv, "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsub_vx, "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwaddu_wv, "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwaddu_wx, "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwadd_wv, "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwadd_wx, "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsubu_wv, "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsubu_wx, "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsub_wv, "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsub_wx, "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vadc_vvm, "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vadc_vxm, "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vadc_vim, "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vmadc_vvm, "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmadc_vxm, "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmadc_vim, "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vsbc_vvm, "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vsbc_vxm, "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmsbc_vvm, "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmsbc_vxm, "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vand_vv, "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vand_vx, "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vand_vi, "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vor_vv, "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vor_vx, "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vor_vi, "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vxor_vv, "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vxor_vx, "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vxor_vi, "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vsll_vv, "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsll_vx, "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsll_vi, "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vsrl_vv, "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsrl_vx, "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsrl_vi, "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vsra_vv, "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsra_vx, "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsra_vi, "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnsrl_wv, "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnsrl_wx, "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnsrl_wi, "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnsra_wv, "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnsra_wx, "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnsra_wi, "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vmseq_vv, "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmseq_vx, "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmseq_vi, "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsne_vv, "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsne_vx, "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsne_vi, "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsltu_vv, "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsltu_vx, "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmslt_vv, "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmslt_vx, "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsleu_vv, "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsleu_vx, "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsleu_vi, "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsle_vv, "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsle_vx, "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsle_vi, "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsgtu_vx, "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsgtu_vi, "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsgt_vx, "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsgt_vi, "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vminu_vv, "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vminu_vx, "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmin_vv, "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmin_vx, "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmaxu_vv, "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmaxu_vx, "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmax_vv, "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmax_vx, "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmul_vv, "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmul_vx, "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulh_vv, "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulh_vx, "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulhu_vv, "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulhu_vx, "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulhsu_vv, "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulhsu_vx, "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vdivu_vv, "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vdivu_vx, "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vdiv_vv, "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vdiv_vx, "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vremu_vv, "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vremu_vx, "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrem_vv, "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrem_vx, "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmulu_vv, "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmulu_vx, "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmulsu_vv, "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmulsu_vx, "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmul_vv, "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmul_vx, "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmacc_vv, "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vmacc_vx, "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vnmsac_vv, "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vnmsac_vx, "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vmadd_vv, "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vmadd_vx, "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vnmsub_vv, "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vnmsub_vx, "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccu_vv, "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmaccu_vx, "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmacc_vv, "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmacc_vx, "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccsu_vv, "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmaccsu_vx, "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccus_vx, "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vmv_v_v, "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1) +OP(vmv_v_x, "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1) +OP(vmv_v_i, "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm) +OP(vmerge_vvm, "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmerge_vxm, "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmerge_vim, "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vsaddu_vv, "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsaddu_vx, "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsaddu_vi, "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vsadd_vv, "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsadd_vx, "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsadd_vi, "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vssubu_vv, "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssubu_vx, "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssub_vv, "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssub_vx, "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vaadd_vv, "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vaadd_vx, "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vaaddu_vv, "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vaaddu_vx, "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vasub_vv, "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vasub_vx, "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vasubu_vv, "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vasubu_vx, "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsmul_vv, "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsmul_vx, "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssrl_vv, "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssrl_vx, "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssrl_vi, "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vssra_vv, "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssra_vx, "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssra_vi, "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnclipu_wv, "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnclipu_wx, "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnclipu_wi, "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnclip_wv, "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnclip_wx, "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnclip_wi, "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vfadd_vv, "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfadd_vf, "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsub_vv, "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsub_vf, "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfrsub_vf, "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwadd_vv, "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwadd_vf, "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwadd_wv, "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwadd_wf, "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwsub_vv, "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwsub_vf, "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwsub_wv, "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwsub_wf, "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmul_vv, "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmul_vf, "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfdiv_vv, "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfdiv_vf, "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfrdiv_vf, "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwmul_vv, "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwmul_vf, "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmacc_vv, "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmacc_vf, "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmacc_vv, "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmacc_vf, "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmsac_vv, "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmsac_vf, "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmsac_vv, "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmsac_vf, "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmadd_vv, "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmadd_vf, "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmadd_vv, "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmadd_vf, "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmsub_vv, "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmsub_vf, "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmsub_vv, "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmsub_vf, "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwmacc_vv, "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmacc_vf, "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwnmacc_vv, "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwnmacc_vf, "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwmsac_vv, "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmsac_vf, "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwnmsac_vv, "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwnmsac_vf, "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfsqrt_v, "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfrsqrt7_v, "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfrec7_v, "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfmin_vv, "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmin_vf, "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmax_vv, "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmax_vf, "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnj_vv, "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsgnj_vf, "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnjn_vv, "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsgnjn_vf, "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnjx_vv, "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsgnjx_vf, "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfslide1up_vf, "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfslide1down_vf, "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfeq_vv, "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmfeq_vf, "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfne_vv, "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmfne_vf, "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmflt_vv, "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmflt_vf, "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfle_vv, "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmfle_vf, "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfgt_vf, "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfge_vf, "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfclass_v, "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfmerge_vfm, "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl) +OP(vfmv_v_f, "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1) +OP(vfcvt_xu_f_v, "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_x_f_v, "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_f_xu_v, "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_f_x_v, "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_rtz_xu_f_v, "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_rtz_x_f_v, "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_xu_f_v, "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_x_f_v, "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_f_xu_v, "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_f_x_v, "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_f_f_v, "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_rtz_xu_f_v, "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_rtz_x_f_v, "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_xu_f_w, "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_x_f_w, "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_f_xu_w, "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_f_x_w, "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_f_f_w, "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rod_f_f_w, "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rtz_xu_f_w, "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rtz_x_f_w, "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vredsum_vs, "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredand_vs, "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredor_vs, "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredxor_vs, "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredminu_vs, "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmin_vs, "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmaxu_vs, "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmax_vs, "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwredsumu_vs, "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwredsum_vs, "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredusum_vs, "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredosum_vs, "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredmin_vs, "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredmax_vs, "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwredusum_vs, "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwredosum_vs, "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmand_mm, "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmnand_mm, "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmandn_mm, "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmxor_mm, "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmor_mm, "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmnor_mm, "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmorn_mm, "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmxnor_mm, "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vcpop_m, "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) +OP(vfirst_m, "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) +OP(vmsbf_m, "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vmsif_m, "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vmsof_m, "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(viota_m, "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vid_v, "vid.v", rv_codec_v_r, rv_fmt_vd_vm) +OP(vmv_x_s, "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2) +OP(vmv_s_x, "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1) +OP(vfmv_f_s, "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2) +OP(vfmv_s_f, "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1) +OP(vslideup_vx, "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslideup_vi, "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vslide1up_vx, "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslidedown_vx, "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslidedown_vi, "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vslide1down_vx, "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrgather_vv, "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrgatherei16_vv, "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrgather_vx, "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrgather_vi, "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vcompress_vm, "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vmv1r_v, "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv2r_v, "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv4r_v, "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv8r_v, "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vzext_vf2, "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vzext_vf4, "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vzext_vf8, "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsext_vf2, "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsext_vf4, "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsext_vf8, "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsetvli, "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli) +OP(vsetivli, "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli) +OP(vsetvl, "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(c_zext_b, "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_sext_b, "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_zext_h, "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_sext_h, "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_zext_w, "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_not, "c.not", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_mul, "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2) +OP(c_lbu, "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) +OP(c_lhu, "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(c_lh, "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(c_sb, "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) +OP(c_sh, "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(cm_push, "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist) +OP(cm_pop, "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_popret, "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_popretz, "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_mva01s, "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) +OP(cm_mvsa01, "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) +OP(cm_jt, "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) +OP(cm_jalt, "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) +OP(czero_eqz, "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(czero_nez, "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(fcvt_bf16_s, "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_s_bf16, "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(vfncvtbf16_f_f_w, "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvtbf16_f_f_v, "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwmaccbf16_vv, "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmaccbf16_vf, "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(flh, "flh", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fsh, "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fmv_h_x, "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fmv_x_h, "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1) +OP(fli_s, "fli.s", rv_codec_fli, rv_fmt_fli) +OP(fli_d, "fli.d", rv_codec_fli, rv_fmt_fli) +OP(fli_q, "fli.q", rv_codec_fli, rv_fmt_fli) +OP(fli_h, "fli.h", rv_codec_fli, rv_fmt_fli) +OP(fminm_s, "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_s, "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_d, "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_d, "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_q, "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_q, "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_h, "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_h, "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fround_s, "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_s, "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_d, "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_d, "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_q, "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_q, "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_h, "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_h, "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvtmod_w_d, "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fmvh_x_d, "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fmvp_d_x, "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2) +OP(fmvh_x_q, "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fmvp_q_x, "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2) +OP(fleq_s, "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_s, "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_d, "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_d, "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_q, "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_q, "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_h, "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_h, "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(vaesdf_vv, "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdf_vs, "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdm_vv, "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdm_vs, "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesef_vv, "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesef_vs, "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesem_vv, "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesem_vs, "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaeskf1_vi, "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vaeskf2_vi, "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vaesz_vs, "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vandn_vv, "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vandn_vx, "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vbrev_v, "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vbrev8_v, "vbrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vclmul_vv, "vclmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vclmul_vx, "vclmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vclmulh_vv, "vclmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vclmulh_vx, "vclmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vclz_v, "vclz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vcpop_v, "vcpop.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vctz_v, "vctz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vghsh_vv, "vghsh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vgmul_vv, "vgmul.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vrev8_v, "vrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vrol_vv, "vrol.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrol_vx, "vrol.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vror_vv, "vror.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vror_vx, "vror.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vror_vi, "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm) +OP(vsha2ch_vv, "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vsha2cl_vv, "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vsha2ms_vv, "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vsm3c_vi, "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vsm3me_vv, "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vsm4k_vi, "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vsm4r_vv, "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vsm4r_vs, "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vwsll_vv, "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsll_vx, "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsll_vi, "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(amocas_w, "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(mop_r_0, "mop.r.0", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_1, "mop.r.1", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_2, "mop.r.2", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_3, "mop.r.3", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_4, "mop.r.4", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_5, "mop.r.5", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_6, "mop.r.6", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_7, "mop.r.7", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_8, "mop.r.8", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_9, "mop.r.9", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_10, "mop.r.10", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_11, "mop.r.11", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_12, "mop.r.12", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_13, "mop.r.13", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_14, "mop.r.14", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_15, "mop.r.15", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_16, "mop.r.16", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_17, "mop.r.17", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_18, "mop.r.18", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_19, "mop.r.19", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_20, "mop.r.20", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_21, "mop.r.21", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_22, "mop.r.22", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_23, "mop.r.23", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_24, "mop.r.24", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_25, "mop.r.25", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_26, "mop.r.26", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_27, "mop.r.27", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_28, "mop.r.28", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_29, "mop.r.29", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_30, "mop.r.30", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r_31, "mop.r.31", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_rr_0, "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_1, "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_2, "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_3, "mop.rr.3", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_4, "mop.rr.4", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_5, "mop.rr.5", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_6, "mop.rr.6", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr_7, "mop.rr.7", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(c_mop_1, "c.mop.1", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_3, "c.mop.3", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_5, "c.mop.5", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_7, "c.mop.7", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_9, "c.mop.9", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_11, "c.mop.11", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_13, "c.mop.13", rv_codec_ci_none, rv_fmt_none) +OP(c_mop_15, "c.mop.15", rv_codec_ci_none, rv_fmt_none) +OP(amoswap_b, "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_b, "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_b, "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_b, "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_b, "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_b, "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_b, "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_b, "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_b, "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_h, "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_h, "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_h, "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_h, "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_h, "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_h, "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_h, "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_h, "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_h, "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_b, "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_h, "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(wrs_sto, "wrs.sto", rv_codec_none, rv_fmt_none) +OP(wrs_nto, "wrs.nto", rv_codec_none, rv_fmt_none) +OP(lpad, "lpad", rv_codec_lp, rv_fmt_imm) +OP(sspush, "sspush", rv_codec_r, rv_fmt_rs2) +OP(sspopchk, "sspopchk", rv_codec_r, rv_fmt_rs1) +OP(ssrdp, "ssrdp", rv_codec_r, rv_fmt_rd) +OP(ssamoswap_w, "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(ssamoswap_d, "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(c_sspush, "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspush)) +OP(c_sspopchk, "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspopchk= )) +OP(cbo_inval, "cbo.inval", rv_codec_r, rv_fmt_rs1) +OP(cbo_clean, "cbo.clean", rv_codec_r, rv_fmt_rs1) +OP(cbo_flush, "cbo.flush", rv_codec_r, rv_fmt_rs1) +OP(cbo_zero, "cbo.zero", rv_codec_r, rv_fmt_rs1) +OP(mnret, "mnret", rv_codec_none, rv_fmt_none) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315504; cv=none; d=zohomail.com; s=zohoarc; b=lvcNXBe1tIxOrj5Wg+B93l+m3NUsnG334QwrJJVgAAmm+SHN+KxcXejpnDUgPeoqqbj0OC189mhXx8bOt06dfhi8ezffvvAUnbBPgLmkoh3vqBV3XJDa+CKbob6HOPZfM6Dg17kP9GG0/lQ3laRQayywDJaIxIvXRseABAl2Y1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315504; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XZk94/hutZsJsFOXvZC1U6d3u/tHUT3CS8c9j5uIMOA=; b=EV6XoxY01pSxyYoqZAgS6dC26aNUvrmar7HL2s1v1DkixOe4ILrB1Ity062PeQcujtAwd37q2LNqiIe++6oVrZHyFsPIlH1z1hB7U27MKFnGFIc9Hg8Qhp8zyl+ElHQnYFh00TPlus124IE3i5/oVvxJE6YQVr/6y3oH6H8BRbk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315504316686.0229607042679; Sun, 9 Aug 2026 15:45:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBK-0005y1-Iy; Sun, 09 Aug 2026 18:39:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBI-0005wu-On for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:48 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBH-00085W-0H for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:48 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so1305324a91.3 for ; Sun, 09 Aug 2026 15:39:46 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315185; x=1786919985; darn=nongnu.org; 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:content-type; bh=XZk94/hutZsJsFOXvZC1U6d3u/tHUT3CS8c9j5uIMOA=; b=oyUZw0wgbRvdwAed4jtCsGBIvoUTEV0Tn9IFkn6434Ao27E3O5v2Lhn0iWfpXiz4HP P7cQW4j+ZJSRX/w9kTdUnQm+nFoeNt4rBo6HnqwrJQ6cK8i4SxConZhE3SJxm14BfuR8 GjEZ+ajLDGGcCwW9VrKaxClzARp+++Cb5s2KHkb9pkvtTCefDA/o5dJhgFsw4D7nQH3B jJJ7TvC9fboAwnpmlYUYcqj3tMBbmHVxjCtbb5+aPstrsyIN1Mxk9nJMuy1UJ7X8FbxB G/HGr8xBAit/e+raFI7HTtfeW3zRUISsXxi8+VCLADWEswLN2eX8EVf0hOlJAIXTtf2K ZEIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315185; x=1786919985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XZk94/hutZsJsFOXvZC1U6d3u/tHUT3CS8c9j5uIMOA=; b=l6Rr2p7RRZdOoS2T4eqGPm203xcDcIBzotz1eXlNaqy3pM0EvDKN77TyrMZy9rAFQs xg1QlE9g1Nti5SCDQMcy0SXLBbfd9yep0dpE6KWpnOuwm2ihqliPmN7O6wK7J32Jt6ru qnosY/s14XypE62AfxbzPDPLUM1wXf6tGemLIejmKU1pjTvZ+JNIhnI/wNWCRBioAkvU eOO8bdyMlbsOSZCAFXzmNdK/JKxqZ2QmZMPWP8QLX+yLGpbiHbYd2GkKJS2LFE+ABN2n cZjTU/IzxqD3BExtLd3unWFmxwP5Z0kuenBB/AVn2ZHvm2fyfS5CqF4sfKFWosHPcQ15 8iug== X-Gm-Message-State: AOJu0Yzz2NFulkwS7gIQzHdsGMlDQdLX9Jugc/CdROWXLiIseSp2+DNq JOZG1lr6FyPPF581VaizwatcgDfunnOKb1rnSphR4VoMyMQlpkTHPz2BYhh6iGdCiavNcqc3bt5 57O0g X-Gm-Gg: AR+sD12HMzfjqKkGBpS/6m6qG4cFaE4LJY7vjofkT+RJLL7sLkmLvviTfp4GLsJg0XP ZNnFIFCvwJtmremRBBAxRgiOtKcHYhQEjl5mk2Mk4n4cqOnEDr85BRO5k1CCMQxn0wpFKgCyPnk LYX5kNBXCQ+SZEg4tfh/i4XC8ZAUBs56nIr8Ltt11c/T/RNFy+Mz8xvNHJ6kF5A7YZ33T698fVL gGHZe1xUMbVj1cgMnVbjKKikgHBtGj4g6U7Im2SEmQU7NSXxeajumH0otbQDUAhW5WB31rVZ+7y LuLooC1jdX7wwuOq8mbIU4ZKhnVD+l0JB+b8vejJCY8pswqNZc8FWaIe+M2PZA0bvDMx+DYsq8A 5cfBbxS8zmPatKk1VFcAKYLrFOPccsrHy1ECQsTHuvidoUnCdoEBzWyDqoyfryjjtbcB/iQOc3x N7n+PmcUD3V2ZGaIrbdNLeWxV9+uCLDsSLLd5AEh0hTafS3+M7Qj7gksIwu2GchLVZmuelrfLTY M4MZASgb7JyMi3R6tre X-Received: by 2002:a17:90b:4b81:b0:38e:7f1b:efa with SMTP id 98e67ed59e1d1-3903c582798mr37987768a91.11.1786315185362; Sun, 09 Aug 2026 15:39:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 50/56] disas/riscv: Merge all mop.r.n to one pattern Date: Sun, 9 Aug 2026 15:35:39 -0700 Message-ID: <20260809223545.730664-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315504793158500 Content-Type: text/plain; charset="utf-8" Avoid performing arithmetic on rv_op_mop_r_0. Treat the 'n' as an immediate. Create a codec and format to match. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 2 ++ disas/riscv.c | 15 ++++++++++++++- disas/riscv-op.c.inc | 33 +-------------------------------- 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 5ac8c41616..b47a7f0150 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -160,6 +160,7 @@ typedef enum { rv_codec_fli, rv_codec_lp, rv_codec_cmop_ss, + rv_codec_mop_r, } rv_codec; =20 /* structures */ @@ -284,5 +285,6 @@ typedef struct { #define rv_fmt_rd_rs1_immh_imml_addr "O\t0,(1),i,j" #define rv_fmt_rd2_imm "O\t0,2,(1),i" #define rv_fmt_fli "O\t3,h" +#define rv_fmt_mop_r "O.i\t0,1" =20 #endif /* DISAS_RISCV_H */ diff --git a/disas/riscv.c b/disas/riscv.c index 9dad56b486..450a5c8142 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -643,6 +643,13 @@ static uint32_t operand_lpl(rv_inst inst) return extract32(inst, 12, 20); } =20 +static uint32_t operand_mop_r_imm(rv_inst inst) +{ + return (extract32(inst, 30, 1) << 4) | + (extract32(inst, 26, 2) << 2) | + extract32(inst, 20, 2); +} + /* instruction metadata */ =20 static const rv_opcode_data rvi_opcode_data[] =3D { @@ -2546,7 +2553,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) 2, 2, extract32(inst, 26,= 2)), 4, 1, extract32(inst, 30, 1)); - op =3D rv_op_mop_r_0 + imm_mop5; + op =3D rv_op_mop_r; /* if zicfiss enabled and mop5 is shadow stack */ if (dec->cfg->ext_zicfiss && ((imm_mop5 & 0b11100) =3D=3D 0b11100)) { @@ -3049,6 +3056,11 @@ static void decode_inst_operands(rv_decode *dec, rv_= isa isa, dec->rs1 =3D dec->rs2 =3D operand_crs1(inst); dec->imm =3D 0; break; + case rv_codec_mop_r: + dec->rd =3D operand_rd(inst); + dec->rs1 =3D operand_rs1(inst); + dec->imm =3D operand_mop_r_imm(inst); + break; default: g_assert_not_reached(); } @@ -3134,6 +3146,7 @@ static GString *format_inst(size_t tab, rv_decode *de= c, g_string_append(buf, op->name); break; case '(': + case '.': case ',': case ')': case '-': diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc index 3fe934688e..222d249a70 100644 --- a/disas/riscv-op.c.inc +++ b/disas/riscv-op.c.inc @@ -873,38 +873,7 @@ OP(vwsll_vi, "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2= _uimm_vm) OP(amocas_w, "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(mop_r_0, "mop.r.0", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_1, "mop.r.1", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_2, "mop.r.2", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_3, "mop.r.3", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_4, "mop.r.4", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_5, "mop.r.5", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_6, "mop.r.6", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_7, "mop.r.7", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_8, "mop.r.8", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_9, "mop.r.9", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_10, "mop.r.10", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_11, "mop.r.11", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_12, "mop.r.12", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_13, "mop.r.13", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_14, "mop.r.14", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_15, "mop.r.15", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_16, "mop.r.16", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_17, "mop.r.17", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_18, "mop.r.18", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_19, "mop.r.19", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_20, "mop.r.20", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_21, "mop.r.21", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_22, "mop.r.22", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_23, "mop.r.23", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_24, "mop.r.24", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_25, "mop.r.25", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_26, "mop.r.26", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_27, "mop.r.27", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_28, "mop.r.28", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_29, "mop.r.29", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_30, "mop.r.30", rv_codec_r, rv_fmt_rd_rs1) -OP(mop_r_31, "mop.r.31", rv_codec_r, rv_fmt_rd_rs1) +OP(mop_r, "mop.r", rv_codec_mop_r, rv_fmt_mop_r) OP(mop_rr_0, "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mop_rr_1, "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mop_rr_2, "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315524; cv=none; d=zohomail.com; s=zohoarc; b=EEyC2Tm8CVnfjh7/dI07siN4BILzTjJwaAg8GqFL8eVs1JJoQzr8rARirWzX873s+dp6GHurQadg0qApLYteoLk47v26mx/hfBr3RnpC5Wluo3J0Lq2tN4MDJD0YBtRBS+Js+8Yf+03aKiC7YLDUZMUS17NHQgFtFiN2RtcRQvM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315524; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fuCBO3c4KkU6IdYL03w0f8q0GHaTcRVrzjmCPJRXmnY=; b=Gkxqkz+Z4WERZ8p+y9mWOX9Hsh15bJa0zRDHtb0u139In7/piNFvNsLoyNK8jNE1HvyJtadJnlAQxF5G2oY68t1QKRAoNEjU6ALH59+i9+WrIsjPiod6cl0f32aEfm/ZZVD4TpAQIlPs5YhMeH7s7Bma8qkkWcdeznT1jBoIkXc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315524318571.316338508339; Sun, 9 Aug 2026 15:45:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBM-0005zm-OL; Sun, 09 Aug 2026 18:39:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBK-0005xp-7L for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:50 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBH-00085y-Jo for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:49 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-381c51fde6bso1426868a91.2 for ; Sun, 09 Aug 2026 15:39:47 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315186; x=1786919986; darn=nongnu.org; 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:content-type; bh=fuCBO3c4KkU6IdYL03w0f8q0GHaTcRVrzjmCPJRXmnY=; b=qg9pLhgzrieVjd/59RZjw/ESWPhe9obPOVnDQopCr/Q1Ze915acl+nDNsfKYrnLrgZ 7Er8zKvkCLMlmm2053JVYDWBdn6ZWjBP+khFT1URy0Fc6Qm1w608VWKOhAVWKPaau7fA Q5xlMvQmhJfBrVXjqeNIiXtEBhfAhk6WOz3mlQYRS+vDbW1ufBixS9xCz5bh8r0bhkix VRNoEAWr9HE7DbX1wYJJ2ifQmR383i/5kEhNd4ov6u6uhPG4bhhHCWq1f3rQwTuQTnlq QqcBbwfJkQKNtz08Gn2bTz1ES6fKBliBjmUCBCn7kXTYTwH5kFpHLq8ZlFH4DSai7ASz P6yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315186; x=1786919986; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fuCBO3c4KkU6IdYL03w0f8q0GHaTcRVrzjmCPJRXmnY=; b=FZtHzY+TWYwq61IR87WgOTahH4sLnk+47YMSVow6Ivz+t9Q3b79Y1ysGYZeQE8uxIm 2HXLJ+L8aatofZXSyYC9zT04feG+u2TFshjv7tWUsp02XwMaXZ+amgWKQd4lbsEYKUCV XSFCsITguneGa8g3KIPQiCxZfBcdkT23aXg2RxX6XGPRYLA+gE0zQp+j+LWxPCpP8ZMX M8RuZ3kQYCkVjxnC7q4RibjbjWOo5fqwFRp52gvf7gZEkvfWpIz7oRL/sGFgh9Zbdg4h cwBSGxf3YiQeMYyih/WASbXJlnseSsNV/rqyjaktWykOKKE7LT8B71due6f3G7mrqg0E o3cQ== X-Gm-Message-State: AOJu0YwgpEJKITSVmcoxLcMRWLqx3mpeRnhVEj/jhU3eqPXhu27qQips I0XNDlipachmQDMZGqsop8AxnwNC8n9a8Vw69XAyOsHqnnyyeA2X6zs6hf9iE04Vnd/upAAEaf2 5pCKl X-Gm-Gg: AR+sD13XTPn3C1+m9F1Z8LzRFKZKTWfT2YjBPp1ZhXTiYrdymW7gkWCn8ePYbWjcniN rI/nxwzF5hoD0jjHdmb4B7X9Yx5Imth7NcLPU/JrKnS6dKSTBF9QdJIojjfHUoHMMAllysDHkAa xjeMC60sfVL2s5ZufC5vlHOXFL9cad/hgJMn3UKc/PziuuwYy9Hb6im85NpvwHAX2wIAnuGIEyC ZjkLIb7mNtN2FbfTa5InxQ5Sx0jgEe8r15uX+CmXu7LXZNCGnewGwKHxuBFP3UN2h/KXCBiOhwQ F3jucHCxst07IBkXXsrWcp6dXEzwTo9yLczKokOyHgML7CiyELZYuWsEEn4bj9aMbbQfJghHBIi ktwnICe3gnQ/rvlPqY0Mw4n6uqpo147PW/+eCFRL1lDtXTq2LLuJFgreBpFNdtPsIsYN6nTDXPh AAZlhQk5sZMCwPywR+kLA9J8W8Fhw1aVsZMVlo5weIs0pwySnTzimxb+M42Q3vXCvqcRFWJCUVF Qu2mK6X2NjGMBVM+9Gy3My3KaI/nNhM X-Received: by 2002:a17:90b:2748:b0:380:7688:fbe9 with SMTP id 98e67ed59e1d1-392823a4a2bmr16578023a91.8.1786315186229; Sun, 09 Aug 2026 15:39:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 51/56] disas/riscv: Merge all mop.rr.n to one pattern Date: Sun, 9 Aug 2026 15:35:40 -0700 Message-ID: <20260809223545.730664-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315524912158500 Content-Type: text/plain; charset="utf-8" Avoid performing arithmetic on rv_op_mop_rr_0. Treat the 'n' as an immediate. Create a codec and format to match. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 2 ++ disas/riscv.c | 13 ++++++++++++- disas/riscv-op.c.inc | 9 +-------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index b47a7f0150..47647f750f 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -161,6 +161,7 @@ typedef enum { rv_codec_lp, rv_codec_cmop_ss, rv_codec_mop_r, + rv_codec_mop_rr, } rv_codec; =20 /* structures */ @@ -286,5 +287,6 @@ typedef struct { #define rv_fmt_rd2_imm "O\t0,2,(1),i" #define rv_fmt_fli "O\t3,h" #define rv_fmt_mop_r "O.i\t0,1" +#define rv_fmt_mop_rr "O.i\t0,1,2" =20 #endif /* DISAS_RISCV_H */ diff --git a/disas/riscv.c b/disas/riscv.c index 450a5c8142..6ec62a5830 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -650,6 +650,11 @@ static uint32_t operand_mop_r_imm(rv_inst inst) extract32(inst, 20, 2); } =20 +static uint32_t operand_mop_rr_imm(rv_inst inst) +{ + return (extract32(inst, 30, 1) << 2) | extract32(inst, 26, 2); +} + /* instruction metadata */ =20 static const rv_opcode_data rvi_opcode_data[] =3D { @@ -2572,7 +2577,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) =3D=3D 0b1000001) { imm_mop3 =3D deposit32(extract32(inst, 26, 2), 2, 1, extract32(inst, 30, 1)); - op =3D rv_op_mop_rr_0 + imm_mop3; + op =3D rv_op_mop_rr; /* if zicfiss enabled and mop3 is shadow stack */ if (dec->cfg->ext_zicfiss && ((imm_mop3 & 0b111) =3D=3D 0b111)) { @@ -3061,6 +3066,12 @@ static void decode_inst_operands(rv_decode *dec, rv_= isa isa, dec->rs1 =3D operand_rs1(inst); dec->imm =3D operand_mop_r_imm(inst); break; + case rv_codec_mop_rr: + dec->rd =3D operand_rd(inst); + dec->rs1 =3D operand_rs1(inst); + dec->rs2 =3D operand_rs2(inst); + dec->imm =3D operand_mop_rr_imm(inst); + break; default: g_assert_not_reached(); } diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc index 222d249a70..2100e54475 100644 --- a/disas/riscv-op.c.inc +++ b/disas/riscv-op.c.inc @@ -874,14 +874,7 @@ OP(amocas_w, "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_= rs2_rs1) OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(mop_r, "mop.r", rv_codec_mop_r, rv_fmt_mop_r) -OP(mop_rr_0, "mop.rr.0", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_1, "mop.rr.1", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_2, "mop.rr.2", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_3, "mop.rr.3", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_4, "mop.rr.4", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_5, "mop.rr.5", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_6, "mop.rr.6", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(mop_rr_7, "mop.rr.7", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mop_rr, "mop.rr", rv_codec_mop_rr, rv_fmt_mop_rr) OP(c_mop_1, "c.mop.1", rv_codec_ci_none, rv_fmt_none) OP(c_mop_3, "c.mop.3", rv_codec_ci_none, rv_fmt_none) OP(c_mop_5, "c.mop.5", rv_codec_ci_none, rv_fmt_none) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315351; cv=none; d=zohomail.com; s=zohoarc; b=JFGYEYxjRxBcsJM9AV/gQBRYApRhxSoH0i7+aEIzZ1lye8KPdAGDB7QFAMAxRFJ7SWJyEAZIa4JQmie5L+SEPsxlnxL7iFfOZZ6N0WzqgWzflshMDMWPKllD0O255HOuni3XdPTZnpfIh2pPiDQUNMz71QbVpHebqsPTl+6+YtY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315351; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6qT6LtmVAN2lMvfWwnz6ndG9Sg0G69mfIJi66f9p1UE=; b=P6EWDAnr/oaarirhCfbUUpNJwm8kT6fVawg2sVW0NcosA9SwX5rT0Cr21/qljspDKfHnYrRgqx2jShPruoxL5+vEiArEQz1vW6IrplMEk5sAkGtt+Wz9Z76Nn3OTM9xfZHJ1DcNKMEA13F+ujZI+46fjef+75pDua8fiXOeNXVo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315351562376.19525818468605; Sun, 9 Aug 2026 15:42:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBN-00060a-Ep; Sun, 09 Aug 2026 18:39:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBL-0005yV-6n for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:51 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBJ-00086U-Di for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:50 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-3810c5d691bso1039920a91.1 for ; Sun, 09 Aug 2026 15:39:48 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315188; x=1786919988; darn=nongnu.org; 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:content-type; bh=6qT6LtmVAN2lMvfWwnz6ndG9Sg0G69mfIJi66f9p1UE=; b=rM92JYb0RJykx5ru1qno8RA0tDIYwAQf/kjGku1hF+PpBI433uXRroxcYyHQ9sdsGh i1MXc9dIIc2/uws0+pdpTqrvrzPFgOEcSI8If3Vfd8wtb4bS3zjcF63CXMWxDy7jXBY6 g9+rzSFSOU9x7I6h8+TwPe+3hhDpq3HeW2HrioYXk2JPVUZP2XTJtJMteojAqHc6dDsQ VQKPk6UYP8sSCwx+UZTLsfaQb3JIpBQcLL845SBSACMJkJWk9lPerAoGrtlhxG0epX1o q3UysGja8mFLM0YuiCwLVcpoRk3O3oepw29cOZyHONHJTiNPEkvu83J/tC5GANv/EubC 5ySA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315188; x=1786919988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6qT6LtmVAN2lMvfWwnz6ndG9Sg0G69mfIJi66f9p1UE=; b=g+2+9eJIUJQnkyQyO7tZnWig1zsZ0D1NbgDqRv03BveSx3ef89wJek5ya7EIdJ+V3s 84SqqJypLDqOB72wIs50P/xakM7ChsqOQQLTPsuJxi4/4FyWfYhC856w3AdHkDDTGovU YMxLpc9qPP4cYxU6LwbbThdhaxQQ24KFy8B5/ewkvQSwW27ttu4YzEk0Qs5QeDffi0gW +Ofxrw8Lp/G7XEvvOrTgz8SQdoBrA+l0R/gpH/FluAJWyXbAudIV+FM9+rd1mctfwry4 07fAL9bTI31QfOZENouUEnxutmCtH69PsG6hhWg01Um9Y7t3wQpjHIFImaPHIf+oMADn Fwvw== X-Gm-Message-State: AOJu0Yzeb11+kAy4v17YbCgp1Xpu8uPaoJ0vcTZ4kLl1UAbjBSX+qQBU h+GAtUDSNTMcfdV4AnhvUv/iJPccd+akPSZKzP2Re8AyKQYiVEvyth5Na2uF0yEkNlLTKiODDF3 +xWkt X-Gm-Gg: AR+sD13vL7CGvk14+EbwfOXiJVFQ0K2mBdcvBOyM6XCrLUZ61Jyc4mkPx4zzymv5+LK kmO05Yg4H+lap4RzLES7D8c7AvnD/CfsgaATL5PH86uXQRVa41gPe17v57s/smPmw59X5LAO3Jh Jt3I6SalRi6wAmQPF6t3axkaaVkDQiBlyBTmCL2CLFAvlNRFJoR1LXsMr9fhdO/5rtmPYLBjPmE YxtZb0DD4W2fDKMCLZ+LyrKsaiYudwGHarb2+UKXr0H3ecRbysC9GHAnEHTNbgjJDSOXRrtMDiJ X+JpgTsx6ByvDzkMn71l+G+7qYh7PAMegdsRGAE6oEO5dSyoW3Z28Il9PdX1EV7gX7PqKsgsD+2 QgYrKepmhBLZfn6WZSvvj//oznHRX0FTSlX/3ifmEJW6t9KlrzxRTjWsW/KTlrmilFtLQauLek0 P0FS/HncEOlPN8HFFqVEvwfaxX3NdrJ+JvbKQIjpD/O0XjrcbdIclvcOTvFYv8Df7ooitIZ66AZ 0nq9XSNqxYZWXi8waD/ X-Received: by 2002:a17:90a:ec8b:b0:38f:c90c:72d9 with SMTP id 98e67ed59e1d1-3903c5b7238mr40263036a91.9.1786315187916; Sun, 09 Aug 2026 15:39:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 52/56] disas/riscv: Merge all c.mop.n to one pattern Date: Sun, 9 Aug 2026 15:35:41 -0700 Message-ID: <20260809223545.730664-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315352271158500 Content-Type: text/plain; charset="utf-8" Avoid performing arithmetic on rv_op_c_mop_1. Treat the 'n' as an immediate. Create a codec and format to match. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.h | 2 ++ disas/riscv.c | 10 +++++++++- disas/riscv-op.c.inc | 9 +-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/disas/riscv.h b/disas/riscv.h index 47647f750f..b0269bb709 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -159,6 +159,7 @@ typedef enum { rv_codec_r2_imm2_imm5, rv_codec_fli, rv_codec_lp, + rv_codec_cmop, rv_codec_cmop_ss, rv_codec_mop_r, rv_codec_mop_rr, @@ -286,6 +287,7 @@ typedef struct { #define rv_fmt_rd_rs1_immh_imml_addr "O\t0,(1),i,j" #define rv_fmt_rd2_imm "O\t0,2,(1),i" #define rv_fmt_fli "O\t3,h" +#define rv_fmt_cmop "O.i" #define rv_fmt_mop_r "O.i\t0,1" #define rv_fmt_mop_rr "O.i\t0,1,2" =20 diff --git a/disas/riscv.c b/disas/riscv.c index 6ec62a5830..89c2e63941 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -643,6 +643,11 @@ static uint32_t operand_lpl(rv_inst inst) return extract32(inst, 12, 20); } =20 +static uint32_t operand_cmop_imm(rv_inst inst) +{ + return extract32(inst, 8, 3) * 2 + 1; +} + static uint32_t operand_mop_r_imm(rv_inst inst) { return (extract32(inst, 30, 1) << 4) | @@ -1027,7 +1032,7 @@ static const rv_opcode_data *decode_inst_opcode(rv_de= code *dec, rv_isa isa) (((inst >> 11) & 0b11) =3D=3D 0b0)) { unsigned int cmop_code =3D 0; cmop_code =3D ((inst >> 8) & 0b111); - op =3D rv_op_c_mop_1 + cmop_code; + op =3D rv_op_c_mop; if (dec->cfg->ext_zicfiss) { op =3D (cmop_code =3D=3D 0) ? rv_op_c_sspush : op; op =3D (cmop_code =3D=3D 2) ? rv_op_c_sspopchk : o= p; @@ -3056,6 +3061,9 @@ static void decode_inst_operands(rv_decode *dec, rv_i= sa isa, case rv_codec_lp: dec->imm =3D operand_lpl(inst); break; + case rv_codec_cmop: + dec->imm =3D operand_cmop_imm(inst); + break; case rv_codec_cmop_ss: dec->rd =3D rv_ireg_zero; dec->rs1 =3D dec->rs2 =3D operand_crs1(inst); diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc index 2100e54475..802a521bca 100644 --- a/disas/riscv-op.c.inc +++ b/disas/riscv-op.c.inc @@ -875,14 +875,7 @@ OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_= rs2_rs1) OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(mop_r, "mop.r", rv_codec_mop_r, rv_fmt_mop_r) OP(mop_rr, "mop.rr", rv_codec_mop_rr, rv_fmt_mop_rr) -OP(c_mop_1, "c.mop.1", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_3, "c.mop.3", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_5, "c.mop.5", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_7, "c.mop.7", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_9, "c.mop.9", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_11, "c.mop.11", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_13, "c.mop.13", rv_codec_ci_none, rv_fmt_none) -OP(c_mop_15, "c.mop.15", rv_codec_ci_none, rv_fmt_none) +OP(c_mop, "c.mop", rv_codec_cmop, rv_fmt_cmop) OP(amoswap_b, "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(amoadd_b, "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(amoxor_b, "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315602; cv=none; d=zohomail.com; s=zohoarc; b=H8nc4MDIKqiebz3s4aAipmVp7jVGxLzDM0AKjeHljlAsETQAtetXmfrXcAUHp+ZrhfDlVUUEOzalSVoMMUBFv071m+LoK+bIm92IkkSGmyA4CtIZ3BmZes7YtYA7fuFXMDH7PSWZGQMLbSUlV0dpOVZQUBxoaUJE4bFPaJXMP4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s37vUBaH0AOjJlqnT0JaqEyfZQb3/rLSBrzaNqBT7rk=; b=XtH+EDl8AdNrzUcOeygLTqY/HAi3bGzf4h5tlLLAieQ6njDlXydk0h834nM8mqdsbgN34u610bc7IZ/bmFf3urfQCSrjjimpJuD+LldQnTRlVqSq8QV8kdcdjZKFB2R3Ij5PiAlDXh3QNpF0WAdMOdK4w1nXuMDQxsbvcpKp94Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315602822586.1057269208541; Sun, 9 Aug 2026 15:46:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBO-00061M-E3; Sun, 09 Aug 2026 18:39:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBM-0005zf-CL for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:52 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBK-00086r-6i for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:52 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-38125cebfdaso1642259a91.1 for ; Sun, 09 Aug 2026 15:39:49 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315189; x=1786919989; darn=nongnu.org; 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:content-type; bh=s37vUBaH0AOjJlqnT0JaqEyfZQb3/rLSBrzaNqBT7rk=; b=CBPYZIbSRC3mmR5+qvKBB6mqmx+e0sudAULwBV2nh3/xZecRlVJIEXIPDELjmdxOxp l04o8u8REdr3neDGUfudYs28uv0fpMrwYaU3XPj7zVcMSiU2hfEFBueE0taUur1gN+6G FFBCieFkYUmIn32zJA/LWzXdTZoZJ7ytvVDOvTJUzJLF7N3FaM0GAJ6l6EWgB6gV7SFP 5kQ/iWuD54x1qGlYtEtcV3djJj2LQWYqNn6TnXzn92j2XsphovYwbDD/k3Zr+U0Dnpz7 /hd1stZsFrVq6wj1ICO/0F7Nd/k8EEVvqIgWWut3PGORwPeG/p0Ke5FEN95kt/HfUk66 Ry5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315189; x=1786919989; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=s37vUBaH0AOjJlqnT0JaqEyfZQb3/rLSBrzaNqBT7rk=; b=HCW2nd2TlRAmI6PL9lGLct6BnFa+UccGXF4uALD4+QL86Jzlr7Xoc5tZUHD286RCv5 ciZSkYLUvkdBh0znTnJsr6bv1QAuzyxKMey2a/nrk/uLdZ8rLjBSMRDhTlxoXbGVOe2Z XPIItbeZAjs1NqtKX3CC8rFBsbhntxKWXcsABFG/cTgIc+3rqrBsSF+3rORCfvqQ2fiQ 9UZNry6uu1nTSVHCJSl+aW8i2WXj+vfXLLgNmiVNdfHQ+N3Af+gaIO6GLXQu6KUfGpxs R8OBU8s/LlTU4Su0FgVJgNaKTS5wEAg9I9YtoLr/ecrubDX1PmBmhh2BROCUrzxzZPUc Hvaw== X-Gm-Message-State: AOJu0Yyd83V+PaqyPChZRAq49oglAf9wKyfSdtZSMcL2hXq96HfRaTmW sh0I50B6THbjVOQinqNviMfqytajufbe4M1F2R0YQvK/fx16Rk2aQBCpulPfGrYd6dovBeB8ggX 4rA/s X-Gm-Gg: AR+sD12ZxLr/4EdIJ720HITvSlSewUddsLUPnNyelGnr9D8DQo1Vs6jGEjKpZAoTv4n 7RmZZPfA7xRFXQtrtO7gzyJeFDSPZGkj/+ho12PYxCJ3KLEBtkZI9qZ8BsiD1UED1JL4njvbquH KgFPWJYmYikO5uHks1I/j7gd7RXnoN4AvtnEMbjXZ94iwC3sL39Xl1eyjhr80IPlKXAIvtOsIf/ //PkIlauLF+lkwNtuGUK5FXRK35vEAAmrAo1FZ+StSPNArS2PogSA/TrBIsccH8QrZtOFTuIXwa siNBLJB0dHEe75+5KDOraNGXqUh+z3yEpqidT2a8lbI2rXCCNFv9aIj0mBMDWesOYunTgSC/kPl AucEXbJPO+8KqKjygOQEETiEinDDHM72+3r9A5l8aFDXCWQFj4Brfw5/V+2GoYYtg92iHy9KT3G CR/cqlrJ7xyMs8XY3yeCfFYJLSAzqstB1tb5dhbkg+4PnazZ0QverHqoESv3myse0R2kp8/gSQ3 ENJfMkzPGvd3Dv6l225 X-Received: by 2002:a17:90b:2545:b0:38e:49c0:75a7 with SMTP id 98e67ed59e1d1-39261feb6a2mr21105031a91.8.1786315188727; Sun, 09 Aug 2026 15:39:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 53/56] disas/riscv: Tidy decode of c.mop.n Date: Sun, 9 Aug 2026 15:35:42 -0700 Message-ID: <20260809223545.730664-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315603137158500 Content-Type: text/plain; charset="utf-8" Merge nested if's. Reuse operand_cmop_imm for zicfiss decode. Return pointers directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 89c2e63941..9682e6f5a5 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -1027,18 +1027,17 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) break; case 2: op =3D rv_op_c_li; break; case 3: - if (dec->cfg && dec->cfg->ext_zcmop) { - if ((((inst >> 2) & 0b111111) =3D=3D 0b100000) && - (((inst >> 11) & 0b11) =3D=3D 0b0)) { - unsigned int cmop_code =3D 0; - cmop_code =3D ((inst >> 8) & 0b111); - op =3D rv_op_c_mop; - if (dec->cfg->ext_zicfiss) { - op =3D (cmop_code =3D=3D 0) ? rv_op_c_sspush : op; - op =3D (cmop_code =3D=3D 2) ? rv_op_c_sspopchk : o= p; + if (dec->cfg + && dec->cfg->ext_zcmop + && ((inst >> 2) & 0b111111) =3D=3D 0b100000 + && ((inst >> 11) & 0b11) =3D=3D 0) { + if (dec->cfg->ext_zicfiss) { + switch (operand_cmop_imm(inst)) { + case 1: return &rvi_opcode_data[rv_op_c_sspush]; + case 5: return &rvi_opcode_data[rv_op_c_sspopchk]; } - break; } + return &rvi_opcode_data[rv_op_c_mop]; } if (inst & ((1 << 12) | (0x1f << 2))) { switch ((inst >> 7) & 0b11111) { --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315602; cv=none; d=zohomail.com; s=zohoarc; b=dICsJ6qI5fzVu1uV4xhNkRVEBkIQpcPLbvT4i+Mwev/2tJ3KftShWh2LjeSjF6Pz14lC/G9zn4c/RQDmxxeltmuPL8tt4DrBMJGdB3RuS+9H5yqA80yt35nj85ORoSqftfxvlyxxbwRgNV5UT922vpjRdmEeRfiPqeApSNl/SfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0FrZuXoDds3/Gdqu4dPVdbsHkEzGZXJO7vs0hM7/2UU=; b=JPxrT1zI6B8v3BDTXLIoVR++52Eq+aEn3HiYo2F9o7eooPDwxXkl4toQ52TR5rz0kpubZp5eZB+oLrzUfnhC6yLSTK0Di8fhnnlvjc2BsOJhKc1RFsgJW7Ad/usXQwZG2f7nAHKhTvlN2hW/oX3I4GehAFrco2llItwli+zUMz4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315602196959.2616835147965; Sun, 9 Aug 2026 15:46:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBO-00061I-56; Sun, 09 Aug 2026 18:39:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBM-0005zs-Vt for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:53 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBL-00087B-0v for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:52 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so1305362a91.3 for ; Sun, 09 Aug 2026 15:39:50 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315190; x=1786919990; darn=nongnu.org; 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:content-type; bh=0FrZuXoDds3/Gdqu4dPVdbsHkEzGZXJO7vs0hM7/2UU=; b=D3VxlATDI1wih6Hpc5dafgxYowAbtxzPcL5CMGgRoDvFFmWbH5HboizaOrrhBXawb/ A9wSa1PdOs2cpL/VRQW4v5y2lXRrsxIfmKGYq0TgFOdtYp1stY7X3Pi74jLhvq22L8sZ YJZOYxuWPYgdBON9cuVhqQrDkrnoKwRi1kIeTglzZNCUqrfi6b9I/zC5hARKONgmH3ov ays7361ApBpwg3AysbAHn5LYPZjpiUCff24VK8Kb5VvhfHp7KnJhRz6huMLAar6CQ4pM DJyVrJHUFCNb56p3eRsZ3mXwEabjRYovAroE4J8zN3gzBWDI+7GdPFoodRMZtz4c/zyv 0IEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315190; x=1786919990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0FrZuXoDds3/Gdqu4dPVdbsHkEzGZXJO7vs0hM7/2UU=; b=RHlFWZtYSmWBn/mkXx+Ygyf5cKh/MQuDc2nDVB+QNPsaxj4hjaxwitLfCcPX8uN58A URLfEVvJ5mR+S7Bdo8PA1LIcSixhs/DsNvWLV95B2n8f/wVNHJF6YpUnUWi2Z29UWdpk TTMD6R6zY9/GbUfcHE4u7/zPjo+hiyykkn7hiQ0Fnf6aIztfyNGKE+vAhqO0jSVmmd6h 2HCOMNMjvP7weH96ANgXzdbEdqcvTVzt1pwi1CVOeLp1bHrQ77kFR3eooqw4NncIR4o/ 5Jb1MOYL9FXXdRjR9RyNYDS/Q0Vf+BrTKOYdwXPLrLEqzxg+s13H9zfnHVod/pkOOw4R ulSw== X-Gm-Message-State: AOJu0YyZGgO0qRZ24GqA3bprxUm/bTLvm90pVzZVUYbo+bscS+nuwHEd /zjoqjTu59w2FTjh2qq7XhmCKLlAH5q1qkORXLwLQaHabB4cU3XpBhziH+blJubWiaLwFPZ9FOR Q1eTW X-Gm-Gg: AR+sD12AfpABpJN4oDwjjoJgt09yC/nXoG2BZI+VIDDKLxDj46s1VGIiF35MgnjCiMX sG/e9NWZ4JNDCuz+B6NVcvXbOIiFMoHeELp1EZR4ro5mDt8GIFFQ8YiicBdTIsJMRUDfF42pMPn LVTr9FMbr+tdgxwj/EjZ1RpvTUp4cFxwQge0dsiv9rR89eIwI6+rbsE002LIJA/yxQT1JIZ4wEm Gmxnef78rLLt0+t2FqIOTHVzjpJwTP8bEwqpB9kRIFTeWm0YNX7GOG3SjLjccooy9rkNLrpxOCu BY9KAreN+pNhW9B5iY8CgtObfHjDGYLISTTwoIHu+2eaUESCdRFCQQhPEjq4E7WE/ZjCx5aM6yL X9Ut8qQIZ2N/o0U/zmgjiaQD2c4wjq3YffBjmsOfqYS0xqm2dj1o9dBMwjxHclCbZXkr4iKHLiC iBhwwZBaWu19dCSXdBMrbA/YCyNyo/Eshnw9FrvM9HIzABmqyR3hBUCHu7XxbX39AxZm9OHWdQj vJkcLys8bLeMSynLRFX X-Received: by 2002:a17:90b:2f03:b0:381:a766:efc9 with SMTP id 98e67ed59e1d1-3903c53404amr40091300a91.7.1786315189577; Sun, 09 Aug 2026 15:39:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 54/56] disas/riscv: Tidy decode of mop.r.n and mop.rr.n Date: Sun, 9 Aug 2026 15:35:43 -0700 Message-ID: <20260809223545.730664-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315603155158500 Content-Type: text/plain; charset="utf-8" Merge nested if's. Reuse operand_mop_{r,rr}_imm for zicfiss decode. Return pointers directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 59 +++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 9682e6f5a5..94d1ed1e20 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -2555,44 +2555,33 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) case 3: op =3D rv_op_csrrc; break; case 4: if (dec->cfg && dec->cfg->ext_zimop) { - int imm_mop5, imm_mop3, reg_num; - if ((extract32(inst, 22, 10) & 0b1011001111) - =3D=3D 0b1000000111) { - imm_mop5 =3D deposit32(deposit32(extract32(inst, 2= 0, 2), - 2, 2, - extract32(inst, 26,= 2)), - 4, 1, extract32(inst, 30, 1)); - op =3D rv_op_mop_r; - /* if zicfiss enabled and mop5 is shadow stack */ - if (dec->cfg->ext_zicfiss && - ((imm_mop5 & 0b11100) =3D=3D 0b11100)) { - /* rs1=3D0 means ssrdp */ - if ((inst & (0b011111 << 15)) =3D=3D 0) { - op =3D rv_op_ssrdp; - } - /* rd=3D0 means sspopchk */ - reg_num =3D (inst >> 15) & 0b011111; - if (((inst & (0b011111 << 7)) =3D=3D 0) && - ((reg_num =3D=3D 1) || (reg_num =3D=3D= 5))) { - op =3D rv_op_sspopchk; + if (((inst >> 22) & 0b1011001111) =3D=3D 0b1000000111)= { + if (dec->cfg->ext_zicfiss + && operand_mop_r_imm(inst) =3D=3D 28) { + switch (operand_rs1(inst)) { + case 0: + return &rvi_opcode_data[rv_op_ssrdp]; + case 1: + case 5: + if (operand_rd(inst) =3D=3D 0) { + return &rvi_opcode_data[rv_op_sspopchk= ]; } + } } - } else if ((extract32(inst, 25, 7) & 0b1011001) - =3D=3D 0b1000001) { - imm_mop3 =3D deposit32(extract32(inst, 26, 2), - 2, 1, extract32(inst, 30, 1)); - op =3D rv_op_mop_rr; - /* if zicfiss enabled and mop3 is shadow stack */ - if (dec->cfg->ext_zicfiss && - ((imm_mop3 & 0b111) =3D=3D 0b111)) { - /* rs1=3D0 and rd=3D0 means sspush */ - reg_num =3D (inst >> 20) & 0b011111; - if (((inst & (0b011111 << 15)) =3D=3D 0) && - ((inst & (0b011111 << 7)) =3D=3D 0) && - ((reg_num =3D=3D 1) || (reg_num =3D=3D= 5))) { - op =3D rv_op_sspush; - } + return &rvi_opcode_data[rv_op_mop_r]; + } + if (((inst >> 25) & 0b1011001) =3D=3D 0b1000001) { + if (dec->cfg->ext_zicfiss + && operand_mop_rr_imm(inst) =3D=3D 7 + && operand_rd(inst) =3D=3D 0 + && operand_rs1(inst) =3D=3D 0) { + switch (operand_rs2(inst)) { + case 1: + case 5: + return &rvi_opcode_data[rv_op_sspush]; + } } + return &rvi_opcode_data[rv_op_mop_rr]; } } break; --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315482; cv=none; d=zohomail.com; s=zohoarc; b=WlpFx2rQ5TQ9J7IXFya37KWggwjDDo8nbnDfvru9mAft4AxV/bCl0nYOw7vFRatqsxMuKP+WsdtnI7W27kqC0Dokc+UHkFj62eQkYFLiSBqH5OvTAR4kmM1dsE5OPOq/RXqqad2z4w5kMeANmyypvAzV7KCY4oecF96f+DF2IR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315482; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ef4sMDbUlvgYJU6OohiFPyBcnDV62/xapLn3/qR89fA=; b=S0E6QrAt8NEaYnB8uSoXFNfQJKrjBzPbokFZY/rqO6XSNhIRvJPp0heduPv/4VRmRrKWAz6K3qN7C/xYdO4+V33QkT2PFu0XhL3JHWT68XiScYZ0coobgaw0RVhJn1p3nIjuFiK/otEt39VzxbPxUm/AUfYYbBG5nshoOZ2Sgnk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315482045711.7518526320806; Sun, 9 Aug 2026 15:44:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBT-00065M-Kd; Sun, 09 Aug 2026 18:39:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBR-00062t-NZ for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:57 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBN-00087v-HA for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:39:57 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-38759bcd877so1234792a91.2 for ; Sun, 09 Aug 2026 15:39:53 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315192; x=1786919992; darn=nongnu.org; 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:content-type; bh=Ef4sMDbUlvgYJU6OohiFPyBcnDV62/xapLn3/qR89fA=; b=v64keN2b5jK6wxFIM8EgXmOlJClcmIHkBe3gboJUdxAA1ZyWhxRwTACW446RuY6uN6 oQoG7vo8keA8yT6wZoPaxsnGPgapVycpt3fBNyMl8r1nsPsXucaZcUSd4KPy9QF60bcx k5ZFNcd1AITGbC5EoKt0sZ1dgpsWalaeL/0mvdPvWHk5IkaR2JypSrcKWZg+3yiQcCR8 yRJN4OgOriPUDKJ0pBGMfSl4rQNXeTibmSbdRROMkrcMzKQTKRevU8QZGuH2Xyy7sdmG SRMuIQEnpwg+XjuP1OGmNunIJMRnC2ULQMmtTCZJo2YYv8089R+jdPxPEf2ZwmKca4LN a/oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315192; x=1786919992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ef4sMDbUlvgYJU6OohiFPyBcnDV62/xapLn3/qR89fA=; b=X0AwI89w6R7IZJsOt8jgLtAF924CHq1L1uiD1V/NhtcKFDmcqeZsxRxlb4uXBDbdrd Ckxx1ECSB0jA9a+uEFhBSlPbDtJ+p1E3WCTfEmAhFEomCHu4BO1MdeUzQhXyziKKUtMr 5vQ7BDQhU8IvHwXj0Z4kmrf8AHKP93YH4IfXJtmMAZt56Bjsk70hYO9DBEyoygCyY1Oi ycoPsQzcpduXnF2HYDw8NVYK8G/9jspHEESCCMLqYcBH24LGExSrSJ3XOAoiXO969Dgw ZhgyrpqceFNp0HVf9pN88EiYNUBZzLsjZpAeKNtbMbe81tR4sxbEUEz+TfzuIOTXWBMG p7zQ== X-Gm-Message-State: AOJu0YzlfDua6ciCPeHQVew8km9RxewkbPCdk18rwpi8mNUIYjelHzKq K/bQSb27yHIYK7jYAiNfoZrNQuLRF0hKZ+MqflByvB4kNelYBUHg1D6ITaYTxkTYh0SzwSohQpE Pti5/ X-Gm-Gg: AR+sD13ejnI9iBiB+YEwGDjxbgxUfK6wHEy5BoxJQLqdJ3sGZkxt/A9jgmXOma67dQr UQDXqYT0WksFu5f7Z+baYG5Jfd0faAojvsOlVmU3DCz4S2GgdaAmYotDuMKH5PhFPxz72UavCYy ffQjQydmT+ERkHQqgG08TA+tX08oUq2b6Knxsbr3kuL6IayeWniSkH1MT+45YuTS8wFJm006uA/ Uc+4PJKwzspvO5vVjHMDYFqXu/zcB5NqNPP13aAkwiTY94cqBlF7rUpCTQr0TjhzrcNh4aiRLkD lq8udZcF1NMPfyrNez8YoThBw/+ulWsXDBwQKS5AxfziJx1FEjBK9QvBUUwg7W+bwOLsbi25HAD eq7QaUEeathRnHG1dR84+gglQuqoqjVOM0Zvvbo2MhJYHEAig7dd3q508kQryxEIkpJV8y8MdqN nWbQYkmXhOX/ctgy0sxYhd1BZnfgbCfQDFA3Py4+jwhYRyhE/5n34z9GjZzHEpfSidItzlbcmz1 5i8HQ0ucVR0rHVishqPMkhWGacB69Y= X-Received: by 2002:a17:90b:4430:b0:390:b41a:b92a with SMTP id 98e67ed59e1d1-390b41acf2cmr13192782a91.4.1786315191324; Sun, 09 Aug 2026 15:39:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 55/56] disas/riscv: Split rvi_opcode_data Date: Sun, 9 Aug 2026 15:35:44 -0700 Message-ID: <20260809223545.730664-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315482780158500 Content-Type: text/plain; charset="utf-8" Generate separate objects for OP() instead of collecting in a table. Return pointers to objects directly. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis --- disas/riscv.c | 1981 +++++++++++++++++++++--------------------- disas/riscv-op.c.inc | 94 +- 2 files changed, 1048 insertions(+), 1027 deletions(-) diff --git a/disas/riscv.c b/disas/riscv.c index 94d1ed1e20..586857502a 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -28,12 +28,6 @@ #include "disas/riscv-xventana.h" #include "disas/riscv-xlrbr.h" =20 -typedef enum { -#define OP(N, ...) rv_op_##N, -#include "riscv-op.c.inc" -#undef OP -} rv_op; - /* register names */ =20 static const char rv_ireg_name_sym[32][5] =3D { @@ -113,140 +107,143 @@ static const rvc_constraint rvcc_true[] =3D { rvc_e= nd }; =20 /* pseudo-instruction metadata */ =20 -static const rv_opcode_data rvi_opcode_data[]; +/* Forward declare the all the opcodes so that we may link them. */ +#define OP(N, ...) static const rv_opcode_data op_##N; +#include "riscv-op.c.inc" +#undef OP =20 static const rv_comp_data rvcp_jal[] =3D { - { &rvi_opcode_data[rv_op_j], rvcc_j }, - { &rvi_opcode_data[rv_op_jal_ra], rvcc_jal_ra }, + { &op_j, rvcc_j }, + { &op_jal_ra, rvcc_jal_ra }, { }, }; =20 static const rv_comp_data rvcp_jalr[] =3D { - { &rvi_opcode_data[rv_op_jr], rvcc_jr }, - { &rvi_opcode_data[rv_op_jalr_ra], rvcc_jalr_ra }, + { &op_jr, rvcc_jr }, + { &op_jalr_ra, rvcc_jalr_ra }, { }, }; =20 static const rv_comp_data rvcp_jr[] =3D { - { &rvi_opcode_data[rv_op_ret], rvcc_ret }, + { &op_ret, rvcc_ret }, { }, }; =20 static const rv_comp_data rvcp_beq[] =3D { - { &rvi_opcode_data[rv_op_beqz], rvcc_beqz }, + { &op_beqz, rvcc_beqz }, { }, }; =20 static const rv_comp_data rvcp_bne[] =3D { - { &rvi_opcode_data[rv_op_bnez], rvcc_bnez }, + { &op_bnez, rvcc_bnez }, { }, }; =20 static const rv_comp_data rvcp_blt[] =3D { - { &rvi_opcode_data[rv_op_bltz], rvcc_bltz }, - { &rvi_opcode_data[rv_op_bgtz], rvcc_bgtz }, + { &op_bltz, rvcc_bltz }, + { &op_bgtz, rvcc_bgtz }, { }, }; =20 static const rv_comp_data rvcp_bge[] =3D { - { &rvi_opcode_data[rv_op_blez], rvcc_blez }, - { &rvi_opcode_data[rv_op_bgez], rvcc_bgez }, + { &op_blez, rvcc_blez }, + { &op_bgez, rvcc_bgez }, { }, }; =20 static const rv_comp_data rvcp_addi[] =3D { - { &rvi_opcode_data[rv_op_mv], rvcc_mv }, + { &op_mv, rvcc_mv }, { }, }; =20 static const rv_comp_data rvcp_mv[] =3D { - { &rvi_opcode_data[rv_op_nop], rvcc_nop }, + { &op_nop, rvcc_nop }, { }, }; =20 static const rv_comp_data rvcp_sltiu[] =3D { - { &rvi_opcode_data[rv_op_seqz], rvcc_seqz }, + { &op_seqz, rvcc_seqz }, { }, }; =20 static const rv_comp_data rvcp_xori[] =3D { - { &rvi_opcode_data[rv_op_not], rvcc_not }, + { &op_not, rvcc_not }, { }, }; =20 static const rv_comp_data rvcp_sub[] =3D { - { &rvi_opcode_data[rv_op_neg], rvcc_neg }, + { &op_neg, rvcc_neg }, { }, }; =20 static const rv_comp_data rvcp_slt[] =3D { - { &rvi_opcode_data[rv_op_sltz], rvcc_sltz }, - { &rvi_opcode_data[rv_op_sgtz], rvcc_sgtz }, + { &op_sltz, rvcc_sltz }, + { &op_sgtz, rvcc_sgtz }, { }, }; =20 static const rv_comp_data rvcp_sltu[] =3D { - { &rvi_opcode_data[rv_op_snez], rvcc_snez }, + { &op_snez, rvcc_snez }, { }, }; =20 static const rv_comp_data rvcp_addiw[] =3D { - { &rvi_opcode_data[rv_op_sext_w], rvcc_sext_w }, + { &op_sext_w, rvcc_sext_w }, { }, }; =20 static const rv_comp_data rvcp_subw[] =3D { - { &rvi_opcode_data[rv_op_negw], rvcc_negw }, + { &op_negw, rvcc_negw }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_s[] =3D { - { &rvi_opcode_data[rv_op_fmv_s], rvcc_fmv_s }, + { &op_fmv_s, rvcc_fmv_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_s[] =3D { - { &rvi_opcode_data[rv_op_fneg_s], rvcc_fneg_s }, + { &op_fneg_s, rvcc_fneg_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_s[] =3D { - { &rvi_opcode_data[rv_op_fabs_s], rvcc_fabs_s }, + { &op_fabs_s, rvcc_fabs_s }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_d[] =3D { - { &rvi_opcode_data[rv_op_fmv_d], rvcc_fmv_d }, + { &op_fmv_d, rvcc_fmv_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_d[] =3D { - { &rvi_opcode_data[rv_op_fneg_d], rvcc_fneg_d }, + { &op_fneg_d, rvcc_fneg_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_d[] =3D { - { &rvi_opcode_data[rv_op_fabs_d], rvcc_fabs_d }, + { &op_fabs_d, rvcc_fabs_d }, { }, }; =20 static const rv_comp_data rvcp_fsgnj_q[] =3D { - { &rvi_opcode_data[rv_op_fmv_q], rvcc_fmv_q }, + { &op_fmv_q, rvcc_fmv_q }, { }, }; =20 static const rv_comp_data rvcp_fsgnjn_q[] =3D { - { &rvi_opcode_data[rv_op_fneg_q], rvcc_fneg_q }, + { &op_fneg_q, rvcc_fneg_q }, { }, }; =20 static const rv_comp_data rvcp_fsgnjx_q[] =3D { - { &rvi_opcode_data[rv_op_fabs_q], rvcc_fabs_q }, + { &op_fabs_q, rvcc_fabs_q }, { }, }; =20 /* Convert compressed insns into normal insns via pseudo expansion. */ -#define DECOMP(X) (static const rv_comp_data[1]){ { &rvi_opcode_data[X], r= vcc_true } } +#define DECOMP(X) (static const rv_comp_data[1]){ { &X, rvcc_true } } =20 /* operand extractors */ =20 @@ -662,11 +659,9 @@ static uint32_t operand_mop_rr_imm(rv_inst inst) =20 /* instruction metadata */ =20 -static const rv_opcode_data rvi_opcode_data[] =3D { -#define OP(N, ...) { __VA_ARGS__ }, +#define OP(N, ...) static const rv_opcode_data op_##N =3D { __VA_ARGS__ }; #include "riscv-op.c.inc" #undef OP -}; =20 /* CSR names */ =20 @@ -953,79 +948,65 @@ static const char *csr_name(int csrno) static const rv_opcode_data *decode_inst_opcode(rv_decode *dec, rv_isa isa) { rv_inst inst =3D dec->inst; - rv_opcode op =3D rv_op_illegal; =20 switch ((inst >> 0) & 0b11) { case 0: switch ((inst >> 13) & 0b111) { case 0: if ((inst >> 5) & 0xff) { - op =3D rv_op_c_addi4spn; + return &op_c_addi4spn; } break; case 1: if (isa =3D=3D rv128) { - op =3D rv_op_c_lq; - } else { - op =3D rv_op_c_fld; + return &op_c_lq; } - break; - case 2: op =3D rv_op_c_lw; break; + return &op_c_fld; + case 2: return &op_c_lw; case 3: if (isa =3D=3D rv32) { - op =3D rv_op_c_flw; - } else { - op =3D rv_op_c_ld; + return &op_c_flw; } - break; + return &op_c_ld; case 4: switch ((inst >> 10) & 0b111) { - case 0: op =3D rv_op_c_lbu; break; + case 0: return &op_c_lbu; case 1: if (((inst >> 6) & 1) =3D=3D 0) { - op =3D rv_op_c_lhu; - } else { - op =3D rv_op_c_lh; + return &op_c_lhu; } - break; - case 2: op =3D rv_op_c_sb; break; + return &op_c_lh; + case 2: return &op_c_sb; case 3: if (((inst >> 6) & 1) =3D=3D 0) { - op =3D rv_op_c_sh; + return &op_c_sh; } break; } break; case 5: if (isa =3D=3D rv128) { - op =3D rv_op_c_sq; - } else { - op =3D rv_op_c_fsd; + return &op_c_sq; } - break; - case 6: op =3D rv_op_c_sw; break; + return &op_c_fsd; + case 6: return &op_c_sw; case 7: if (isa =3D=3D rv32) { - op =3D rv_op_c_fsw; - } else { - op =3D rv_op_c_sd; + return &op_c_fsw; } - break; + return &op_c_sd; } break; case 1: switch ((inst >> 13) & 0b111) { case 0: - op =3D rv_op_c_addi; /* or unspecified HINT */ - break; + return &op_c_addi; /* or unspecified HINT */ case 1: if (isa =3D=3D rv32) { - op =3D rv_op_c_jal; - } else { - op =3D rv_op_c_addiw; + return &op_c_jal; } - break; - case 2: op =3D rv_op_c_li; break; + return &op_c_addiw; + case 2: return &op_c_li; case 3: if (dec->cfg && dec->cfg->ext_zcmop @@ -1033,16 +1014,16 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) && ((inst >> 11) & 0b11) =3D=3D 0) { if (dec->cfg->ext_zicfiss) { switch (operand_cmop_imm(inst)) { - case 1: return &rvi_opcode_data[rv_op_c_sspush]; - case 5: return &rvi_opcode_data[rv_op_c_sspopchk]; + case 1: return &op_c_sspush; + case 5: return &op_c_sspopchk; } } - return &rvi_opcode_data[rv_op_c_mop]; + return &op_c_mop; } if (inst & ((1 << 12) | (0x1f << 2))) { switch ((inst >> 7) & 0b11111) { - case 2: op =3D rv_op_c_addi16sp; break; - default: op =3D rv_op_c_lui; break; + case 2: return &op_c_addi16sp; + default: return &op_c_lui; } } break; @@ -1051,261 +1032,252 @@ static const rv_opcode_data *decode_inst_opcode(r= v_decode *dec, rv_isa isa) case 0: /* For rv32, shamt[5]=3D1 is designated for custom extensi= ons. */ if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { - op =3D rv_op_c_srli; /* or unspecified HINT */ + return &op_c_srli; /* or unspecified HINT */ } break; case 1: /* For rv32, shamt[5]=3D1 is designated for custom extensi= ons. */ if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { - op =3D rv_op_c_srai; /* or unspecified HINT */ + return &op_c_srai; /* or unspecified HINT */ } break; - case 2: op =3D rv_op_c_andi; break; + case 2: return &op_c_andi; case 3: switch (((inst >> 10) & 0b100) | ((inst >> 5) & 0b011)) { - case 0: op =3D rv_op_c_sub; break; - case 1: op =3D rv_op_c_xor; break; - case 2: op =3D rv_op_c_or; break; - case 3: op =3D rv_op_c_and; break; + case 0: return &op_c_sub; + case 1: return &op_c_xor; + case 2: return &op_c_or; + case 3: return &op_c_and; case 4: if (isa !=3D rv32) { - op =3D rv_op_c_subw; + return &op_c_subw; } break; case 5: if (isa !=3D rv32) { - op =3D rv_op_c_addw; + return &op_c_addw; } break; - case 6: op =3D rv_op_c_mul; break; + case 6: return &op_c_mul; case 7: switch ((inst >> 2) & 0b111) { - case 0: op =3D rv_op_c_zext_b; break; - case 1: op =3D rv_op_c_sext_b; break; - case 2: op =3D rv_op_c_zext_h; break; - case 3: op =3D rv_op_c_sext_h; break; - case 4: op =3D rv_op_c_zext_w; break; - case 5: op =3D rv_op_c_not; break; + case 0: return &op_c_zext_b; + case 1: return &op_c_sext_b; + case 2: return &op_c_zext_h; + case 3: return &op_c_sext_h; + case 4: return &op_c_zext_w; + case 5: return &op_c_not; } break; } break; } break; - case 5: op =3D rv_op_c_j; break; - case 6: op =3D rv_op_c_beqz; break; - case 7: op =3D rv_op_c_bnez; break; + case 5: return &op_c_j; + case 6: return &op_c_beqz; + case 7: return &op_c_bnez; } break; case 2: switch ((inst >> 13) & 0b111) { case 0: if (isa !=3D rv32 || (inst & 0x1000) =3D=3D 0) { - op =3D rv_op_c_slli; /* or unspecified HINT */ + return &op_c_slli; /* or unspecified HINT */ } break; case 1: if (isa =3D=3D rv128) { - op =3D rv_op_c_lqsp; - } else { - op =3D rv_op_c_fldsp; + return &op_c_lqsp; } - break; - case 2: op =3D rv_op_c_lwsp; break; + return &op_c_fldsp; + case 2: return &op_c_lwsp; case 3: if (isa =3D=3D rv32) { - op =3D rv_op_c_flwsp; - } else { - op =3D rv_op_c_ldsp; + return &op_c_flwsp; } - break; + return &op_c_ldsp; case 4: switch ((inst >> 12) & 0b1) { case 0: switch ((inst >> 2) & 0b11111) { - case 0: op =3D rv_op_c_jr; break; - default: op =3D rv_op_c_mv; break; + case 0: return &op_c_jr; + default: return &op_c_mv; } break; case 1: switch ((inst >> 2) & 0b11111) { case 0: switch ((inst >> 7) & 0b11111) { - case 0: op =3D rv_op_c_ebreak; break; - default: op =3D rv_op_c_jalr; break; + case 0: return &op_c_ebreak; + default: return &op_c_jalr; } break; - default: op =3D rv_op_c_add; break; + default: return &op_c_add; } break; } break; case 5: if (isa =3D=3D rv128) { - op =3D rv_op_c_sqsp; - } else { - op =3D rv_op_c_fsdsp; - if (dec->cfg && dec->cfg->ext_zcmp && ((inst >> 12) & 0b01= )) { + return &op_c_sqsp; + } + if (dec->cfg) { + if (dec->cfg->ext_zcmp && ((inst >> 12) & 0b01)) { switch ((inst >> 8) & 0b01111) { case 8: if (((inst >> 4) & 0b01111) >=3D 4) { - op =3D rv_op_cm_push; + return &op_cm_push; } break; case 10: if (((inst >> 4) & 0b01111) >=3D 4) { - op =3D rv_op_cm_pop; + return &op_cm_pop; } break; case 12: if (((inst >> 4) & 0b01111) >=3D 4) { - op =3D rv_op_cm_popretz; + return &op_cm_popretz; } break; case 14: if (((inst >> 4) & 0b01111) >=3D 4) { - op =3D rv_op_cm_popret; - } - break; - } - } else { - switch ((inst >> 10) & 0b011) { - case 0: - if (dec->cfg && !dec->cfg->ext_zcmt) { - break; - } - if (((inst >> 2) & 0xFF) >=3D 32) { - op =3D rv_op_cm_jalt; - } else { - op =3D rv_op_cm_jt; - } - break; - case 3: - if (dec->cfg && !dec->cfg->ext_zcmp) { - break; - } - switch ((inst >> 5) & 0b011) { - case 1: op =3D rv_op_cm_mvsa01; break; - case 3: op =3D rv_op_cm_mva01s; break; + return &op_cm_popret; } break; } } + switch ((inst >> 10) & 0b011) { + case 0: + if (!dec->cfg->ext_zcmt) { + break; + } + if (((inst >> 2) & 0xFF) >=3D 32) { + return &op_cm_jalt; + } + return &op_cm_jt; + case 3: + if (!dec->cfg->ext_zcmp) { + break; + } + switch ((inst >> 5) & 0b011) { + case 1: return &op_cm_mvsa01; + case 3: return &op_cm_mva01s; + } + break; + } } - break; - case 6: op =3D rv_op_c_swsp; break; + return &op_c_fsdsp; + case 6: return &op_c_swsp; case 7: if (isa =3D=3D rv32) { - op =3D rv_op_c_fswsp; - } else { - op =3D rv_op_c_sdsp; + return &op_c_fswsp; } - break; + return &op_c_sdsp; } break; case 3: switch ((inst >> 2) & 0b11111) { case 0: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_lb; break; - case 1: op =3D rv_op_lh; break; - case 2: op =3D rv_op_lw; break; - case 3: op =3D rv_op_ld; break; - case 4: op =3D rv_op_lbu; break; - case 5: op =3D rv_op_lhu; break; - case 6: op =3D rv_op_lwu; break; - case 7: op =3D rv_op_ldu; break; + case 0: return &op_lb; + case 1: return &op_lh; + case 2: return &op_lw; + case 3: return &op_ld; + case 4: return &op_lbu; + case 5: return &op_lhu; + case 6: return &op_lwu; + case 7: return &op_ldu; } break; case 1: switch ((inst >> 12) & 0b111) { case 0: switch ((inst >> 20) & 0b111111111111) { - case 40: op =3D rv_op_vl1re8_v; break; - case 552: op =3D rv_op_vl2re8_v; break; - case 1576: op =3D rv_op_vl4re8_v; break; - case 3624: op =3D rv_op_vl8re8_v; break; + case 40: return &op_vl1re8_v; + case 552: return &op_vl2re8_v; + case 1576: return &op_vl4re8_v; + case 3624: return &op_vl8re8_v; } switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vle8_v; break; - case 11: op =3D rv_op_vlm_v; break; - case 16: op =3D rv_op_vle8ff_v; break; + case 0: return &op_vle8_v; + case 11: return &op_vlm_v; + case 16: return &op_vle8ff_v; } break; - case 1: op =3D rv_op_vluxei8_v; break; - case 2: op =3D rv_op_vlse8_v; break; - case 3: op =3D rv_op_vloxei8_v; break; + case 1: return &op_vluxei8_v; + case 2: return &op_vlse8_v; + case 3: return &op_vloxei8_v; } break; - case 1: op =3D rv_op_flh; break; - case 2: op =3D rv_op_flw; break; - case 3: op =3D rv_op_fld; break; - case 4: op =3D rv_op_flq; break; + case 1: return &op_flh; + case 2: return &op_flw; + case 3: return &op_fld; + case 4: return &op_flq; case 5: switch ((inst >> 20) & 0b111111111111) { - case 40: op =3D rv_op_vl1re16_v; break; - case 552: op =3D rv_op_vl2re16_v; break; - case 1576: op =3D rv_op_vl4re16_v; break; - case 3624: op =3D rv_op_vl8re16_v; break; + case 40: return &op_vl1re16_v; + case 552: return &op_vl2re16_v; + case 1576: return &op_vl4re16_v; + case 3624: return &op_vl8re16_v; } switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vle16_v; break; - case 16: op =3D rv_op_vle16ff_v; break; + case 0: return &op_vle16_v; + case 16: return &op_vle16ff_v; } break; - case 1: op =3D rv_op_vluxei16_v; break; - case 2: op =3D rv_op_vlse16_v; break; - case 3: op =3D rv_op_vloxei16_v; break; + case 1: return &op_vluxei16_v; + case 2: return &op_vlse16_v; + case 3: return &op_vloxei16_v; } break; case 6: switch ((inst >> 20) & 0b111111111111) { - case 40: op =3D rv_op_vl1re32_v; break; - case 552: op =3D rv_op_vl2re32_v; break; - case 1576: op =3D rv_op_vl4re32_v; break; - case 3624: op =3D rv_op_vl8re32_v; break; + case 40: return &op_vl1re32_v; + case 552: return &op_vl2re32_v; + case 1576: return &op_vl4re32_v; + case 3624: return &op_vl8re32_v; } switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vle32_v; break; - case 16: op =3D rv_op_vle32ff_v; break; + case 0: return &op_vle32_v; + case 16: return &op_vle32ff_v; } break; - case 1: op =3D rv_op_vluxei32_v; break; - case 2: op =3D rv_op_vlse32_v; break; - case 3: op =3D rv_op_vloxei32_v; break; + case 1: return &op_vluxei32_v; + case 2: return &op_vlse32_v; + case 3: return &op_vloxei32_v; } break; case 7: switch ((inst >> 20) & 0b111111111111) { - case 40: op =3D rv_op_vl1re64_v; break; - case 552: op =3D rv_op_vl2re64_v; break; - case 1576: op =3D rv_op_vl4re64_v; break; - case 3624: op =3D rv_op_vl8re64_v; break; + case 40: return &op_vl1re64_v; + case 552: return &op_vl2re64_v; + case 1576: return &op_vl4re64_v; + case 3624: return &op_vl8re64_v; } switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vle64_v; break; - case 16: op =3D rv_op_vle64ff_v; break; + case 0: return &op_vle64_v; + case 16: return &op_vle64ff_v; } break; - case 1: op =3D rv_op_vluxei64_v; break; - case 2: op =3D rv_op_vlse64_v; break; - case 3: op =3D rv_op_vloxei64_v; break; + case 1: return &op_vluxei64_v; + case 2: return &op_vlse64_v; + case 3: return &op_vloxei64_v; } break; } break; case 3: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fence; break; - case 1: op =3D rv_op_fence_i; break; + case 0: return &op_fence; + case 1: return &op_fence_i; case 2: /* * 'lq' shares the "(...) 010 ..... 0001111" opcode space @@ -1320,204 +1292,203 @@ static const rv_opcode_data *decode_inst_opcode(r= v_decode *dec, rv_isa isa) * Anything that doesn't match these will default to 'lq'. */ switch ((inst >> 17) & 0b11111) { - case 0: op =3D rv_op_cbo_inval; break; - case 1: op =3D rv_op_cbo_clean; break; - case 2: op =3D rv_op_cbo_flush; break; - case 4: op =3D rv_op_cbo_zero; break; - default: op =3D rv_op_lq; break; + case 0: return &op_cbo_inval; + case 1: return &op_cbo_clean; + case 2: return &op_cbo_flush; + case 4: return &op_cbo_zero; + default: return &op_lq; } } break; case 4: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_addi; break; + case 0: return &op_addi; case 1: switch ((inst >> 27) & 0b11111) { - case 0b00000: op =3D rv_op_slli; break; + case 0b00000: return &op_slli; case 0b00001: switch ((inst >> 20) & 0b1111111) { - case 0b0001111: op =3D rv_op_zip; break; + case 0b0001111: return &op_zip; } break; case 0b00010: switch ((inst >> 20) & 0b1111111) { - case 0b0000000: op =3D rv_op_sha256sum0; break; - case 0b0000001: op =3D rv_op_sha256sum1; break; - case 0b0000010: op =3D rv_op_sha256sig0; break; - case 0b0000011: op =3D rv_op_sha256sig1; break; - case 0b0000100: op =3D rv_op_sha512sum0; break; - case 0b0000101: op =3D rv_op_sha512sum1; break; - case 0b0000110: op =3D rv_op_sha512sig0; break; - case 0b0000111: op =3D rv_op_sha512sig1; break; - case 0b0001000: op =3D rv_op_sm3p0; break; - case 0b0001001: op =3D rv_op_sm3p1; break; + case 0b0000000: return &op_sha256sum0; + case 0b0000001: return &op_sha256sum1; + case 0b0000010: return &op_sha256sig0; + case 0b0000011: return &op_sha256sig1; + case 0b0000100: return &op_sha512sum0; + case 0b0000101: return &op_sha512sum1; + case 0b0000110: return &op_sha512sig0; + case 0b0000111: return &op_sha512sig1; + case 0b0001000: return &op_sm3p0; + case 0b0001001: return &op_sm3p1; } break; - case 0b00101: op =3D rv_op_bseti; break; + case 0b00101: return &op_bseti; case 0b00110: switch ((inst >> 20) & 0b1111111) { - case 0b0000000: op =3D rv_op_aes64im; break; + case 0b0000000: return &op_aes64im; default: if (((inst >> 24) & 0b0111) =3D=3D 0b001) { - op =3D rv_op_aes64ks1i; + return &op_aes64ks1i; } break; } break; - case 0b01001: op =3D rv_op_bclri; break; - case 0b01101: op =3D rv_op_binvi; break; + case 0b01001: return &op_bclri; + case 0b01101: return &op_binvi; case 0b01100: switch ((inst >> 20) & 0b1111111) { - case 0b0000000: op =3D rv_op_clz; break; - case 0b0000001: op =3D rv_op_ctz; break; - case 0b0000010: op =3D rv_op_cpop; break; + case 0b0000000: return &op_clz; + case 0b0000001: return &op_ctz; + case 0b0000010: return &op_cpop; /* 0b0000011 */ - case 0b0000100: op =3D rv_op_sext_b; break; - case 0b0000101: op =3D rv_op_sext_h; break; + case 0b0000100: return &op_sext_b; + case 0b0000101: return &op_sext_h; } break; } break; - case 2: op =3D rv_op_slti; break; - case 3: op =3D rv_op_sltiu; break; - case 4: op =3D rv_op_xori; break; + case 2: return &op_slti; + case 3: return &op_sltiu; + case 4: return &op_xori; case 5: switch ((inst >> 27) & 0b11111) { - case 0b00000: op =3D rv_op_srli; break; + case 0b00000: return &op_srli; case 0b00001: switch ((inst >> 20) & 0b1111111) { - case 0b0001111: op =3D rv_op_unzip; break; + case 0b0001111: return &op_unzip; } break; - case 0b00101: op =3D rv_op_orc_b; break; - case 0b01000: op =3D rv_op_srai; break; - case 0b01001: op =3D rv_op_bexti; break; - case 0b01100: op =3D rv_op_rori; break; + case 0b00101: return &op_orc_b; + case 0b01000: return &op_srai; + case 0b01001: return &op_bexti; + case 0b01100: return &op_rori; case 0b01101: switch ((inst >> 20) & 0b1111111) { case 0b0011000: if (isa =3D=3D rv32) { - op =3D rv_op_rev8; + return &op_rev8; } break; case 0b0111000: if (isa =3D=3D rv64) { - op =3D rv_op_rev8; + return &op_rev8; } break; - case 0b0000111: op =3D rv_op_brev8; break; + case 0b0000111: return &op_brev8; } break; } break; - case 6: op =3D rv_op_ori; break; - case 7: op =3D rv_op_andi; break; + case 6: return &op_ori; + case 7: return &op_andi; } break; case 5: - op =3D rv_op_auipc; if (dec->cfg && dec->cfg->ext_zicfilp && (((inst >> 7) & 0b11111) =3D=3D 0b00000)) { - op =3D rv_op_lpad; + return &op_lpad; } - break; + return &op_auipc; case 6: /* OP-IMM-32 */ if (isa =3D=3D rv32) { break; } switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_addiw; break; + case 0: return &op_addiw; case 1: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_slliw; break; - case 2: op =3D rv_op_slli_uw; break; + case 0: return &op_slliw; + case 2: return &op_slli_uw; case 24: switch ((inst >> 20) & 0b11111) { - case 0b00000: op =3D rv_op_clzw; break; - case 0b00001: op =3D rv_op_ctzw; break; - case 0b00010: op =3D rv_op_cpopw; break; + case 0b00000: return &op_clzw; + case 0b00001: return &op_ctzw; + case 0b00010: return &op_cpopw; } break; } break; case 5: switch ((inst >> 25) & 0b1111111) { - case 0: op =3D rv_op_srliw; break; - case 32: op =3D rv_op_sraiw; break; - case 48: op =3D rv_op_roriw; break; + case 0: return &op_srliw; + case 32: return &op_sraiw; + case 48: return &op_roriw; } break; } break; case 8: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_sb; break; - case 1: op =3D rv_op_sh; break; - case 2: op =3D rv_op_sw; break; - case 3: op =3D rv_op_sd; break; - case 4: op =3D rv_op_sq; break; + case 0: return &op_sb; + case 1: return &op_sh; + case 2: return &op_sw; + case 3: return &op_sd; + case 4: return &op_sq; } break; case 9: switch ((inst >> 12) & 0b111) { case 0: switch ((inst >> 20) & 0b111111111111) { - case 40: op =3D rv_op_vs1r_v; break; - case 552: op =3D rv_op_vs2r_v; break; - case 1576: op =3D rv_op_vs4r_v; break; - case 3624: op =3D rv_op_vs8r_v; break; + case 40: return &op_vs1r_v; + case 552: return &op_vs2r_v; + case 1576: return &op_vs4r_v; + case 3624: return &op_vs8r_v; } switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vse8_v; break; - case 11: op =3D rv_op_vsm_v; break; + case 0: return &op_vse8_v; + case 11: return &op_vsm_v; } break; - case 1: op =3D rv_op_vsuxei8_v; break; - case 2: op =3D rv_op_vsse8_v; break; - case 3: op =3D rv_op_vsoxei8_v; break; + case 1: return &op_vsuxei8_v; + case 2: return &op_vsse8_v; + case 3: return &op_vsoxei8_v; } break; - case 1: op =3D rv_op_fsh; break; - case 2: op =3D rv_op_fsw; break; - case 3: op =3D rv_op_fsd; break; - case 4: op =3D rv_op_fsq; break; + case 1: return &op_fsh; + case 2: return &op_fsw; + case 3: return &op_fsd; + case 4: return &op_fsq; case 5: switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vse16_v; break; + case 0: return &op_vse16_v; } break; - case 1: op =3D rv_op_vsuxei16_v; break; - case 2: op =3D rv_op_vsse16_v; break; - case 3: op =3D rv_op_vsoxei16_v; break; + case 1: return &op_vsuxei16_v; + case 2: return &op_vsse16_v; + case 3: return &op_vsoxei16_v; } break; case 6: switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vse32_v; break; + case 0: return &op_vse32_v; } break; - case 1: op =3D rv_op_vsuxei32_v; break; - case 2: op =3D rv_op_vsse32_v; break; - case 3: op =3D rv_op_vsoxei32_v; break; + case 1: return &op_vsuxei32_v; + case 2: return &op_vsse32_v; + case 3: return &op_vsoxei32_v; } break; case 7: switch ((inst >> 26) & 0b111) { case 0: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_vse64_v; break; + case 0: return &op_vse64_v; } break; - case 1: op =3D rv_op_vsuxei64_v; break; - case 2: op =3D rv_op_vsse64_v; break; - case 3: op =3D rv_op_vsoxei64_v; break; + case 1: return &op_vsuxei64_v; + case 2: return &op_vsse64_v; + case 3: return &op_vsoxei64_v; } break; } @@ -1525,153 +1496,150 @@ static const rv_opcode_data *decode_inst_opcode(r= v_decode *dec, rv_isa isa) case 11: switch (((inst >> 24) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_amoadd_b; break; - case 1: op =3D rv_op_amoadd_h; break; - case 2: op =3D rv_op_amoadd_w; break; - case 3: op =3D rv_op_amoadd_d; break; - case 4: op =3D rv_op_amoadd_q; break; - case 8: op =3D rv_op_amoswap_b; break; - case 9: op =3D rv_op_amoswap_h; break; - case 10: op =3D rv_op_amoswap_w; break; - case 11: op =3D rv_op_amoswap_d; break; - case 12: op =3D rv_op_amoswap_q; break; + case 0: return &op_amoadd_b; + case 1: return &op_amoadd_h; + case 2: return &op_amoadd_w; + case 3: return &op_amoadd_d; + case 4: return &op_amoadd_q; + case 8: return &op_amoswap_b; + case 9: return &op_amoswap_h; + case 10: return &op_amoswap_w; + case 11: return &op_amoswap_d; + case 12: return &op_amoswap_q; case 18: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_lr_w; break; + case 0: return &op_lr_w; } break; case 19: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_lr_d; break; + case 0: return &op_lr_d; } break; case 20: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_lr_q; break; + case 0: return &op_lr_q; } break; - case 26: op =3D rv_op_sc_w; break; - case 27: op =3D rv_op_sc_d; break; - case 28: op =3D rv_op_sc_q; break; - case 32: op =3D rv_op_amoxor_b; break; - case 33: op =3D rv_op_amoxor_h; break; - case 34: op =3D rv_op_amoxor_w; break; - case 35: op =3D rv_op_amoxor_d; break; - case 36: op =3D rv_op_amoxor_q; break; - case 40: op =3D rv_op_amocas_b; break; - case 41: op =3D rv_op_amocas_h; break; - case 42: op =3D rv_op_amocas_w; break; - case 43: op =3D rv_op_amocas_d; break; - case 44: op =3D rv_op_amocas_q; break; - case 64: op =3D rv_op_amoor_b; break; - case 65: op =3D rv_op_amoor_h; break; - case 66: op =3D rv_op_amoor_w; break; - case 67: op =3D rv_op_amoor_d; break; - case 68: op =3D rv_op_amoor_q; break; - case 74: op =3D rv_op_ssamoswap_w; break; - case 75: op =3D rv_op_ssamoswap_d; break; - case 96: op =3D rv_op_amoand_b; break; - case 97: op =3D rv_op_amoand_h; break; - case 98: op =3D rv_op_amoand_w; break; - case 99: op =3D rv_op_amoand_d; break; - case 100: op =3D rv_op_amoand_q; break; - case 128: op =3D rv_op_amomin_b; break; - case 129: op =3D rv_op_amomin_h; break; - case 130: op =3D rv_op_amomin_w; break; - case 131: op =3D rv_op_amomin_d; break; - case 132: op =3D rv_op_amomin_q; break; - case 160: op =3D rv_op_amomax_b; break; - case 161: op =3D rv_op_amomax_h; break; - case 162: op =3D rv_op_amomax_w; break; - case 163: op =3D rv_op_amomax_d; break; - case 164: op =3D rv_op_amomax_q; break; - case 192: op =3D rv_op_amominu_b; break; - case 193: op =3D rv_op_amominu_h; break; - case 194: op =3D rv_op_amominu_w; break; - case 195: op =3D rv_op_amominu_d; break; - case 196: op =3D rv_op_amominu_q; break; - case 224: op =3D rv_op_amomaxu_b; break; - case 225: op =3D rv_op_amomaxu_h; break; - case 226: op =3D rv_op_amomaxu_w; break; - case 227: op =3D rv_op_amomaxu_d; break; - case 228: op =3D rv_op_amomaxu_q; break; + case 26: return &op_sc_w; + case 27: return &op_sc_d; + case 28: return &op_sc_q; + case 32: return &op_amoxor_b; + case 33: return &op_amoxor_h; + case 34: return &op_amoxor_w; + case 35: return &op_amoxor_d; + case 36: return &op_amoxor_q; + case 40: return &op_amocas_b; + case 41: return &op_amocas_h; + case 42: return &op_amocas_w; + case 43: return &op_amocas_d; + case 44: return &op_amocas_q; + case 64: return &op_amoor_b; + case 65: return &op_amoor_h; + case 66: return &op_amoor_w; + case 67: return &op_amoor_d; + case 68: return &op_amoor_q; + case 74: return &op_ssamoswap_w; + case 75: return &op_ssamoswap_d; + case 96: return &op_amoand_b; + case 97: return &op_amoand_h; + case 98: return &op_amoand_w; + case 99: return &op_amoand_d; + case 100: return &op_amoand_q; + case 128: return &op_amomin_b; + case 129: return &op_amomin_h; + case 130: return &op_amomin_w; + case 131: return &op_amomin_d; + case 132: return &op_amomin_q; + case 160: return &op_amomax_b; + case 161: return &op_amomax_h; + case 162: return &op_amomax_w; + case 163: return &op_amomax_d; + case 164: return &op_amomax_q; + case 192: return &op_amominu_b; + case 193: return &op_amominu_h; + case 194: return &op_amominu_w; + case 195: return &op_amominu_d; + case 196: return &op_amominu_q; + case 224: return &op_amomaxu_b; + case 225: return &op_amomaxu_h; + case 226: return &op_amomaxu_w; + case 227: return &op_amomaxu_d; + case 228: return &op_amomaxu_q; } break; case 12: switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { - case 0: op =3D rv_op_add; break; - case 1: op =3D rv_op_sll; break; - case 2: op =3D rv_op_slt; break; - case 3: op =3D rv_op_sltu; break; - case 4: op =3D rv_op_xor; break; - case 5: op =3D rv_op_srl; break; - case 6: op =3D rv_op_or; break; - case 7: op =3D rv_op_and; break; - case 8: op =3D rv_op_mul; break; - case 9: op =3D rv_op_mulh; break; - case 10: op =3D rv_op_mulhsu; break; - case 11: op =3D rv_op_mulhu; break; - case 12: op =3D rv_op_div; break; - case 13: op =3D rv_op_divu; break; - case 14: op =3D rv_op_rem; break; - case 15: op =3D rv_op_remu; break; + case 0: return &op_add; + case 1: return &op_sll; + case 2: return &op_slt; + case 3: return &op_sltu; + case 4: return &op_xor; + case 5: return &op_srl; + case 6: return &op_or; + case 7: return &op_and; + case 8: return &op_mul; + case 9: return &op_mulh; + case 10: return &op_mulhsu; + case 11: return &op_mulhu; + case 12: return &op_div; + case 13: return &op_divu; + case 14: return &op_rem; + case 15: return &op_remu; case 36: if (isa =3D=3D rv32 && !((inst >> 20) & 0b11111)) { - op =3D rv_op_zext_h; - } else { - op =3D rv_op_pack; + return &op_zext_h; } - break; - case 39: op =3D rv_op_packh; break; - - case 41: op =3D rv_op_clmul; break; - case 42: op =3D rv_op_clmulr; break; - case 43: op =3D rv_op_clmulh; break; - case 44: op =3D rv_op_min; break; - case 45: op =3D rv_op_minu; break; - case 46: op =3D rv_op_max; break; - case 47: op =3D rv_op_maxu; break; - case 075: op =3D rv_op_czero_eqz; break; - case 077: op =3D rv_op_czero_nez; break; - case 130: op =3D rv_op_sh1add; break; - case 132: op =3D rv_op_sh2add; break; - case 134: op =3D rv_op_sh3add; break; - case 161: op =3D rv_op_bset; break; - case 162: op =3D rv_op_xperm4; break; - case 164: op =3D rv_op_xperm8; break; - case 200: op =3D rv_op_aes64es; break; - case 216: op =3D rv_op_aes64esm; break; - case 232: op =3D rv_op_aes64ds; break; - case 248: op =3D rv_op_aes64dsm; break; - case 256: op =3D rv_op_sub; break; - case 260: op =3D rv_op_xnor; break; - case 261: op =3D rv_op_sra; break; - case 262: op =3D rv_op_orn; break; - case 263: op =3D rv_op_andn; break; - case 289: op =3D rv_op_bclr; break; - case 293: op =3D rv_op_bext; break; - case 320: op =3D rv_op_sha512sum0r; break; - case 328: op =3D rv_op_sha512sum1r; break; - case 336: op =3D rv_op_sha512sig0l; break; - case 344: op =3D rv_op_sha512sig1l; break; - case 368: op =3D rv_op_sha512sig0h; break; - case 376: op =3D rv_op_sha512sig1h; break; - case 385: op =3D rv_op_rol; break; - case 389: op =3D rv_op_ror; break; - case 417: op =3D rv_op_binv; break; - case 504: op =3D rv_op_aes64ks2; break; + return &op_pack; + case 39: return &op_packh; + case 41: return &op_clmul; + case 42: return &op_clmulr; + case 43: return &op_clmulh; + case 44: return &op_min; + case 45: return &op_minu; + case 46: return &op_max; + case 47: return &op_maxu; + case 075: return &op_czero_eqz; + case 077: return &op_czero_nez; + case 130: return &op_sh1add; + case 132: return &op_sh2add; + case 134: return &op_sh3add; + case 161: return &op_bset; + case 162: return &op_xperm4; + case 164: return &op_xperm8; + case 200: return &op_aes64es; + case 216: return &op_aes64esm; + case 232: return &op_aes64ds; + case 248: return &op_aes64dsm; + case 256: return &op_sub; + case 260: return &op_xnor; + case 261: return &op_sra; + case 262: return &op_orn; + case 263: return &op_andn; + case 289: return &op_bclr; + case 293: return &op_bext; + case 320: return &op_sha512sum0r; + case 328: return &op_sha512sum1r; + case 336: return &op_sha512sig0l; + case 344: return &op_sha512sig1l; + case 368: return &op_sha512sig0h; + case 376: return &op_sha512sig1h; + case 385: return &op_rol; + case 389: return &op_ror; + case 417: return &op_binv; + case 504: return &op_aes64ks2; } switch ((inst >> 25) & 0b0011111) { - case 17: op =3D rv_op_aes32esi; break; - case 19: op =3D rv_op_aes32esmi; break; - case 21: op =3D rv_op_aes32dsi; break; - case 23: op =3D rv_op_aes32dsmi; break; - case 24: op =3D rv_op_sm4ed; break; - case 26: op =3D rv_op_sm4ks; break; + case 17: return &op_aes32esi; + case 19: return &op_aes32esmi; + case 21: return &op_aes32dsi; + case 23: return &op_aes32dsmi; + case 24: return &op_sm4ed; + case 26: return &op_sm4ks; } break; - case 13: op =3D rv_op_lui; break; + case 13: return &op_lui; case 14: /* OP-32 */ if (isa =3D=3D rv32) { @@ -1679,317 +1647,317 @@ static const rv_opcode_data *decode_inst_opcode(r= v_decode *dec, rv_isa isa) } switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { - case 0: op =3D rv_op_addw; break; - case 1: op =3D rv_op_sllw; break; - case 5: op =3D rv_op_srlw; break; - case 8: op =3D rv_op_mulw; break; - case 12: op =3D rv_op_divw; break; - case 13: op =3D rv_op_divuw; break; - case 14: op =3D rv_op_remw; break; - case 15: op =3D rv_op_remuw; break; - case 32: op =3D rv_op_add_uw; break; + case 0: return &op_addw; + case 1: return &op_sllw; + case 5: return &op_srlw; + case 8: return &op_mulw; + case 12: return &op_divw; + case 13: return &op_divuw; + case 14: return &op_remw; + case 15: return &op_remuw; + case 32: return &op_add_uw; case 36: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_zext_h; break; - default: op =3D rv_op_packw; break; + case 0: return &op_zext_h; + default: return &op_packw; } break; - case 130: op =3D rv_op_sh1add_uw; break; - case 132: op =3D rv_op_sh2add_uw; break; - case 134: op =3D rv_op_sh3add_uw; break; - case 256: op =3D rv_op_subw; break; - case 261: op =3D rv_op_sraw; break; - case 385: op =3D rv_op_rolw; break; - case 389: op =3D rv_op_rorw; break; + case 130: return &op_sh1add_uw; + case 132: return &op_sh2add_uw; + case 134: return &op_sh3add_uw; + case 256: return &op_subw; + case 261: return &op_sraw; + case 385: return &op_rolw; + case 389: return &op_rorw; } break; case 16: switch ((inst >> 25) & 0b11) { - case 0: op =3D rv_op_fmadd_s; break; - case 1: op =3D rv_op_fmadd_d; break; - case 3: op =3D rv_op_fmadd_q; break; + case 0: return &op_fmadd_s; + case 1: return &op_fmadd_d; + case 3: return &op_fmadd_q; } break; case 17: switch ((inst >> 25) & 0b11) { - case 0: op =3D rv_op_fmsub_s; break; - case 1: op =3D rv_op_fmsub_d; break; - case 3: op =3D rv_op_fmsub_q; break; + case 0: return &op_fmsub_s; + case 1: return &op_fmsub_d; + case 3: return &op_fmsub_q; } break; case 18: switch ((inst >> 25) & 0b11) { - case 0: op =3D rv_op_fnmsub_s; break; - case 1: op =3D rv_op_fnmsub_d; break; - case 3: op =3D rv_op_fnmsub_q; break; + case 0: return &op_fnmsub_s; + case 1: return &op_fnmsub_d; + case 3: return &op_fnmsub_q; } break; case 19: switch ((inst >> 25) & 0b11) { - case 0: op =3D rv_op_fnmadd_s; break; - case 1: op =3D rv_op_fnmadd_d; break; - case 3: op =3D rv_op_fnmadd_q; break; + case 0: return &op_fnmadd_s; + case 1: return &op_fnmadd_d; + case 3: return &op_fnmadd_q; } break; case 20: switch ((inst >> 25) & 0b1111111) { - case 0: op =3D rv_op_fadd_s; break; - case 1: op =3D rv_op_fadd_d; break; - case 3: op =3D rv_op_fadd_q; break; - case 4: op =3D rv_op_fsub_s; break; - case 5: op =3D rv_op_fsub_d; break; - case 7: op =3D rv_op_fsub_q; break; - case 8: op =3D rv_op_fmul_s; break; - case 9: op =3D rv_op_fmul_d; break; - case 11: op =3D rv_op_fmul_q; break; - case 12: op =3D rv_op_fdiv_s; break; - case 13: op =3D rv_op_fdiv_d; break; - case 15: op =3D rv_op_fdiv_q; break; + case 0: return &op_fadd_s; + case 1: return &op_fadd_d; + case 3: return &op_fadd_q; + case 4: return &op_fsub_s; + case 5: return &op_fsub_d; + case 7: return &op_fsub_q; + case 8: return &op_fmul_s; + case 9: return &op_fmul_d; + case 11: return &op_fmul_q; + case 12: return &op_fdiv_s; + case 13: return &op_fdiv_d; + case 15: return &op_fdiv_q; case 16: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fsgnj_s; break; - case 1: op =3D rv_op_fsgnjn_s; break; - case 2: op =3D rv_op_fsgnjx_s; break; + case 0: return &op_fsgnj_s; + case 1: return &op_fsgnjn_s; + case 2: return &op_fsgnjx_s; } break; case 17: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fsgnj_d; break; - case 1: op =3D rv_op_fsgnjn_d; break; - case 2: op =3D rv_op_fsgnjx_d; break; + case 0: return &op_fsgnj_d; + case 1: return &op_fsgnjn_d; + case 2: return &op_fsgnjx_d; } break; case 19: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fsgnj_q; break; - case 1: op =3D rv_op_fsgnjn_q; break; - case 2: op =3D rv_op_fsgnjx_q; break; + case 0: return &op_fsgnj_q; + case 1: return &op_fsgnjn_q; + case 2: return &op_fsgnjx_q; } break; case 20: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fmin_s; break; - case 1: op =3D rv_op_fmax_s; break; - case 2: op =3D rv_op_fminm_s; break; - case 3: op =3D rv_op_fmaxm_s; break; + case 0: return &op_fmin_s; + case 1: return &op_fmax_s; + case 2: return &op_fminm_s; + case 3: return &op_fmaxm_s; } break; case 21: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fmin_d; break; - case 1: op =3D rv_op_fmax_d; break; - case 2: op =3D rv_op_fminm_d; break; - case 3: op =3D rv_op_fmaxm_d; break; + case 0: return &op_fmin_d; + case 1: return &op_fmax_d; + case 2: return &op_fminm_d; + case 3: return &op_fmaxm_d; } break; case 22: switch (((inst >> 12) & 0b111)) { - case 2: op =3D rv_op_fminm_h; break; - case 3: op =3D rv_op_fmaxm_h; break; + case 2: return &op_fminm_h; + case 3: return &op_fmaxm_h; } break; case 23: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fmin_q; break; - case 1: op =3D rv_op_fmax_q; break; - case 2: op =3D rv_op_fminm_q; break; - case 3: op =3D rv_op_fmaxm_q; break; + case 0: return &op_fmin_q; + case 1: return &op_fmax_q; + case 2: return &op_fminm_q; + case 3: return &op_fmaxm_q; } break; case 32: switch ((inst >> 20) & 0b11111) { - case 1: op =3D rv_op_fcvt_s_d; break; - case 3: op =3D rv_op_fcvt_s_q; break; - case 4: op =3D rv_op_fround_s; break; - case 5: op =3D rv_op_froundnx_s; break; - case 6: op =3D rv_op_fcvt_s_bf16; break; + case 1: return &op_fcvt_s_d; + case 3: return &op_fcvt_s_q; + case 4: return &op_fround_s; + case 5: return &op_froundnx_s; + case 6: return &op_fcvt_s_bf16; } break; case 33: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_d_s; break; - case 3: op =3D rv_op_fcvt_d_q; break; - case 4: op =3D rv_op_fround_d; break; - case 5: op =3D rv_op_froundnx_d; break; + case 0: return &op_fcvt_d_s; + case 3: return &op_fcvt_d_q; + case 4: return &op_fround_d; + case 5: return &op_froundnx_d; } break; case 34: switch (((inst >> 20) & 0b11111)) { - case 4: op =3D rv_op_fround_h; break; - case 5: op =3D rv_op_froundnx_h; break; - case 8: op =3D rv_op_fcvt_bf16_s; break; + case 4: return &op_fround_h; + case 5: return &op_froundnx_h; + case 8: return &op_fcvt_bf16_s; } break; case 35: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_q_s; break; - case 1: op =3D rv_op_fcvt_q_d; break; - case 4: op =3D rv_op_fround_q; break; - case 5: op =3D rv_op_froundnx_q; break; + case 0: return &op_fcvt_q_s; + case 1: return &op_fcvt_q_d; + case 4: return &op_fround_q; + case 5: return &op_froundnx_q; } break; case 44: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fsqrt_s; break; + case 0: return &op_fsqrt_s; } break; case 45: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fsqrt_d; break; + case 0: return &op_fsqrt_d; } break; case 47: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fsqrt_q; break; + case 0: return &op_fsqrt_q; } break; case 80: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fle_s; break; - case 1: op =3D rv_op_flt_s; break; - case 2: op =3D rv_op_feq_s; break; - case 4: op =3D rv_op_fleq_s; break; - case 5: op =3D rv_op_fltq_s; break; + case 0: return &op_fle_s; + case 1: return &op_flt_s; + case 2: return &op_feq_s; + case 4: return &op_fleq_s; + case 5: return &op_fltq_s; } break; case 81: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fle_d; break; - case 1: op =3D rv_op_flt_d; break; - case 2: op =3D rv_op_feq_d; break; - case 4: op =3D rv_op_fleq_d; break; - case 5: op =3D rv_op_fltq_d; break; + case 0: return &op_fle_d; + case 1: return &op_flt_d; + case 2: return &op_feq_d; + case 4: return &op_fleq_d; + case 5: return &op_fltq_d; } break; case 82: switch (((inst >> 12) & 0b111)) { - case 4: op =3D rv_op_fleq_h; break; - case 5: op =3D rv_op_fltq_h; break; + case 4: return &op_fleq_h; + case 5: return &op_fltq_h; } break; case 83: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_fle_q; break; - case 1: op =3D rv_op_flt_q; break; - case 2: op =3D rv_op_feq_q; break; - case 4: op =3D rv_op_fleq_q; break; - case 5: op =3D rv_op_fltq_q; break; + case 0: return &op_fle_q; + case 1: return &op_flt_q; + case 2: return &op_feq_q; + case 4: return &op_fleq_q; + case 5: return &op_fltq_q; } break; case 89: switch (((inst >> 12) & 0b111)) { - case 0: op =3D rv_op_fmvp_d_x; break; + case 0: return &op_fmvp_d_x; } break; case 91: switch (((inst >> 12) & 0b111)) { - case 0: op =3D rv_op_fmvp_q_x; break; + case 0: return &op_fmvp_q_x; } break; case 96: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_w_s; break; - case 1: op =3D rv_op_fcvt_wu_s; break; - case 2: op =3D rv_op_fcvt_l_s; break; - case 3: op =3D rv_op_fcvt_lu_s; break; + case 0: return &op_fcvt_w_s; + case 1: return &op_fcvt_wu_s; + case 2: return &op_fcvt_l_s; + case 3: return &op_fcvt_lu_s; } break; case 97: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_w_d; break; - case 1: op =3D rv_op_fcvt_wu_d; break; - case 2: op =3D rv_op_fcvt_l_d; break; - case 3: op =3D rv_op_fcvt_lu_d; break; - case 8: op =3D rv_op_fcvtmod_w_d; break; + case 0: return &op_fcvt_w_d; + case 1: return &op_fcvt_wu_d; + case 2: return &op_fcvt_l_d; + case 3: return &op_fcvt_lu_d; + case 8: return &op_fcvtmod_w_d; } break; case 99: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_w_q; break; - case 1: op =3D rv_op_fcvt_wu_q; break; - case 2: op =3D rv_op_fcvt_l_q; break; - case 3: op =3D rv_op_fcvt_lu_q; break; + case 0: return &op_fcvt_w_q; + case 1: return &op_fcvt_wu_q; + case 2: return &op_fcvt_l_q; + case 3: return &op_fcvt_lu_q; } break; case 104: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_s_w; break; - case 1: op =3D rv_op_fcvt_s_wu; break; - case 2: op =3D rv_op_fcvt_s_l; break; - case 3: op =3D rv_op_fcvt_s_lu; break; + case 0: return &op_fcvt_s_w; + case 1: return &op_fcvt_s_wu; + case 2: return &op_fcvt_s_l; + case 3: return &op_fcvt_s_lu; } break; case 105: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_d_w; break; - case 1: op =3D rv_op_fcvt_d_wu; break; - case 2: op =3D rv_op_fcvt_d_l; break; - case 3: op =3D rv_op_fcvt_d_lu; break; + case 0: return &op_fcvt_d_w; + case 1: return &op_fcvt_d_wu; + case 2: return &op_fcvt_d_l; + case 3: return &op_fcvt_d_lu; } break; case 107: switch ((inst >> 20) & 0b11111) { - case 0: op =3D rv_op_fcvt_q_w; break; - case 1: op =3D rv_op_fcvt_q_wu; break; - case 2: op =3D rv_op_fcvt_q_l; break; - case 3: op =3D rv_op_fcvt_q_lu; break; + case 0: return &op_fcvt_q_w; + case 1: return &op_fcvt_q_wu; + case 2: return &op_fcvt_q_l; + case 3: return &op_fcvt_q_lu; } break; case 112: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_x_s; break; - case 1: op =3D rv_op_fclass_s; break; + case 0: return &op_fmv_x_s; + case 1: return &op_fclass_s; } break; case 113: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_x_d; break; - case 1: op =3D rv_op_fclass_d; break; - case 8: op =3D rv_op_fmvh_x_d; break; + case 0: return &op_fmv_x_d; + case 1: return &op_fclass_d; + case 8: return &op_fmvh_x_d; } break; case 114: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_x_h; break; + case 0: return &op_fmv_x_h; } break; case 115: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_x_q; break; - case 1: op =3D rv_op_fclass_q; break; - case 8: op =3D rv_op_fmvh_x_q; break; + case 0: return &op_fmv_x_q; + case 1: return &op_fclass_q; + case 8: return &op_fmvh_x_q; } break; case 120: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_s_x; break; - case 8: op =3D rv_op_fli_s; break; + case 0: return &op_fmv_s_x; + case 8: return &op_fli_s; } break; case 121: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_d_x; break; - case 8: op =3D rv_op_fli_d; break; + case 0: return &op_fmv_d_x; + case 8: return &op_fli_d; } break; case 122: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_h_x; break; - case 8: op =3D rv_op_fli_h; break; + case 0: return &op_fmv_h_x; + case 8: return &op_fli_h; } break; case 123: switch (((inst >> 17) & 0b11111000) | ((inst >> 12) & 0b00000111)) { - case 0: op =3D rv_op_fmv_q_x; break; - case 8: op =3D rv_op_fli_q; break; + case 0: return &op_fmv_q_x; + case 8: return &op_fli_q; } break; } @@ -1998,484 +1966,537 @@ static const rv_opcode_data *decode_inst_opcode(r= v_decode *dec, rv_isa isa) switch ((inst >> 12) & 0b111) { case 0: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vadd_vv; break; - case 1: op =3D rv_op_vandn_vv; break; - case 2: op =3D rv_op_vsub_vv; break; - case 4: op =3D rv_op_vminu_vv; break; - case 5: op =3D rv_op_vmin_vv; break; - case 6: op =3D rv_op_vmaxu_vv; break; - case 7: op =3D rv_op_vmax_vv; break; - case 9: op =3D rv_op_vand_vv; break; - case 10: op =3D rv_op_vor_vv; break; - case 11: op =3D rv_op_vxor_vv; break; - case 12: op =3D rv_op_vrgather_vv; break; - case 14: op =3D rv_op_vrgatherei16_vv; break; + case 0: return &op_vadd_vv; + case 1: return &op_vandn_vv; + case 2: return &op_vsub_vv; + case 4: return &op_vminu_vv; + case 5: return &op_vmin_vv; + case 6: return &op_vmaxu_vv; + case 7: return &op_vmax_vv; + case 9: return &op_vand_vv; + case 10: return &op_vor_vv; + case 11: return &op_vxor_vv; + case 12: return &op_vrgather_vv; + case 14: return &op_vrgatherei16_vv; case 16: if (((inst >> 25) & 1) =3D=3D 0) { - op =3D rv_op_vadc_vvm; + return &op_vadc_vvm; } break; - case 17: op =3D rv_op_vmadc_vvm; break; + case 17: return &op_vmadc_vvm; case 18: if (((inst >> 25) & 1) =3D=3D 0) { - op =3D rv_op_vsbc_vvm; + return &op_vsbc_vvm; } break; - case 19: op =3D rv_op_vmsbc_vvm; break; - case 20: op =3D rv_op_vror_vv; break; - case 21: op =3D rv_op_vrol_vv; break; + case 19: return &op_vmsbc_vvm; + case 20: return &op_vror_vv; + case 21: return &op_vrol_vv; case 23: - if (((inst >> 20) & 0b111111) =3D=3D 32) - op =3D rv_op_vmv_v_v; - else if (((inst >> 25) & 1) =3D=3D 0) - op =3D rv_op_vmerge_vvm; + if (((inst >> 20) & 0b111111) =3D=3D 32) { + return &op_vmv_v_v; + } else if (((inst >> 25) & 1) =3D=3D 0) { + return &op_vmerge_vvm; + } break; - case 24: op =3D rv_op_vmseq_vv; break; - case 25: op =3D rv_op_vmsne_vv; break; - case 26: op =3D rv_op_vmsltu_vv; break; - case 27: op =3D rv_op_vmslt_vv; break; - case 28: op =3D rv_op_vmsleu_vv; break; - case 29: op =3D rv_op_vmsle_vv; break; - case 32: op =3D rv_op_vsaddu_vv; break; - case 33: op =3D rv_op_vsadd_vv; break; - case 34: op =3D rv_op_vssubu_vv; break; - case 35: op =3D rv_op_vssub_vv; break; - case 37: op =3D rv_op_vsll_vv; break; - case 39: op =3D rv_op_vsmul_vv; break; - case 40: op =3D rv_op_vsrl_vv; break; - case 41: op =3D rv_op_vsra_vv; break; - case 42: op =3D rv_op_vssrl_vv; break; - case 43: op =3D rv_op_vssra_vv; break; - case 44: op =3D rv_op_vnsrl_wv; break; - case 45: op =3D rv_op_vnsra_wv; break; - case 46: op =3D rv_op_vnclipu_wv; break; - case 47: op =3D rv_op_vnclip_wv; break; - case 48: op =3D rv_op_vwredsumu_vs; break; - case 49: op =3D rv_op_vwredsum_vs; break; - case 53: op =3D rv_op_vwsll_vv; break; + case 24: return &op_vmseq_vv; + case 25: return &op_vmsne_vv; + case 26: return &op_vmsltu_vv; + case 27: return &op_vmslt_vv; + case 28: return &op_vmsleu_vv; + case 29: return &op_vmsle_vv; + case 32: return &op_vsaddu_vv; + case 33: return &op_vsadd_vv; + case 34: return &op_vssubu_vv; + case 35: return &op_vssub_vv; + case 37: return &op_vsll_vv; + case 39: return &op_vsmul_vv; + case 40: return &op_vsrl_vv; + case 41: return &op_vsra_vv; + case 42: return &op_vssrl_vv; + case 43: return &op_vssra_vv; + case 44: return &op_vnsrl_wv; + case 45: return &op_vnsra_wv; + case 46: return &op_vnclipu_wv; + case 47: return &op_vnclip_wv; + case 48: return &op_vwredsumu_vs; + case 49: return &op_vwredsum_vs; + case 53: return &op_vwsll_vv; } break; case 1: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vfadd_vv; break; - case 1: op =3D rv_op_vfredusum_vs; break; - case 2: op =3D rv_op_vfsub_vv; break; - case 3: op =3D rv_op_vfredosum_vs; break; - case 4: op =3D rv_op_vfmin_vv; break; - case 5: op =3D rv_op_vfredmin_vs; break; - case 6: op =3D rv_op_vfmax_vv; break; - case 7: op =3D rv_op_vfredmax_vs; break; - case 8: op =3D rv_op_vfsgnj_vv; break; - case 9: op =3D rv_op_vfsgnjn_vv; break; - case 10: op =3D rv_op_vfsgnjx_vv; break; + case 0: return &op_vfadd_vv; + case 1: return &op_vfredusum_vs; + case 2: return &op_vfsub_vv; + case 3: return &op_vfredosum_vs; + case 4: return &op_vfmin_vv; + case 5: return &op_vfredmin_vs; + case 6: return &op_vfmax_vv; + case 7: return &op_vfredmax_vs; + case 8: return &op_vfsgnj_vv; + case 9: return &op_vfsgnjn_vv; + case 10: return &op_vfsgnjx_vv; case 16: switch ((inst >> 15) & 0b11111) { - case 0: if ((inst >> 25) & 1) op =3D rv_op_vfmv_f_s; b= reak; + case 0: + if ((inst >> 25) & 1) { + return &op_vfmv_f_s; + } } break; case 18: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_vfcvt_xu_f_v; break; - case 1: op =3D rv_op_vfcvt_x_f_v; break; - case 2: op =3D rv_op_vfcvt_f_xu_v; break; - case 3: op =3D rv_op_vfcvt_f_x_v; break; - case 6: op =3D rv_op_vfcvt_rtz_xu_f_v; break; - case 7: op =3D rv_op_vfcvt_rtz_x_f_v; break; - case 8: op =3D rv_op_vfwcvt_xu_f_v; break; - case 9: op =3D rv_op_vfwcvt_x_f_v; break; - case 10: op =3D rv_op_vfwcvt_f_xu_v; break; - case 11: op =3D rv_op_vfwcvt_f_x_v; break; - case 12: op =3D rv_op_vfwcvt_f_f_v; break; - case 13: op =3D rv_op_vfwcvtbf16_f_f_v; break; - case 14: op =3D rv_op_vfwcvt_rtz_xu_f_v; break; - case 15: op =3D rv_op_vfwcvt_rtz_x_f_v; break; - case 16: op =3D rv_op_vfncvt_xu_f_w; break; - case 17: op =3D rv_op_vfncvt_x_f_w; break; - case 18: op =3D rv_op_vfncvt_f_xu_w; break; - case 19: op =3D rv_op_vfncvt_f_x_w; break; - case 20: op =3D rv_op_vfncvt_f_f_w; break; - case 21: op =3D rv_op_vfncvt_rod_f_f_w; break; - case 22: op =3D rv_op_vfncvt_rtz_xu_f_w; break; - case 23: op =3D rv_op_vfncvt_rtz_x_f_w; break; - case 29: op =3D rv_op_vfncvtbf16_f_f_w; break; + case 0: return &op_vfcvt_xu_f_v; + case 1: return &op_vfcvt_x_f_v; + case 2: return &op_vfcvt_f_xu_v; + case 3: return &op_vfcvt_f_x_v; + case 6: return &op_vfcvt_rtz_xu_f_v; + case 7: return &op_vfcvt_rtz_x_f_v; + case 8: return &op_vfwcvt_xu_f_v; + case 9: return &op_vfwcvt_x_f_v; + case 10: return &op_vfwcvt_f_xu_v; + case 11: return &op_vfwcvt_f_x_v; + case 12: return &op_vfwcvt_f_f_v; + case 13: return &op_vfwcvtbf16_f_f_v; + case 14: return &op_vfwcvt_rtz_xu_f_v; + case 15: return &op_vfwcvt_rtz_x_f_v; + case 16: return &op_vfncvt_xu_f_w; + case 17: return &op_vfncvt_x_f_w; + case 18: return &op_vfncvt_f_xu_w; + case 19: return &op_vfncvt_f_x_w; + case 20: return &op_vfncvt_f_f_w; + case 21: return &op_vfncvt_rod_f_f_w; + case 22: return &op_vfncvt_rtz_xu_f_w; + case 23: return &op_vfncvt_rtz_x_f_w; + case 29: return &op_vfncvtbf16_f_f_w; } break; case 19: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_vfsqrt_v; break; - case 4: op =3D rv_op_vfrsqrt7_v; break; - case 5: op =3D rv_op_vfrec7_v; break; - case 16: op =3D rv_op_vfclass_v; break; + case 0: return &op_vfsqrt_v; + case 4: return &op_vfrsqrt7_v; + case 5: return &op_vfrec7_v; + case 16: return &op_vfclass_v; } break; - case 24: op =3D rv_op_vmfeq_vv; break; - case 25: op =3D rv_op_vmfle_vv; break; - case 27: op =3D rv_op_vmflt_vv; break; - case 28: op =3D rv_op_vmfne_vv; break; - case 32: op =3D rv_op_vfdiv_vv; break; - case 36: op =3D rv_op_vfmul_vv; break; - case 40: op =3D rv_op_vfmadd_vv; break; - case 41: op =3D rv_op_vfnmadd_vv; break; - case 42: op =3D rv_op_vfmsub_vv; break; - case 43: op =3D rv_op_vfnmsub_vv; break; - case 44: op =3D rv_op_vfmacc_vv; break; - case 45: op =3D rv_op_vfnmacc_vv; break; - case 46: op =3D rv_op_vfmsac_vv; break; - case 47: op =3D rv_op_vfnmsac_vv; break; - case 48: op =3D rv_op_vfwadd_vv; break; - case 49: op =3D rv_op_vfwredusum_vs; break; - case 50: op =3D rv_op_vfwsub_vv; break; - case 51: op =3D rv_op_vfwredosum_vs; break; - case 52: op =3D rv_op_vfwadd_wv; break; - case 54: op =3D rv_op_vfwsub_wv; break; - case 56: op =3D rv_op_vfwmul_vv; break; - case 59: op =3D rv_op_vfwmaccbf16_vv; break; - case 60: op =3D rv_op_vfwmacc_vv; break; - case 61: op =3D rv_op_vfwnmacc_vv; break; - case 62: op =3D rv_op_vfwmsac_vv; break; - case 63: op =3D rv_op_vfwnmsac_vv; break; + case 24: return &op_vmfeq_vv; + case 25: return &op_vmfle_vv; + case 27: return &op_vmflt_vv; + case 28: return &op_vmfne_vv; + case 32: return &op_vfdiv_vv; + case 36: return &op_vfmul_vv; + case 40: return &op_vfmadd_vv; + case 41: return &op_vfnmadd_vv; + case 42: return &op_vfmsub_vv; + case 43: return &op_vfnmsub_vv; + case 44: return &op_vfmacc_vv; + case 45: return &op_vfnmacc_vv; + case 46: return &op_vfmsac_vv; + case 47: return &op_vfnmsac_vv; + case 48: return &op_vfwadd_vv; + case 49: return &op_vfwredusum_vs; + case 50: return &op_vfwsub_vv; + case 51: return &op_vfwredosum_vs; + case 52: return &op_vfwadd_wv; + case 54: return &op_vfwsub_wv; + case 56: return &op_vfwmul_vv; + case 59: return &op_vfwmaccbf16_vv; + case 60: return &op_vfwmacc_vv; + case 61: return &op_vfwnmacc_vv; + case 62: return &op_vfwmsac_vv; + case 63: return &op_vfwnmsac_vv; } break; case 2: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vredsum_vs; break; - case 1: op =3D rv_op_vredand_vs; break; - case 2: op =3D rv_op_vredor_vs; break; - case 3: op =3D rv_op_vredxor_vs; break; - case 4: op =3D rv_op_vredminu_vs; break; - case 5: op =3D rv_op_vredmin_vs; break; - case 6: op =3D rv_op_vredmaxu_vs; break; - case 7: op =3D rv_op_vredmax_vs; break; - case 8: op =3D rv_op_vaaddu_vv; break; - case 9: op =3D rv_op_vaadd_vv; break; - case 10: op =3D rv_op_vasubu_vv; break; - case 11: op =3D rv_op_vasub_vv; break; - case 12: op =3D rv_op_vclmul_vv; break; - case 13: op =3D rv_op_vclmulh_vv; break; + case 0: return &op_vredsum_vs; + case 1: return &op_vredand_vs; + case 2: return &op_vredor_vs; + case 3: return &op_vredxor_vs; + case 4: return &op_vredminu_vs; + case 5: return &op_vredmin_vs; + case 6: return &op_vredmaxu_vs; + case 7: return &op_vredmax_vs; + case 8: return &op_vaaddu_vv; + case 9: return &op_vaadd_vv; + case 10: return &op_vasubu_vv; + case 11: return &op_vasub_vv; + case 12: return &op_vclmul_vv; + case 13: return &op_vclmulh_vv; case 16: switch ((inst >> 15) & 0b11111) { - case 0: if ((inst >> 25) & 1) op =3D rv_op_vmv_x_s; br= eak; - case 16: op =3D rv_op_vcpop_m; break; - case 17: op =3D rv_op_vfirst_m; break; + case 0: + if ((inst >> 25) & 1) { + return &op_vmv_x_s; + } + break; + case 16: return &op_vcpop_m; + case 17: return &op_vfirst_m; } break; case 18: switch ((inst >> 15) & 0b11111) { - case 2: op =3D rv_op_vzext_vf8; break; - case 3: op =3D rv_op_vsext_vf8; break; - case 4: op =3D rv_op_vzext_vf4; break; - case 5: op =3D rv_op_vsext_vf4; break; - case 6: op =3D rv_op_vzext_vf2; break; - case 7: op =3D rv_op_vsext_vf2; break; - case 8: op =3D rv_op_vbrev8_v; break; - case 9: op =3D rv_op_vrev8_v; break; - case 10: op =3D rv_op_vbrev_v; break; - case 12: op =3D rv_op_vclz_v; break; - case 13: op =3D rv_op_vctz_v; break; - case 14: op =3D rv_op_vcpop_v; break; + case 2: return &op_vzext_vf8; + case 3: return &op_vsext_vf8; + case 4: return &op_vzext_vf4; + case 5: return &op_vsext_vf4; + case 6: return &op_vzext_vf2; + case 7: return &op_vsext_vf2; + case 8: return &op_vbrev8_v; + case 9: return &op_vrev8_v; + case 10: return &op_vbrev_v; + case 12: return &op_vclz_v; + case 13: return &op_vctz_v; + case 14: return &op_vcpop_v; } break; case 20: switch ((inst >> 15) & 0b11111) { - case 1: op =3D rv_op_vmsbf_m; break; - case 2: op =3D rv_op_vmsof_m; break; - case 3: op =3D rv_op_vmsif_m; break; - case 16: op =3D rv_op_viota_m; break; + case 1: return &op_vmsbf_m; break; + case 2: return &op_vmsof_m; + case 3: return &op_vmsif_m; + case 16: return &op_viota_m; case 17: if (((inst >> 20) & 0b11111) =3D=3D 0) { - op =3D rv_op_vid_v; + return &op_vid_v; } break; } break; - case 23: if ((inst >> 25) & 1) op =3D rv_op_vcompress_vm; = break; - case 24: if ((inst >> 25) & 1) op =3D rv_op_vmandn_mm; bre= ak; - case 25: if ((inst >> 25) & 1) op =3D rv_op_vmand_mm; brea= k; - case 26: if ((inst >> 25) & 1) op =3D rv_op_vmor_mm; break; - case 27: if ((inst >> 25) & 1) op =3D rv_op_vmxor_mm; brea= k; - case 28: if ((inst >> 25) & 1) op =3D rv_op_vmorn_mm; brea= k; - case 29: if ((inst >> 25) & 1) op =3D rv_op_vmnand_mm; bre= ak; - case 30: if ((inst >> 25) & 1) op =3D rv_op_vmnor_mm; brea= k; - case 31: if ((inst >> 25) & 1) op =3D rv_op_vmxnor_mm; bre= ak; - case 32: op =3D rv_op_vdivu_vv; break; - case 33: op =3D rv_op_vdiv_vv; break; - case 34: op =3D rv_op_vremu_vv; break; - case 35: op =3D rv_op_vrem_vv; break; - case 36: op =3D rv_op_vmulhu_vv; break; - case 37: op =3D rv_op_vmul_vv; break; - case 38: op =3D rv_op_vmulhsu_vv; break; - case 39: op =3D rv_op_vmulh_vv; break; - case 41: op =3D rv_op_vmadd_vv; break; - case 43: op =3D rv_op_vnmsub_vv; break; - case 45: op =3D rv_op_vmacc_vv; break; - case 47: op =3D rv_op_vnmsac_vv; break; - case 48: op =3D rv_op_vwaddu_vv; break; - case 49: op =3D rv_op_vwadd_vv; break; - case 50: op =3D rv_op_vwsubu_vv; break; - case 51: op =3D rv_op_vwsub_vv; break; - case 52: op =3D rv_op_vwaddu_wv; break; - case 53: op =3D rv_op_vwadd_wv; break; - case 54: op =3D rv_op_vwsubu_wv; break; - case 55: op =3D rv_op_vwsub_wv; break; - case 56: op =3D rv_op_vwmulu_vv; break; - case 58: op =3D rv_op_vwmulsu_vv; break; - case 59: op =3D rv_op_vwmul_vv; break; - case 60: op =3D rv_op_vwmaccu_vv; break; - case 61: op =3D rv_op_vwmacc_vv; break; - case 63: op =3D rv_op_vwmaccsu_vv; break; + case 23: + if ((inst >> 25) & 1) { + return &op_vcompress_vm; + } + break; + case 24: + if ((inst >> 25) & 1) { + return &op_vmandn_mm; + } + break; + case 25: + if ((inst >> 25) & 1) { + return &op_vmand_mm; + } + break; + case 26: + if ((inst >> 25) & 1) { + return &op_vmor_mm; + } + break; + case 27: + if ((inst >> 25) & 1) { + return &op_vmxor_mm; + } + break; + case 28: + if ((inst >> 25) & 1) { + return &op_vmorn_mm; + } + break; + case 29: + if ((inst >> 25) & 1) { + return &op_vmnand_mm; + } + break; + case 30: + if ((inst >> 25) & 1) { + return &op_vmnor_mm; + } + break; + case 31: + if ((inst >> 25) & 1) { + return &op_vmxnor_mm; + } + break; + case 32: return &op_vdivu_vv; + case 33: return &op_vdiv_vv; + case 34: return &op_vremu_vv; + case 35: return &op_vrem_vv; + case 36: return &op_vmulhu_vv; + case 37: return &op_vmul_vv; + case 38: return &op_vmulhsu_vv; + case 39: return &op_vmulh_vv; + case 41: return &op_vmadd_vv; + case 43: return &op_vnmsub_vv; + case 45: return &op_vmacc_vv; + case 47: return &op_vnmsac_vv; + case 48: return &op_vwaddu_vv; + case 49: return &op_vwadd_vv; + case 50: return &op_vwsubu_vv; + case 51: return &op_vwsub_vv; + case 52: return &op_vwaddu_wv; + case 53: return &op_vwadd_wv; + case 54: return &op_vwsubu_wv; + case 55: return &op_vwsub_wv; + case 56: return &op_vwmulu_vv; + case 58: return &op_vwmulsu_vv; + case 59: return &op_vwmul_vv; + case 60: return &op_vwmaccu_vv; + case 61: return &op_vwmacc_vv; + case 63: return &op_vwmaccsu_vv; } break; case 3: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vadd_vi; break; - case 3: op =3D rv_op_vrsub_vi; break; - case 9: op =3D rv_op_vand_vi; break; - case 10: op =3D rv_op_vor_vi; break; - case 11: op =3D rv_op_vxor_vi; break; - case 12: op =3D rv_op_vrgather_vi; break; - case 14: op =3D rv_op_vslideup_vi; break; - case 15: op =3D rv_op_vslidedown_vi; break; + case 0: return &op_vadd_vi; + case 3: return &op_vrsub_vi; + case 9: return &op_vand_vi; + case 10: return &op_vor_vi; + case 11: return &op_vxor_vi; + case 12: return &op_vrgather_vi; + case 14: return &op_vslideup_vi; + case 15: return &op_vslidedown_vi; case 16: if (((inst >> 25) & 1) =3D=3D 0) { - op =3D rv_op_vadc_vim; + return &op_vadc_vim; } break; - case 17: op =3D rv_op_vmadc_vim; break; - case 20: case 21: op =3D rv_op_vror_vi; break; + case 17: return &op_vmadc_vim; + case 20: case 21: return &op_vror_vi; case 23: - if (((inst >> 20) & 0b111111) =3D=3D 32) - op =3D rv_op_vmv_v_i; - else if (((inst >> 25) & 1) =3D=3D 0) - op =3D rv_op_vmerge_vim; + if (((inst >> 20) & 0b111111) =3D=3D 32) { + return &op_vmv_v_i; + } else if (((inst >> 25) & 1) =3D=3D 0) { + return &op_vmerge_vim; + } break; - case 24: op =3D rv_op_vmseq_vi; break; - case 25: op =3D rv_op_vmsne_vi; break; - case 28: op =3D rv_op_vmsleu_vi; break; - case 29: op =3D rv_op_vmsle_vi; break; - case 30: op =3D rv_op_vmsgtu_vi; break; - case 31: op =3D rv_op_vmsgt_vi; break; - case 32: op =3D rv_op_vsaddu_vi; break; - case 33: op =3D rv_op_vsadd_vi; break; - case 37: op =3D rv_op_vsll_vi; break; + case 24: return &op_vmseq_vi; + case 25: return &op_vmsne_vi; + case 28: return &op_vmsleu_vi; + case 29: return &op_vmsle_vi; + case 30: return &op_vmsgtu_vi; + case 31: return &op_vmsgt_vi; + case 32: return &op_vsaddu_vi; + case 33: return &op_vsadd_vi; + case 37: return &op_vsll_vi; case 39: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_vmv1r_v; break; - case 1: op =3D rv_op_vmv2r_v; break; - case 3: op =3D rv_op_vmv4r_v; break; - case 7: op =3D rv_op_vmv8r_v; break; + case 0: return &op_vmv1r_v; + case 1: return &op_vmv2r_v; + case 3: return &op_vmv4r_v; + case 7: return &op_vmv8r_v; } break; - case 40: op =3D rv_op_vsrl_vi; break; - case 41: op =3D rv_op_vsra_vi; break; - case 42: op =3D rv_op_vssrl_vi; break; - case 43: op =3D rv_op_vssra_vi; break; - case 44: op =3D rv_op_vnsrl_wi; break; - case 45: op =3D rv_op_vnsra_wi; break; - case 46: op =3D rv_op_vnclipu_wi; break; - case 47: op =3D rv_op_vnclip_wi; break; - case 53: op =3D rv_op_vwsll_vi; break; + case 40: return &op_vsrl_vi; + case 41: return &op_vsra_vi; + case 42: return &op_vssrl_vi; + case 43: return &op_vssra_vi; + case 44: return &op_vnsrl_wi; + case 45: return &op_vnsra_wi; + case 46: return &op_vnclipu_wi; + case 47: return &op_vnclip_wi; + case 53: return &op_vwsll_vi; } break; case 4: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vadd_vx; break; - case 1: op =3D rv_op_vandn_vx; break; - case 2: op =3D rv_op_vsub_vx; break; - case 3: op =3D rv_op_vrsub_vx; break; - case 4: op =3D rv_op_vminu_vx; break; - case 5: op =3D rv_op_vmin_vx; break; - case 6: op =3D rv_op_vmaxu_vx; break; - case 7: op =3D rv_op_vmax_vx; break; - case 9: op =3D rv_op_vand_vx; break; - case 10: op =3D rv_op_vor_vx; break; - case 11: op =3D rv_op_vxor_vx; break; - case 12: op =3D rv_op_vrgather_vx; break; - case 14: op =3D rv_op_vslideup_vx; break; - case 15: op =3D rv_op_vslidedown_vx; break; + case 0: return &op_vadd_vx; + case 1: return &op_vandn_vx; + case 2: return &op_vsub_vx; + case 3: return &op_vrsub_vx; + case 4: return &op_vminu_vx; + case 5: return &op_vmin_vx; + case 6: return &op_vmaxu_vx; + case 7: return &op_vmax_vx; + case 9: return &op_vand_vx; + case 10: return &op_vor_vx; + case 11: return &op_vxor_vx; + case 12: return &op_vrgather_vx; + case 14: return &op_vslideup_vx; + case 15: return &op_vslidedown_vx; case 16: if (((inst >> 25) & 1) =3D=3D 0) { - op =3D rv_op_vadc_vxm; + return &op_vadc_vxm; } break; - case 17: op =3D rv_op_vmadc_vxm; break; + case 17: return &op_vmadc_vxm; case 18: if (((inst >> 25) & 1) =3D=3D 0) { - op =3D rv_op_vsbc_vxm; + return &op_vsbc_vxm; } break; - case 19: op =3D rv_op_vmsbc_vxm; break; - case 20: op =3D rv_op_vror_vx; break; - case 21: op =3D rv_op_vrol_vx; break; + case 19: return &op_vmsbc_vxm; + case 20: return &op_vror_vx; + case 21: return &op_vrol_vx; case 23: - if (((inst >> 20) & 0b111111) =3D=3D 32) - op =3D rv_op_vmv_v_x; - else if (((inst >> 25) & 1) =3D=3D 0) - op =3D rv_op_vmerge_vxm; + if (((inst >> 20) & 0b111111) =3D=3D 32) { + return &op_vmv_v_x; + } else if (((inst >> 25) & 1) =3D=3D 0) { + return &op_vmerge_vxm; + } break; - case 24: op =3D rv_op_vmseq_vx; break; - case 25: op =3D rv_op_vmsne_vx; break; - case 26: op =3D rv_op_vmsltu_vx; break; - case 27: op =3D rv_op_vmslt_vx; break; - case 28: op =3D rv_op_vmsleu_vx; break; - case 29: op =3D rv_op_vmsle_vx; break; - case 30: op =3D rv_op_vmsgtu_vx; break; - case 31: op =3D rv_op_vmsgt_vx; break; - case 32: op =3D rv_op_vsaddu_vx; break; - case 33: op =3D rv_op_vsadd_vx; break; - case 34: op =3D rv_op_vssubu_vx; break; - case 35: op =3D rv_op_vssub_vx; break; - case 37: op =3D rv_op_vsll_vx; break; - case 39: op =3D rv_op_vsmul_vx; break; - case 40: op =3D rv_op_vsrl_vx; break; - case 41: op =3D rv_op_vsra_vx; break; - case 42: op =3D rv_op_vssrl_vx; break; - case 43: op =3D rv_op_vssra_vx; break; - case 44: op =3D rv_op_vnsrl_wx; break; - case 45: op =3D rv_op_vnsra_wx; break; - case 46: op =3D rv_op_vnclipu_wx; break; - case 47: op =3D rv_op_vnclip_wx; break; - case 53: op =3D rv_op_vwsll_vx; break; + case 24: return &op_vmseq_vx; + case 25: return &op_vmsne_vx; + case 26: return &op_vmsltu_vx; + case 27: return &op_vmslt_vx; + case 28: return &op_vmsleu_vx; + case 29: return &op_vmsle_vx; + case 30: return &op_vmsgtu_vx; + case 31: return &op_vmsgt_vx; + case 32: return &op_vsaddu_vx; + case 33: return &op_vsadd_vx; + case 34: return &op_vssubu_vx; + case 35: return &op_vssub_vx; + case 37: return &op_vsll_vx; + case 39: return &op_vsmul_vx; + case 40: return &op_vsrl_vx; + case 41: return &op_vsra_vx; + case 42: return &op_vssrl_vx; + case 43: return &op_vssra_vx; + case 44: return &op_vnsrl_wx; + case 45: return &op_vnsra_wx; + case 46: return &op_vnclipu_wx; + case 47: return &op_vnclip_wx; + case 53: return &op_vwsll_vx; } break; case 5: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_vfadd_vf; break; - case 2: op =3D rv_op_vfsub_vf; break; - case 4: op =3D rv_op_vfmin_vf; break; - case 6: op =3D rv_op_vfmax_vf; break; - case 8: op =3D rv_op_vfsgnj_vf; break; - case 9: op =3D rv_op_vfsgnjn_vf; break; - case 10: op =3D rv_op_vfsgnjx_vf; break; - case 14: op =3D rv_op_vfslide1up_vf; break; - case 15: op =3D rv_op_vfslide1down_vf; break; + case 0: return &op_vfadd_vf; + case 2: return &op_vfsub_vf; + case 4: return &op_vfmin_vf; + case 6: return &op_vfmax_vf; + case 8: return &op_vfsgnj_vf; + case 9: return &op_vfsgnjn_vf; + case 10: return &op_vfsgnjx_vf; + case 14: return &op_vfslide1up_vf; + case 15: return &op_vfslide1down_vf; case 16: switch ((inst >> 20) & 0b11111) { - case 0: if ((inst >> 25) & 1) op =3D rv_op_vfmv_s_f; b= reak; + case 0: + if ((inst >> 25) & 1) { + return &op_vfmv_s_f; + } } break; case 23: - if (((inst >> 25) & 1) =3D=3D 0) - op =3D rv_op_vfmerge_vfm; - else if (((inst >> 20) & 0b111111) =3D=3D 32) - op =3D rv_op_vfmv_v_f; + if (((inst >> 25) & 1) =3D=3D 0) { + return &op_vfmerge_vfm; + } else if (((inst >> 20) & 0b111111) =3D=3D 32) { + return &op_vfmv_v_f; + } break; - case 24: op =3D rv_op_vmfeq_vf; break; - case 25: op =3D rv_op_vmfle_vf; break; - case 27: op =3D rv_op_vmflt_vf; break; - case 28: op =3D rv_op_vmfne_vf; break; - case 29: op =3D rv_op_vmfgt_vf; break; - case 31: op =3D rv_op_vmfge_vf; break; - case 32: op =3D rv_op_vfdiv_vf; break; - case 33: op =3D rv_op_vfrdiv_vf; break; - case 36: op =3D rv_op_vfmul_vf; break; - case 39: op =3D rv_op_vfrsub_vf; break; - case 40: op =3D rv_op_vfmadd_vf; break; - case 41: op =3D rv_op_vfnmadd_vf; break; - case 42: op =3D rv_op_vfmsub_vf; break; - case 43: op =3D rv_op_vfnmsub_vf; break; - case 44: op =3D rv_op_vfmacc_vf; break; - case 45: op =3D rv_op_vfnmacc_vf; break; - case 46: op =3D rv_op_vfmsac_vf; break; - case 47: op =3D rv_op_vfnmsac_vf; break; - case 48: op =3D rv_op_vfwadd_vf; break; - case 50: op =3D rv_op_vfwsub_vf; break; - case 52: op =3D rv_op_vfwadd_wf; break; - case 54: op =3D rv_op_vfwsub_wf; break; - case 56: op =3D rv_op_vfwmul_vf; break; - case 59: op =3D rv_op_vfwmaccbf16_vf; break; - case 60: op =3D rv_op_vfwmacc_vf; break; - case 61: op =3D rv_op_vfwnmacc_vf; break; - case 62: op =3D rv_op_vfwmsac_vf; break; - case 63: op =3D rv_op_vfwnmsac_vf; break; + case 24: return &op_vmfeq_vf; + case 25: return &op_vmfle_vf; + case 27: return &op_vmflt_vf; + case 28: return &op_vmfne_vf; + case 29: return &op_vmfgt_vf; + case 31: return &op_vmfge_vf; + case 32: return &op_vfdiv_vf; + case 33: return &op_vfrdiv_vf; + case 36: return &op_vfmul_vf; + case 39: return &op_vfrsub_vf; + case 40: return &op_vfmadd_vf; + case 41: return &op_vfnmadd_vf; + case 42: return &op_vfmsub_vf; + case 43: return &op_vfnmsub_vf; + case 44: return &op_vfmacc_vf; + case 45: return &op_vfnmacc_vf; + case 46: return &op_vfmsac_vf; + case 47: return &op_vfnmsac_vf; + case 48: return &op_vfwadd_vf; + case 50: return &op_vfwsub_vf; + case 52: return &op_vfwadd_wf; + case 54: return &op_vfwsub_wf; + case 56: return &op_vfwmul_vf; + case 59: return &op_vfwmaccbf16_vf; + case 60: return &op_vfwmacc_vf; + case 61: return &op_vfwnmacc_vf; + case 62: return &op_vfwmsac_vf; + case 63: return &op_vfwnmsac_vf; } break; case 6: switch ((inst >> 26) & 0b111111) { - case 8: op =3D rv_op_vaaddu_vx; break; - case 9: op =3D rv_op_vaadd_vx; break; - case 10: op =3D rv_op_vasubu_vx; break; - case 11: op =3D rv_op_vasub_vx; break; - case 12: op =3D rv_op_vclmul_vx; break; - case 13: op =3D rv_op_vclmulh_vx; break; - case 14: op =3D rv_op_vslide1up_vx; break; - case 15: op =3D rv_op_vslide1down_vx; break; + case 8: return &op_vaaddu_vx; + case 9: return &op_vaadd_vx; + case 10: return &op_vasubu_vx; + case 11: return &op_vasub_vx; + case 12: return &op_vclmul_vx; + case 13: return &op_vclmulh_vx; + case 14: return &op_vslide1up_vx; + case 15: return &op_vslide1down_vx; case 16: switch ((inst >> 20) & 0b11111) { - case 0: if ((inst >> 25) & 1) op =3D rv_op_vmv_s_x; br= eak; + case 0: + if ((inst >> 25) & 1) { + return &op_vmv_s_x; + } } break; - case 32: op =3D rv_op_vdivu_vx; break; - case 33: op =3D rv_op_vdiv_vx; break; - case 34: op =3D rv_op_vremu_vx; break; - case 35: op =3D rv_op_vrem_vx; break; - case 36: op =3D rv_op_vmulhu_vx; break; - case 37: op =3D rv_op_vmul_vx; break; - case 38: op =3D rv_op_vmulhsu_vx; break; - case 39: op =3D rv_op_vmulh_vx; break; - case 41: op =3D rv_op_vmadd_vx; break; - case 43: op =3D rv_op_vnmsub_vx; break; - case 45: op =3D rv_op_vmacc_vx; break; - case 47: op =3D rv_op_vnmsac_vx; break; - case 48: op =3D rv_op_vwaddu_vx; break; - case 49: op =3D rv_op_vwadd_vx; break; - case 50: op =3D rv_op_vwsubu_vx; break; - case 51: op =3D rv_op_vwsub_vx; break; - case 52: op =3D rv_op_vwaddu_wx; break; - case 53: op =3D rv_op_vwadd_wx; break; - case 54: op =3D rv_op_vwsubu_wx; break; - case 55: op =3D rv_op_vwsub_wx; break; - case 56: op =3D rv_op_vwmulu_vx; break; - case 58: op =3D rv_op_vwmulsu_vx; break; - case 59: op =3D rv_op_vwmul_vx; break; - case 60: op =3D rv_op_vwmaccu_vx; break; - case 61: op =3D rv_op_vwmacc_vx; break; - case 62: op =3D rv_op_vwmaccus_vx; break; - case 63: op =3D rv_op_vwmaccsu_vx; break; + case 32: return &op_vdivu_vx; + case 33: return &op_vdiv_vx; + case 34: return &op_vremu_vx; + case 35: return &op_vrem_vx; + case 36: return &op_vmulhu_vx; + case 37: return &op_vmul_vx; + case 38: return &op_vmulhsu_vx; + case 39: return &op_vmulh_vx; + case 41: return &op_vmadd_vx; + case 43: return &op_vnmsub_vx; + case 45: return &op_vmacc_vx; + case 47: return &op_vnmsac_vx; + case 48: return &op_vwaddu_vx; + case 49: return &op_vwadd_vx; + case 50: return &op_vwsubu_vx; + case 51: return &op_vwsub_vx; + case 52: return &op_vwaddu_wx; + case 53: return &op_vwadd_wx; + case 54: return &op_vwsubu_wx; + case 55: return &op_vwsub_wx; + case 56: return &op_vwmulu_vx; + case 58: return &op_vwmulsu_vx; + case 59: return &op_vwmul_vx; + case 60: return &op_vwmaccu_vx; + case 61: return &op_vwmacc_vx; + case 62: return &op_vwmaccus_vx; + case 63: return &op_vwmaccsu_vx; } break; case 7: if (((inst >> 31) & 1) =3D=3D 0) { - op =3D rv_op_vsetvli; + return &op_vsetvli; } else if ((inst >> 30) & 1) { - op =3D rv_op_vsetivli; + return &op_vsetivli; } else if (((inst >> 25) & 0b11111) =3D=3D 0) { - op =3D rv_op_vsetvl; + return &op_vsetvl; } break; } break; case 22: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_addid; break; + case 0: return &op_addid; case 1: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_sllid; break; + case 0: return &op_sllid; } break; case 5: switch ((inst >> 26) & 0b111111) { - case 0: op =3D rv_op_srlid; break; - case 16: op =3D rv_op_sraid; break; + case 0: return &op_srlid; + case 16: return &op_sraid; } break; } break; case 24: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_beq; break; - case 1: op =3D rv_op_bne; break; - case 4: op =3D rv_op_blt; break; - case 5: op =3D rv_op_bge; break; - case 6: op =3D rv_op_bltu; break; - case 7: op =3D rv_op_bgeu; break; + case 0: return &op_beq; + case 1: return &op_bne; + case 4: return &op_blt; + case 5: return &op_bge; + case 6: return &op_bltu; + case 7: return &op_bgeu; } break; case 25: switch ((inst >> 12) & 0b111) { - case 0: op =3D rv_op_jalr; break; + case 0: return &op_jalr; } break; - case 27: op =3D rv_op_jal; break; + case 27: return &op_jal; case 28: switch ((inst >> 12) & 0b111) { case 0: @@ -2483,76 +2504,76 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) ((inst >> 7) & 0b000000011111)) { case 0: switch ((inst >> 15) & 0b1111111111) { - case 0: op =3D rv_op_ecall; break; - case 32: op =3D rv_op_ebreak; break; - case 64: op =3D rv_op_uret; break; - case 416: op =3D rv_op_wrs_nto; break; - case 928: op =3D rv_op_wrs_sto; break; + case 0: return &op_ecall; + case 32: return &op_ebreak; + case 64: return &op_uret; + case 416: return &op_wrs_nto; + case 928: return &op_wrs_sto; } break; case 256: switch ((inst >> 20) & 0b11111) { case 2: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_sret; break; + case 0: return &op_sret; } break; - case 4: op =3D rv_op_sfence_vm; break; + case 4: return &op_sfence_vm; case 5: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_wfi; break; + case 0: return &op_wfi; } break; } break; - case 288: op =3D rv_op_sfence_vma; break; + case 288: return &op_sfence_vma; case 512: switch ((inst >> 15) & 0b1111111111) { - case 64: op =3D rv_op_hret; break; + case 64: return &op_hret; } break; case 768: switch ((inst >> 15) & 0b1111111111) { - case 64: op =3D rv_op_mret; break; + case 64: return &op_mret; } break; case 1792: switch ((inst >> 15) & 0b1111111111) { - case 64: op =3D rv_op_mnret; break; + case 64: return &op_mnret; } break; case 1952: switch ((inst >> 15) & 0b1111111111) { - case 576: op =3D rv_op_dret; break; + case 576: return &op_dret; } break; } break; case 1: switch (operand_csr12(inst)) { - case 1: op =3D rv_op_fsflags; break; - case 2: op =3D rv_op_fsrm; break; - case 3: op =3D rv_op_fscsr; break; - default: op =3D rv_op_csrrw; break; + case 1: return &op_fsflags; + case 2: return &op_fsrm; + case 3: return &op_fscsr; + default: return &op_csrrw; } break; case 2: - op =3D rv_op_csrrs; + return &op_csrrs; if (operand_rs1(inst) =3D=3D 0) { switch (operand_csr12(inst)) { - case 0x001: op =3D rv_op_frflags; break; - case 0x002: op =3D rv_op_frrm; break; - case 0x003: op =3D rv_op_frcsr; break; - case 0xc00: op =3D rv_op_rdcycle; break; - case 0xc01: op =3D rv_op_rdtime; break; - case 0xc02: op =3D rv_op_rdinstret; break; - case 0xc80: op =3D rv_op_rdcycleh; break; - case 0xc81: op =3D rv_op_rdtimeh; break; - case 0xc82: op =3D rv_op_rdinstreth; break; + case 0x001: return &op_frflags; + case 0x002: return &op_frrm; + case 0x003: return &op_frcsr; + case 0xc00: return &op_rdcycle; + case 0xc01: return &op_rdtime; + case 0xc02: return &op_rdinstret; + case 0xc80: return &op_rdcycleh; + case 0xc81: return &op_rdtimeh; + case 0xc82: return &op_rdinstreth; } } break; - case 3: op =3D rv_op_csrrc; break; + case 3: return &op_csrrc; case 4: if (dec->cfg && dec->cfg->ext_zimop) { if (((inst >> 22) & 0b1011001111) =3D=3D 0b1000000111)= { @@ -2560,15 +2581,15 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) && operand_mop_r_imm(inst) =3D=3D 28) { switch (operand_rs1(inst)) { case 0: - return &rvi_opcode_data[rv_op_ssrdp]; + return &op_ssrdp; case 1: case 5: if (operand_rd(inst) =3D=3D 0) { - return &rvi_opcode_data[rv_op_sspopchk= ]; + return &op_sspopchk; } } } - return &rvi_opcode_data[rv_op_mop_r]; + return &op_mop_r; } if (((inst >> 25) & 0b1011001) =3D=3D 0b1000001) { if (dec->cfg->ext_zicfiss @@ -2578,79 +2599,79 @@ static const rv_opcode_data *decode_inst_opcode(rv_= decode *dec, rv_isa isa) switch (operand_rs2(inst)) { case 1: case 5: - return &rvi_opcode_data[rv_op_sspush]; + return &op_sspush; } } - return &rvi_opcode_data[rv_op_mop_rr]; + return &op_mop_rr; } } break; case 5: switch (operand_csr12(inst)) { - case 1: op =3D rv_op_fsflagsi; break; - case 2: op =3D rv_op_fsrmi; break; - default: op =3D rv_op_csrrwi; break; + case 1: return &op_fsflagsi; + case 2: return &op_fsrmi; + default: return &op_csrrwi; } break; - case 6: op =3D rv_op_csrrsi; break; - case 7: op =3D rv_op_csrrci; break; + case 6: return &op_csrrsi; + case 7: return &op_csrrci; } break; case 29: if (((inst >> 25) & 1) =3D=3D 1 && ((inst >> 12) & 0b111) =3D= =3D 2) { switch ((inst >> 26) & 0b111111) { - case 32: op =3D rv_op_vsm3me_vv; break; - case 33: op =3D rv_op_vsm4k_vi; break; - case 34: op =3D rv_op_vaeskf1_vi; break; + case 32: return &op_vsm3me_vv; + case 33: return &op_vsm4k_vi; + case 34: return &op_vaeskf1_vi; case 40: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_vaesdm_vv; break; - case 1: op =3D rv_op_vaesdf_vv; break; - case 2: op =3D rv_op_vaesem_vv; break; - case 3: op =3D rv_op_vaesef_vv; break; - case 16: op =3D rv_op_vsm4r_vv; break; - case 17: op =3D rv_op_vgmul_vv; break; + case 0: return &op_vaesdm_vv; + case 1: return &op_vaesdf_vv; + case 2: return &op_vaesem_vv; + case 3: return &op_vaesef_vv; + case 16: return &op_vsm4r_vv; + case 17: return &op_vgmul_vv; } break; case 41: switch ((inst >> 15) & 0b11111) { - case 0: op =3D rv_op_vaesdm_vs; break; - case 1: op =3D rv_op_vaesdf_vs; break; - case 2: op =3D rv_op_vaesem_vs; break; - case 3: op =3D rv_op_vaesef_vs; break; - case 7: op =3D rv_op_vaesz_vs; break; - case 16: op =3D rv_op_vsm4r_vs; break; + case 0: return &op_vaesdm_vs; + case 1: return &op_vaesdf_vs; + case 2: return &op_vaesem_vs; + case 3: return &op_vaesef_vs; + case 7: return &op_vaesz_vs; + case 16: return &op_vsm4r_vs; } break; - case 42: op =3D rv_op_vaeskf2_vi; break; - case 43: op =3D rv_op_vsm3c_vi; break; - case 44: op =3D rv_op_vghsh_vv; break; - case 45: op =3D rv_op_vsha2ms_vv; break; - case 46: op =3D rv_op_vsha2ch_vv; break; - case 47: op =3D rv_op_vsha2cl_vv; break; + case 42: return &op_vaeskf2_vi; + case 43: return &op_vsm3c_vi; + case 44: return &op_vghsh_vv; + case 45: return &op_vsha2ms_vv; + case 46: return &op_vsha2ch_vv; + case 47: return &op_vsha2cl_vv; } } break; case 30: switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) & 0b0000000111)) { - case 0: op =3D rv_op_addd; break; - case 1: op =3D rv_op_slld; break; - case 5: op =3D rv_op_srld; break; - case 8: op =3D rv_op_muld; break; - case 12: op =3D rv_op_divd; break; - case 13: op =3D rv_op_divud; break; - case 14: op =3D rv_op_remd; break; - case 15: op =3D rv_op_remud; break; - case 256: op =3D rv_op_subd; break; - case 261: op =3D rv_op_srad; break; + case 0: return &op_addd; + case 1: return &op_slld; + case 5: return &op_srld; + case 8: return &op_muld; + case 12: return &op_divd; + case 13: return &op_divud; + case 14: return &op_remd; + case 15: return &op_remud; + case 256: return &op_subd; + case 261: return &op_srad; } break; } break; } =20 - return op =3D=3D rv_op_illegal ? NULL : &rvi_opcode_data[op]; + return NULL; } =20 /* decode operands */ @@ -3446,7 +3467,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, } } if (!op) { - op =3D &rvi_opcode_data[rv_op_illegal]; + op =3D &op_illegal; } =20 decode_inst_operands(&dec, isa, op); diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc index 802a521bca..cc939f557f 100644 --- a/disas/riscv-op.c.inc +++ b/disas/riscv-op.c.inc @@ -225,51 +225,51 @@ OP(fcvt_q_l, "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_= rs1) OP(fcvt_q_lu, "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) OP(fmv_x_q, "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1) OP(fmv_q_x, "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1) -OP(c_addi4spn, "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(rv_op_addi)) -OP(c_fld, "c.fld", rv_codec_cl_ld, NULL, DECOMP(rv_op_fld)) -OP(c_lw, "c.lw", rv_codec_cl_lw, NULL, DECOMP(rv_op_lw)) -OP(c_flw, "c.flw", rv_codec_cl_lw, NULL, DECOMP(rv_op_flw)) -OP(c_fsd, "c.fsd", rv_codec_cs_sd, NULL, DECOMP(rv_op_fsd)) -OP(c_sw, "c.sw", rv_codec_cs_sw, NULL, DECOMP(rv_op_sw)) -OP(c_fsw, "c.fsw", rv_codec_cs_sw, NULL, DECOMP(rv_op_fsw)) -OP(c_addi, "c.addi", rv_codec_ci, NULL, DECOMP(rv_op_addi)) -OP(c_jal, "c.jal", rv_codec_cj_jal, NULL, DECOMP(rv_op_jal)) -OP(c_li, "c.li", rv_codec_ci_li, NULL, DECOMP(rv_op_addi)) -OP(c_addi16sp, "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(rv_op_addi)) -OP(c_lui, "c.lui", rv_codec_ci_lui, NULL, DECOMP(rv_op_lui)) -OP(c_srli, "c.srli", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srli)) -OP(c_srai, "c.srai", rv_codec_cb_sh6, NULL, DECOMP(rv_op_srai)) -OP(c_andi, "c.andi", rv_codec_cb_imm, NULL, DECOMP(rv_op_andi)) -OP(c_sub, "c.sub", rv_codec_cs, NULL, DECOMP(rv_op_sub)) -OP(c_xor, "c.xor", rv_codec_cs, NULL, DECOMP(rv_op_xor)) -OP(c_or, "c.or", rv_codec_cs, NULL, DECOMP(rv_op_or)) -OP(c_and, "c.and", rv_codec_cs, NULL, DECOMP(rv_op_and)) -OP(c_subw, "c.subw", rv_codec_cs, NULL, DECOMP(rv_op_subw)) -OP(c_addw, "c.addw", rv_codec_cs, NULL, DECOMP(rv_op_addw)) -OP(c_j, "c.j", rv_codec_cj, NULL, DECOMP(rv_op_j)) -OP(c_beqz, "c.beqz", rv_codec_cb, NULL, DECOMP(rv_op_beqz)) -OP(c_bnez, "c.bnez", rv_codec_cb, NULL, DECOMP(rv_op_bnez)) -OP(c_slli, "c.slli", rv_codec_ci_sh6, NULL, DECOMP(rv_op_slli)) -OP(c_fldsp, "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_fld)) -OP(c_lwsp, "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_lw)) -OP(c_flwsp, "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(rv_op_flw)) -OP(c_jr, "c.jr", rv_codec_cr_jr, NULL, DECOMP(rv_op_jr)) -OP(c_mv, "c.mv", rv_codec_cr_mv, NULL, DECOMP(rv_op_mv)) -OP(c_ebreak, "c.ebreak", rv_codec_ci_none, NULL, DECOMP(rv_op_ebreak)) -OP(c_jalr, "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(rv_op_jalr)) -OP(c_add, "c.add", rv_codec_cr, NULL, DECOMP(rv_op_add)) -OP(c_fsdsp, "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_fsd)) -OP(c_swsp, "c.swsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_sw)) -OP(c_fswsp, "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(rv_op_fsw)) -OP(c_ld, "c.ld", rv_codec_cl_ld, NULL, DECOMP(rv_op_ld)) -OP(c_sd, "c.sd", rv_codec_cs_sd, NULL, DECOMP(rv_op_sd)) -OP(c_addiw, "c.addiw", rv_codec_ci, NULL, DECOMP(rv_op_addiw)) -OP(c_ldsp, "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(rv_op_ld)) -OP(c_sdsp, "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(rv_op_sd)) -OP(c_lq, "c.lq", rv_codec_cl_lq, NULL, DECOMP(rv_op_lq)) -OP(c_sq, "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq)) -OP(c_lqsp, "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq)) -OP(c_sqsp, "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq)) +OP(c_addi4spn, "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(op_addi)) +OP(c_fld, "c.fld", rv_codec_cl_ld, NULL, DECOMP(op_fld)) +OP(c_lw, "c.lw", rv_codec_cl_lw, NULL, DECOMP(op_lw)) +OP(c_flw, "c.flw", rv_codec_cl_lw, NULL, DECOMP(op_flw)) +OP(c_fsd, "c.fsd", rv_codec_cs_sd, NULL, DECOMP(op_fsd)) +OP(c_sw, "c.sw", rv_codec_cs_sw, NULL, DECOMP(op_sw)) +OP(c_fsw, "c.fsw", rv_codec_cs_sw, NULL, DECOMP(op_fsw)) +OP(c_addi, "c.addi", rv_codec_ci, NULL, DECOMP(op_addi)) +OP(c_jal, "c.jal", rv_codec_cj_jal, NULL, DECOMP(op_jal)) +OP(c_li, "c.li", rv_codec_ci_li, NULL, DECOMP(op_addi)) +OP(c_addi16sp, "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(op_addi)) +OP(c_lui, "c.lui", rv_codec_ci_lui, NULL, DECOMP(op_lui)) +OP(c_srli, "c.srli", rv_codec_cb_sh6, NULL, DECOMP(op_srli)) +OP(c_srai, "c.srai", rv_codec_cb_sh6, NULL, DECOMP(op_srai)) +OP(c_andi, "c.andi", rv_codec_cb_imm, NULL, DECOMP(op_andi)) +OP(c_sub, "c.sub", rv_codec_cs, NULL, DECOMP(op_sub)) +OP(c_xor, "c.xor", rv_codec_cs, NULL, DECOMP(op_xor)) +OP(c_or, "c.or", rv_codec_cs, NULL, DECOMP(op_or)) +OP(c_and, "c.and", rv_codec_cs, NULL, DECOMP(op_and)) +OP(c_subw, "c.subw", rv_codec_cs, NULL, DECOMP(op_subw)) +OP(c_addw, "c.addw", rv_codec_cs, NULL, DECOMP(op_addw)) +OP(c_j, "c.j", rv_codec_cj, NULL, DECOMP(op_j)) +OP(c_beqz, "c.beqz", rv_codec_cb, NULL, DECOMP(op_beqz)) +OP(c_bnez, "c.bnez", rv_codec_cb, NULL, DECOMP(op_bnez)) +OP(c_slli, "c.slli", rv_codec_ci_sh6, NULL, DECOMP(op_slli)) +OP(c_fldsp, "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_fld)) +OP(c_lwsp, "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_lw)) +OP(c_flwsp, "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_flw)) +OP(c_jr, "c.jr", rv_codec_cr_jr, NULL, DECOMP(op_jr)) +OP(c_mv, "c.mv", rv_codec_cr_mv, NULL, DECOMP(op_mv)) +OP(c_ebreak, "c.ebreak", rv_codec_ci_none, NULL, DECOMP(op_ebreak)) +OP(c_jalr, "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(op_jalr)) +OP(c_add, "c.add", rv_codec_cr, NULL, DECOMP(op_add)) +OP(c_fsdsp, "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(op_fsd)) +OP(c_swsp, "c.swsp", rv_codec_css_swsp, NULL, DECOMP(op_sw)) +OP(c_fswsp, "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(op_fsw)) +OP(c_ld, "c.ld", rv_codec_cl_ld, NULL, DECOMP(op_ld)) +OP(c_sd, "c.sd", rv_codec_cs_sd, NULL, DECOMP(op_sd)) +OP(c_addiw, "c.addiw", rv_codec_ci, NULL, DECOMP(op_addiw)) +OP(c_ldsp, "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_ld)) +OP(c_sdsp, "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(op_sd)) +OP(c_lq, "c.lq", rv_codec_cl_lq, NULL, DECOMP(op_lq)) +OP(c_sq, "c.sq", rv_codec_cs_sq, NULL, DECOMP(op_sq)) +OP(c_lqsp, "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(op_lq)) +OP(c_sqsp, "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(op_sq)) OP(nop, "nop", rv_codec_illegal, rv_fmt_none) OP(mv, "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv) OP(not, "not", rv_codec_illegal, rv_fmt_rd_rs1) @@ -904,8 +904,8 @@ OP(sspopchk, "sspopchk", rv_codec_r, rv_fmt_rs1) OP(ssrdp, "ssrdp", rv_codec_r, rv_fmt_rd) OP(ssamoswap_w, "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(ssamoswap_d, "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(c_sspush, "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspush)) -OP(c_sspopchk, "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(rv_op_sspopchk= )) +OP(c_sspush, "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(op_sspush)) +OP(c_sspopchk, "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(op_sspopchk)) OP(cbo_inval, "cbo.inval", rv_codec_r, rv_fmt_rs1) OP(cbo_clean, "cbo.clean", rv_codec_r, rv_fmt_rs1) OP(cbo_flush, "cbo.flush", rv_codec_r, rv_fmt_rs1) --=20 2.43.0 From nobody Mon Sep 28 01:15:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786315608; cv=none; d=zohomail.com; s=zohoarc; b=Jv841HYLb2m/p9+XNY/lE10qZqQNky6njNWCozf6BYqKDRFcGHECSdIwwI08wCH4RjkPq3JZqs1oV6+bFGM/r93ghS/smKRZoPf8P01YG0G2HXkJSv8cJauAhC9fnb6kR30hmo3E8O/G/iQLXM+cgsmZeRjvvwT7CXJ/a8aTEy4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786315608; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RKLsqKSv9wkEIAnrRIiSE2CDqczpP1V4jGGlfuh2ZbY=; b=COSAb7ZvB62Dn0WHMbP44viZ3jhaR1H+M7h/M2VHiCHD51LmoFKm85KNLrQvhBQd/D+DbVYnHSnqYcdnMGpgsK0Kt4TnjWGXJnyrL4Ms99X+2xGUd9WKoaFhGyCEHHMU1fxJDKjngJ9s0dwl2PeKtRHdqPpMy1VtigtXarF0+5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786315608493361.37266687712656; Sun, 9 Aug 2026 15:46:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtCBX-00067B-GJ; Sun, 09 Aug 2026 18:40:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtCBW-00066t-B6 for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:40:02 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtCBO-00088H-HG for qemu-devel@nongnu.org; Sun, 09 Aug 2026 18:40:02 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-38101f85591so3261708a91.1 for ; Sun, 09 Aug 2026 15:39:54 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-390b1573defsm4264430a91.1.2026.08.09.15.39.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Aug 2026 15:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786315193; x=1786919993; darn=nongnu.org; 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:content-type; bh=RKLsqKSv9wkEIAnrRIiSE2CDqczpP1V4jGGlfuh2ZbY=; b=ct2SZ2Y0iMtSyLVLdEY11IkcQkYsVY9hn0kKuZiONUrTNWsaRlYRqEtl8zaXeH+2wZ FlniReSFUcT6zzOgI0ej4qmayHE7Bd3b+m/J0Uj8sA0T6zlVwKMK0aukydatjIlfXkAh xTYp6WNMaXoAUtNULNfmC81KWojEdoTP5HgDBLYr9w2kHCcaibtcSgrYpGOJ2S/YxDvZ 8yxcfAZRm0Yrpnr8y/Gav2CRKfABwzqX7eXcRIE7vy2Ojl16p6K6UXRYMqku8vIImfpO yVdJh9hg0hiIP64AxeJK5mht2rAQTULxaxvBIPlrPfgAETYWv13KE5AqVWGD4UN27MMx /yxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786315193; x=1786919993; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RKLsqKSv9wkEIAnrRIiSE2CDqczpP1V4jGGlfuh2ZbY=; b=kW7c5+1ztGa4lTm0nRQD4EleO/R5IRNDUNFRleHKMkPXw5VpbS0QFG5ipfyUxwc7tQ lCjBb0zixfqGr9tNEMKSgq3z6YQIxaQc4c0GG4yUqSy0sHHpkVr6o7Z3qw7zotvU3K+D +J3UEPPNrDIZ0jnRC31mQqZfNR8sn1DzhcMmR5sp3qOVALIhbdkND0iNrIw+NrDAnqpV TRujF3olVa5Kvx6ncPNfdPLS8MxXi5zNOlDJdmj7igHAl3bFTJRoRbHAcKENyWu7Kjgc 2I61vYZYLUPrx8ZuXwE7GZzKmu3+ABAnj0AGKIcIYyoZjQt31iDubNgCAaemWctX28Ft zwEw== X-Gm-Message-State: AOJu0YzITb6SMWlMkNlFTsY97CTEw4x/TcFtRBSHA5K+soMd4i1LLBHX zxrmTQPm3JMbAmdvCyYwmodS4msDJfNVKt2Al4ZpxLaPI4k9xnvOVtN0eX9GchYYKTowNl/dFtm 4NR3C X-Gm-Gg: AR+sD114dHZ4njCS/k4+L9GJlrHRZU/XgIUupdcPaf6We/qtI7DmIK/YF2qqwSYdFtH 2Xn1l65klYbDLLDoPf8elQnOBxwmLqXrFhrrL5TDDJswSn3WMYq76dHeFuVcEjW/GMsPkNpo7qQ Jl7evfySnlBPPOBfgg5+T5XDZQe7+ym8ehPqgQl/V/ksVbmcAXnqzb3lYqEO1IxLb5UxIksL8Wv KppU1QiM0+SZ6jicGbe3C9pjJrABCyjKoxWd/tVK4w21kYgfD2ezDTbEcGMoqcSyIfnfUixq+CO XHnMttTdvYaDSu6pOPYsqD0eTW7hCdu4Qbz6hEiVTJ/isy0ErWGodphrx4KVKig/BcTVzzFsaxz goKj2mQAE+OXqFYQsRLbVNxioZ0tePgyvXeAXkaNlcrMxoFyNsRoJzTExSttRjFeyzAv2nyV9TM ZaAmaPSJCI9piaM39cbXVqtI8ChILLcf593CMkCOT78GtTZLd5wxG5YZLjqT2v1U+OnvWp6g8DZ q1h690pBa9F9VCwI3c0 X-Received: by 2002:a17:90b:3eca:b0:37f:9e21:91d6 with SMTP id 98e67ed59e1d1-392846ac637mr5984616a91.13.1786315192351; Sun, 09 Aug 2026 15:39:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH 56/56] disas/riscv: Sort riscv-op.c.inc Date: Sun, 9 Aug 2026 15:35:45 -0700 Message-ID: <20260809223545.730664-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809223545.730664-1-richard.henderson@linaro.org> References: <20260809223545.730664-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786315609172158500 Content-Type: text/plain; charset="utf-8" To date, opcodes had to be added to the end of the list, resulting in quite the disorder. Sort via 'LANG=3DC sort'. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/riscv-op.c.inc | 1704 +++++++++++++++++++++--------------------- 1 file changed, 852 insertions(+), 852 deletions(-) diff --git a/disas/riscv-op.c.inc b/disas/riscv-op.c.inc index cc939f557f..1d334e4857 100644 --- a/disas/riscv-op.c.inc +++ b/disas/riscv-op.c.inc @@ -1,913 +1,913 @@ -OP(illegal, "illegal", rv_codec_none, rv_fmt_none) -OP(lui, "lui", rv_codec_u, rv_fmt_rd_uimm) -OP(auipc, "auipc", rv_codec_u, rv_fmt_rd_uoffset) -OP(jal, "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal) -OP(jalr, "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr) -OP(beq, "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq) -OP(bne, "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne) -OP(blt, "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt) -OP(bge, "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge) -OP(bltu, "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset) -OP(bgeu, "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset) -OP(lb, "lb", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(lh, "lh", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(lw, "lw", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(lbu, "lbu", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(lhu, "lhu", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(sb, "sb", rv_codec_s, rv_fmt_rs2_offset_rs1) -OP(sh, "sh", rv_codec_s, rv_fmt_rs2_offset_rs1) -OP(sw, "sw", rv_codec_s, rv_fmt_rs2_offset_rs1) -OP(addi, "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi) -OP(slti, "slti", rv_codec_i, rv_fmt_rd_rs1_imm) -OP(sltiu, "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu) -OP(xori, "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori) -OP(ori, "ori", rv_codec_i, rv_fmt_rd_rs1_imm) -OP(andi, "andi", rv_codec_i, rv_fmt_rd_rs1_imm) -OP(slli, "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(srli, "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(srai, "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) OP(add, "add", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sub, "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub) -OP(sll, "sll", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(slt, "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt) -OP(sltu, "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu) -OP(xor, "xor", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(srl, "srl", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sra, "sra", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(or, "or", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(add_uw, "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(addd, "addd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(addi, "addi", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addi) +OP(addid, "addid", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(addiw, "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw) +OP(addw, "addw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes32dsi, "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32dsmi, "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32esi, "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes32esmi, "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) +OP(aes64ds, "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64dsm, "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64es, "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64esm, "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(aes64im, "aes64im", rv_codec_r, rv_fmt_rd_rs1) +OP(aes64ks1i, "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum) +OP(aes64ks2, "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(amoadd_b, "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_d, "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_h, "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_q, "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoadd_w, "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_b, "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_d, "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_h, "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_q, "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoand_w, "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_b, "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_h, "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amocas_w, "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_b, "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_d, "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_h, "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_q, "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomax_w, "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_b, "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_d, "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_h, "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_q, "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomaxu_w, "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_b, "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_d, "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_h, "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_q, "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amomin_w, "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_b, "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_d, "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_h, "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_q, "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amominu_w, "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_b, "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_d, "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_h, "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_q, "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoor_w, "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_b, "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_d, "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_h, "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_q, "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoswap_w, "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_b, "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_d, "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_h, "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_q, "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(amoxor_w, "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) OP(and, "and", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(andi, "andi", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(andn, "andn", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(auipc, "auipc", rv_codec_u, rv_fmt_rd_uoffset) +OP(bclr, "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(bclri, "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(beq, "beq", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_beq) +OP(beqz, "beqz", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bext, "bext", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(bexti, "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(bge, "bge", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bge) +OP(bgeu, "bgeu", rv_codec_sb, rv_fmt_rs1_rs2_offset) +OP(bgez, "bgez", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bgtz, "bgtz", rv_codec_illegal, rv_fmt_rs2_offset) +OP(binv, "binv", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(binvi, "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(blez, "blez", rv_codec_illegal, rv_fmt_rs2_offset) +OP(blt, "blt", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_blt) +OP(bltu, "bltu", rv_codec_sb, rv_fmt_rs1_rs2_offset) +OP(bltz, "bltz", rv_codec_illegal, rv_fmt_rs1_offset) +OP(bne, "bne", rv_codec_sb, rv_fmt_rs1_rs2_offset, rvcp_bne) +OP(bnez, "bnez", rv_codec_illegal, rv_fmt_rs1_offset) +OP(brev8, "brev8", rv_codec_r, rv_fmt_rd_rs1) +OP(bset, "bset", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(bseti, "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(c_add, "c.add", rv_codec_cr, NULL, DECOMP(op_add)) +OP(c_addi, "c.addi", rv_codec_ci, NULL, DECOMP(op_addi)) +OP(c_addi16sp, "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(op_addi)) +OP(c_addi4spn, "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(op_addi)) +OP(c_addiw, "c.addiw", rv_codec_ci, NULL, DECOMP(op_addiw)) +OP(c_addw, "c.addw", rv_codec_cs, NULL, DECOMP(op_addw)) +OP(c_and, "c.and", rv_codec_cs, NULL, DECOMP(op_and)) +OP(c_andi, "c.andi", rv_codec_cb_imm, NULL, DECOMP(op_andi)) +OP(c_beqz, "c.beqz", rv_codec_cb, NULL, DECOMP(op_beqz)) +OP(c_bnez, "c.bnez", rv_codec_cb, NULL, DECOMP(op_bnez)) +OP(c_ebreak, "c.ebreak", rv_codec_ci_none, NULL, DECOMP(op_ebreak)) +OP(c_fld, "c.fld", rv_codec_cl_ld, NULL, DECOMP(op_fld)) +OP(c_fldsp, "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_fld)) +OP(c_flw, "c.flw", rv_codec_cl_lw, NULL, DECOMP(op_flw)) +OP(c_flwsp, "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_flw)) +OP(c_fsd, "c.fsd", rv_codec_cs_sd, NULL, DECOMP(op_fsd)) +OP(c_fsdsp, "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(op_fsd)) +OP(c_fsw, "c.fsw", rv_codec_cs_sw, NULL, DECOMP(op_fsw)) +OP(c_fswsp, "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(op_fsw)) +OP(c_j, "c.j", rv_codec_cj, NULL, DECOMP(op_j)) +OP(c_jal, "c.jal", rv_codec_cj_jal, NULL, DECOMP(op_jal)) +OP(c_jalr, "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(op_jalr)) +OP(c_jr, "c.jr", rv_codec_cr_jr, NULL, DECOMP(op_jr)) +OP(c_lbu, "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) +OP(c_ld, "c.ld", rv_codec_cl_ld, NULL, DECOMP(op_ld)) +OP(c_ldsp, "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_ld)) +OP(c_lh, "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(c_lhu, "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(c_li, "c.li", rv_codec_ci_li, NULL, DECOMP(op_addi)) +OP(c_lq, "c.lq", rv_codec_cl_lq, NULL, DECOMP(op_lq)) +OP(c_lqsp, "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(op_lq)) +OP(c_lui, "c.lui", rv_codec_ci_lui, NULL, DECOMP(op_lui)) +OP(c_lw, "c.lw", rv_codec_cl_lw, NULL, DECOMP(op_lw)) +OP(c_lwsp, "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_lw)) +OP(c_mop, "c.mop", rv_codec_cmop, rv_fmt_cmop) +OP(c_mul, "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2) +OP(c_mv, "c.mv", rv_codec_cr_mv, NULL, DECOMP(op_mv)) +OP(c_not, "c.not", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_or, "c.or", rv_codec_cs, NULL, DECOMP(op_or)) +OP(c_sb, "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) +OP(c_sd, "c.sd", rv_codec_cs_sd, NULL, DECOMP(op_sd)) +OP(c_sdsp, "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(op_sd)) +OP(c_sext_b, "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_sext_h, "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_sh, "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) +OP(c_slli, "c.slli", rv_codec_ci_sh6, NULL, DECOMP(op_slli)) +OP(c_sq, "c.sq", rv_codec_cs_sq, NULL, DECOMP(op_sq)) +OP(c_sqsp, "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(op_sq)) +OP(c_srai, "c.srai", rv_codec_cb_sh6, NULL, DECOMP(op_srai)) +OP(c_srli, "c.srli", rv_codec_cb_sh6, NULL, DECOMP(op_srli)) +OP(c_sspopchk, "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(op_sspopchk)) +OP(c_sspush, "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(op_sspush)) +OP(c_sub, "c.sub", rv_codec_cs, NULL, DECOMP(op_sub)) +OP(c_subw, "c.subw", rv_codec_cs, NULL, DECOMP(op_subw)) +OP(c_sw, "c.sw", rv_codec_cs_sw, NULL, DECOMP(op_sw)) +OP(c_swsp, "c.swsp", rv_codec_css_swsp, NULL, DECOMP(op_sw)) +OP(c_xor, "c.xor", rv_codec_cs, NULL, DECOMP(op_xor)) +OP(c_zext_b, "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_zext_h, "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd) +OP(c_zext_w, "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd) +OP(cbo_clean, "cbo.clean", rv_codec_r, rv_fmt_rs1) +OP(cbo_flush, "cbo.flush", rv_codec_r, rv_fmt_rs1) +OP(cbo_inval, "cbo.inval", rv_codec_r, rv_fmt_rs1) +OP(cbo_zero, "cbo.zero", rv_codec_r, rv_fmt_rs1) +OP(clmul, "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clmulh, "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clmulr, "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(clz, "clz", rv_codec_r, rv_fmt_rd_rs1) +OP(clzw, "clzw", rv_codec_r, rv_fmt_rd_rs1) +OP(cm_jalt, "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) +OP(cm_jt, "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) +OP(cm_mva01s, "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) +OP(cm_mvsa01, "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) +OP(cm_pop, "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_popret, "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_popretz, "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) +OP(cm_push, "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist) +OP(cpop, "cpop", rv_codec_r, rv_fmt_rd_rs1) +OP(cpopw, "cpopw", rv_codec_r, rv_fmt_rd_rs1) +OP(csrrc, "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrci, "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(csrrs, "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrsi, "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(csrrw, "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1) +OP(csrrwi, "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) +OP(ctz, "ctz", rv_codec_r, rv_fmt_rd_rs1) +OP(ctzw, "ctzw", rv_codec_r, rv_fmt_rd_rs1) +OP(czero_eqz, "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(czero_nez, "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(div, "div", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divd, "divd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divu, "divu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divud, "divud", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divuw, "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(divw, "divw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(dret, "dret", rv_codec_none, rv_fmt_none) +OP(ebreak, "ebreak", rv_codec_none, rv_fmt_none) +OP(ecall, "ecall", rv_codec_none, rv_fmt_none) +OP(fabs_d, "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fabs_q, "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fabs_s, "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fadd_d, "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fadd_q, "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fadd_s, "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fclass_d, "fclass.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fclass_q, "fclass.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fclass_s, "fclass.s", rv_codec_r, rv_fmt_rd_frs1) +OP(fcvt_bf16_s, "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_d_l, "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_d_lu, "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_d_q, "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_d_s, "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_d_w, "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_d_wu, "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_l_d, "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_l_q, "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_l_s, "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_d, "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_q, "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_lu_s, "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_q_d, "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_q_l, "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_q_lu, "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_q_s, "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_q_w, "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_q_wu, "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_bf16, "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_s_d, "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_s_l, "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_lu, "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_q, "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fcvt_s_w, "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_s_wu, "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) +OP(fcvt_w_d, "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_w_q, "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_w_s, "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_d, "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_q, "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvt_wu_s, "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fcvtmod_w_d, "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) +OP(fdiv_d, "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fdiv_q, "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fdiv_s, "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) OP(fence, "fence", rv_codec_r_f, rv_fmt_pred_succ) OP(fence_i, "fence.i", rv_codec_none, rv_fmt_none) -OP(lwu, "lwu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(feq_d, "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(feq_q, "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(feq_s, "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fld, "fld", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fle_d, "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fle_q, "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fle_s, "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_d, "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_h, "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_q, "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fleq_s, "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flh, "flh", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fli_d, "fli.d", rv_codec_fli, rv_fmt_fli) +OP(fli_h, "fli.h", rv_codec_fli, rv_fmt_fli) +OP(fli_q, "fli.q", rv_codec_fli, rv_fmt_fli) +OP(fli_s, "fli.s", rv_codec_fli, rv_fmt_fli) +OP(flq, "flq", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(flt_d, "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flt_q, "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flt_s, "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_d, "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_h, "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_q, "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(fltq_s, "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) +OP(flw, "flw", rv_codec_i, rv_fmt_frd_offset_rs1) +OP(fmadd_d, "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmadd_q, "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmadd_s, "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmax_d, "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmax_q, "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmax_s, "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_d, "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_h, "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_q, "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmaxm_s, "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmin_d, "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmin_q, "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmin_s, "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_d, "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_h, "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_q, "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fminm_s, "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) +OP(fmsub_d, "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmsub_q, "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmsub_s, "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fmul_d, "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmul_q, "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmul_s, "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fmv_d, "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fmv_d_x, "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fmv_h_x, "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fmv_q, "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fmv_q_x, "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fmv_s, "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fmv_s_x, "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1) +OP(fmv_x_d, "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fmv_x_h, "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1) +OP(fmv_x_q, "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fmv_x_s, "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1) +OP(fmvh_x_d, "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1) +OP(fmvh_x_q, "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1) +OP(fmvp_d_x, "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2) +OP(fmvp_q_x, "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2) +OP(fneg_d, "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fneg_q, "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fneg_s, "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1) +OP(fnmadd_d, "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmadd_q, "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmadd_s, "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_d, "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_q, "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(fnmsub_s, "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) +OP(frcsr, "frcsr", rv_codec_i_csr, rv_fmt_rd) +OP(frflags, "frflags", rv_codec_i_csr, rv_fmt_rd) +OP(fround_d, "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_h, "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_q, "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fround_s, "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_d, "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_h, "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_q, "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(froundnx_s, "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(frrm, "frrm", rv_codec_i_csr, rv_fmt_rd) +OP(fscsr, "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsd, "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fsflags, "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsflagsi, "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm) +OP(fsgnj_d, "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d) +OP(fsgnj_q, "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q) +OP(fsgnj_s, "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s) +OP(fsgnjn_d, "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d) +OP(fsgnjn_q, "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q) +OP(fsgnjn_s, "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s) +OP(fsgnjx_d, "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d) +OP(fsgnjx_q, "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q) +OP(fsgnjx_s, "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s) +OP(fsh, "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fsq, "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(fsqrt_d, "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fsqrt_q, "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fsqrt_s, "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) +OP(fsrm, "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1) +OP(fsrmi, "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm) +OP(fsub_d, "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsub_q, "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsub_s, "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) +OP(fsw, "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1) +OP(hret, "hret", rv_codec_none, rv_fmt_none) +OP(illegal, "illegal", rv_codec_none, rv_fmt_none) +OP(j, "j", rv_codec_illegal, rv_fmt_offset) +OP(jal, "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal) +OP(jal_ra, "jal", rv_codec_illegal, rv_fmt_offset) +OP(jalr, "jalr", rv_codec_i, rv_fmt_rd_rs1_offset, rvcp_jalr) +OP(jalr_ra, "jalr", rv_codec_illegal, rv_fmt_rs1) +OP(jr, "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr) +OP(lb, "lb", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lbu, "lbu", rv_codec_i, rv_fmt_rd_offset_rs1) OP(ld, "ld", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(sd, "sd", rv_codec_s, rv_fmt_rs2_offset_rs1) -OP(addiw, "addiw", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_addiw) -OP(slliw, "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) -OP(srliw, "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) -OP(sraiw, "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) -OP(addw, "addw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(subw, "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw) -OP(sllw, "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(srlw, "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sraw, "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(ldu, "ldu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lh, "lh", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lhu, "lhu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lpad, "lpad", rv_codec_lp, rv_fmt_imm) OP(lq, "lq", rv_codec_i, rv_fmt_rd_offset_rs1) -OP(sq, "sq", rv_codec_s, rv_fmt_rs2_offset_rs1) -OP(addid, "addid", rv_codec_i, rv_fmt_rd_rs1_imm) -OP(sllid, "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) -OP(srlid, "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) -OP(sraid, "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) -OP(addd, "addd", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(subd, "subd", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(slld, "slld", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(srld, "srld", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(srad, "srad", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(lr_d, "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(lr_q, "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(lr_w, "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) +OP(lui, "lui", rv_codec_u, rv_fmt_rd_uimm) +OP(lw, "lw", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(lwu, "lwu", rv_codec_i, rv_fmt_rd_offset_rs1) +OP(max, "max", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(maxu, "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(min, "min", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(minu, "minu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(mnret, "mnret", rv_codec_none, rv_fmt_none) +OP(mop_r, "mop.r", rv_codec_mop_r, rv_fmt_mop_r) +OP(mop_rr, "mop.rr", rv_codec_mop_rr, rv_fmt_mop_rr) +OP(mret, "mret", rv_codec_none, rv_fmt_none) OP(mul, "mul", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(muld, "muld", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mulh, "mulh", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mulhsu, "mulhsu", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mulhu, "mulhu", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(div, "div", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(divu, "divu", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(rem, "rem", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(remu, "remu", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(mulw, "mulw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(divw, "divw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(divuw, "divuw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(remw, "remw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(remuw, "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(muld, "muld", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(divd, "divd", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(divud, "divud", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(remd, "remd", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(remud, "remud", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(lr_w, "lr.w", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) -OP(sc_w, "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoswap_w, "amoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoadd_w, "amoadd.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoxor_w, "amoxor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoor_w, "amoor.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoand_w, "amoand.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomin_w, "amomin.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomax_w, "amomax.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amominu_w, "amominu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomaxu_w, "amomaxu.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(lr_d, "lr.d", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) -OP(sc_d, "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoswap_d, "amoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoadd_d, "amoadd.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoxor_d, "amoxor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoor_d, "amoor.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoand_d, "amoand.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomin_d, "amomin.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomax_d, "amomax.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amominu_d, "amominu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomaxu_d, "amomaxu.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(lr_q, "lr.q", rv_codec_r_l, rv_fmt_aqrl_rd_rs1) -OP(sc_q, "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoswap_q, "amoswap.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoadd_q, "amoadd.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoxor_q, "amoxor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoor_q, "amoor.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoand_q, "amoand.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomin_q, "amomin.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomax_q, "amomax.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amominu_q, "amominu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomaxu_q, "amomaxu.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(ecall, "ecall", rv_codec_none, rv_fmt_none) -OP(ebreak, "ebreak", rv_codec_none, rv_fmt_none) -OP(uret, "uret", rv_codec_none, rv_fmt_none) -OP(sret, "sret", rv_codec_none, rv_fmt_none) -OP(hret, "hret", rv_codec_none, rv_fmt_none) -OP(mret, "mret", rv_codec_none, rv_fmt_none) -OP(dret, "dret", rv_codec_none, rv_fmt_none) -OP(sfence_vm, "sfence.vm", rv_codec_r, rv_fmt_rs1) -OP(sfence_vma, "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2) -OP(wfi, "wfi", rv_codec_none, rv_fmt_none) -OP(csrrw, "csrrw", rv_codec_i_csr, rv_fmt_rd_csr_rs1) -OP(csrrs, "csrrs", rv_codec_i_csr, rv_fmt_rd_csr_rs1) -OP(csrrc, "csrrc", rv_codec_i_csr, rv_fmt_rd_csr_rs1) -OP(csrrwi, "csrrwi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) -OP(csrrsi, "csrrsi", rv_codec_i_csr, rv_fmt_rd_csr_zimm) -OP(csrrci, "csrrci", rv_codec_i_csr, rv_fmt_rd_csr_zimm) -OP(flw, "flw", rv_codec_i, rv_fmt_frd_offset_rs1) -OP(fsw, "fsw", rv_codec_s, rv_fmt_frs2_offset_rs1) -OP(fmadd_s, "fmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fmsub_s, "fmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmsub_s, "fnmsub.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmadd_s, "fnmadd.s", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fadd_s, "fadd.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsub_s, "fsub.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fmul_s, "fmul.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fdiv_s, "fdiv.s", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsgnj_s, "fsgnj.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_s) -OP(fsgnjn_s, "fsgnjn.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_s) -OP(fsgnjx_s, "fsgnjx.s", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_s) -OP(fmin_s, "fmin.s", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmax_s, "fmax.s", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fsqrt_s, "fsqrt.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fle_s, "fle.s", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(flt_s, "flt.s", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(feq_s, "feq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fcvt_w_s, "fcvt.w.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_wu_s, "fcvt.wu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_s_w, "fcvt.s.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_s_wu, "fcvt.s.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fmv_x_s, "fmv.x.s", rv_codec_r, rv_fmt_rd_frs1) -OP(fclass_s, "fclass.s", rv_codec_r, rv_fmt_rd_frs1) -OP(fmv_s_x, "fmv.s.x", rv_codec_r, rv_fmt_frd_rs1) -OP(fcvt_l_s, "fcvt.l.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_lu_s, "fcvt.lu.s", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_s_l, "fcvt.s.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_s_lu, "fcvt.s.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fld, "fld", rv_codec_i, rv_fmt_frd_offset_rs1) -OP(fsd, "fsd", rv_codec_s, rv_fmt_frs2_offset_rs1) -OP(fmadd_d, "fmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fmsub_d, "fmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmsub_d, "fnmsub.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmadd_d, "fnmadd.d", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fadd_d, "fadd.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsub_d, "fsub.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fmul_d, "fmul.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fdiv_d, "fdiv.d", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsgnj_d, "fsgnj.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_d) -OP(fsgnjn_d, "fsgnjn.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_d) -OP(fsgnjx_d, "fsgnjx.d", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_d) -OP(fmin_d, "fmin.d", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmax_d, "fmax.d", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fcvt_s_d, "fcvt.s.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvt_d_s, "fcvt.d.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fsqrt_d, "fsqrt.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fle_d, "fle.d", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(flt_d, "flt.d", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(feq_d, "feq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fcvt_w_d, "fcvt.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_wu_d, "fcvt.wu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_d_w, "fcvt.d.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_d_wu, "fcvt.d.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fclass_d, "fclass.d", rv_codec_r, rv_fmt_rd_frs1) -OP(fcvt_l_d, "fcvt.l.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_lu_d, "fcvt.lu.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fmv_x_d, "fmv.x.d", rv_codec_r, rv_fmt_rd_frs1) -OP(fcvt_d_l, "fcvt.d.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_d_lu, "fcvt.d.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fmv_d_x, "fmv.d.x", rv_codec_r, rv_fmt_frd_rs1) -OP(flq, "flq", rv_codec_i, rv_fmt_frd_offset_rs1) -OP(fsq, "fsq", rv_codec_s, rv_fmt_frs2_offset_rs1) -OP(fmadd_q, "fmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fmsub_q, "fmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmsub_q, "fnmsub.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fnmadd_q, "fnmadd.q", rv_codec_r4_m, rv_fmt_rm_frd_frs1_frs2_frs3) -OP(fadd_q, "fadd.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsub_q, "fsub.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fmul_q, "fmul.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fdiv_q, "fdiv.q", rv_codec_r_m, rv_fmt_rm_frd_frs1_frs2) -OP(fsgnj_q, "fsgnj.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnj_q) -OP(fsgnjn_q, "fsgnjn.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjn_q) -OP(fsgnjx_q, "fsgnjx.q", rv_codec_r, rv_fmt_frd_frs1_frs2, rvcp_fsgnjx_q) -OP(fmin_q, "fmin.q", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmax_q, "fmax.q", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fcvt_s_q, "fcvt.s.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvt_q_s, "fcvt.q.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvt_d_q, "fcvt.d.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvt_q_d, "fcvt.q.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fsqrt_q, "fsqrt.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fle_q, "fle.q", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(flt_q, "flt.q", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(feq_q, "feq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fcvt_w_q, "fcvt.w.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_wu_q, "fcvt.wu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_q_w, "fcvt.q.w", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_q_wu, "fcvt.q.wu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fclass_q, "fclass.q", rv_codec_r, rv_fmt_rd_frs1) -OP(fcvt_l_q, "fcvt.l.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_lu_q, "fcvt.lu.q", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fcvt_q_l, "fcvt.q.l", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fcvt_q_lu, "fcvt.q.lu", rv_codec_r_m, rv_fmt_rm_frd_rs1) -OP(fmv_x_q, "fmv.x.q", rv_codec_r, rv_fmt_rd_frs1) -OP(fmv_q_x, "fmv.q.x", rv_codec_r, rv_fmt_frd_rs1) -OP(c_addi4spn, "c.addi4spn", rv_codec_ciw_4spn, NULL, DECOMP(op_addi)) -OP(c_fld, "c.fld", rv_codec_cl_ld, NULL, DECOMP(op_fld)) -OP(c_lw, "c.lw", rv_codec_cl_lw, NULL, DECOMP(op_lw)) -OP(c_flw, "c.flw", rv_codec_cl_lw, NULL, DECOMP(op_flw)) -OP(c_fsd, "c.fsd", rv_codec_cs_sd, NULL, DECOMP(op_fsd)) -OP(c_sw, "c.sw", rv_codec_cs_sw, NULL, DECOMP(op_sw)) -OP(c_fsw, "c.fsw", rv_codec_cs_sw, NULL, DECOMP(op_fsw)) -OP(c_addi, "c.addi", rv_codec_ci, NULL, DECOMP(op_addi)) -OP(c_jal, "c.jal", rv_codec_cj_jal, NULL, DECOMP(op_jal)) -OP(c_li, "c.li", rv_codec_ci_li, NULL, DECOMP(op_addi)) -OP(c_addi16sp, "c.addi16sp", rv_codec_ci_16sp, NULL, DECOMP(op_addi)) -OP(c_lui, "c.lui", rv_codec_ci_lui, NULL, DECOMP(op_lui)) -OP(c_srli, "c.srli", rv_codec_cb_sh6, NULL, DECOMP(op_srli)) -OP(c_srai, "c.srai", rv_codec_cb_sh6, NULL, DECOMP(op_srai)) -OP(c_andi, "c.andi", rv_codec_cb_imm, NULL, DECOMP(op_andi)) -OP(c_sub, "c.sub", rv_codec_cs, NULL, DECOMP(op_sub)) -OP(c_xor, "c.xor", rv_codec_cs, NULL, DECOMP(op_xor)) -OP(c_or, "c.or", rv_codec_cs, NULL, DECOMP(op_or)) -OP(c_and, "c.and", rv_codec_cs, NULL, DECOMP(op_and)) -OP(c_subw, "c.subw", rv_codec_cs, NULL, DECOMP(op_subw)) -OP(c_addw, "c.addw", rv_codec_cs, NULL, DECOMP(op_addw)) -OP(c_j, "c.j", rv_codec_cj, NULL, DECOMP(op_j)) -OP(c_beqz, "c.beqz", rv_codec_cb, NULL, DECOMP(op_beqz)) -OP(c_bnez, "c.bnez", rv_codec_cb, NULL, DECOMP(op_bnez)) -OP(c_slli, "c.slli", rv_codec_ci_sh6, NULL, DECOMP(op_slli)) -OP(c_fldsp, "c.fldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_fld)) -OP(c_lwsp, "c.lwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_lw)) -OP(c_flwsp, "c.flwsp", rv_codec_ci_lwsp, NULL, DECOMP(op_flw)) -OP(c_jr, "c.jr", rv_codec_cr_jr, NULL, DECOMP(op_jr)) -OP(c_mv, "c.mv", rv_codec_cr_mv, NULL, DECOMP(op_mv)) -OP(c_ebreak, "c.ebreak", rv_codec_ci_none, NULL, DECOMP(op_ebreak)) -OP(c_jalr, "c.jalr", rv_codec_cr_jalr, NULL, DECOMP(op_jalr)) -OP(c_add, "c.add", rv_codec_cr, NULL, DECOMP(op_add)) -OP(c_fsdsp, "c.fsdsp", rv_codec_css_sdsp, NULL, DECOMP(op_fsd)) -OP(c_swsp, "c.swsp", rv_codec_css_swsp, NULL, DECOMP(op_sw)) -OP(c_fswsp, "c.fswsp", rv_codec_css_swsp, NULL, DECOMP(op_fsw)) -OP(c_ld, "c.ld", rv_codec_cl_ld, NULL, DECOMP(op_ld)) -OP(c_sd, "c.sd", rv_codec_cs_sd, NULL, DECOMP(op_sd)) -OP(c_addiw, "c.addiw", rv_codec_ci, NULL, DECOMP(op_addiw)) -OP(c_ldsp, "c.ldsp", rv_codec_ci_ldsp, NULL, DECOMP(op_ld)) -OP(c_sdsp, "c.sdsp", rv_codec_css_sdsp, NULL, DECOMP(op_sd)) -OP(c_lq, "c.lq", rv_codec_cl_lq, NULL, DECOMP(op_lq)) -OP(c_sq, "c.sq", rv_codec_cs_sq, NULL, DECOMP(op_sq)) -OP(c_lqsp, "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(op_lq)) -OP(c_sqsp, "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(op_sq)) -OP(nop, "nop", rv_codec_illegal, rv_fmt_none) OP(mv, "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv) -OP(not, "not", rv_codec_illegal, rv_fmt_rd_rs1) OP(neg, "neg", rv_codec_illegal, rv_fmt_rd_rs2) OP(negw, "negw", rv_codec_illegal, rv_fmt_rd_rs2) -OP(sext_w, "sext.w", rv_codec_illegal, rv_fmt_rd_rs1) -OP(seqz, "seqz", rv_codec_illegal, rv_fmt_rd_rs1) -OP(snez, "snez", rv_codec_illegal, rv_fmt_rd_rs2) -OP(sltz, "sltz", rv_codec_illegal, rv_fmt_rd_rs1) -OP(sgtz, "sgtz", rv_codec_illegal, rv_fmt_rd_rs2) -OP(fmv_s, "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fabs_s, "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fneg_s, "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fmv_d, "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fabs_d, "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fneg_d, "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fmv_q, "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fabs_q, "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1) -OP(fneg_q, "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1) -OP(beqz, "beqz", rv_codec_illegal, rv_fmt_rs1_offset) -OP(bnez, "bnez", rv_codec_illegal, rv_fmt_rs1_offset) -OP(blez, "blez", rv_codec_illegal, rv_fmt_rs2_offset) -OP(bgez, "bgez", rv_codec_illegal, rv_fmt_rs1_offset) -OP(bltz, "bltz", rv_codec_illegal, rv_fmt_rs1_offset) -OP(bgtz, "bgtz", rv_codec_illegal, rv_fmt_rs2_offset) -OP(jal_ra, "jal", rv_codec_illegal, rv_fmt_offset) -OP(jalr_ra, "jalr", rv_codec_illegal, rv_fmt_rs1) -OP(j, "j", rv_codec_illegal, rv_fmt_offset) -OP(ret, "ret", rv_codec_illegal, rv_fmt_none) -OP(jr, "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr) -OP(rdcycle, "rdcycle", rv_codec_i_csr, rv_fmt_rd) -OP(rdtime, "rdtime", rv_codec_i_csr, rv_fmt_rd) -OP(rdinstret, "rdinstret", rv_codec_i_csr, rv_fmt_rd) -OP(rdcycleh, "rdcycleh", rv_codec_i_csr, rv_fmt_rd) -OP(rdtimeh, "rdtimeh", rv_codec_i_csr, rv_fmt_rd) -OP(rdinstreth, "rdinstreth", rv_codec_i_csr, rv_fmt_rd) -OP(frcsr, "frcsr", rv_codec_i_csr, rv_fmt_rd) -OP(frrm, "frrm", rv_codec_i_csr, rv_fmt_rd) -OP(frflags, "frflags", rv_codec_i_csr, rv_fmt_rd) -OP(fscsr, "fscsr", rv_codec_i_csr, rv_fmt_rd_rs1) -OP(fsrm, "fsrm", rv_codec_i_csr, rv_fmt_rd_rs1) -OP(fsflags, "fsflags", rv_codec_i_csr, rv_fmt_rd_rs1) -OP(fsrmi, "fsrmi", rv_codec_i_csr, rv_fmt_rd_zimm) -OP(fsflagsi, "fsflagsi", rv_codec_i_csr, rv_fmt_rd_zimm) -OP(bseti, "bseti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(bclri, "bclri", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(binvi, "binvi", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(bexti, "bexti", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(rori, "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) -OP(clz, "clz", rv_codec_r, rv_fmt_rd_rs1) -OP(ctz, "ctz", rv_codec_r, rv_fmt_rd_rs1) -OP(cpop, "cpop", rv_codec_r, rv_fmt_rd_rs1) -OP(sext_h, "sext.h", rv_codec_r, rv_fmt_rd_rs1) -OP(sext_b, "sext.b", rv_codec_r, rv_fmt_rd_rs1) -OP(xnor, "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(orn, "orn", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(andn, "andn", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(rol, "rol", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(ror, "ror", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh1add, "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh2add, "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh3add, "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh1add_uw, "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh2add_uw, "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sh3add_uw, "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(clmul, "clmul", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(clmulr, "clmulr", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(clmulh, "clmulh", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(min, "min", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(minu, "minu", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(max, "max", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(maxu, "maxu", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(clzw, "clzw", rv_codec_r, rv_fmt_rd_rs1) -OP(ctzw, "ctzw", rv_codec_r, rv_fmt_rd_rs1) -OP(cpopw, "cpopw", rv_codec_r, rv_fmt_rd_rs1) -OP(slli_uw, "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) -OP(add_uw, "add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(rolw, "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(rorw, "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(rev8, "rev8", rv_codec_r, rv_fmt_rd_rs1) -OP(zext_h, "zext.h", rv_codec_r, rv_fmt_rd_rs1) -OP(roriw, "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(nop, "nop", rv_codec_illegal, rv_fmt_none) +OP(not, "not", rv_codec_illegal, rv_fmt_rd_rs1) +OP(or, "or", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(orc_b, "orc.b", rv_codec_r, rv_fmt_rd_rs1) -OP(bset, "bset", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(bclr, "bclr", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(binv, "binv", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(bext, "bext", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(aes32esmi, "aes32esmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) -OP(aes32esi, "aes32esi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) -OP(aes32dsmi, "aes32dsmi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) -OP(aes32dsi, "aes32dsi", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) -OP(aes64ks1i, "aes64ks1i", rv_codec_k_rnum, rv_fmt_rd_rs1_rnum) -OP(aes64ks2, "aes64ks2", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(aes64im, "aes64im", rv_codec_r, rv_fmt_rd_rs1) -OP(aes64esm, "aes64esm", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(aes64es, "aes64es", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(aes64dsm, "aes64dsm", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(aes64ds, "aes64ds", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ori, "ori", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(orn, "orn", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(pack, "pack", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(packh, "packh", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(packw, "packw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rdcycle, "rdcycle", rv_codec_i_csr, rv_fmt_rd) +OP(rdcycleh, "rdcycleh", rv_codec_i_csr, rv_fmt_rd) +OP(rdinstret, "rdinstret", rv_codec_i_csr, rv_fmt_rd) +OP(rdinstreth, "rdinstreth", rv_codec_i_csr, rv_fmt_rd) +OP(rdtime, "rdtime", rv_codec_i_csr, rv_fmt_rd) +OP(rdtimeh, "rdtimeh", rv_codec_i_csr, rv_fmt_rd) +OP(rem, "rem", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remd, "remd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remu, "remu", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remud, "remud", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remuw, "remuw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(remw, "remw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ret, "ret", rv_codec_illegal, rv_fmt_none) +OP(rev8, "rev8", rv_codec_r, rv_fmt_rd_rs1) +OP(rol, "rol", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rolw, "rolw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ror, "ror", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(rori, "rori", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(roriw, "roriw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(rorw, "rorw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sb, "sb", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(sc_d, "sc.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(sc_q, "sc.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(sc_w, "sc.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(sd, "sd", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(seqz, "seqz", rv_codec_illegal, rv_fmt_rd_rs1) +OP(sext_b, "sext.b", rv_codec_r, rv_fmt_rd_rs1) +OP(sext_h, "sext.h", rv_codec_r, rv_fmt_rd_rs1) +OP(sext_w, "sext.w", rv_codec_illegal, rv_fmt_rd_rs1) +OP(sfence_vm, "sfence.vm", rv_codec_r, rv_fmt_rs1) +OP(sfence_vma, "sfence.vma", rv_codec_r, rv_fmt_rs1_rs2) +OP(sgtz, "sgtz", rv_codec_illegal, rv_fmt_rd_rs2) +OP(sh, "sh", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(sh1add, "sh1add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh1add_uw, "sh1add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh2add, "sh2add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh2add_uw, "sh2add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh3add, "sh3add", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sh3add_uw, "sh3add.uw", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(sha256sig0, "sha256sig0", rv_codec_r, rv_fmt_rd_rs1) OP(sha256sig1, "sha256sig1", rv_codec_r, rv_fmt_rd_rs1) OP(sha256sum0, "sha256sum0", rv_codec_r, rv_fmt_rd_rs1) OP(sha256sum1, "sha256sum1", rv_codec_r, rv_fmt_rd_rs1) OP(sha512sig0, "sha512sig0", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sig1, "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sum0, "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sum1, "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sum0r, "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sum1r, "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sig0l, "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(sha512sig0h, "sha512sig0h", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(sha512sig1l, "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig0l, "sha512sig0l", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig1, "sha512sig1", rv_codec_r, rv_fmt_rd_rs1_rs2) OP(sha512sig1h, "sha512sig1h", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sig1l, "sha512sig1l", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum0, "sha512sum0", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum0r, "sha512sum0r", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum1, "sha512sum1", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sha512sum1r, "sha512sum1r", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sll, "sll", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(slld, "slld", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(slli, "slli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(slli_uw, "slli.uw", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(sllid, "sllid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(slliw, "slliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(sllw, "sllw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(slt, "slt", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_slt) +OP(slti, "slti", rv_codec_i, rv_fmt_rd_rs1_imm) +OP(sltiu, "sltiu", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_sltiu) +OP(sltu, "sltu", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sltu) +OP(sltz, "sltz", rv_codec_illegal, rv_fmt_rd_rs1) OP(sm3p0, "sm3p0", rv_codec_r, rv_fmt_rd_rs1) OP(sm3p1, "sm3p1", rv_codec_r, rv_fmt_rd_rs1) OP(sm4ed, "sm4ed", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) OP(sm4ks, "sm4ks", rv_codec_k_bs, rv_fmt_rs1_rs2_bs) -OP(brev8, "brev8", rv_codec_r, rv_fmt_rd_rs1) -OP(pack, "pack", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(packh, "packh", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(packw, "packw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(snez, "snez", rv_codec_illegal, rv_fmt_rd_rs2) +OP(sq, "sq", rv_codec_s, rv_fmt_rs2_offset_rs1) +OP(sra, "sra", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srad, "srad", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srai, "srai", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(sraid, "sraid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(sraiw, "sraiw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(sraw, "sraw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(sret, "sret", rv_codec_none, rv_fmt_none) +OP(srl, "srl", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srld, "srld", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(srli, "srli", rv_codec_i_sh7, rv_fmt_rd_rs1_imm) +OP(srlid, "srlid", rv_codec_i_sh6, rv_fmt_rd_rs1_imm) +OP(srliw, "srliw", rv_codec_i_sh5, rv_fmt_rd_rs1_imm) +OP(srlw, "srlw", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(ssamoswap_d, "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(ssamoswap_w, "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) +OP(sspopchk, "sspopchk", rv_codec_r, rv_fmt_rs1) +OP(sspush, "sspush", rv_codec_r, rv_fmt_rs2) +OP(ssrdp, "ssrdp", rv_codec_r, rv_fmt_rd) +OP(sub, "sub", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_sub) +OP(subd, "subd", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(subw, "subw", rv_codec_r, rv_fmt_rd_rs1_rs2, rvcp_subw) +OP(sw, "sw", rv_codec_s, rv_fmt_rs2_offset_rs1) OP(unzip, "unzip", rv_codec_r, rv_fmt_rd_rs1) -OP(zip, "zip", rv_codec_r, rv_fmt_rd_rs1) -OP(xperm4, "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(xperm8, "xperm8", rv_codec_r, rv_fmt_rd_rs1) -OP(vle8_v, "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle16_v, "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle32_v, "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle64_v, "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vse8_v, "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vse16_v, "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vse32_v, "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vse64_v, "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vlm_v, "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vsm_v, "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vlse8_v, "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vlse16_v, "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vlse32_v, "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vlse64_v, "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vsse8_v, "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vsse16_v, "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vsse32_v, "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vsse64_v, "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) -OP(vluxei8_v, "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vluxei16_v, "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vluxei32_v, "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vluxei64_v, "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vloxei8_v, "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vloxei16_v, "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vloxei32_v, "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vloxei64_v, "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsuxei8_v, "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsuxei16_v, "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsuxei32_v, "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsuxei64_v, "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsoxei8_v, "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsoxei16_v, "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsoxei32_v, "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vsoxei64_v, "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) -OP(vle8ff_v, "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle16ff_v, "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle32ff_v, "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vle64ff_v, "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl1re8_v, "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl1re16_v, "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl1re32_v, "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl1re64_v, "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl2re8_v, "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl2re16_v, "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl2re32_v, "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl2re64_v, "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl4re8_v, "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl4re16_v, "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl4re32_v, "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl4re64_v, "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl8re8_v, "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl8re16_v, "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl8re32_v, "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vl8re64_v, "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vs1r_v, "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vs2r_v, "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vs4r_v, "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vs8r_v, "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) -OP(vadd_vv, "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vadd_vx, "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vadd_vi, "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vsub_vv, "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsub_vx, "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vrsub_vx, "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vrsub_vi, "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vwaddu_vv, "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwaddu_vx, "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwadd_vv, "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwadd_vx, "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwsubu_vv, "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwsubu_vx, "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwsub_vv, "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwsub_vx, "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwaddu_wv, "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwaddu_wx, "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwadd_wv, "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwadd_wx, "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwsubu_wv, "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwsubu_wx, "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwsub_wv, "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwsub_wx, "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vadc_vvm, "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) -OP(vadc_vxm, "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) -OP(vadc_vim, "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) -OP(vmadc_vvm, "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) -OP(vmadc_vxm, "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) -OP(vmadc_vim, "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) -OP(vsbc_vvm, "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) -OP(vsbc_vxm, "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) -OP(vmsbc_vvm, "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) -OP(vmsbc_vxm, "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) -OP(vand_vv, "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vand_vx, "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vand_vi, "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vor_vv, "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vor_vx, "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vor_vi, "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vxor_vv, "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vxor_vx, "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vxor_vi, "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vsll_vv, "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsll_vx, "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsll_vi, "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vsrl_vv, "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsrl_vx, "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsrl_vi, "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vsra_vv, "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsra_vx, "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsra_vi, "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vnsrl_wv, "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vnsrl_wx, "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vnsrl_wi, "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vnsra_wv, "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vnsra_wx, "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vnsra_wi, "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vmseq_vv, "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmseq_vx, "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmseq_vi, "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vmsne_vv, "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmsne_vx, "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsne_vi, "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vmsltu_vv, "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmsltu_vx, "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmslt_vv, "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmslt_vx, "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsleu_vv, "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmsleu_vx, "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsleu_vi, "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vmsle_vv, "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmsle_vx, "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsle_vi, "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vmsgtu_vx, "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsgtu_vi, "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vmsgt_vx, "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmsgt_vi, "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vminu_vv, "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vminu_vx, "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmin_vv, "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmin_vx, "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmaxu_vv, "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmaxu_vx, "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmax_vv, "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmax_vx, "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmul_vv, "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmul_vx, "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmulh_vv, "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmulh_vx, "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmulhu_vv, "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmulhu_vx, "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmulhsu_vv, "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmulhsu_vx, "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vdivu_vv, "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vdivu_vx, "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vdiv_vv, "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vdiv_vx, "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vremu_vv, "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vremu_vx, "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vrem_vv, "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vrem_vx, "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwmulu_vv, "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwmulu_vx, "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwmulsu_vv, "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwmulsu_vx, "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwmul_vv, "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwmul_vx, "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vmacc_vv, "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vmacc_vx, "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vnmsac_vv, "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vnmsac_vx, "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vmadd_vv, "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vmadd_vx, "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vnmsub_vv, "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vnmsub_vx, "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vwmaccu_vv, "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vwmaccu_vx, "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vwmacc_vv, "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vwmacc_vx, "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vwmaccsu_vv, "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vwmaccsu_vx, "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vwmaccus_vx, "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) -OP(vmv_v_v, "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1) -OP(vmv_v_x, "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1) -OP(vmv_v_i, "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm) -OP(vmerge_vvm, "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) -OP(vmerge_vxm, "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) -OP(vmerge_vim, "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) -OP(vsaddu_vv, "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsaddu_vx, "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsaddu_vi, "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vsadd_vv, "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsadd_vx, "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsadd_vi, "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) -OP(vssubu_vv, "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vssubu_vx, "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vssub_vv, "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vssub_vx, "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(uret, "uret", rv_codec_none, rv_fmt_none) OP(vaadd_vv, "vaadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vaadd_vx, "vaadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vaaddu_vv, "vaaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vaaddu_vx, "vaaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vadc_vim, "vadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vadc_vvm, "vadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vadc_vxm, "vadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vadd_vi, "vadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vadd_vv, "vadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vadd_vx, "vadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vaesdf_vs, "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdf_vv, "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdm_vs, "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesdm_vv, "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesef_vs, "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesef_vv, "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesem_vs, "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaesem_vv, "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vaeskf1_vi, "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vaeskf2_vi, "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) +OP(vaesz_vs, "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vand_vi, "vand.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vand_vv, "vand.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vand_vx, "vand.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vandn_vv, "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vandn_vx, "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vasub_vv, "vasub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vasub_vx, "vasub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vasubu_vv, "vasubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vasubu_vx, "vasubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vsmul_vv, "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vsmul_vx, "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vssrl_vv, "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vssrl_vx, "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vssrl_vi, "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vssra_vv, "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vssra_vx, "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vssra_vi, "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vnclipu_wv, "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vnclipu_wx, "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vnclipu_wi, "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vnclip_wv, "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vnclip_wx, "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vnclip_wi, "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vfadd_vv, "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfadd_vf, "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfsub_vv, "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfsub_vf, "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfrsub_vf, "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfwadd_vv, "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwadd_vf, "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfwadd_wv, "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwadd_wf, "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfwsub_vv, "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwsub_vf, "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfwsub_wv, "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwsub_wf, "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfmul_vv, "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfmul_vf, "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfdiv_vv, "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfdiv_vf, "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfrdiv_vf, "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfwmul_vv, "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwmul_vf, "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfmacc_vv, "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfmacc_vf, "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfnmacc_vv, "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfnmacc_vf, "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfmsac_vv, "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfmsac_vf, "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfnmsac_vv, "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfnmsac_vf, "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfmadd_vv, "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfmadd_vf, "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfnmadd_vv, "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfnmadd_vf, "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfmsub_vv, "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfmsub_vf, "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfnmsub_vv, "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfnmsub_vf, "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfwmacc_vv, "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfwmacc_vf, "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfwnmacc_vv, "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfwnmacc_vf, "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfwmsac_vv, "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfwmsac_vf, "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfwnmsac_vv, "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfwnmsac_vf, "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(vfsqrt_v, "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vfrsqrt7_v, "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vfrec7_v, "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vfmin_vv, "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfmin_vf, "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfmax_vv, "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfmax_vf, "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfsgnj_vv, "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfsgnj_vf, "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfsgnjn_vv, "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfsgnjn_vf, "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfsgnjx_vv, "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfsgnjx_vf, "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfslide1up_vf, "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfslide1down_vf, "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmfeq_vv, "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmfeq_vf, "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmfne_vv, "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmfne_vf, "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmflt_vv, "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmflt_vf, "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmfle_vv, "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmfle_vf, "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmfgt_vf, "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vmfge_vf, "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) -OP(vfclass_v, "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfmerge_vfm, "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl) -OP(vfmv_v_f, "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1) -OP(vfcvt_xu_f_v, "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfcvt_x_f_v, "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfcvt_f_xu_v, "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfcvt_f_x_v, "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfcvt_rtz_xu_f_v, "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfcvt_rtz_x_f_v, "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_xu_f_v, "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_x_f_v, "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_f_xu_v, "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_f_x_v, "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_f_f_v, "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_rtz_xu_f_v, "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvt_rtz_x_f_v, "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_xu_f_w, "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_x_f_w, "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_f_xu_w, "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_f_x_w, "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_f_f_w, "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_rod_f_f_w, "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_rtz_xu_f_w, "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfncvt_rtz_x_f_w, "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vredsum_vs, "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredand_vs, "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredor_vs, "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredxor_vs, "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredminu_vs, "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredmin_vs, "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredmaxu_vs, "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vredmax_vs, "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwredsumu_vs, "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vwredsum_vs, "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfredusum_vs, "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfredosum_vs, "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfredmin_vs, "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfredmax_vs, "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwredusum_vs, "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vfwredosum_vs, "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmand_mm, "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmnand_mm, "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmandn_mm, "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmxor_mm, "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmor_mm, "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmnor_mm, "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmorn_mm, "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vmxnor_mm, "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vcpop_m, "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) -OP(vfirst_m, "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) -OP(vmsbf_m, "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vmsif_m, "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vmsof_m, "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(viota_m, "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vid_v, "vid.v", rv_codec_v_r, rv_fmt_vd_vm) -OP(vmv_x_s, "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2) -OP(vmv_s_x, "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1) -OP(vfmv_f_s, "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2) -OP(vfmv_s_f, "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1) -OP(vslideup_vx, "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vslideup_vi, "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vslide1up_vx, "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vslidedown_vx, "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vslidedown_vi, "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vslide1down_vx, "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vrgather_vv, "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vrgatherei16_vv, "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vrgather_vx, "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vrgather_vi, "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(vcompress_vm, "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1) -OP(vmv1r_v, "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vmv2r_v, "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vmv4r_v, "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vmv8r_v, "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vzext_vf2, "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vzext_vf4, "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vzext_vf8, "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vsext_vf2, "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vsext_vf4, "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vsext_vf8, "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vsetvli, "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli) -OP(vsetivli, "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli) -OP(vsetvl, "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(c_zext_b, "c.zext.b", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_sext_b, "c.sext.b", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_zext_h, "c.zext.h", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_sext_h, "c.sext.h", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_zext_w, "c.zext.w", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_not, "c.not", rv_codec_zcb_ext, rv_fmt_rd) -OP(c_mul, "c.mul", rv_codec_zcb_mul, rv_fmt_rd_rs2) -OP(c_lbu, "c.lbu", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) -OP(c_lhu, "c.lhu", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) -OP(c_lh, "c.lh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) -OP(c_sb, "c.sb", rv_codec_zcb_lb, rv_fmt_rs1_rs2_zce_ldst) -OP(c_sh, "c.sh", rv_codec_zcb_lh, rv_fmt_rs1_rs2_zce_ldst) -OP(cm_push, "cm.push", rv_codec_zcmp_cm_pushpop, rv_fmt_push_rlist) -OP(cm_pop, "cm.pop", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) -OP(cm_popret, "cm.popret", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) -OP(cm_popretz, "cm.popretz", rv_codec_zcmp_cm_pushpop, rv_fmt_pop_rlist) -OP(cm_mva01s, "cm.mva01s", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) -OP(cm_mvsa01, "cm.mvsa01", rv_codec_zcmp_cm_mv, rv_fmt_rd_rs2) -OP(cm_jt, "cm.jt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) -OP(cm_jalt, "cm.jalt", rv_codec_zcmt_jt, rv_fmt_zcmt_index) -OP(czero_eqz, "czero.eqz", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(czero_nez, "czero.nez", rv_codec_r, rv_fmt_rd_rs1_rs2) -OP(fcvt_bf16_s, "fcvt.bf16.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvt_s_bf16, "fcvt.s.bf16", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(vfncvtbf16_f_f_w, "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwcvtbf16_f_f_v, "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) -OP(vfwmaccbf16_vv, "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) -OP(vfwmaccbf16_vf, "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) -OP(flh, "flh", rv_codec_i, rv_fmt_frd_offset_rs1) -OP(fsh, "fsh", rv_codec_s, rv_fmt_frs2_offset_rs1) -OP(fmv_h_x, "fmv.h.x", rv_codec_r, rv_fmt_frd_rs1) -OP(fmv_x_h, "fmv.x.h", rv_codec_r, rv_fmt_rd_frs1) -OP(fli_s, "fli.s", rv_codec_fli, rv_fmt_fli) -OP(fli_d, "fli.d", rv_codec_fli, rv_fmt_fli) -OP(fli_q, "fli.q", rv_codec_fli, rv_fmt_fli) -OP(fli_h, "fli.h", rv_codec_fli, rv_fmt_fli) -OP(fminm_s, "fminm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmaxm_s, "fmaxm.s", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fminm_d, "fminm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmaxm_d, "fmaxm.d", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fminm_q, "fminm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmaxm_q, "fmaxm.q", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fminm_h, "fminm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fmaxm_h, "fmaxm.h", rv_codec_r, rv_fmt_frd_frs1_frs2) -OP(fround_s, "fround.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(froundnx_s, "froundnx.s", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fround_d, "fround.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(froundnx_d, "froundnx.d", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fround_q, "fround.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(froundnx_q, "froundnx.q", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fround_h, "fround.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(froundnx_h, "froundnx.h", rv_codec_r_m, rv_fmt_rm_frd_frs1) -OP(fcvtmod_w_d, "fcvtmod.w.d", rv_codec_r_m, rv_fmt_rm_rd_frs1) -OP(fmvh_x_d, "fmvh.x.d", rv_codec_r, rv_fmt_rd_frs1) -OP(fmvp_d_x, "fmvp.d.x", rv_codec_r, rv_fmt_frd_rs1_rs2) -OP(fmvh_x_q, "fmvh.x.q", rv_codec_r, rv_fmt_rd_frs1) -OP(fmvp_q_x, "fmvp.q.x", rv_codec_r, rv_fmt_frd_rs1_rs2) -OP(fleq_s, "fleq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fltq_s, "fltq.s", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fleq_d, "fleq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fltq_d, "fltq.d", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fleq_q, "fleq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fltq_q, "fltq.q", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fleq_h, "fleq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(fltq_h, "fltq.h", rv_codec_r, rv_fmt_rd_frs1_frs2) -OP(vaesdf_vv, "vaesdf.vv", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesdf_vs, "vaesdf.vs", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesdm_vv, "vaesdm.vv", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesdm_vs, "vaesdm.vs", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesef_vv, "vaesef.vv", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesef_vs, "vaesef.vs", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesem_vv, "vaesem.vv", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaesem_vs, "vaesem.vs", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vaeskf1_vi, "vaeskf1.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) -OP(vaeskf2_vi, "vaeskf2.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) -OP(vaesz_vs, "vaesz.vs", rv_codec_v_r, rv_fmt_vd_vs2) -OP(vandn_vv, "vandn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) -OP(vandn_vx, "vandn.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vbrev_v, "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) OP(vbrev8_v, "vbrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vbrev_v, "vbrev.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) OP(vclmul_vv, "vclmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vclmul_vx, "vclmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vclmulh_vv, "vclmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vclmulh_vx, "vclmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vclz_v, "vclz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vcompress_vm, "vcompress.vm", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vcpop_m, "vcpop.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) OP(vcpop_v, "vcpop.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) OP(vctz_v, "vctz.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vdiv_vv, "vdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vdiv_vx, "vdiv.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vdivu_vv, "vdivu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vdivu_vx, "vdivu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vfadd_vf, "vfadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfadd_vv, "vfadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfclass_v, "vfclass.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_f_x_v, "vfcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_f_xu_v, "vfcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_rtz_x_f_v, "vfcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_rtz_xu_f_v, "vfcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_x_f_v, "vfcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfcvt_xu_f_v, "vfcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfdiv_vf, "vfdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfdiv_vv, "vfdiv.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfirst_m, "vfirst.m", rv_codec_v_r, rv_fmt_rd_vs2_vm) +OP(vfmacc_vf, "vfmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmacc_vv, "vfmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmadd_vf, "vfmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmadd_vv, "vfmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmax_vf, "vfmax.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmax_vv, "vfmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmerge_vfm, "vfmerge.vfm", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vl) +OP(vfmin_vf, "vfmin.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmin_vv, "vfmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmsac_vf, "vfmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmsac_vv, "vfmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmsub_vf, "vfmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfmsub_vv, "vfmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfmul_vf, "vfmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfmul_vv, "vfmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfmv_f_s, "vfmv.f.s", rv_codec_v_r, rv_fmt_fd_vs2) +OP(vfmv_s_f, "vfmv.s.f", rv_codec_v_r, rv_fmt_vd_fs1) +OP(vfmv_v_f, "vfmv.v.f", rv_codec_v_r, rv_fmt_vd_fs1) +OP(vfncvt_f_f_w, "vfncvt.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_f_x_w, "vfncvt.f.x.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_f_xu_w, "vfncvt.f.xu.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rod_f_f_w, "vfncvt.rod.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rtz_x_f_w, "vfncvt.rtz.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_rtz_xu_f_w, "vfncvt.rtz.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_x_f_w, "vfncvt.x.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvt_xu_f_w, "vfncvt.xu.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfncvtbf16_f_f_w, "vfncvtbf16.f.f.w", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfnmacc_vf, "vfnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmacc_vv, "vfnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmadd_vf, "vfnmadd.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmadd_vv, "vfnmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmsac_vf, "vfnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmsac_vv, "vfnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfnmsub_vf, "vfnmsub.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfnmsub_vv, "vfnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfrdiv_vf, "vfrdiv.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfrec7_v, "vfrec7.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfredmax_vs, "vfredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredmin_vs, "vfredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredosum_vs, "vfredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfredusum_vs, "vfredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfrsqrt7_v, "vfrsqrt7.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfrsub_vf, "vfrsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnj_vf, "vfsgnj.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnj_vv, "vfsgnj.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsgnjn_vf, "vfsgnjn.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnjn_vv, "vfsgnjn.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfsgnjx_vf, "vfsgnjx.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsgnjx_vv, "vfsgnjx.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfslide1down_vf, "vfslide1down.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfslide1up_vf, "vfslide1up.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsqrt_v, "vfsqrt.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vfsub_vf, "vfsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfsub_vv, "vfsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwadd_vf, "vfwadd.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwadd_vv, "vfwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwadd_wf, "vfwadd.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwadd_wv, "vfwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwcvt_f_f_v, "vfwcvt.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_f_x_v, "vfwcvt.f.x.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_f_xu_v, "vfwcvt.f.xu.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_rtz_x_f_v, "vfwcvt.rtz.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_rtz_xu_f_v, "vfwcvt.rtz.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_x_f_v, "vfwcvt.x.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvt_xu_f_v, "vfwcvt.xu.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwcvtbf16_f_f_v, "vfwcvtbf16.f.f.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vfwmacc_vf, "vfwmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwmacc_vv, "vfwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmaccbf16_vf, "vfwmaccbf16.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwmaccbf16_vv, "vfwmaccbf16.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmsac_vf, "vfwmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwmsac_vv, "vfwmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwmul_vf, "vfwmul.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwmul_vv, "vfwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwnmacc_vf, "vfwnmacc.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwnmacc_vv, "vfwnmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwnmsac_vf, "vfwnmsac.vf", rv_codec_v_r, rv_fmt_vd_fs1_vs2_vm) +OP(vfwnmsac_vv, "vfwnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vfwredosum_vs, "vfwredosum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwredusum_vs, "vfwredusum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwsub_vf, "vfwsub.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwsub_vv, "vfwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vfwsub_wf, "vfwsub.wf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vfwsub_wv, "vfwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vghsh_vv, "vghsh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) OP(vgmul_vv, "vgmul.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vid_v, "vid.v", rv_codec_v_r, rv_fmt_vd_vm) +OP(viota_m, "viota.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vl1re16_v, "vl1re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re32_v, "vl1re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re64_v, "vl1re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl1re8_v, "vl1re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re16_v, "vl2re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re32_v, "vl2re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re64_v, "vl2re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl2re8_v, "vl2re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re16_v, "vl4re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re32_v, "vl4re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re64_v, "vl4re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl4re8_v, "vl4re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re16_v, "vl8re16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re32_v, "vl8re32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re64_v, "vl8re64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vl8re8_v, "vl8re8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle16_v, "vle16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle16ff_v, "vle16ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle32_v, "vle32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle32ff_v, "vle32ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle64_v, "vle64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle64ff_v, "vle64ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle8_v, "vle8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vle8ff_v, "vle8ff.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vlm_v, "vlm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vloxei16_v, "vloxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei32_v, "vloxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei64_v, "vloxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vloxei8_v, "vloxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vlse16_v, "vlse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse32_v, "vlse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse64_v, "vlse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vlse8_v, "vlse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vluxei16_v, "vluxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei32_v, "vluxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei64_v, "vluxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vluxei8_v, "vluxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vmacc_vv, "vmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vmacc_vx, "vmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vmadc_vim, "vmadc.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vmadc_vvm, "vmadc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmadc_vxm, "vmadc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmadd_vv, "vmadd.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vmadd_vx, "vmadd.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vmand_mm, "vmand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmandn_mm, "vmandn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmax_vv, "vmax.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmax_vx, "vmax.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmaxu_vv, "vmaxu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmaxu_vx, "vmaxu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmerge_vim, "vmerge.vim", rv_codec_v_i, rv_fmt_vd_vs2_imm_vl) +OP(vmerge_vvm, "vmerge.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmerge_vxm, "vmerge.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmfeq_vf, "vmfeq.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfeq_vv, "vmfeq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmfge_vf, "vmfge.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfgt_vf, "vmfgt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfle_vf, "vmfle.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfle_vv, "vmfle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmflt_vf, "vmflt.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmflt_vv, "vmflt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmfne_vf, "vmfne.vf", rv_codec_v_r, rv_fmt_vd_vs2_fs1_vm) +OP(vmfne_vv, "vmfne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmin_vv, "vmin.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmin_vx, "vmin.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vminu_vv, "vminu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vminu_vx, "vminu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmnand_mm, "vmnand.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmnor_mm, "vmnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmor_mm, "vmor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmorn_mm, "vmorn.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsbc_vvm, "vmsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vmsbc_vxm, "vmsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vmsbf_m, "vmsbf.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vmseq_vi, "vmseq.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmseq_vv, "vmseq.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmseq_vx, "vmseq.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsgt_vi, "vmsgt.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsgt_vx, "vmsgt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsgtu_vi, "vmsgtu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsgtu_vx, "vmsgtu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsif_m, "vmsif.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vmsle_vi, "vmsle.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsle_vv, "vmsle.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsle_vx, "vmsle.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsleu_vi, "vmsleu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsleu_vv, "vmsleu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsleu_vx, "vmsleu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmslt_vv, "vmslt.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmslt_vx, "vmslt.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsltu_vv, "vmsltu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsltu_vx, "vmsltu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsne_vi, "vmsne.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vmsne_vv, "vmsne.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmsne_vx, "vmsne.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmsof_m, "vmsof.m", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vmul_vv, "vmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmul_vx, "vmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulh_vv, "vmulh.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulh_vx, "vmulh.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulhsu_vv, "vmulhsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulhsu_vx, "vmulhsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmulhu_vv, "vmulhu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmulhu_vx, "vmulhu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vmv1r_v, "vmv1r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv2r_v, "vmv2r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv4r_v, "vmv4r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv8r_v, "vmv8r.v", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vmv_s_x, "vmv.s.x", rv_codec_v_r, rv_fmt_vd_rs1) +OP(vmv_v_i, "vmv.v.i", rv_codec_v_i, rv_fmt_vd_imm) +OP(vmv_v_v, "vmv.v.v", rv_codec_v_r, rv_fmt_vd_vs1) +OP(vmv_v_x, "vmv.v.x", rv_codec_v_r, rv_fmt_vd_rs1) +OP(vmv_x_s, "vmv.x.s", rv_codec_v_r, rv_fmt_rd_vs2) +OP(vmxnor_mm, "vmxnor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vmxor_mm, "vmxor.mm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnclip_wi, "vnclip.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnclip_wv, "vnclip.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnclip_wx, "vnclip.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnclipu_wi, "vnclipu.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnclipu_wv, "vnclipu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnclipu_wx, "vnclipu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnmsac_vv, "vnmsac.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vnmsac_vx, "vnmsac.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vnmsub_vv, "vnmsub.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vnmsub_vx, "vnmsub.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vnsra_wi, "vnsra.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnsra_wv, "vnsra.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnsra_wx, "vnsra.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vnsrl_wi, "vnsrl.wi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vnsrl_wv, "vnsrl.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vnsrl_wx, "vnsrl.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vor_vi, "vor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vor_vv, "vor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vor_vx, "vor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vredand_vs, "vredand.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmax_vs, "vredmax.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmaxu_vs, "vredmaxu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredmin_vs, "vredmin.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredminu_vs, "vredminu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredor_vs, "vredor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredsum_vs, "vredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vredxor_vs, "vredxor.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrem_vv, "vrem.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrem_vx, "vrem.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vremu_vv, "vremu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vremu_vx, "vremu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vrev8_v, "vrev8.v", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vrgather_vi, "vrgather.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vrgather_vv, "vrgather.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vrgather_vx, "vrgather.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vrgatherei16_vv, "vrgatherei16.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vrol_vv, "vrol.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vrol_vx, "vrol.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vror_vi, "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm) OP(vror_vv, "vror.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vror_vx, "vror.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vror_vi, "vror.vi", rv_codec_vror_vi, rv_fmt_vd_vs2_uimm_vm) +OP(vrsub_vi, "vrsub.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vrsub_vx, "vrsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vs1r_v, "vs1r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs2r_v, "vs2r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs4r_v, "vs4r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vs8r_v, "vs8r.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vsadd_vi, "vsadd.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vsadd_vv, "vsadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsadd_vx, "vsadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsaddu_vi, "vsaddu.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vsaddu_vv, "vsaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsaddu_vx, "vsaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsbc_vvm, "vsbc.vvm", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vl) +OP(vsbc_vxm, "vsbc.vxm", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vl) +OP(vse16_v, "vse16.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse32_v, "vse32.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse64_v, "vse64.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vse8_v, "vse8.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vsetivli, "vsetivli", rv_codec_vsetivli, rv_fmt_vsetivli) +OP(vsetvl, "vsetvl", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(vsetvli, "vsetvli", rv_codec_vsetvli, rv_fmt_vsetvli) +OP(vsext_vf2, "vsext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsext_vf4, "vsext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vsext_vf8, "vsext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) OP(vsha2ch_vv, "vsha2ch.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) OP(vsha2cl_vv, "vsha2cl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) OP(vsha2ms_vv, "vsha2ms.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) +OP(vslide1down_vx, "vslide1down.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslide1up_vx, "vslide1up.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslidedown_vi, "vslidedown.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vslidedown_vx, "vslidedown.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vslideup_vi, "vslideup.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vslideup_vx, "vslideup.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsll_vi, "vsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vsll_vv, "vsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsll_vx, "vsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) OP(vsm3c_vi, "vsm3c.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) OP(vsm3me_vv, "vsm3me.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1) OP(vsm4k_vi, "vsm4k.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm) -OP(vsm4r_vv, "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2) OP(vsm4r_vs, "vsm4r.vs", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vsm4r_vv, "vsm4r.vv", rv_codec_v_r, rv_fmt_vd_vs2) +OP(vsm_v, "vsm.v", rv_codec_v_ldst, rv_fmt_ldst_vd_rs1_vm) +OP(vsmul_vv, "vsmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsmul_vx, "vsmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsoxei16_v, "vsoxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei32_v, "vsoxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei64_v, "vsoxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsoxei8_v, "vsoxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsra_vi, "vsra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vsra_vv, "vsra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsra_vx, "vsra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsrl_vi, "vsrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vsrl_vv, "vsrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsrl_vx, "vsrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsse16_v, "vsse16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse32_v, "vsse32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse64_v, "vsse64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vsse8_v, "vsse8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_rs2_vm) +OP(vssra_vi, "vssra.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vssra_vv, "vssra.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssra_vx, "vssra.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssrl_vi, "vssrl.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) +OP(vssrl_vv, "vssrl.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssrl_vx, "vssrl.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssub_vv, "vssub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssub_vx, "vssub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vssubu_vv, "vssubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vssubu_vx, "vssubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsub_vv, "vsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vsub_vx, "vsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vsuxei16_v, "vsuxei16.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei32_v, "vsuxei32.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei64_v, "vsuxei64.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vsuxei8_v, "vsuxei8.v", rv_codec_v_r, rv_fmt_ldst_vd_rs1_vs2_vm) +OP(vwadd_vv, "vwadd.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwadd_vx, "vwadd.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwadd_wv, "vwadd.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwadd_wx, "vwadd.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwaddu_vv, "vwaddu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwaddu_vx, "vwaddu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwaddu_wv, "vwaddu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwaddu_wx, "vwaddu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmacc_vv, "vwmacc.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmacc_vx, "vwmacc.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccsu_vv, "vwmaccsu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmaccsu_vx, "vwmaccsu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccu_vv, "vwmaccu.vv", rv_codec_v_r, rv_fmt_vd_vs1_vs2_vm) +OP(vwmaccu_vx, "vwmaccu.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmaccus_vx, "vwmaccus.vx", rv_codec_v_r, rv_fmt_vd_rs1_vs2_vm) +OP(vwmul_vv, "vwmul.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmul_vx, "vwmul.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmulsu_vv, "vwmulsu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmulsu_vx, "vwmulsu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwmulu_vv, "vwmulu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwmulu_vx, "vwmulu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwredsum_vs, "vwredsum.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwredsumu_vs, "vwredsumu.vs", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsll_vi, "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) OP(vwsll_vv, "vwsll.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) OP(vwsll_vx, "vwsll.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) -OP(vwsll_vi, "vwsll.vi", rv_codec_v_i_u, rv_fmt_vd_vs2_uimm_vm) -OP(amocas_w, "amocas.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amocas_d, "amocas.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amocas_q, "amocas.q", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(mop_r, "mop.r", rv_codec_mop_r, rv_fmt_mop_r) -OP(mop_rr, "mop.rr", rv_codec_mop_rr, rv_fmt_mop_rr) -OP(c_mop, "c.mop", rv_codec_cmop, rv_fmt_cmop) -OP(amoswap_b, "amoswap.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoadd_b, "amoadd.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoxor_b, "amoxor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoor_b, "amoor.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoand_b, "amoand.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomin_b, "amomin.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomax_b, "amomax.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amominu_b, "amominu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomaxu_b, "amomaxu.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoswap_h, "amoswap.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoadd_h, "amoadd.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoxor_h, "amoxor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoor_h, "amoor.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amoand_h, "amoand.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomin_h, "amomin.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomax_h, "amomax.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amominu_h, "amominu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amomaxu_h, "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amocas_b, "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(amocas_h, "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(wrs_sto, "wrs.sto", rv_codec_none, rv_fmt_none) +OP(vwsub_vv, "vwsub.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsub_vx, "vwsub.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsub_wv, "vwsub.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsub_wx, "vwsub.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsubu_vv, "vwsubu.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsubu_vx, "vwsubu.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vwsubu_wv, "vwsubu.wv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vwsubu_wx, "vwsubu.wx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vxor_vi, "vxor.vi", rv_codec_v_i, rv_fmt_vd_vs2_imm_vm) +OP(vxor_vv, "vxor.vv", rv_codec_v_r, rv_fmt_vd_vs2_vs1_vm) +OP(vxor_vx, "vxor.vx", rv_codec_v_r, rv_fmt_vd_vs2_rs1_vm) +OP(vzext_vf2, "vzext.vf2", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vzext_vf4, "vzext.vf4", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(vzext_vf8, "vzext.vf8", rv_codec_v_r, rv_fmt_vd_vs2_vm) +OP(wfi, "wfi", rv_codec_none, rv_fmt_none) OP(wrs_nto, "wrs.nto", rv_codec_none, rv_fmt_none) -OP(lpad, "lpad", rv_codec_lp, rv_fmt_imm) -OP(sspush, "sspush", rv_codec_r, rv_fmt_rs2) -OP(sspopchk, "sspopchk", rv_codec_r, rv_fmt_rs1) -OP(ssrdp, "ssrdp", rv_codec_r, rv_fmt_rd) -OP(ssamoswap_w, "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(ssamoswap_d, "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1) -OP(c_sspush, "c.sspush", rv_codec_cmop_ss, NULL, DECOMP(op_sspush)) -OP(c_sspopchk, "c.sspopchk", rv_codec_cmop_ss, NULL, DECOMP(op_sspopchk)) -OP(cbo_inval, "cbo.inval", rv_codec_r, rv_fmt_rs1) -OP(cbo_clean, "cbo.clean", rv_codec_r, rv_fmt_rs1) -OP(cbo_flush, "cbo.flush", rv_codec_r, rv_fmt_rs1) -OP(cbo_zero, "cbo.zero", rv_codec_r, rv_fmt_rs1) -OP(mnret, "mnret", rv_codec_none, rv_fmt_none) +OP(wrs_sto, "wrs.sto", rv_codec_none, rv_fmt_none) +OP(xnor, "xnor", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(xor, "xor", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(xori, "xori", rv_codec_i, rv_fmt_rd_rs1_imm, rvcp_xori) +OP(xperm4, "xperm4", rv_codec_r, rv_fmt_rd_rs1_rs2) +OP(xperm8, "xperm8", rv_codec_r, rv_fmt_rd_rs1) +OP(zext_h, "zext.h", rv_codec_r, rv_fmt_rd_rs1) +OP(zip, "zip", rv_codec_r, rv_fmt_rd_rs1) --=20 2.43.0