From: Richard Henderson <[email protected]> This includes REVB, REVH, REVW, RBIT.
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 | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e79b5e84c1..867ae2916e 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -730,6 +730,11 @@ REVW_m 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn RBIT_m 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn REVD_m 00000101 00 1011 10 100 ... ..... ..... @rd_pg_rn_e0 +REVB_z 00000101 .. 1001 00 101 ... ..... ..... @rd_pg_rn +REVH_z 00000101 .. 1001 01 101 ... ..... ..... @rd_pg_rn +REVW_z 00000101 .. 1001 10 101 ... ..... ..... @rd_pg_rn +RBIT_z 00000101 .. 1001 11 101 ... ..... ..... @rd_pg_rn + # SVE vector splice (predicated, destructive) SPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index d6a1683719..cd1e0e744d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -836,6 +836,7 @@ static gen_helper_gvec_3 * const sve_rbit_fns[4] = { gen_helper_sve_rbit_s, gen_helper_sve_rbit_d, }; TRANS_FEAT(RBIT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_rbit_fns[a->esz], a, 0) +TRANS_FEAT(RBIT_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_rbit_fns[a->esz], a, 1) static gen_helper_gvec_3 * const sve2p1_orqv_fns[4] = { gen_helper_sve2p1_orqv_b, gen_helper_sve2p1_orqv_h, @@ -3070,15 +3071,21 @@ static gen_helper_gvec_3 * const revb_fns[4] = { }; TRANS_FEAT(REVB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revb_fns[a->esz], a, 0) +TRANS_FEAT(REVB_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + revb_fns[a->esz], a, 1) static gen_helper_gvec_3 * const revh_fns[4] = { NULL, NULL, gen_helper_sve_revh_s, gen_helper_sve_revh_d, }; TRANS_FEAT(REVH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revh_fns[a->esz], a, 0) +TRANS_FEAT(REVH_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + revh_fns[a->esz], a, 1) TRANS_FEAT(REVW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz == 3 ? gen_helper_sve_revw_d : NULL, a, 0) +TRANS_FEAT(REVW_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz == 3 ? gen_helper_sve_revw_d : NULL, a, 1) TRANS_FEAT(REVD_m, aa64_sme_or_sve2p1, gen_gvec_ool_arg_zpz, gen_helper_sme_revd_q, a, 0) -- 2.43.0
