target/arm: Rename MOVA for translate
Prepare for more kinds of MOVA from SME2 by renaming the existing SME1 MOVA to indicate tile to/from vector. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250704142112.1018902-23-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
51a64f1e77
commit
2c43bee917
2 changed files with 27 additions and 27 deletions
|
|
@ -27,29 +27,29 @@ ZERO_zt0 11000000 01 001 00000000000 00000001
|
|||
### SME Move into/from Array
|
||||
|
||||
%mova_rs 13:2 !function=plus_12
|
||||
&mova esz rs pg zr za off v:bool to_vec:bool
|
||||
&mova_p esz rs pg zr za off v:bool
|
||||
|
||||
MOVA 11000000 00 00000 0 v:1 .. pg:3 zr:5 0 off:4 \
|
||||
&mova to_vec=0 rs=%mova_rs esz=0 za=0
|
||||
MOVA 11000000 01 00000 0 v:1 .. pg:3 zr:5 0 za:1 off:3 \
|
||||
&mova to_vec=0 rs=%mova_rs esz=1
|
||||
MOVA 11000000 10 00000 0 v:1 .. pg:3 zr:5 0 za:2 off:2 \
|
||||
&mova to_vec=0 rs=%mova_rs esz=2
|
||||
MOVA 11000000 11 00000 0 v:1 .. pg:3 zr:5 0 za:3 off:1 \
|
||||
&mova to_vec=0 rs=%mova_rs esz=3
|
||||
MOVA 11000000 11 00000 1 v:1 .. pg:3 zr:5 0 za:4 \
|
||||
&mova to_vec=0 rs=%mova_rs esz=4 off=0
|
||||
MOVA_tz 11000000 00 00000 0 v:1 .. pg:3 zr:5 0 off:4 \
|
||||
&mova_p rs=%mova_rs esz=0 za=0
|
||||
MOVA_tz 11000000 01 00000 0 v:1 .. pg:3 zr:5 0 za:1 off:3 \
|
||||
&mova_p rs=%mova_rs esz=1
|
||||
MOVA_tz 11000000 10 00000 0 v:1 .. pg:3 zr:5 0 za:2 off:2 \
|
||||
&mova_p rs=%mova_rs esz=2
|
||||
MOVA_tz 11000000 11 00000 0 v:1 .. pg:3 zr:5 0 za:3 off:1 \
|
||||
&mova_p rs=%mova_rs esz=3
|
||||
MOVA_tz 11000000 11 00000 1 v:1 .. pg:3 zr:5 0 za:4 \
|
||||
&mova_p rs=%mova_rs esz=4 off=0
|
||||
|
||||
MOVA 11000000 00 00001 0 v:1 .. pg:3 0 off:4 zr:5 \
|
||||
&mova to_vec=1 rs=%mova_rs esz=0 za=0
|
||||
MOVA 11000000 01 00001 0 v:1 .. pg:3 0 za:1 off:3 zr:5 \
|
||||
&mova to_vec=1 rs=%mova_rs esz=1
|
||||
MOVA 11000000 10 00001 0 v:1 .. pg:3 0 za:2 off:2 zr:5 \
|
||||
&mova to_vec=1 rs=%mova_rs esz=2
|
||||
MOVA 11000000 11 00001 0 v:1 .. pg:3 0 za:3 off:1 zr:5 \
|
||||
&mova to_vec=1 rs=%mova_rs esz=3
|
||||
MOVA 11000000 11 00001 1 v:1 .. pg:3 0 za:4 zr:5 \
|
||||
&mova to_vec=1 rs=%mova_rs esz=4 off=0
|
||||
MOVA_zt 11000000 00 00001 0 v:1 .. pg:3 0 off:4 zr:5 \
|
||||
&mova_p rs=%mova_rs esz=0 za=0
|
||||
MOVA_zt 11000000 01 00001 0 v:1 .. pg:3 0 za:1 off:3 zr:5 \
|
||||
&mova_p rs=%mova_rs esz=1
|
||||
MOVA_zt 11000000 10 00001 0 v:1 .. pg:3 0 za:2 off:2 zr:5 \
|
||||
&mova_p rs=%mova_rs esz=2
|
||||
MOVA_zt 11000000 11 00001 0 v:1 .. pg:3 0 za:3 off:1 zr:5 \
|
||||
&mova_p rs=%mova_rs esz=3
|
||||
MOVA_zt 11000000 11 00001 1 v:1 .. pg:3 0 za:4 zr:5 \
|
||||
&mova_p rs=%mova_rs esz=4 off=0
|
||||
|
||||
### SME Move into/from ZT0
|
||||
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ static bool trans_ZERO_zt0(DisasContext *s, arg_ZERO_zt0 *a)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool trans_MOVA(DisasContext *s, arg_MOVA *a)
|
||||
static bool do_mova_tile(DisasContext *s, arg_mova_p *a, bool to_vec)
|
||||
{
|
||||
static gen_helper_gvec_4 * const h_fns[5] = {
|
||||
gen_helper_sve_sel_zpzz_b, gen_helper_sve_sel_zpzz_h,
|
||||
|
|
@ -173,9 +173,6 @@ static bool trans_MOVA(DisasContext *s, arg_MOVA *a)
|
|||
TCGv_i32 t_desc;
|
||||
int svl;
|
||||
|
||||
if (!dc_isar_feature(aa64_sme, s)) {
|
||||
return false;
|
||||
}
|
||||
if (!sme_smza_enabled_check(s)) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -189,14 +186,14 @@ static bool trans_MOVA(DisasContext *s, arg_MOVA *a)
|
|||
|
||||
if (a->v) {
|
||||
/* Vertical slice -- use sme mova helpers. */
|
||||
if (a->to_vec) {
|
||||
if (to_vec) {
|
||||
zc_fns[a->esz](t_zr, t_za, t_pg, t_desc);
|
||||
} else {
|
||||
cz_fns[a->esz](t_za, t_zr, t_pg, t_desc);
|
||||
}
|
||||
} else {
|
||||
/* Horizontal slice -- reuse sve sel helpers. */
|
||||
if (a->to_vec) {
|
||||
if (to_vec) {
|
||||
h_fns[a->esz](t_zr, t_za, t_zr, t_pg, t_desc);
|
||||
} else {
|
||||
h_fns[a->esz](t_za, t_zr, t_za, t_pg, t_desc);
|
||||
|
|
@ -205,6 +202,9 @@ static bool trans_MOVA(DisasContext *s, arg_MOVA *a)
|
|||
return true;
|
||||
}
|
||||
|
||||
TRANS_FEAT(MOVA_tz, aa64_sme, do_mova_tile, a, false)
|
||||
TRANS_FEAT(MOVA_zt, aa64_sme, do_mova_tile, a, true)
|
||||
|
||||
static bool do_movt(DisasContext *s, arg_MOVT_rzt *a,
|
||||
void (*func)(TCGv_i64, TCGv_ptr, tcg_target_long))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue