The value of the stride of the strided vector loads and stores is known only at execution time and this value determines the location of each vector element to load/store. It is then not possible to improve the performance of the emulation of such instructions by attempting to load/store multiple element at once while leaving the interleaved memory areas untouched. The previous implementation of the helper function then is a simple loop that calculates the address of each element before fetching it. This patch proposes an implementation of such loop in TCG nodes so to both preserve the correct functionality and to speed up the emulation time by removing the need to call for a helper function.
The former helper function remains as it is used also by other instructions. Cc: Richard Handerson <richard.hender...@linaro.org> Cc: Palmer Dabbelt <pal...@dabbelt.com> Cc: Alistair Francis <alistair.fran...@wdc.com> Cc: Bin Meng <bmeng...@gmail.com> Cc: Weiwei Li <liwei1...@gmail.com> Cc: Daniel Henrique Barboza <dbarb...@ventanamicro.com> Cc: Liu Zhiwei <zhiwei_...@linux.alibaba.com> Cc: Helene Chelin <helene.che...@embecosm.com> Cc: Nathan Egge <ne...@google.com> Cc: Max Chou <max.c...@sifive.com> Cc: Jeremy Bennett <jeremy.benn...@embecosm.com> Cc: Craig Blackmore <craig.blackm...@embecosm.com> Paolo Savini (1): [RISC-V/RVV] Generate strided vector loads/stores with tcg nodes. target/riscv/insn_trans/trans_rvv.c.inc | 294 ++++++++++++++++++++---- 1 file changed, 244 insertions(+), 50 deletions(-) -- 2.34.1