summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2026-02-18 18:40:13 +0000
committerMichael Tokarev <mjt@tls.msk.ru>2026-02-19 22:25:59 +0300
commitd94bdff3f0d01e97ac101e83ac8db26f1832fba4 (patch)
tree51eb599e6754adf7ad3c1314fa1ba1d9050b250a
parent0556e548fae34284808689f73bb0fb060ff7d16f (diff)
downloadqemu-d94bdff3f0d01e97ac101e83ac8db26f1832fba4.tar.gz
qemu-d94bdff3f0d01e97ac101e83ac8db26f1832fba4.zip
target/arm/tcg: Allow SVE RAX1 in SME2p1 streaming mode
The SVE RAX1 instruction is permitted in SME streaming mode starting from SME2p1. We forgot to allow this relaxation when we implemented SME2p1. Cc: qemu-stable@nongnu.org Fixes: 7b1613a1020d2 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260202133353.2231685-5-peter.maydell@linaro.org (cherry picked from commit 433097a2242120918090201129e5fbb8e16b3e34) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
-rw-r--r--target/arm/tcg/translate-sve.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
index d69a2f5d75..76e4a6c52c 100644
--- a/target/arm/tcg/translate-sve.c
+++ b/target/arm/tcg/translate-sve.c
@@ -7803,8 +7803,17 @@ TRANS_FEAT_NONSTREAMING(SM4E, aa64_sve2_sm4, gen_gvec_ool_arg_zzz,
TRANS_FEAT_NONSTREAMING(SM4EKEY, aa64_sve2_sm4, gen_gvec_ool_arg_zzz,
gen_helper_crypto_sm4ekey, a, 0)
-TRANS_FEAT_NONSTREAMING(RAX1, aa64_sve2_sha3, gen_gvec_fn_arg_zzz,
- gen_gvec_rax1, a)
+static bool trans_RAX1(DisasContext *s, arg_RAX1 *a)
+{
+ if (!dc_isar_feature(aa64_sve2_sha3, s)) {
+ return false;
+ }
+ if (!dc_isar_feature(aa64_sme2p1, s)) {
+ /* SME2p1 adds this as valid in streaming SVE mode */
+ s->is_nonstreaming = true;
+ }
+ return gen_gvec_fn_arg_zzz(s, gen_gvec_rax1, a);
+}
TRANS_FEAT(FCVTNT_sh, aa64_sve2, gen_gvec_fpst_arg_zpz,
gen_helper_sve2_fcvtnt_sh, a, 0, FPST_A64)