From: Richard Henderson <[email protected]> This includes URECPE, URSQRTE, SQABS, SQNEG.
Signed-off-by: Richard Henderson <[email protected]> Reviewed-by: Peter Maydell <[email protected]> Message-id: [email protected] Signed-off-by: Peter Maydell <[email protected]> --- target/arm/tcg/sve.decode | 5 +++++ target/arm/tcg/translate-sve.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 45f8633fd3..f1cf7a628d 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1545,6 +1545,11 @@ URSQRTE_m 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn SQABS_m 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn SQNEG_m 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn +URECPE_z 01000100 .. 000 010 101 ... ..... ..... @rd_pg_rn +URSQRTE_z 01000100 .. 000 011 101 ... ..... ..... @rd_pg_rn +SQABS_z 01000100 .. 001 010 101 ... ..... ..... @rd_pg_rn +SQNEG_z 01000100 .. 001 011 101 ... ..... ..... @rd_pg_rn + ### SVE2 saturating/rounding bitwise shift left (predicated) SRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 6a29c1e43e..fe78e4dda1 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -6791,21 +6791,27 @@ TRANS_FEAT(UADALP_zpzz, aa64_sme_or_sve2, gen_gvec_ool_arg_zpzz, TRANS_FEAT(URECPE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz == 2 ? gen_helper_sve2_urecpe_s : NULL, a, 0) +TRANS_FEAT(URECPE_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz == 2 ? gen_helper_sve2_urecpe_s : NULL, a, 1) TRANS_FEAT(URSQRTE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz == 2 ? gen_helper_sve2_ursqrte_s : NULL, a, 0) +TRANS_FEAT(URSQRTE_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz == 2 ? gen_helper_sve2_ursqrte_s : NULL, a, 1) static gen_helper_gvec_3 * const sqabs_fns[4] = { gen_helper_sve2_sqabs_b, gen_helper_sve2_sqabs_h, gen_helper_sve2_sqabs_s, gen_helper_sve2_sqabs_d, }; TRANS_FEAT(SQABS_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqabs_fns[a->esz], a, 0) +TRANS_FEAT(SQABS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sqabs_fns[a->esz], a, 1) static gen_helper_gvec_3 * const sqneg_fns[4] = { gen_helper_sve2_sqneg_b, gen_helper_sve2_sqneg_h, gen_helper_sve2_sqneg_s, gen_helper_sve2_sqneg_d, }; TRANS_FEAT(SQNEG_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqneg_fns[a->esz], a, 0) +TRANS_FEAT(SQNEG_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sqneg_fns[a->esz], a, 1) DO_ZPZZ(SQSHL, aa64_sme_or_sve2, sve2_sqshl) DO_ZPZZ(SQRSHL, aa64_sme_or_sve2, sve2_sqrshl) -- 2.43.0
