From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: alistair.francis@wdc.com, frederic.petrot@univ-grenoble-alpes.fr,
qemu-riscv@nongnu.org, fabien.portas@grenoble-inp.org
Subject: [RFC PATCH 00/13] target/riscv: Rationalize XLEN and operand length
Date: Thu, 7 Oct 2021 10:47:09 -0700 [thread overview]
Message-ID: <20211007174722.929993-1-richard.henderson@linaro.org> (raw)
This is a partial patch set attempting to set things in the
right direction for both the UXL and RV128 patch sets.
On of the things that struck me while reading the RV128 patches
is the proliferation of riscv_cpu_is_<size>bits functions. These
should be all combined into a single function returning an enum.
Further, that the current set of tests for misa.mxl is frought
with peril, because the location of the field within misa varies,
and that the RV128 patch set gets some of it wrong. It is much
easier to split out that field for use within QEMU, and only
reassemble the full MISA csr upon read.
There are a few changes at the end for pointing the correct
direction for how it might be best to extend expanders for
different operand lengths. I believe the form used in RV128,
static bool gen_arith_imm_fn(DisasContext *ctx, arg_i *a, DisasExtend ext,
void (*fn32)(TCGv, TCGv, target_long),
void (*fn64)(TCGv, TCGv, target_long),
void (*fn128)(TCGv, TCGv, TCGv, TCGv, target_long))
is incorrect, because it assumes that is easy to select the
fn32 and fn64 functions. But so long as TARGET_RISCV32 is
still around, and target_long may be 32, that is not the case.
Instead, pass f_tl and f_32, where f_32 will only ever be used
when sizeof(target_ulong) > 4.
r~
Richard Henderson (13):
target/riscv: Move cpu_get_tb_cpu_state out of line
target/riscv: Create RISCVMXL enumeration
target/riscv: Split misa.mxl and misa.ext
target/riscv: Replace riscv_cpu_is_32bit with riscv_cpu_mxl
target/riscv: Add MXL/SXL/UXL to TB_FLAGS
target/riscv: Use REQUIRE_64BIT in amo_check64
target/riscv: Properly check SEW in amo_op
target/riscv: Replace is_32bit with get_xl/get_xlen
target/riscv: Replace DisasContext.w with DisasContext.ol
target/riscv: Use gen_arith_per_ol for RVM
target/riscv: Adjust trans_rev8_32 for riscv64
target/riscv: Use gen_unary_per_ol for RVB
target/riscv: Use gen_shift*_per_ol for RVB, RVI
target/riscv/cpu.h | 73 +++-------
target/riscv/cpu_bits.h | 8 +-
hw/riscv/boot.c | 2 +-
linux-user/elfload.c | 2 +-
linux-user/riscv/cpu_loop.c | 2 +-
semihosting/arm-compat-semi.c | 2 +-
target/riscv/cpu.c | 99 ++++++++------
target/riscv/cpu_helper.c | 91 ++++++++++++-
target/riscv/csr.c | 68 ++++++----
target/riscv/gdbstub.c | 10 +-
target/riscv/machine.c | 10 +-
target/riscv/monitor.c | 4 +-
target/riscv/translate.c | 170 ++++++++++++++++++------
target/riscv/insn_trans/trans_rvb.c.inc | 140 ++++++++++---------
target/riscv/insn_trans/trans_rvi.c.inc | 44 +++---
target/riscv/insn_trans/trans_rvm.c.inc | 36 +++--
target/riscv/insn_trans/trans_rvv.c.inc | 29 ++--
17 files changed, 498 insertions(+), 292 deletions(-)
--
2.25.1
next reply other threads:[~2021-10-07 17:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-07 17:47 Richard Henderson [this message]
2021-10-07 17:47 ` [PATCH 01/13] target/riscv: Move cpu_get_tb_cpu_state out of line Richard Henderson
2021-10-08 2:28 ` Alistair Francis
2021-10-13 12:13 ` LIU Zhiwei
2021-10-07 17:47 ` [PATCH 02/13] target/riscv: Create RISCVMXL enumeration Richard Henderson
2021-10-11 23:28 ` Alistair Francis
2021-10-13 12:18 ` LIU Zhiwei
2021-10-07 17:47 ` [PATCH 03/13] target/riscv: Split misa.mxl and misa.ext Richard Henderson
2021-10-07 17:47 ` [PATCH 04/13] target/riscv: Replace riscv_cpu_is_32bit with riscv_cpu_mxl Richard Henderson
2021-10-13 16:46 ` Frédéric Pétrot
2021-10-13 16:54 ` Richard Henderson
2021-10-07 17:47 ` [PATCH 05/13] target/riscv: Add MXL/SXL/UXL to TB_FLAGS Richard Henderson
2021-10-07 17:47 ` [PATCH 06/13] target/riscv: Use REQUIRE_64BIT in amo_check64 Richard Henderson
2021-10-07 17:47 ` [PATCH 07/13] target/riscv: Properly check SEW in amo_op Richard Henderson
2021-10-07 17:47 ` [PATCH 08/13] target/riscv: Replace is_32bit with get_xl/get_xlen Richard Henderson
2021-10-07 17:47 ` [PATCH 09/13] target/riscv: Replace DisasContext.w with DisasContext.ol Richard Henderson
2021-10-07 17:47 ` [PATCH 10/13] target/riscv: Use gen_arith_per_ol for RVM Richard Henderson
2021-10-13 11:54 ` LIU Zhiwei
2021-10-07 17:47 ` [PATCH 11/13] target/riscv: Adjust trans_rev8_32 for riscv64 Richard Henderson
2021-10-13 11:45 ` LIU Zhiwei
2021-10-07 17:47 ` [PATCH 12/13] target/riscv: Use gen_unary_per_ol for RVB Richard Henderson
2021-10-13 8:31 ` LIU Zhiwei
2021-10-07 17:47 ` [PATCH 13/13] target/riscv: Use gen_shift*_per_ol for RVB, RVI Richard Henderson
2021-10-13 11:24 ` LIU Zhiwei
2021-10-10 15:17 ` [RFC PATCH 00/13] target/riscv: Rationalize XLEN and operand length Frédéric Pétrot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211007174722.929993-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=alistair.francis@wdc.com \
--cc=fabien.portas@grenoble-inp.org \
--cc=frederic.petrot@univ-grenoble-alpes.fr \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).