Stephen, what I was looking for when I talked about modifying
the existing helpers is patch 1, which simplifies the final 3
patches for the new SVE2 insns.
In the process I found that the existing implementation of the
AdvSIMD insns is buggy wrt SVE. We need to clear the bits in
the Zreg destination beyond the first 128.
I could have done this via clear_vec_high in translate-a64.c,
but since we already have a function call, we're better off
doing the clearing out of line. This means adding a desc
parameter so that we know the total vector length.
r~
Based-on: https://github.com/rth7680/qemu/commit/8c3a91e4e487ef840193a489e5457165530666fc
Richard Henderson (9):
target/arm: Convert aes and sm4 to gvec helpers
target/arm: Convert rax1 to gvec helpers
target/arm: Convert sha512 and sm3 to gvec helpers
target/arm: Convert sha1 and sha256 to gvec helpers
target/arm: Split helper_crypto_sha1_3reg
target/arm: Split helper_crypto_sm3tt
target/arm: Implement SVE2 crypto unary operations
target/arm: Implement SVE2 crypto destructive binary operations
target/arm: Implement SVE2 crypto constructive binary operations
target/arm/cpu.h | 10 ++
target/arm/helper.h | 45 ++++---
target/arm/translate-a64.h | 2 +
target/arm/vec_internal.h | 10 ++
target/arm/sve.decode | 17 +++
target/arm/crypto_helper.c | 267 ++++++++++++++++++++++++++-----------
target/arm/translate-a64.c | 211 +++++++++++++----------------
target/arm/translate-sve.c | 79 +++++++++++
target/arm/translate.c | 125 +++++++++--------
target/arm/vec_helper.c | 10 --
10 files changed, 491 insertions(+), 285 deletions(-)
--
2.20.1