From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D61F2C49EA1 for ; Wed, 7 Aug 2024 00:11:09 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sbUEj-0002m1-Am; Tue, 06 Aug 2024 20:09:05 -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 1sbUD4-000311-2j for qemu-riscv@nongnu.org; Tue, 06 Aug 2024 20:07:23 -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 1sbUD0-0001Dg-CB for qemu-riscv@nongnu.org; Tue, 06 Aug 2024 20:07:21 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-1fc56fd4de1so2798835ad.0 for ; Tue, 06 Aug 2024 17:07:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1722989237; x=1723594037; 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=GwN8KazdAM6rfbJ9pEQTaPAvCowqMjvonYMvwP9Ekyo=; b=2j8NvLMULqw5q8Q7OY7Rw4hJDNmAbCgjgiIS+U3HTXylfsby4yueeV5sHYSz9XYMM3 oAde0wapR/JUI9tY6jraf4jPdZIdu+vT0i6XtzL4MVkbwT9VHe5/i3X1RnQdZpe9iFK3 0BwhYMcFYujWazY6w1b7wiLqzERg73eaLxgjJMAqQH3p/QgEXOEzZqOPPTAp5N/pKoRM UlnHLv03PtGQlF0cGukZJaNdiJY5qO9xI5zzAX4kcWGwztkBFAjGhIGh40MQEarzRi8e 04nsOTiSPTLfT2PdNWHod2v1g0Iqz/VxXNVbDrFNkBWxpWBTU4EBqY9JPQxmY/6qAN/Z 6JGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722989237; x=1723594037; 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=GwN8KazdAM6rfbJ9pEQTaPAvCowqMjvonYMvwP9Ekyo=; b=eLMyb8MLn1TbYcyhG9e49iLw5I3kTUwEZs5amkDIMKesKJmTXLoB8LLpneuxkXz/VK WiQCkhWxqLPN5gTRpFJPkOpxw5AWxDFQclbnx1ZNUe8f3h9UV8Z7KCADT6j67vnwawAv kCurCmo6yR1Q6AeJp6P6AT0hO/R+c3LK+jv3VN4ozl7u+MQN2cFh4D/uZEq+UpuxOGmj gN9x/oazHFAtyYwe79Zn+TLLc3IQHRD1/JTAbAsThQysOmrdN6ep/dzyOcoKAnh8vncg 2l+kcW5avN9yBareINSuVl0sxVPRH1VbKaNldhnzfUN8gfpui52ih7EsUwBWuYpossIk HqdQ== X-Forwarded-Encrypted: i=1; AJvYcCXcdkGZpdLgZzDuGtz/mUsKIX8NMPSG6VUUlkYMp+RoyW18ZTjzfJAdDMVNRePR4MLNf9qHskfPY4R8BEaW7almuxuNSLQ= X-Gm-Message-State: AOJu0YwYftyPnJ4kvpY2X0YKT/TP90qqdo7yO4HM4KrCkSOteIhF8kS9 YkLTuiLKD8axUCr1bB1ERoJC/WWCT6gTXjI3wWfmlDHZpsrY7vsELMRl8yYuZtc= X-Google-Smtp-Source: AGHT+IGfBB4v+fK01rlL7ecgK+RmhwuDdijWpxUVHkoxN47eKHtQO0WxVZ1DQTfcJeA81ccCC0KcTg== X-Received: by 2002:a17:902:dacb:b0:1fd:6ca4:f987 with SMTP id d9443c01a7336-20085497979mr7082455ad.15.1722989236812; Tue, 06 Aug 2024 17:07:16 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f59cc2sm93381845ad.92.2024.08.06.17.07.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Aug 2024 17:07:16 -0700 (PDT) From: Deepak Gupta To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: richard.henderson@linaro.org, pbonzini@redhat.com, palmer@dabbelt.com, Alistair.Francis@wdc.com, laurent@vivier.eu, bmeng.cn@gmail.com, liwei1518@gmail.com, dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com, Deepak Gupta Subject: [PATCH v3 17/20] disas/riscv: enable disassembly for compressed sspush/sspopchk Date: Tue, 6 Aug 2024 17:06:48 -0700 Message-ID: <20240807000652.1417776-18-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240807000652.1417776-1-debug@rivosinc.com> References: <20240807000652.1417776-1-debug@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=debug@rivosinc.com; helo=mail-pl1-x635.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 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-riscv@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-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org Sender: qemu-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org 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 c4e47fbc78..82175e75ee 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -980,6 +980,8 @@ typedef enum { rv_op_ssrdp = 949, rv_op_ssamoswap_w = 950, rv_op_ssamoswap_d = 951, + rv_op_c_sspush = 952, + rv_op_c_sspopchk = 953, } rv_op; /* register names */ @@ -2244,6 +2246,10 @@ const rv_opcode_data rvi_opcode_data[] = { { "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 }, }; /* CSR names */ @@ -2604,7 +2610,13 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa isa) if (dec->cfg->ext_zcmop) { if ((((inst >> 2) & 0b111111) == 0b100000) && (((inst >> 11) & 0b11) == 0b0)) { - op = rv_c_mop_1 + ((inst >> 8) & 0b111); + unsigned int cmop_code = 0; + cmop_code = ((inst >> 8) & 0b111); + op = rv_c_mop_1 + cmop_code; + if (dec->cfg->ext_zicfiss) { + op = (cmop_code == 0) ? rv_op_c_sspush : op; + op = (cmop_code == 2) ? rv_op_c_sspopchk : op; + } break; } } @@ -4919,6 +4931,11 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa) case rv_codec_lp: dec->imm = operand_lpl(inst); break; + case rv_codec_cmop_ss: + dec->rd = rv_ireg_zero; + dec->rs1 = dec->rs2 = operand_crs1(inst); + dec->imm = 0; + break; }; } 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; /* structures */ -- 2.44.0