[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 08/45] target/arm: Mark FTSMUL, FTMAD, FADDA as non-streaming
From: |
Richard Henderson |
Subject: |
[PATCH v5 08/45] target/arm: Mark FTSMUL, FTMAD, FADDA as non-streaming |
Date: |
Wed, 6 Jul 2022 13:53:34 +0530 |
Mark these as a non-streaming instructions, which should trap
if full a64 support is not enabled in streaming mode.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/sme-fa64.decode | 3 ---
target/arm/translate-sve.c | 15 +++++++++++----
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/target/arm/sme-fa64.decode b/target/arm/sme-fa64.decode
index 4ff2df82e5..b5eaa2d0fa 100644
--- a/target/arm/sme-fa64.decode
+++ b/target/arm/sme-fa64.decode
@@ -59,9 +59,6 @@ FAIL 0001 1110 0111 1110 0000 00-- ---- ---- # FJCVTZS
# --11 1100 --1- ---- ---- ---- ---- --10 # Load/store FP register
(register offset)
# --11 1101 ---- ---- ---- ---- ---- ---- # Load/store FP register
(scaled imm)
-FAIL 0110 0101 --0- ---- 0000 11-- ---- ---- # FTSMUL
-FAIL 0110 0101 --01 0--- 100- ---- ---- ---- # FTMAD
-FAIL 0110 0101 --01 1--- 001- ---- ---- ---- # FADDA
FAIL 0100 0101 --0- ---- 1001 10-- ---- ---- # SMMLA, UMMLA, USMMLA
FAIL 0100 0101 --1- ---- 1--- ---- ---- ---- # SVE2 string/histo/crypto
instructions
FAIL 1000 010- -00- ---- 10-- ---- ---- ---- # SVE2 32-bit gather NT load
(vector+scalar)
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
index 4ff2102fc8..d5aad53923 100644
--- a/target/arm/translate-sve.c
+++ b/target/arm/translate-sve.c
@@ -3861,9 +3861,9 @@ static gen_helper_gvec_3_ptr * const ftmad_fns[4] = {
NULL, gen_helper_sve_ftmad_h,
gen_helper_sve_ftmad_s, gen_helper_sve_ftmad_d,
};
-TRANS_FEAT(FTMAD, aa64_sve, gen_gvec_fpst_zzz,
- ftmad_fns[a->esz], a->rd, a->rn, a->rm, a->imm,
- a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR)
+TRANS_FEAT_NONSTREAMING(FTMAD, aa64_sve, gen_gvec_fpst_zzz,
+ ftmad_fns[a->esz], a->rd, a->rn, a->rm, a->imm,
+ a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR)
/*
*** SVE Floating Point Accumulating Reduction Group
@@ -3886,6 +3886,7 @@ static bool trans_FADDA(DisasContext *s, arg_rprr_esz *a)
if (a->esz == 0 || !dc_isar_feature(aa64_sve, s)) {
return false;
}
+ s->is_nonstreaming = true;
if (!sve_access_check(s)) {
return true;
}
@@ -3923,12 +3924,18 @@ static bool trans_FADDA(DisasContext *s, arg_rprr_esz
*a)
DO_FP3(FADD_zzz, fadd)
DO_FP3(FSUB_zzz, fsub)
DO_FP3(FMUL_zzz, fmul)
-DO_FP3(FTSMUL, ftsmul)
DO_FP3(FRECPS, recps)
DO_FP3(FRSQRTS, rsqrts)
#undef DO_FP3
+static gen_helper_gvec_3_ptr * const ftsmul_fns[4] = {
+ NULL, gen_helper_gvec_ftsmul_h,
+ gen_helper_gvec_ftsmul_s, gen_helper_gvec_ftsmul_d
+};
+TRANS_FEAT_NONSTREAMING(FTSMUL, aa64_sve, gen_gvec_fpst_arg_zzz,
+ ftsmul_fns[a->esz], a, 0)
+
/*
*** SVE Floating Point Arithmetic - Predicated Group
*/
--
2.34.1
- [PATCH v5 00/45] target/arm: Scalable Matrix Extension, Richard Henderson, 2022/07/06
- [PATCH v5 01/45] target/arm: Handle SME in aarch64_cpu_dump_state, Richard Henderson, 2022/07/06
- [PATCH v5 02/45] target/arm: Add infrastructure for disas_sme, Richard Henderson, 2022/07/06
- [PATCH v5 06/45] target/arm: Mark BDEP, BEXT, BGRP, COMPACT, FEXPA, FTSSEL as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 05/45] target/arm: Mark RDFFR, WRFFR, SETFFR as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 07/45] target/arm: Mark PMULL, FMMLA as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 09/45] target/arm: Mark SMMLA, UMMLA, USMMLA as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 03/45] target/arm: Trap non-streaming usage when Streaming SVE is active, Richard Henderson, 2022/07/06
- [PATCH v5 08/45] target/arm: Mark FTSMUL, FTMAD, FADDA as non-streaming,
Richard Henderson <=
- [PATCH v5 12/45] target/arm: Mark gather prefetch as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 13/45] target/arm: Mark LDFF1 and LDNF1 as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 16/45] target/arm: Handle SME in sve_access_check, Richard Henderson, 2022/07/06
- [PATCH v5 04/45] target/arm: Mark ADR as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 11/45] target/arm: Mark gather/scatter load/store as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 15/45] target/arm: Add SME enablement checks, Richard Henderson, 2022/07/06
- [PATCH v5 14/45] target/arm: Mark LD1RO as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 10/45] target/arm: Mark string/histo/crypto as non-streaming, Richard Henderson, 2022/07/06
- [PATCH v5 17/45] target/arm: Implement SME RDSVL, ADDSVL, ADDSPL, Richard Henderson, 2022/07/06
- [PATCH v5 20/45] target/arm: Implement SME LD1, ST1, Richard Henderson, 2022/07/06