Revision c4ed8c5610984e77a8bbf30e11b4a45a49a5c239 authored by Daniel Henrique Barboza on 14 March 2024, 17:57:00 UTC, committed by Michael Tokarev on 27 March 2024, 10:00:21 UTC
We're going to make changes that will required each helper to be responsible for the 'vstart' management, i.e. we will relieve the 'vstart < vl' assumption that helpers have today. Helpers are usually able to deal with vstart >= vl, i.e. doing nothing aside from setting vstart = 0 at the end, but the tail update functions will update the tail regardless of vstart being valid or not. Unifying the tail update process in a single function that would handle the vstart >= vl case isn't trivial (see [1] for more info). This patch takes a blunt approach: do an early exit in every single vector helper if vstart >= vl, unless the helper is guarded with vstart_eq_zero in the translation. For those cases the helper is ready to deal with cases where vl might be zero, i.e. throwing exceptions based on it like vcpop_m() and first_m(). Helpers that weren't changed: - vcpop_m(), vfirst_m(), vmsetm(), GEN_VEXT_VIOTA_M(): these are guarded directly with vstart_eq_zero; - GEN_VEXT_VCOMPRESS_VM(): guarded with vcompress_vm_check() that checks vstart_eq_zero; - GEN_VEXT_RED(): guarded with either reduction_check() or reduction_widen_check(), both check vstart_eq_zero; - GEN_VEXT_FRED(): guarded with either freduction_check() or freduction_widen_check(), both check vstart_eq_zero. Another exception is vext_ldst_whole(), who operates on effective vector length regardless of the current settings in vtype and vl. [1] https://lore.kernel.org/qemu-riscv/1590234b-0291-432a-a0fa-c5a6876097bc@linux.alibaba.com/ Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20240314175704.478276-7-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com> (cherry picked from commit df4252b2ecaf93b601109373a17427d1867046e8) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
1 parent 43ca6c1
File | Mode | Size |
---|---|---|
aes.c | -rw-r--r-- | 84.7 KB |
afalg.c | -rw-r--r-- | 2.7 KB |
afalgpriv.h | -rw-r--r-- | 1.3 KB |
afsplit.c | -rw-r--r-- | 4.3 KB |
akcipher-gcrypt.c.inc | -rw-r--r-- | 18.7 KB |
akcipher-nettle.c.inc | -rw-r--r-- | 13.1 KB |
akcipher.c | -rw-r--r-- | 3.7 KB |
akcipherpriv.h | -rw-r--r-- | 1.9 KB |
block-luks-priv.h | -rw-r--r-- | 4.2 KB |
block-luks.c | -rw-r--r-- | 64.0 KB |
block-luks.h | -rw-r--r-- | 954 bytes |
block-qcow.c | -rw-r--r-- | 5.7 KB |
block-qcow.h | -rw-r--r-- | 968 bytes |
block.c | -rw-r--r-- | 14.1 KB |
blockpriv.h | -rw-r--r-- | 4.6 KB |
cipher-afalg.c | -rw-r--r-- | 6.6 KB |
cipher-builtin.c.inc | -rw-r--r-- | 9.0 KB |
cipher-gcrypt.c.inc | -rw-r--r-- | 7.8 KB |
cipher-gnutls.c.inc | -rw-r--r-- | 9.9 KB |
cipher-nettle.c.inc | -rw-r--r-- | 27.6 KB |
cipher.c | -rw-r--r-- | 5.8 KB |
cipherpriv.h | -rw-r--r-- | 1.3 KB |
clmul.c | -rw-r--r-- | 2.2 KB |
der.c | -rw-r--r-- | 13.8 KB |
der.h | -rw-r--r-- | 9.6 KB |
hash-afalg.c | -rw-r--r-- | 5.6 KB |
hash-gcrypt.c | -rw-r--r-- | 3.1 KB |
hash-glib.c | -rw-r--r-- | 2.7 KB |
hash-gnutls.c | -rw-r--r-- | 3.0 KB |
hash-nettle.c | -rw-r--r-- | 5.0 KB |
hash.c | -rw-r--r-- | 4.3 KB |
hashpriv.h | -rw-r--r-- | 884 bytes |
hmac-gcrypt.c | -rw-r--r-- | 3.8 KB |
hmac-glib.c | -rw-r--r-- | 3.0 KB |
hmac-gnutls.c | -rw-r--r-- | 3.5 KB |
hmac-nettle.c | -rw-r--r-- | 5.5 KB |
hmac.c | -rw-r--r-- | 3.0 KB |
hmacpriv.h | -rw-r--r-- | 1.2 KB |
init.c | -rw-r--r-- | 1.8 KB |
ivgen-essiv.c | -rw-r--r-- | 3.5 KB |
ivgen-essiv.h | -rw-r--r-- | 940 bytes |
ivgen-plain.c | -rw-r--r-- | 1.8 KB |
ivgen-plain.h | -rw-r--r-- | 940 bytes |
ivgen-plain64.c | -rw-r--r-- | 1.8 KB |
ivgen-plain64.h | -rw-r--r-- | 950 bytes |
ivgen.c | -rw-r--r-- | 2.6 KB |
ivgenpriv.h | -rw-r--r-- | 1.4 KB |
meson.build | -rw-r--r-- | 1.5 KB |
pbkdf-gcrypt.c | -rw-r--r-- | 2.8 KB |
pbkdf-gnutls.c | -rw-r--r-- | 2.9 KB |
pbkdf-nettle.c | -rw-r--r-- | 3.9 KB |
pbkdf-stub.c | -rw-r--r-- | 1.5 KB |
pbkdf.c | -rw-r--r-- | 4.0 KB |
random-gcrypt.c | -rw-r--r-- | 1.1 KB |
random-gnutls.c | -rw-r--r-- | 1.3 KB |
random-none.c | -rw-r--r-- | 1.1 KB |
random-platform.c | -rw-r--r-- | 3.1 KB |
rsakey-builtin.c.inc | -rw-r--r-- | 5.9 KB |
rsakey-nettle.c.inc | -rw-r--r-- | 4.6 KB |
rsakey.c | -rw-r--r-- | 2.5 KB |
rsakey.h | -rw-r--r-- | 3.1 KB |
secret.c | -rw-r--r-- | 4.0 KB |
secret_common.c | -rw-r--r-- | 10.9 KB |
secret_keyring.c | -rw-r--r-- | 3.6 KB |
sm4.c | -rw-r--r-- | 2.5 KB |
tls-cipher-suites.c | -rw-r--r-- | 3.8 KB |
tlscreds.c | -rw-r--r-- | 8.0 KB |
tlscredsanon.c | -rw-r--r-- | 5.3 KB |
tlscredspriv.h | -rw-r--r-- | 2.3 KB |
tlscredspsk.c | -rw-r--r-- | 8.5 KB |
tlscredsx509.c | -rw-r--r-- | 26.1 KB |
tlssession.c | -rw-r--r-- | 18.4 KB |
trace-events | -rw-r--r-- | 2.0 KB |
trace.h | -rw-r--r-- | 32 bytes |
xts.c | -rw-r--r-- | 6.7 KB |
Computing file changes ...