]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/riscv: use tcg ops generation to emulate whole reg rvv loads/stores.
authorPaolo Savini <paolo.savini@embecosm.com>
Thu, 13 Mar 2025 15:23:30 +0000 (15:23 +0000)
committerAlistair Francis <alistair.francis@wdc.com>
Mon, 19 May 2025 03:30:24 +0000 (13:30 +1000)
commit9425790aceffc09b730a072cc3fc174d1b084f62
treef9e59493550d9bf3d7982d27f5f73d35f1441342
parentdd07ab1121ffd7003ae2cffde3046acd3123bbbd
target/riscv: use tcg ops generation to emulate whole reg rvv loads/stores.

This patch replaces the use of a helper function with direct tcg ops generation
in order to emulate whole register loads and stores. This is done in order to
improve the performance of QEMU.
We still use the helper function when vstart is not 0 at the beginning of the
emulation of the whole register load or store or when we would end up generating
partial loads or stores of vector elements (e.g. emulating 64 bits element loads
with pairs of 32 bits loads on hosts with 32 bits registers).
The latter condition ensures that we are not surprised by a trap in mid-element
and consecutively that we can update vstart correctly.
We also use the helper function when it performs better than tcg for specific
combinations of vector length, number of fields and element size.

Signed-off-by: Paolo Savini <paolo.savini@embecosm.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Richard Handerson <richard.henderson@linaro.org>
Reviewed-by: Max Chou <max.chou@sifive.com>
Reviewed-by: "Alex Bennée" <alex.bennee@linaro.org>
Message-ID: <20250313152330.398396-2-paolo.savini@embecosm.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
target/riscv/insn_trans/trans_rvv.c.inc