From nobody Sun Nov 24 11:58:51 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1724112364; cv=none; d=zohomail.com; s=zohoarc; b=O/TPgJrCu4D/QJIrfvY8vNKiLo7g74PEiruVIiO+4vtokpqmYHhklrxh8T7G/9FG0tad5R2KhSve2rWk1qX1GVBjPnoILyImPFx82IT/Ksziyn/T7tjAla4GpE++iu70YVg4BNIFjwPprt5rE+Nbj9uj0dqpahQ0yFDFjgAxqHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1724112364; 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=ak9PVtm0xOUDnaFvLdvWza9j+CseOeqPaayHYoeyFwg=; b=e+FaJRUjVkXvqNBarg+ma6YIIyFEJ6O+O1sftTGDwK/E56gZwe05eOjGaB6bQ/MeXZ9l4AI6OdTTxZBQM4nwaMqVChzA3JxSPSBjtFaJjYzn28O7R8QKN4PGg0RObpfxc+0fQzXLeiodAi2xOa5Jqm5VsUkT/u7VuIYNmsFOElQ= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1724112364681550.4660354043779; Mon, 19 Aug 2024 17:06:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sgCKj-0002KI-CW; Mon, 19 Aug 2024 20:02:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sgCKS-00012H-IC for qemu-devel@nongnu.org; Mon, 19 Aug 2024 20:02:29 -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 1sgCK6-0001EX-4y for qemu-devel@nongnu.org; Mon, 19 Aug 2024 20:02:10 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-202508cb8ebso9893945ad.3 for ; Mon, 19 Aug 2024 17:01:54 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-201f038a779sm67477445ad.188.2024.08.19.17.01.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Aug 2024 17:01:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724112114; x=1724716914; 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; bh=ak9PVtm0xOUDnaFvLdvWza9j+CseOeqPaayHYoeyFwg=; b=UraZcyB+WzPEu0/molHvTpNxzO537/7ee3/SqzAIM0WUG2xE5wB3sy59pQA+fXv/yP OBxnrDfmsfDwFN8DHssvHenb7b2uTCXZcy05YrHJALtU3ofSArNcNdzwsxnVgWPYzZGx QNtPnAxArSsD8QCz0DeTwp+HNHbP0XK+95qxtBjYu1vEDIoS2hnAx60rzJFBu/t9piyU LtMs/UEOBuRplO7KvEghmM3/Yx/a5lJeCP2TryBvru6Ti6+5Sca+yrEUU0rgqukoJTDB EbTaCfqIp4atbD4by6GfH3moj29XHnMGPTo7NsnHGBepxk6jAal0mhWxL0tln7eyAizS 78ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724112114; x=1724716914; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ak9PVtm0xOUDnaFvLdvWza9j+CseOeqPaayHYoeyFwg=; b=xI+khG6e/eMGKgmXIEPvlxouf44VzVKolVhmg7Cq9t6N5pR14rGckFfF5oQKbLTwue 5PnDiU6RNEcDC0cZFHhfYwbTgrUBKRoEbvQsxWw1gc8rLWgEsQH8lSxV/w3dah6PvZpt Iz4EPGSUtpJa8eNyYil+iwW4luXMlxHerOtheXhs0MJPdP66Y/9q5JLqw7IB8Egpgxt+ lAKnSZbbeV5vqeki6w6WpCS3t9LaUd/vu77JM3KxXiu3l3VWsppvUnpYhSJFyQPXARco 51/iJtW5L1aWCaBEKo6G3IbAnmE50T9tisPsBJIKM3m47N1a089fWpbAAAPUhjdOLVO0 UBgw== X-Forwarded-Encrypted: i=1; AJvYcCUWFeQie1abSIrWit3o3oll4J24FKPU2MLYrNEat/AisNjURV51foW0GTBOE1eBICxFhLiAcO2doXA9dgHvCQ5hNZWNEuk= X-Gm-Message-State: AOJu0YxghBu+7IUn+Jbdqs7IeCgXescHR8QV4C5SP5ppoX269Uo2qjvR 2CkDXPsBJI+Nxy7s7kawV9bj79XaUP8IvKgbgIx54Kaxk7mMfUUioXYIm7HAcXg= X-Google-Smtp-Source: AGHT+IGm4NE3Rz3oO9MQ255m7cY+iPFFC0FRSZ0U4hfCDhHREW8l6Xs0+BiydUMt4c0Eo+iXTKb3JA== X-Received: by 2002:a17:902:e892:b0:1fc:568d:5f05 with SMTP id d9443c01a7336-20203e49333mr116228875ad.8.1724112113584; Mon, 19 Aug 2024 17:01:53 -0700 (PDT) From: Deepak Gupta To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: palmer@dabbelt.com, Alistair.Francis@wdc.com, bmeng.cn@gmail.com, liwei1518@gmail.com, dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com, jim.shu@sifive.com, andy.chiu@sifive.com, kito.cheng@sifive.com, Deepak Gupta Subject: [PATCH v5 15/15] disas/riscv: enable disassembly for compressed sspush/sspopchk Date: Mon, 19 Aug 2024 17:01:29 -0700 Message-ID: <20240820000129.3522346-16-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240820000129.3522346-1-debug@rivosinc.com> References: <20240820000129.3522346-1-debug@rivosinc.com> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=debug@rivosinc.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: 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 @rivosinc-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1724112366106116600 Content-Type: text/plain; charset="utf-8" sspush and sspopchk have equivalent compressed encoding taken from zcmop. cmop.1 is sspush x1 while cmop.5 is sspopchk x5. Due to unusual encoding for both rs1 and rs2 from space bitfield, this required a new codec. Signed-off-by: Deepak Gupta --- disas/riscv.c | 19 ++++++++++++++++++- disas/riscv.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/disas/riscv.c b/disas/riscv.c index f1f4ffc50a..8eeaa9f843 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -980,6 +980,8 @@ typedef enum { rv_op_ssrdp =3D 949, rv_op_ssamoswap_w =3D 950, rv_op_ssamoswap_d =3D 951, + rv_op_c_sspush =3D 952, + rv_op_c_sspopchk =3D 953, } rv_op; =20 /* register names */ @@ -2244,6 +2246,10 @@ const rv_opcode_data rvi_opcode_data[] =3D { { "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 }, + { "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 }, }; =20 /* CSR names */ @@ -2604,7 +2610,13 @@ static void decode_inst_opcode(rv_decode *dec, rv_is= a isa) if (dec->cfg->ext_zcmop) { if ((((inst >> 2) & 0b111111) =3D=3D 0b100000) && (((inst >> 11) & 0b11) =3D=3D 0b0)) { - op =3D rv_c_mop_1 + ((inst >> 8) & 0b111); + unsigned int cmop_code =3D 0; + cmop_code =3D ((inst >> 8) & 0b111); + op =3D rv_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; + } break; } } @@ -4923,6 +4935,11 @@ static void decode_inst_operands(rv_decode *dec, rv_= isa isa) case rv_codec_lp: dec->imm =3D operand_lpl(inst); break; + case rv_codec_cmop_ss: + dec->rd =3D rv_ireg_zero; + dec->rs1 =3D dec->rs2 =3D operand_crs1(inst); + dec->imm =3D 0; + break; }; } =20 diff --git a/disas/riscv.h b/disas/riscv.h index 4895c5a301..6a3b371cd3 100644 --- a/disas/riscv.h +++ b/disas/riscv.h @@ -167,6 +167,7 @@ typedef enum { rv_codec_r2_imm2_imm5, rv_codec_fli, rv_codec_lp, + rv_codec_cmop_ss, } rv_codec; =20 /* structures */ --=20 2.44.0