target/arm: Implement SME2 BFDOT
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250704142112.1018902-39-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
05cad66f10
commit
be0b56851a
2 changed files with 26 additions and 0 deletions
|
|
@ -288,6 +288,9 @@ BFMLSL_n1 11000001 001 1 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=4
|
|||
FDOT_n1 11000001 001 0 .... 0 .. 100 ..... 00 ... @azz_nx1_o3 n=2
|
||||
FDOT_n1 11000001 001 1 .... 0 .. 100 ..... 00 ... @azz_nx1_o3 n=4
|
||||
|
||||
BFDOT_n1 11000001 001 0 .... 0 .. 100 ..... 10 ... @azz_nx1_o3 n=2
|
||||
BFDOT_n1 11000001 001 1 .... 0 .. 100 ..... 10 ... @azz_nx1_o3 n=4
|
||||
|
||||
### SME2 Multi-vector Multiple Array Vectors
|
||||
|
||||
%zn_ax2 6:4 !function=times_2
|
||||
|
|
@ -328,6 +331,9 @@ BFMLSL_nn 11000001 101 ...01 0 .. 010 ...00 110 .. @azz_4x4_o2x2
|
|||
FDOT_nn 11000001 101 ....0 0 .. 100 ....0 00 ... @azz_2x2_o3
|
||||
FDOT_nn 11000001 101 ...01 0 .. 100 ...00 00 ... @azz_4x4_o3
|
||||
|
||||
BFDOT_nn 11000001 101 ....0 0 .. 100 ....0 10 ... @azz_2x2_o3
|
||||
BFDOT_nn 11000001 101 ...01 0 .. 100 ...00 10 ... @azz_4x4_o3
|
||||
|
||||
### SME2 Multi-vector Indexed
|
||||
|
||||
&azx_n n off rv zn zm idx
|
||||
|
|
@ -365,3 +371,6 @@ BFMLSL_nx 11000001 1001 .... 1 .. 1 .. ...00 11 ... @azx_4x1_o2x2
|
|||
|
||||
FDOT_nx 11000001 0101 .... 0 .. 1 .. ....0 01 ... @azx_2x1_i2_o3
|
||||
FDOT_nx 11000001 0101 .... 1 .. 1 .. ...00 01 ... @azx_4x1_i2_o3
|
||||
|
||||
BFDOT_nx 11000001 0101 .... 0 .. 1 .. ....0 11 ... @azx_2x1_i2_o3
|
||||
BFDOT_nx 11000001 0101 .... 1 .. 1 .. ...00 11 ... @azx_4x1_i2_o3
|
||||
|
|
|
|||
|
|
@ -921,3 +921,20 @@ static bool do_fdot_nx(DisasContext *s, arg_azx_n *a)
|
|||
}
|
||||
|
||||
TRANS_FEAT(FDOT_nx, aa64_sme2, do_fdot_nx, a)
|
||||
|
||||
static bool do_bfdot(DisasContext *s, arg_azz_n *a, bool multi)
|
||||
{
|
||||
return do_azz_acc_fp(s, a->n, 1, a->rv, a->off, a->zn, a->zm, 0, 0,
|
||||
multi, FPST_ENV, gen_helper_gvec_bfdot);
|
||||
}
|
||||
|
||||
TRANS_FEAT(BFDOT_n1, aa64_sme2, do_bfdot, a, false)
|
||||
TRANS_FEAT(BFDOT_nn, aa64_sme2, do_bfdot, a, true)
|
||||
|
||||
static bool do_bfdot_nx(DisasContext *s, arg_azx_n *a)
|
||||
{
|
||||
return do_azz_acc_fp(s, a->n, 1, a->rv, a->off, a->zn, a->zm, a->idx, 0,
|
||||
false, FPST_ENV, gen_helper_gvec_bfdot_idx);
|
||||
}
|
||||
|
||||
TRANS_FEAT(BFDOT_nx, aa64_sme2, do_bfdot_nx, a)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue