[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 04/45] target/arm: Mark ADR as non-streaming
From: |
Richard Henderson |
Subject: |
[PATCH v4 04/45] target/arm: Mark ADR as non-streaming |
Date: |
Tue, 28 Jun 2022 09:50:36 +0530 |
Mark ADR as a non-streaming instruction, which should trap
if full a64 support is not enabled in streaming mode.
Removing entries from sme-fa64.decode is an easy way to see
what remains to be done.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/translate.h | 7 +++++++
target/arm/sme-fa64.decode | 1 -
target/arm/translate-sve.c | 8 ++++----
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/target/arm/translate.h b/target/arm/translate.h
index cbc907c751..e2e619dab2 100644
--- a/target/arm/translate.h
+++ b/target/arm/translate.h
@@ -566,4 +566,11 @@ uint64_t asimd_imm_const(uint32_t imm, int cmode, int op);
static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \
{ return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); }
+#define TRANS_FEAT_NONSTREAMING(NAME, FEAT, FUNC, ...) \
+ static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \
+ { \
+ s->is_nonstreaming = true; \
+ return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \
+ }
+
#endif /* TARGET_ARM_TRANSLATE_H */
diff --git a/target/arm/sme-fa64.decode b/target/arm/sme-fa64.decode
index 4c2569477d..bce717ae5f 100644
--- a/target/arm/sme-fa64.decode
+++ b/target/arm/sme-fa64.decode
@@ -58,7 +58,6 @@ FAIL 1100 1110 ---- ---- ---- ---- ---- ---- # Advanced
SIMD cryptography e
# --11 1100 --1- ---- ---- ---- ---- --10 # Load/store FP register
(register offset)
# --11 1101 ---- ---- ---- ---- ---- ---- # Load/store FP register
(scaled imm)
-FAIL 0000 0100 --1- ---- 1010 ---- ---- ---- # ADR
FAIL 0000 0100 --1- ---- 1011 -0-- ---- ---- # FTSSEL, FEXPA
FAIL 0000 0101 --10 0001 100- ---- ---- ---- # COMPACT
FAIL 0010 0101 --01 100- 1111 000- ---0 ---- # RDFFR, RDFFRS
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
index 62b5f3040c..5d1db0d3ff 100644
--- a/target/arm/translate-sve.c
+++ b/target/arm/translate-sve.c
@@ -1320,10 +1320,10 @@ static bool do_adr(DisasContext *s, arg_rrri *a,
gen_helper_gvec_3 *fn)
return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, a->imm);
}
-TRANS_FEAT(ADR_p32, aa64_sve, do_adr, a, gen_helper_sve_adr_p32)
-TRANS_FEAT(ADR_p64, aa64_sve, do_adr, a, gen_helper_sve_adr_p64)
-TRANS_FEAT(ADR_s32, aa64_sve, do_adr, a, gen_helper_sve_adr_s32)
-TRANS_FEAT(ADR_u32, aa64_sve, do_adr, a, gen_helper_sve_adr_u32)
+TRANS_FEAT_NONSTREAMING(ADR_p32, aa64_sve, do_adr, a, gen_helper_sve_adr_p32)
+TRANS_FEAT_NONSTREAMING(ADR_p64, aa64_sve, do_adr, a, gen_helper_sve_adr_p64)
+TRANS_FEAT_NONSTREAMING(ADR_s32, aa64_sve, do_adr, a, gen_helper_sve_adr_s32)
+TRANS_FEAT_NONSTREAMING(ADR_u32, aa64_sve, do_adr, a, gen_helper_sve_adr_u32)
/*
*** SVE Integer Misc - Unpredicated Group
--
2.34.1
- [PATCH v4 00/45] target/arm: Scalable Matrix Extension, Richard Henderson, 2022/06/28
- [PATCH v4 01/45] target/arm: Handle SME in aarch64_cpu_dump_state, Richard Henderson, 2022/06/28
- [PATCH v4 02/45] target/arm: Add infrastructure for disas_sme, Richard Henderson, 2022/06/28
- [PATCH v4 03/45] target/arm: Trap non-streaming usage when Streaming SVE is active, Richard Henderson, 2022/06/28
- [PATCH v4 04/45] target/arm: Mark ADR as non-streaming,
Richard Henderson <=
- [PATCH v4 05/45] target/arm: Mark RDFFR, WRFFR, SETFFR as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 06/45] target/arm: Mark BDEP, BEXT, BGRP, COMPACT, FEXPA, FTSSEL as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 07/45] target/arm: Mark PMULL, FMMLA as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 08/45] target/arm: Mark FTSMUL, FTMAD, FADDA as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 09/45] target/arm: Mark SMMLA, UMMLA, USMMLA as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 10/45] target/arm: Mark string/histo/crypto as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 12/45] target/arm: Mark gather prefetch as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 11/45] target/arm: Mark gather/scatter load/store as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 13/45] target/arm: Mark LDFF1 and LDNF1 as non-streaming, Richard Henderson, 2022/06/28
- [PATCH v4 14/45] target/arm: Mark LD1RO as non-streaming, Richard Henderson, 2022/06/28