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
History
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

back to top