qemu/target
Paolo Savini 17288e38be optimize the memory probing for vector fault-only-first loads.
Fault-only-first loads in the RISC-V vector extension need to update
the vl with the element index that causes an exception.
In order to ensure this the emulation of this instruction used to probe the
memory covered by the load operation with a loop that iterated over each element
so that when a flag was raised it was possible to set the vl to the
corresponding element index.
This loop was executed every time whether an exception happened or not.

This commit removes the per element memory probing from the main execution path
and adds a broad memory probing first. If this probing raises any flag that is
not a watchpoint flag (that per standard is allowed by this instruction) we
proceed with the per element probing to find the index of the element causing
the exception and set vl to such index.

Signed-off-by: Paolo Savini <paolo.savini@embecosm.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Message-ID: <20250221155320.59159-2-paolo.savini@embecosm.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2025-03-19 16:31:43 +10:00
..
alpha target/alpha: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
arm target/arm: Simplify pstate_sm check in sve_access_check 2025-03-14 12:54:33 +00:00
avr target/avr: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
hexagon target/hexagon: Remove CPUClass:has_work() handler 2025-03-09 17:00:47 +01:00
hppa target/hppa: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
i386 hw/hyperv/hyperv-proto: Move SYNDBG definitions from target/i386 2025-03-11 20:03:27 +01:00
loongarch target/loongarch: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
m68k target/m68k: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
microblaze target/microblaze: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
mips target/mips: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
openrisc target/openrisc: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
ppc target/ppc: Avoid warning message for zero process table entries 2025-03-11 22:43:32 +10:00
riscv optimize the memory probing for vector fault-only-first loads. 2025-03-19 16:31:43 +10:00
rx target/rx: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
s390x target/s390x: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
sh4 target/sh4: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
sparc target/sparc: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
tricore target/tricore: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
xtensa target/xtensa: Move has_work() from CPUClass to SysemuCPUOps 2025-03-09 17:00:47 +01:00
Kconfig target/cris: Remove the deprecated CRIS target 2024-09-13 20:11:13 +02:00
meson.build target/cris: Remove the deprecated CRIS target 2024-09-13 20:11:13 +02:00