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

Reply via email to