qemu/target
Peter Maydell 2670221397 target/arm: Add TB flag for "MVE insns not predicated"
Our current codegen for MVE always calls out to helper functions,
because some byte lanes might be predicated.  The common case is that
in fact there is no predication active and all lanes should be
updated together, so we can produce better code by detecting that and
using the TCG generic vector infrastructure.

Add a TB flag that is set when we can guarantee that there is no
active MVE predication, and a bool in the DisasContext.  Subsequent
patches will use this flag to generate improved code for some
instructions.

In most cases when the predication state changes we simply end the TB
after that instruction.  For the code called from vfp_access_check()
that handles lazy state preservation and creating a new FP context,
we can usually avoid having to try to end the TB because luckily the
new value of the flag following the register changes in those
sequences doesn't depend on any runtime decisions.  We do have to end
the TB if the guest has enabled lazy FP state preservation but not
automatic state preservation, but this is an odd corner case that is
not going to be common in real-world code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210913095440.13462-4-peter.maydell@linaro.org
2021-09-21 16:28:27 +01:00
..
alpha target/alpha: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
arm target/arm: Add TB flag for "MVE insns not predicated" 2021-09-21 16:28:27 +01:00
avr Trivial patches pull request 20210916 2021-09-16 16:02:31 +01:00
cris target/cris: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
hexagon accel/tcg: Add DisasContextBase argument to translator_ld* 2021-09-14 12:00:20 -07:00
hppa target/hppa: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
i386 hvf: Add Apple Silicon support 2021-09-20 09:57:03 +01:00
m68k Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
microblaze target/microblaze: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
mips target/mips: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
nios2 Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
openrisc target/openrisc: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
ppc target/ppc: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
riscv target/riscv: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
rx target/rx: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
s390x accel/tcg: Add DisasContextBase argument to translator_ld* 2021-09-14 12:00:20 -07:00
sh4 target/sh4: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
sparc Trivial patches pull request 20210916 2021-09-16 16:02:31 +01:00
tricore accel/tcg: Remove TranslatorOps.breakpoint_check 2021-07-21 07:47:05 -10:00
xtensa target/xtensa: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
meson.build Drop the deprecated unicore32 target 2021-05-12 18:20:52 +02:00