mirror of
https://github.com/mborgerson/xemu.git
synced 2026-03-15 08:44:43 +00:00
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250704142112.1018902-106-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
994 lines
49 KiB
Plaintext
994 lines
49 KiB
Plaintext
# AArch64 SME instruction descriptions
|
|
#
|
|
# Copyright (c) 2022 Linaro, Ltd
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
# This file is processed by scripts/decodetree.py
|
|
#
|
|
|
|
### SME Misc
|
|
|
|
ZERO 11000000 00 001 00000000000 imm:8
|
|
ZERO_zt0 11000000 01 001 00000000000 00000001
|
|
|
|
### SME Move into/from Array
|
|
|
|
%mova_rs 13:2 !function=plus_12
|
|
%mova_rv 13:2 !function=plus_8
|
|
&mova_a rv zr off
|
|
&mova_p esz rs pg zr za off v:bool
|
|
&mova_t esz rs zr za off v:bool
|
|
|
|
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_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
|
|
|
|
MOVA_tz2 11000000 00 00010 0 v:1 .. 000 zr:4 0 00 off:3 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVA_tz2 11000000 01 00010 0 v:1 .. 000 zr:4 0 00 za:1 off:2 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVA_tz2 11000000 10 00010 0 v:1 .. 000 zr:4 0 00 za:2 off:1 \
|
|
&mova_t rs=%mova_rs esz=2
|
|
MOVA_tz2 11000000 11 00010 0 v:1 .. 000 zr:4 0 00 za:3 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
MOVA_zt2 11000000 00 00011 0 v:1 .. 000 00 off:3 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVA_zt2 11000000 01 00011 0 v:1 .. 000 00 za:1 off:2 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVA_zt2 11000000 10 00011 0 v:1 .. 000 00 za:2 off:1 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=2
|
|
MOVA_zt2 11000000 11 00011 0 v:1 .. 000 00 za:3 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
MOVA_tz4 11000000 00 00010 0 v:1 .. 001 zr:3 00 000 off:2 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVA_tz4 11000000 01 00010 0 v:1 .. 001 zr:3 00 000 za:1 off:1 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVA_tz4 11000000 10 00010 0 v:1 .. 001 zr:3 00 000 za:2 \
|
|
&mova_t rs=%mova_rs esz=2 off=0
|
|
MOVA_tz4 11000000 11 00010 0 v:1 .. 001 zr:3 00 00 za:3 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
MOVA_zt4 11000000 00 00011 0 v:1 .. 001 000 off:2 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVA_zt4 11000000 01 00011 0 v:1 .. 001 000 za:1 off:1 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVA_zt4 11000000 10 00011 0 v:1 .. 001 000 za:2 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=2 off=0
|
|
MOVA_zt4 11000000 11 00011 0 v:1 .. 001 00 za:3 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
MOVA_az2 11000000 00 00010 00 .. 010 zr:4 000 off:3 \
|
|
&mova_a rv=%mova_rv
|
|
MOVA_az4 11000000 00 00010 00 .. 011 zr:3 0000 off:3 \
|
|
&mova_a rv=%mova_rv
|
|
|
|
MOVA_za2 11000000 00 00011 00 .. 010 00 off:3 zr:4 0 \
|
|
&mova_a rv=%mova_rv
|
|
MOVA_za4 11000000 00 00011 00 .. 011 00 off:3 zr:3 00 \
|
|
&mova_a rv=%mova_rv
|
|
|
|
### SME Move and Zero
|
|
|
|
MOVAZ_za2 11000000 00000110 0 .. 01010 off:3 zr:4 0 \
|
|
&mova_a rv=%mova_rv
|
|
MOVAZ_za4 11000000 00000110 0 .. 01110 off:3 zr:3 00 \
|
|
&mova_a rv=%mova_rv
|
|
|
|
MOVAZ_zt 11000000 00 00001 0 v:1 .. 0001 off:4 zr:5 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVAZ_zt 11000000 01 00001 0 v:1 .. 0001 za:1 off:3 zr:5 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVAZ_zt 11000000 10 00001 0 v:1 .. 0001 za:2 off:2 zr:5 \
|
|
&mova_t rs=%mova_rs esz=2
|
|
MOVAZ_zt 11000000 11 00001 0 v:1 .. 0001 za:3 off:1 zr:5 \
|
|
&mova_t rs=%mova_rs esz=3
|
|
MOVAZ_zt 11000000 11 00001 1 v:1 .. 0001 za:4 zr:5 \
|
|
&mova_t rs=%mova_rs esz=4 off=0
|
|
|
|
MOVAZ_zt2 11000000 00 00011 0 v:1 .. 00010 off:3 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVAZ_zt2 11000000 01 00011 0 v:1 .. 00010 za:1 off:2 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVAZ_zt2 11000000 10 00011 0 v:1 .. 00010 za:2 off:1 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=2
|
|
MOVAZ_zt2 11000000 11 00011 0 v:1 .. 00010 za:3 zr:4 0 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
MOVAZ_zt4 11000000 00 00011 0 v:1 .. 001100 off:2 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=0 za=0
|
|
MOVAZ_zt4 11000000 01 00011 0 v:1 .. 001100 za:1 off:1 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=1
|
|
MOVAZ_zt4 11000000 10 00011 0 v:1 .. 001100 za:2 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=2 off=0
|
|
MOVAZ_zt4 11000000 11 00011 0 v:1 .. 00110 za:3 zr:3 00 \
|
|
&mova_t rs=%mova_rs esz=3 off=0
|
|
|
|
### SME Move into/from ZT0
|
|
|
|
MOVT_rzt 1100 0000 0100 1100 0 off:3 00 11111 rt:5
|
|
MOVT_ztr 1100 0000 0100 1110 0 off:3 00 11111 rt:5
|
|
|
|
### SME Memory
|
|
|
|
&ldst esz rs pg rn rm za off v:bool st:bool
|
|
|
|
LDST1 1110000 0 00 st:1 rm:5 v:1 .. pg:3 rn:5 0 off:4 \
|
|
&ldst rs=%mova_rs esz=0 za=0
|
|
LDST1 1110000 0 01 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:1 off:3 \
|
|
&ldst rs=%mova_rs esz=1
|
|
LDST1 1110000 0 10 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:2 off:2 \
|
|
&ldst rs=%mova_rs esz=2
|
|
LDST1 1110000 0 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:3 off:1 \
|
|
&ldst rs=%mova_rs esz=3
|
|
LDST1 1110000 1 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:4 \
|
|
&ldst rs=%mova_rs esz=4 off=0
|
|
|
|
&ldstr rv rn imm
|
|
@ldstr ....... ... . ...... .. ... rn:5 . imm:4 \
|
|
&ldstr rv=%mova_rs
|
|
|
|
LDR 1110000 100 0 000000 .. 000 ..... 0 .... @ldstr
|
|
STR 1110000 100 1 000000 .. 000 ..... 0 .... @ldstr
|
|
|
|
&ldstzt0 rn
|
|
@ldstzt0 ....... ... . ...... .. ... rn:5 ..... &ldstzt0
|
|
|
|
LDR_zt0 1110000 100 0 111111 00 000 ..... 00000 @ldstzt0
|
|
STR_zt0 1110000 100 1 111111 00 000 ..... 00000 @ldstzt0
|
|
|
|
### SME Add Vector to Array
|
|
|
|
&adda zad zn pm pn
|
|
@adda_32 ........ .. ..... . pm:3 pn:3 zn:5 ... zad:2 &adda
|
|
@adda_64 ........ .. ..... . pm:3 pn:3 zn:5 .. zad:3 &adda
|
|
|
|
ADDHA_s 11000000 10 01000 0 ... ... ..... 000 .. @adda_32
|
|
ADDVA_s 11000000 10 01000 1 ... ... ..... 000 .. @adda_32
|
|
ADDHA_d 11000000 11 01000 0 ... ... ..... 00 ... @adda_64
|
|
ADDVA_d 11000000 11 01000 1 ... ... ..... 00 ... @adda_64
|
|
|
|
### SME Outer Product
|
|
|
|
&op zad zn zm pm pn sub:bool
|
|
@op_16 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 ... zad:1 &op
|
|
@op_32 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 .. zad:2 &op
|
|
@op_64 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 . zad:3 &op
|
|
|
|
FMOPA_h 10000001 100 ..... ... ... ..... . 100 . @op_16
|
|
FMOPA_s 10000000 100 ..... ... ... ..... . 00 .. @op_32
|
|
FMOPA_d 10000000 110 ..... ... ... ..... . 0 ... @op_64
|
|
|
|
BFMOPA 10000001 101 ..... ... ... ..... . 100 . @op_16
|
|
|
|
BFMOPA_w 10000001 100 ..... ... ... ..... . 00 .. @op_32
|
|
FMOPA_w_h 10000001 101 ..... ... ... ..... . 00 .. @op_32
|
|
|
|
SMOPA_s 1010000 0 10 0 ..... ... ... ..... . 00 .. @op_32
|
|
SUMOPA_s 1010000 0 10 1 ..... ... ... ..... . 00 .. @op_32
|
|
USMOPA_s 1010000 1 10 0 ..... ... ... ..... . 00 .. @op_32
|
|
UMOPA_s 1010000 1 10 1 ..... ... ... ..... . 00 .. @op_32
|
|
|
|
SMOPA_d 1010000 0 11 0 ..... ... ... ..... . 0 ... @op_64
|
|
SUMOPA_d 1010000 0 11 1 ..... ... ... ..... . 0 ... @op_64
|
|
USMOPA_d 1010000 1 11 0 ..... ... ... ..... . 0 ... @op_64
|
|
UMOPA_d 1010000 1 11 1 ..... ... ... ..... . 0 ... @op_64
|
|
|
|
BMOPA 1000000 0 10 0 ..... ... ... ..... . 10 .. @op_32
|
|
SMOPA2_s 1010000 0 10 0 ..... ... ... ..... . 10 .. @op_32
|
|
UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . 10 .. @op_32
|
|
|
|
### SME2 Multi-vector Multiple and Single SVE Destructive
|
|
|
|
%zd_ax2 1:4 !function=times_2
|
|
%zd_ax4 2:3 !function=times_4
|
|
|
|
&z2z_en zdn zm esz n
|
|
@z2z_2x1 ....... . esz:2 .. zm:4 ....0. ..... .... . \
|
|
&z2z_en n=2 zdn=%zd_ax2
|
|
@z2z_4x1 ....... . esz:2 .. zm:4 ....1. ..... ...0 . \
|
|
&z2z_en n=4 zdn=%zd_ax4
|
|
|
|
SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_2x1
|
|
SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_4x1
|
|
UMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 1 @z2z_2x1
|
|
UMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 1 @z2z_4x1
|
|
SMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 0 @z2z_2x1
|
|
SMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 0 @z2z_4x1
|
|
UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_2x1
|
|
UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_4x1
|
|
|
|
FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_2x1
|
|
FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_4x1
|
|
FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_2x1
|
|
FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_4x1
|
|
FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_2x1
|
|
FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_4x1
|
|
FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_2x1
|
|
FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_4x1
|
|
|
|
SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_2x1
|
|
SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_4x1
|
|
URSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 1 @z2z_2x1
|
|
URSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 1 @z2z_4x1
|
|
|
|
ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0 @z2z_2x1
|
|
ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0 @z2z_4x1
|
|
|
|
SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_2x1
|
|
SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_4x1
|
|
|
|
### SME2 Multi-vector Multiple Vectors SVE Destructive
|
|
|
|
%zm_ax2 17:4 !function=times_2
|
|
%zm_ax4 18:3 !function=times_4
|
|
|
|
@z2z_2x2 ....... . esz:2 . ....0 ....0. ..... .... . \
|
|
&z2z_en n=2 zdn=%zd_ax2 zm=%zm_ax2
|
|
@z2z_4x4 ....... . esz:2 . ...00 ....1. ..... ...0 . \
|
|
&z2z_en n=4 zdn=%zd_ax4 zm=%zm_ax4
|
|
|
|
SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_2x2
|
|
SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_4x4
|
|
UMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 1 @z2z_2x2
|
|
UMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 1 @z2z_4x4
|
|
SMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 0 @z2z_2x2
|
|
SMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 0 @z2z_4x4
|
|
UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_2x2
|
|
UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_4x4
|
|
|
|
FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_2x2
|
|
FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_4x4
|
|
FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_2x2
|
|
FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_4x4
|
|
FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_2x2
|
|
FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_4x4
|
|
FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_2x2
|
|
FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_4x4
|
|
|
|
SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_2x2
|
|
SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_4x4
|
|
URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 1 @z2z_2x2
|
|
URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 1 @z2z_4x4
|
|
|
|
SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_2x2
|
|
SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_4x4
|
|
|
|
### SME2 Multi-vector Multiple and Single Array Vectors
|
|
|
|
&azz_n n off rv zn zm
|
|
@azz_nx1_o3 ........ .... zm:4 ...... zn:5 .. off:3 &azz_n rv=%mova_rv
|
|
|
|
ADD_azz_n1_s 11000001 0010 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=2
|
|
ADD_azz_n1_s 11000001 0011 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=4
|
|
ADD_azz_n1_d 11000001 0110 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=2
|
|
ADD_azz_n1_d 11000001 0111 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=4
|
|
|
|
SUB_azz_n1_s 11000001 0010 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=2
|
|
SUB_azz_n1_s 11000001 0011 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=4
|
|
SUB_azz_n1_d 11000001 0110 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=2
|
|
SUB_azz_n1_d 11000001 0111 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=4
|
|
|
|
%off3_x2 0:3 !function=times_2
|
|
%off2_x2 0:2 !function=times_2
|
|
|
|
@azz_nx1_o3x2 ........ ... . zm:4 . .. ... zn:5 .. ... \
|
|
&azz_n off=%off3_x2 rv=%mova_rv
|
|
@azz_nx1_o2x2 ........ ... . zm:4 . .. ... zn:5 ... .. \
|
|
&azz_n off=%off2_x2 rv=%mova_rv
|
|
|
|
FMLAL_n1 11000001 001 0 .... 0 .. 011 ..... 00 ... @azz_nx1_o3x2 n=1
|
|
FMLAL_n1 11000001 001 0 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=2
|
|
FMLAL_n1 11000001 001 1 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=4
|
|
|
|
FMLSL_n1 11000001 001 0 .... 0 .. 011 ..... 01 ... @azz_nx1_o3x2 n=1
|
|
FMLSL_n1 11000001 001 0 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=2
|
|
FMLSL_n1 11000001 001 1 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=4
|
|
|
|
BFMLAL_n1 11000001 001 0 .... 0 .. 011 ..... 10 ... @azz_nx1_o3x2 n=1
|
|
BFMLAL_n1 11000001 001 0 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=2
|
|
BFMLAL_n1 11000001 001 1 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=4
|
|
|
|
BFMLSL_n1 11000001 001 0 .... 0 .. 011 ..... 11 ... @azz_nx1_o3x2 n=1
|
|
BFMLSL_n1 11000001 001 0 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=2
|
|
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
|
|
|
|
USDOT_n1 11000001 001 0 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=2
|
|
USDOT_n1 11000001 001 1 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=4
|
|
|
|
SUDOT_n1 11000001 001 0 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=2
|
|
SUDOT_n1 11000001 001 1 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=4
|
|
|
|
SDOT_n1_4b 11000001 001 0 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=2
|
|
SDOT_n1_4b 11000001 001 1 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=4
|
|
SDOT_n1_4h 11000001 011 0 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=2
|
|
SDOT_n1_4h 11000001 011 1 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=4
|
|
SDOT_n1_2h 11000001 011 0 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=2
|
|
SDOT_n1_2h 11000001 011 1 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=4
|
|
|
|
UDOT_n1_4b 11000001 001 0 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=2
|
|
UDOT_n1_4b 11000001 001 1 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=4
|
|
UDOT_n1_4h 11000001 011 0 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=2
|
|
UDOT_n1_4h 11000001 011 1 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=4
|
|
UDOT_n1_2h 11000001 011 0 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=2
|
|
UDOT_n1_2h 11000001 011 1 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=4
|
|
|
|
SMLAL_n1 11000001 011 0 .... 0 .. 011 ..... 00 ... @azz_nx1_o3x2 n=1
|
|
SMLAL_n1 11000001 011 0 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=2
|
|
SMLAL_n1 11000001 011 1 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=4
|
|
|
|
SMLSL_n1 11000001 011 0 .... 0 .. 011 ..... 01 ... @azz_nx1_o3x2 n=1
|
|
SMLSL_n1 11000001 011 0 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=2
|
|
SMLSL_n1 11000001 011 1 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=4
|
|
|
|
UMLAL_n1 11000001 011 0 .... 0 .. 011 ..... 10 ... @azz_nx1_o3x2 n=1
|
|
UMLAL_n1 11000001 011 0 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=2
|
|
UMLAL_n1 11000001 011 1 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=4
|
|
|
|
UMLSL_n1 11000001 011 0 .... 0 .. 011 ..... 11 ... @azz_nx1_o3x2 n=1
|
|
UMLSL_n1 11000001 011 0 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=2
|
|
UMLSL_n1 11000001 011 1 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=4
|
|
|
|
%off2_x4 0:2 !function=times_4
|
|
%off1_x4 0:1 !function=times_4
|
|
|
|
@azz_nx1_o2x4 ........ ... . zm:4 . .. ... zn:5 ... .. \
|
|
&azz_n off=%off2_x4 rv=%mova_rv
|
|
@azz_nx1_o1x4 ........ ... . zm:4 . .. ... zn:5 .... . \
|
|
&azz_n off=%off1_x4 rv=%mova_rv
|
|
|
|
SMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 000 .. @azz_nx1_o2x4 n=1
|
|
SMLALL_n1_d 11000001 011 0 .... 0 .. 001 ..... 000 .. @azz_nx1_o2x4 n=1
|
|
SMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=2
|
|
SMLALL_n1_d 11000001 011 0 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=2
|
|
SMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=4
|
|
SMLALL_n1_d 11000001 011 1 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=4
|
|
|
|
SMLSLL_n1_s 11000001 001 0 .... 0 .. 001 ..... 010 .. @azz_nx1_o2x4 n=1
|
|
SMLSLL_n1_d 11000001 011 0 .... 0 .. 001 ..... 010 .. @azz_nx1_o2x4 n=1
|
|
SMLSLL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=2
|
|
SMLSLL_n1_d 11000001 011 0 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=2
|
|
SMLSLL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=4
|
|
SMLSLL_n1_d 11000001 011 1 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=4
|
|
|
|
UMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 100 .. @azz_nx1_o2x4 n=1
|
|
UMLALL_n1_d 11000001 011 0 .... 0 .. 001 ..... 100 .. @azz_nx1_o2x4 n=1
|
|
UMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=2
|
|
UMLALL_n1_d 11000001 011 0 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=2
|
|
UMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=4
|
|
UMLALL_n1_d 11000001 011 1 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=4
|
|
|
|
UMLSLL_n1_s 11000001 001 0 .... 0 .. 001 ..... 110 .. @azz_nx1_o2x4 n=1
|
|
UMLSLL_n1_d 11000001 011 0 .... 0 .. 001 ..... 110 .. @azz_nx1_o2x4 n=1
|
|
UMLSLL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=2
|
|
UMLSLL_n1_d 11000001 011 0 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=2
|
|
UMLSLL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=4
|
|
UMLSLL_n1_d 11000001 011 1 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=4
|
|
|
|
USMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 001 .. @azz_nx1_o2x4 n=1
|
|
USMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0010 . @azz_nx1_o1x4 n=2
|
|
USMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0010 . @azz_nx1_o1x4 n=4
|
|
|
|
SUMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1010 . @azz_nx1_o1x4 n=2
|
|
SUMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1010 . @azz_nx1_o1x4 n=4
|
|
|
|
BFMLA_n1 11000001 011 0 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=2
|
|
FMLA_n1_h 11000001 001 0 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=2
|
|
FMLA_n1_s 11000001 001 0 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=2
|
|
FMLA_n1_d 11000001 011 0 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=2
|
|
|
|
BFMLA_n1 11000001 011 1 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=4
|
|
FMLA_n1_h 11000001 001 1 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=4
|
|
FMLA_n1_s 11000001 001 1 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=4
|
|
FMLA_n1_d 11000001 011 1 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=4
|
|
|
|
BFMLS_n1 11000001 011 0 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=2
|
|
FMLS_n1_h 11000001 001 0 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=2
|
|
FMLS_n1_s 11000001 001 0 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=2
|
|
FMLS_n1_d 11000001 011 0 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=2
|
|
|
|
BFMLS_n1 11000001 011 1 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=4
|
|
FMLS_n1_h 11000001 001 1 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=4
|
|
FMLS_n1_s 11000001 001 1 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=4
|
|
FMLS_n1_d 11000001 011 1 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=4
|
|
|
|
### SME2 Multi-vector Multiple Array Vectors
|
|
|
|
%zn_ax2 6:4 !function=times_2
|
|
%zn_ax4 7:3 !function=times_4
|
|
|
|
@azz_2x2_o3 ........ ... ..... . .. ... ..... .. off:3 \
|
|
&azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2
|
|
@azz_4x4_o3 ........ ... ..... . .. ... ..... .. off:3 \
|
|
&azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4
|
|
|
|
ADD_azz_nn_s 11000001 101 ....0 0 .. 110 ....0 10 ... @azz_2x2_o3
|
|
ADD_azz_nn_s 11000001 101 ...01 0 .. 110 ...00 10 ... @azz_4x4_o3
|
|
ADD_azz_nn_d 11000001 111 ....0 0 .. 110 ....0 10 ... @azz_2x2_o3
|
|
ADD_azz_nn_d 11000001 111 ...01 0 .. 110 ...00 10 ... @azz_4x4_o3
|
|
|
|
SUB_azz_nn_s 11000001 101 ....0 0 .. 110 ....0 11 ... @azz_2x2_o3
|
|
SUB_azz_nn_s 11000001 101 ...01 0 .. 110 ...00 11 ... @azz_4x4_o3
|
|
SUB_azz_nn_d 11000001 111 ....0 0 .. 110 ....0 11 ... @azz_2x2_o3
|
|
SUB_azz_nn_d 11000001 111 ...01 0 .. 110 ...00 11 ... @azz_4x4_o3
|
|
|
|
@azz_2x2_o2x2 ........ ... ..... . .. ... ..... ... .. \
|
|
&azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off2_x2
|
|
@azz_4x4_o2x2 ........ ... ..... . .. ... ..... ... .. \
|
|
&azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off2_x2
|
|
|
|
FMLAL_nn 11000001 101 ....0 0 .. 010 ....0 000 .. @azz_2x2_o2x2
|
|
FMLAL_nn 11000001 101 ...01 0 .. 010 ...00 000 .. @azz_4x4_o2x2
|
|
|
|
FMLSL_nn 11000001 101 ....0 0 .. 010 ....0 010 .. @azz_2x2_o2x2
|
|
FMLSL_nn 11000001 101 ...01 0 .. 010 ...00 010 .. @azz_4x4_o2x2
|
|
|
|
BFMLAL_nn 11000001 101 ....0 0 .. 010 ....0 100 .. @azz_2x2_o2x2
|
|
BFMLAL_nn 11000001 101 ...01 0 .. 010 ...00 100 .. @azz_4x4_o2x2
|
|
|
|
BFMLSL_nn 11000001 101 ....0 0 .. 010 ....0 110 .. @azz_2x2_o2x2
|
|
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
|
|
|
|
USDOT_nn 11000001 101 ....0 0 .. 101 ....0 01 ... @azz_2x2_o3
|
|
USDOT_nn 11000001 101 ...01 0 .. 101 ...00 01 ... @azz_4x4_o3
|
|
|
|
SDOT_nn_4b 11000001 101 ....0 0 .. 101 ....0 00 ... @azz_2x2_o3
|
|
SDOT_nn_4b 11000001 101 ...01 0 .. 101 ...00 00 ... @azz_4x4_o3
|
|
SDOT_nn_4h 11000001 111 ....0 0 .. 101 ....0 00 ... @azz_2x2_o3
|
|
SDOT_nn_4h 11000001 111 ...01 0 .. 101 ...00 00 ... @azz_4x4_o3
|
|
SDOT_nn_2h 11000001 111 ....0 0 .. 101 ....0 01 ... @azz_2x2_o3
|
|
SDOT_nn_2h 11000001 111 ...01 0 .. 101 ...00 01 ... @azz_4x4_o3
|
|
|
|
UDOT_nn_4b 11000001 101 ....0 0 .. 101 ....0 10 ... @azz_2x2_o3
|
|
UDOT_nn_4b 11000001 101 ...01 0 .. 101 ...00 10 ... @azz_4x4_o3
|
|
UDOT_nn_4h 11000001 111 ....0 0 .. 101 ....0 10 ... @azz_2x2_o3
|
|
UDOT_nn_4h 11000001 111 ...01 0 .. 101 ...00 10 ... @azz_4x4_o3
|
|
UDOT_nn_2h 11000001 111 ....0 0 .. 101 ....0 11 ... @azz_2x2_o3
|
|
UDOT_nn_2h 11000001 111 ...01 0 .. 101 ...00 11 ... @azz_4x4_o3
|
|
|
|
SMLAL_nn 11000001 111 ....0 0 .. 010 ....0 000 .. @azz_2x2_o2x2
|
|
SMLAL_nn 11000001 111 ...01 0 .. 010 ...00 000 .. @azz_4x4_o2x2
|
|
|
|
SMLSL_nn 11000001 111 ....0 0 .. 010 ....0 010 .. @azz_2x2_o2x2
|
|
SMLSL_nn 11000001 111 ...01 0 .. 010 ...00 010 .. @azz_4x4_o2x2
|
|
|
|
UMLAL_nn 11000001 111 ....0 0 .. 010 ....0 100 .. @azz_2x2_o2x2
|
|
UMLAL_nn 11000001 111 ...01 0 .. 010 ...00 100 .. @azz_4x4_o2x2
|
|
|
|
UMLSL_nn 11000001 111 ....0 0 .. 010 ....0 110 .. @azz_2x2_o2x2
|
|
UMLSL_nn 11000001 111 ...01 0 .. 010 ...00 110 .. @azz_4x4_o2x2
|
|
|
|
@azz_2x2_o1x4 ........ ... ..... . .. ... ..... ... .. \
|
|
&azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off1_x4
|
|
@azz_4x4_o1x4 ........ ... ..... . .. ... ..... ... .. \
|
|
&azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off1_x4
|
|
|
|
SMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 0000 . @azz_2x2_o1x4
|
|
SMLALL_nn_d 11000001 111 ....0 0 .. 000 ....0 0000 . @azz_2x2_o1x4
|
|
SMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 0000 . @azz_4x4_o1x4
|
|
SMLALL_nn_d 11000001 111 ...01 0 .. 000 ...00 0000 . @azz_4x4_o1x4
|
|
|
|
SMLSLL_nn_s 11000001 101 ....0 0 .. 000 ....0 0100 . @azz_2x2_o1x4
|
|
SMLSLL_nn_d 11000001 111 ....0 0 .. 000 ....0 0100 . @azz_2x2_o1x4
|
|
SMLSLL_nn_s 11000001 101 ...01 0 .. 000 ...00 0100 . @azz_4x4_o1x4
|
|
SMLSLL_nn_d 11000001 111 ...01 0 .. 000 ...00 0100 . @azz_4x4_o1x4
|
|
|
|
UMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 1000 . @azz_2x2_o1x4
|
|
UMLALL_nn_d 11000001 111 ....0 0 .. 000 ....0 1000 . @azz_2x2_o1x4
|
|
UMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 1000 . @azz_4x4_o1x4
|
|
UMLALL_nn_d 11000001 111 ...01 0 .. 000 ...00 1000 . @azz_4x4_o1x4
|
|
|
|
UMLSLL_nn_s 11000001 101 ....0 0 .. 000 ....0 1100 . @azz_2x2_o1x4
|
|
UMLSLL_nn_d 11000001 111 ....0 0 .. 000 ....0 1100 . @azz_2x2_o1x4
|
|
UMLSLL_nn_s 11000001 101 ...01 0 .. 000 ...00 1100 . @azz_4x4_o1x4
|
|
UMLSLL_nn_d 11000001 111 ...01 0 .. 000 ...00 1100 . @azz_4x4_o1x4
|
|
|
|
USMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 0010 . @azz_2x2_o1x4
|
|
USMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 0010 . @azz_4x4_o1x4
|
|
|
|
BFMLA_nn 11000001 111 ....0 0 .. 100 ....0 01 ... @azz_2x2_o3
|
|
FMLA_nn_h 11000001 101 ....0 0 .. 100 ....0 01 ... @azz_2x2_o3
|
|
FMLA_nn_s 11000001 101 ....0 0 .. 110 ....0 00 ... @azz_2x2_o3
|
|
FMLA_nn_d 11000001 111 ....0 0 .. 110 ....0 00 ... @azz_2x2_o3
|
|
|
|
BFMLA_nn 11000001 111 ...01 0 .. 100 ...00 01 ... @azz_4x4_o3
|
|
FMLA_nn_h 11000001 101 ...01 0 .. 100 ...00 01 ... @azz_4x4_o3
|
|
FMLA_nn_s 11000001 101 ...01 0 .. 110 ...00 00 ... @azz_4x4_o3
|
|
FMLA_nn_d 11000001 111 ...01 0 .. 110 ...00 00 ... @azz_4x4_o3
|
|
|
|
BFMLS_nn 11000001 111 ....0 0 .. 100 ....0 11 ... @azz_2x2_o3
|
|
FMLS_nn_h 11000001 101 ....0 0 .. 100 ....0 11 ... @azz_2x2_o3
|
|
FMLS_nn_s 11000001 101 ....0 0 .. 110 ....0 01 ... @azz_2x2_o3
|
|
FMLS_nn_d 11000001 111 ....0 0 .. 110 ....0 01 ... @azz_2x2_o3
|
|
|
|
BFMLS_nn 11000001 111 ...01 0 .. 100 ...00 11 ... @azz_4x4_o3
|
|
FMLS_nn_h 11000001 101 ...01 0 .. 100 ...00 11 ... @azz_4x4_o3
|
|
FMLS_nn_s 11000001 101 ...01 0 .. 110 ...00 01 ... @azz_4x4_o3
|
|
FMLS_nn_d 11000001 111 ...01 0 .. 110 ...00 01 ... @azz_4x4_o3
|
|
|
|
&az_n n off rv zm
|
|
@az_2x2_o3 ........ ... ..... . .. ... ..... .. off:3 \
|
|
&az_n n=2 rv=%mova_rv zm=%zn_ax2
|
|
@az_4x4_o3 ........ ... ..... . .. ... ..... .. off:3 \
|
|
&az_n n=4 rv=%mova_rv zm=%zn_ax4
|
|
|
|
FADD_nn_h 11000001 101 00100 0 .. 111 ....0 00 ... @az_2x2_o3
|
|
FADD_nn_s 11000001 101 00000 0 .. 111 ....0 00 ... @az_2x2_o3
|
|
FADD_nn_d 11000001 111 00000 0 .. 111 ....0 00 ... @az_2x2_o3
|
|
FADD_nn_h 11000001 101 00101 0 .. 111 ...00 00 ... @az_4x4_o3
|
|
FADD_nn_s 11000001 101 00001 0 .. 111 ...00 00 ... @az_4x4_o3
|
|
FADD_nn_d 11000001 111 00001 0 .. 111 ...00 00 ... @az_4x4_o3
|
|
|
|
FSUB_nn_h 11000001 101 00100 0 .. 111 ....0 01 ... @az_2x2_o3
|
|
FSUB_nn_s 11000001 101 00000 0 .. 111 ....0 01 ... @az_2x2_o3
|
|
FSUB_nn_d 11000001 111 00000 0 .. 111 ....0 01 ... @az_2x2_o3
|
|
FSUB_nn_h 11000001 101 00101 0 .. 111 ...00 01 ... @az_4x4_o3
|
|
FSUB_nn_s 11000001 101 00001 0 .. 111 ...00 01 ... @az_4x4_o3
|
|
FSUB_nn_d 11000001 111 00001 0 .. 111 ...00 01 ... @az_4x4_o3
|
|
|
|
BFADD_nn 11000001 111 00100 0 .. 111 ....0 00 ... @az_2x2_o3
|
|
BFADD_nn 11000001 111 00101 0 .. 111 ...00 00 ... @az_4x4_o3
|
|
BFSUB_nn 11000001 111 00100 0 .. 111 ....0 01 ... @az_2x2_o3
|
|
BFSUB_nn 11000001 111 00101 0 .. 111 ...00 01 ... @az_4x4_o3
|
|
|
|
### SME2 Multi-vector Indexed
|
|
|
|
&azx_n n off rv zn zm idx
|
|
|
|
%idx3_15_10 15:1 10:2
|
|
%idx2_10_2 10:2 2:1
|
|
|
|
@azx_1x1_o3x2 ........ .... zm:4 . .. . .. zn:5 .. ... \
|
|
&azx_n n=1 rv=%mova_rv off=%off3_x2 idx=%idx3_15_10
|
|
@azx_2x1_o2x2 ........ .... zm:4 . .. . .. ..... .. ... \
|
|
&azx_n n=2 rv=%mova_rv off=%off2_x2 zn=%zn_ax2 idx=%idx2_10_2
|
|
@azx_4x1_o2x2 ........ .... zm:4 . .. . .. ..... .. ... \
|
|
&azx_n n=4 rv=%mova_rv off=%off2_x2 zn=%zn_ax4 idx=%idx2_10_2
|
|
|
|
FMLAL_nx 11000001 1000 .... . .. 1 .. ..... 00 ... @azx_1x1_o3x2
|
|
FMLAL_nx 11000001 1001 .... 0 .. 1 .. ....0 00 ... @azx_2x1_o2x2
|
|
FMLAL_nx 11000001 1001 .... 1 .. 1 .. ...00 00 ... @azx_4x1_o2x2
|
|
|
|
FMLSL_nx 11000001 1000 .... . .. 1 .. ..... 01 ... @azx_1x1_o3x2
|
|
FMLSL_nx 11000001 1001 .... 0 .. 1 .. ....0 01 ... @azx_2x1_o2x2
|
|
FMLSL_nx 11000001 1001 .... 1 .. 1 .. ...00 01 ... @azx_4x1_o2x2
|
|
|
|
BFMLAL_nx 11000001 1000 .... . .. 1 .. ..... 10 ... @azx_1x1_o3x2
|
|
BFMLAL_nx 11000001 1001 .... 0 .. 1 .. ....0 10 ... @azx_2x1_o2x2
|
|
BFMLAL_nx 11000001 1001 .... 1 .. 1 .. ...00 10 ... @azx_4x1_o2x2
|
|
|
|
BFMLSL_nx 11000001 1000 .... . .. 1 .. ..... 11 ... @azx_1x1_o3x2
|
|
BFMLSL_nx 11000001 1001 .... 0 .. 1 .. ....0 11 ... @azx_2x1_o2x2
|
|
BFMLSL_nx 11000001 1001 .... 1 .. 1 .. ...00 11 ... @azx_4x1_o2x2
|
|
|
|
@azx_2x1_i2_o3 ........ .... zm:4 . .. . idx:2 .... ... off:3 \
|
|
&azx_n n=2 rv=%mova_rv zn=%zn_ax2
|
|
@azx_4x1_i2_o3 ........ .... zm:4 . .. . idx:2 .... ... off:3 \
|
|
&azx_n n=4 rv=%mova_rv zn=%zn_ax4
|
|
@azx_2x1_i1_o3 ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
|
|
&azx_n n=2 rv=%mova_rv zn=%zn_ax2
|
|
@azx_4x1_i1_o3 ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
|
|
&azx_n n=4 rv=%mova_rv zn=%zn_ax4
|
|
|
|
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
|
|
|
|
FVDOT 11000001 0101 .... 0 .. 0 .. ....0 01 ... @azx_2x1_i2_o3
|
|
BFVDOT 11000001 0101 .... 0 .. 0 .. ....0 11 ... @azx_2x1_i2_o3
|
|
|
|
SDOT_nx_2h 11000001 0101 .... 0 .. 1 .. ....0 00 ... @azx_2x1_i2_o3
|
|
SDOT_nx_2h 11000001 0101 .... 1 .. 1 .. ...00 00 ... @azx_4x1_i2_o3
|
|
SDOT_nx_4b 11000001 0101 .... 0 .. 1 .. ....1 00 ... @azx_2x1_i2_o3
|
|
SDOT_nx_4b 11000001 0101 .... 1 .. 1 .. ...01 00 ... @azx_4x1_i2_o3
|
|
SDOT_nx_4h 11000001 1101 .... 0 .. 00 . ....0 01 ... @azx_2x1_i1_o3
|
|
SDOT_nx_4h 11000001 1101 .... 1 .. 00 . ...00 01 ... @azx_4x1_i1_o3
|
|
|
|
UDOT_nx_2h 11000001 0101 .... 0 .. 1 .. ....0 10 ... @azx_2x1_i2_o3
|
|
UDOT_nx_2h 11000001 0101 .... 1 .. 1 .. ...00 10 ... @azx_4x1_i2_o3
|
|
UDOT_nx_4b 11000001 0101 .... 0 .. 1 .. ....1 10 ... @azx_2x1_i2_o3
|
|
UDOT_nx_4b 11000001 0101 .... 1 .. 1 .. ...01 10 ... @azx_4x1_i2_o3
|
|
UDOT_nx_4h 11000001 1101 .... 0 .. 00 . ....0 11 ... @azx_2x1_i1_o3
|
|
UDOT_nx_4h 11000001 1101 .... 1 .. 00 . ...00 11 ... @azx_4x1_i1_o3
|
|
|
|
USDOT_nx 11000001 0101 .... 0 .. 1 .. ....1 01 ... @azx_2x1_i2_o3
|
|
USDOT_nx 11000001 0101 .... 1 .. 1 .. ...01 01 ... @azx_4x1_i2_o3
|
|
|
|
SUDOT_nx 11000001 0101 .... 0 .. 1 .. ....1 11 ... @azx_2x1_i2_o3
|
|
SUDOT_nx 11000001 0101 .... 1 .. 1 .. ...01 11 ... @azx_4x1_i2_o3
|
|
|
|
SVDOT_nx_2h 11000001 0101 .... 0 .. 0 .. ....1 00 ... @azx_2x1_i2_o3
|
|
SVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 00 ... @azx_4x1_i2_o3
|
|
SVDOT_nx_4h 11000001 1101 .... 1 .. 01 . ...00 01 ... @azx_4x1_i1_o3
|
|
|
|
UVDOT_nx_2h 11000001 0101 .... 0 .. 0 .. ....1 10 ... @azx_2x1_i2_o3
|
|
UVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 10 ... @azx_4x1_i2_o3
|
|
UVDOT_nx_4h 11000001 1101 .... 1 .. 01 . ...00 11 ... @azx_4x1_i1_o3
|
|
|
|
SUVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 11 ... @azx_4x1_i2_o3
|
|
USVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 01 ... @azx_4x1_i2_o3
|
|
|
|
SMLAL_nx 11000001 1100 .... . .. 1 .. ..... 00 ... @azx_1x1_o3x2
|
|
SMLAL_nx 11000001 1101 .... 0 .. 1 .. ....0 00 ... @azx_2x1_o2x2
|
|
SMLAL_nx 11000001 1101 .... 1 .. 1 .. ...00 00 ... @azx_4x1_o2x2
|
|
|
|
SMLSL_nx 11000001 1100 .... . .. 1 .. ..... 01 ... @azx_1x1_o3x2
|
|
SMLSL_nx 11000001 1101 .... 0 .. 1 .. ....0 01 ... @azx_2x1_o2x2
|
|
SMLSL_nx 11000001 1101 .... 1 .. 1 .. ...00 01 ... @azx_4x1_o2x2
|
|
|
|
UMLAL_nx 11000001 1100 .... . .. 1 .. ..... 10 ... @azx_1x1_o3x2
|
|
UMLAL_nx 11000001 1101 .... 0 .. 1 .. ....0 10 ... @azx_2x1_o2x2
|
|
UMLAL_nx 11000001 1101 .... 1 .. 1 .. ...00 10 ... @azx_4x1_o2x2
|
|
|
|
UMLSL_nx 11000001 1100 .... . .. 1 .. ..... 11 ... @azx_1x1_o3x2
|
|
UMLSL_nx 11000001 1101 .... 0 .. 1 .. ....0 11 ... @azx_2x1_o2x2
|
|
UMLSL_nx 11000001 1101 .... 1 .. 1 .. ...00 11 ... @azx_4x1_o2x2
|
|
|
|
%idx4_15_10 15:1 10:3
|
|
%idx4_10_1 10:2 1:2
|
|
%idx3_10_1 10:1 1:2
|
|
|
|
@azx_1x1_i4_o2 ........ .... zm:4 . .. ... zn:5 ... .. \
|
|
&azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx4_15_10
|
|
@azx_1x1_i3_o2 ........ .... zm:4 . .. ... zn:5 ... .. \
|
|
&azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx3_15_10
|
|
@azx_2x1_i4_o1 ........ .... zm:4 . .. ... ..... ... .. \
|
|
&azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx4_10_1
|
|
@azx_2x1_i3_o1 ........ .... zm:4 . .. ... ..... ... .. \
|
|
&azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx3_10_1
|
|
@azx_4x1_i4_o1 ........ .... zm:4 . .. ... ..... ... .. \
|
|
&azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx4_10_1
|
|
@azx_4x1_i3_o1 ........ .... zm:4 . .. ... ..... ... .. \
|
|
&azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx3_10_1
|
|
|
|
SMLALL_nx_s 11000001 0000 .... . .. ... ..... 000 .. @azx_1x1_i4_o2
|
|
SMLALL_nx_d 11000001 1000 .... . .. 0.. ..... 000 .. @azx_1x1_i3_o2
|
|
SMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....0 00 ... @azx_2x1_i4_o1
|
|
SMLALL_nx_d 11000001 1001 .... 0 .. 00. ....0 00 ... @azx_2x1_i3_o1
|
|
SMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...00 00 ... @azx_4x1_i4_o1
|
|
SMLALL_nx_d 11000001 1001 .... 1 .. 00. ...00 00 ... @azx_4x1_i3_o1
|
|
|
|
SMLSLL_nx_s 11000001 0000 .... . .. ... ..... 010 .. @azx_1x1_i4_o2
|
|
SMLSLL_nx_d 11000001 1000 .... . .. 0.. ..... 010 .. @azx_1x1_i3_o2
|
|
SMLSLL_nx_s 11000001 0001 .... 0 .. 0.. ....0 01 ... @azx_2x1_i4_o1
|
|
SMLSLL_nx_d 11000001 1001 .... 0 .. 00. ....0 01 ... @azx_2x1_i3_o1
|
|
SMLSLL_nx_s 11000001 0001 .... 1 .. 0.. ...00 01 ... @azx_4x1_i4_o1
|
|
SMLSLL_nx_d 11000001 1001 .... 1 .. 00. ...00 01 ... @azx_4x1_i3_o1
|
|
|
|
UMLALL_nx_s 11000001 0000 .... . .. ... ..... 100 .. @azx_1x1_i4_o2
|
|
UMLALL_nx_d 11000001 1000 .... . .. 0.. ..... 100 .. @azx_1x1_i3_o2
|
|
UMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....0 10 ... @azx_2x1_i4_o1
|
|
UMLALL_nx_d 11000001 1001 .... 0 .. 00. ....0 10 ... @azx_2x1_i3_o1
|
|
UMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...00 10 ... @azx_4x1_i4_o1
|
|
UMLALL_nx_d 11000001 1001 .... 1 .. 00. ...00 10 ... @azx_4x1_i3_o1
|
|
|
|
UMLSLL_nx_s 11000001 0000 .... . .. ... ..... 110 .. @azx_1x1_i4_o2
|
|
UMLSLL_nx_d 11000001 1000 .... . .. 0.. ..... 110 .. @azx_1x1_i3_o2
|
|
UMLSLL_nx_s 11000001 0001 .... 0 .. 0.. ....0 11 ... @azx_2x1_i4_o1
|
|
UMLSLL_nx_d 11000001 1001 .... 0 .. 00. ....0 11 ... @azx_2x1_i3_o1
|
|
UMLSLL_nx_s 11000001 0001 .... 1 .. 0.. ...00 11 ... @azx_4x1_i4_o1
|
|
UMLSLL_nx_d 11000001 1001 .... 1 .. 00. ...00 11 ... @azx_4x1_i3_o1
|
|
|
|
USMLALL_nx_s 11000001 0000 .... . .. ... ..... 001 .. @azx_1x1_i4_o2
|
|
USMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....1 00 ... @azx_2x1_i4_o1
|
|
USMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...01 00 ... @azx_4x1_i4_o1
|
|
|
|
SUMLALL_nx_s 11000001 0000 .... . .. ... ..... 101 .. @azx_1x1_i4_o2
|
|
SUMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....1 10 ... @azx_2x1_i4_o1
|
|
SUMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...01 10 ... @azx_4x1_i4_o1
|
|
|
|
%idx3_10_3 10:2 3:1
|
|
@azx_2x1_i3_o3 ........ .... zm:4 . .. ... ..... .. off:3 \
|
|
&azx_n n=2 rv=%mova_rv zn=%zn_ax2 idx=%idx3_10_3
|
|
@azx_4x1_i3_o3 ........ .... zm:4 . .. ... ..... .. off:3 \
|
|
&azx_n n=4 rv=%mova_rv zn=%zn_ax4 idx=%idx3_10_3
|
|
|
|
BFMLA_nx 11000001 0001 .... 0 .. 1.. ....1 0 .... @azx_2x1_i3_o3
|
|
FMLA_nx_h 11000001 0001 .... 0 .. 1.. ....0 0 .... @azx_2x1_i3_o3
|
|
FMLA_nx_s 11000001 0101 .... 0 .. 0.. ....0 00 ... @azx_2x1_i2_o3
|
|
FMLA_nx_d 11000001 1101 .... 0 .. 00. ....0 00 ... @azx_2x1_i1_o3
|
|
|
|
BFMLA_nx 11000001 0001 .... 1 .. 1.. ...01 0 .... @azx_4x1_i3_o3
|
|
FMLA_nx_h 11000001 0001 .... 1 .. 1.. ...00 0 .... @azx_4x1_i3_o3
|
|
FMLA_nx_s 11000001 0101 .... 1 .. 0.. ...00 00 ... @azx_4x1_i2_o3
|
|
FMLA_nx_d 11000001 1101 .... 1 .. 00. ...00 00 ... @azx_4x1_i1_o3
|
|
|
|
BFMLS_nx 11000001 0001 .... 0 .. 1.. ....1 1 .... @azx_2x1_i3_o3
|
|
FMLS_nx_h 11000001 0001 .... 0 .. 1.. ....0 1 .... @azx_2x1_i3_o3
|
|
FMLS_nx_s 11000001 0101 .... 0 .. 0.. ....0 10 ... @azx_2x1_i2_o3
|
|
FMLS_nx_d 11000001 1101 .... 0 .. 00. ....0 10 ... @azx_2x1_i1_o3
|
|
|
|
BFMLS_nx 11000001 0001 .... 1 .. 1.. ...01 1 .... @azx_4x1_i3_o3
|
|
FMLS_nx_h 11000001 0001 .... 1 .. 1.. ...00 1 .... @azx_4x1_i3_o3
|
|
FMLS_nx_s 11000001 0101 .... 1 .. 0.. ...00 10 ... @azx_4x1_i2_o3
|
|
FMLS_nx_d 11000001 1101 .... 1 .. 00. ...00 10 ... @azx_4x1_i1_o3
|
|
|
|
### SME2 Add / Sub array accumulators
|
|
|
|
ADD_aaz_s 11000001 101 000000 .. 111 ....0 10 ... @az_2x2_o3
|
|
ADD_aaz_s 11000001 101 000010 .. 111 ...00 10 ... @az_4x4_o3
|
|
ADD_aaz_d 11000001 111 000000 .. 111 ....0 10 ... @az_2x2_o3
|
|
ADD_aaz_d 11000001 111 000010 .. 111 ...00 10 ... @az_4x4_o3
|
|
|
|
SUB_aaz_s 11000001 101 000000 .. 111 ....0 11 ... @az_2x2_o3
|
|
SUB_aaz_s 11000001 101 000010 .. 111 ...00 11 ... @az_4x4_o3
|
|
SUB_aaz_d 11000001 111 000000 .. 111 ....0 11 ... @az_2x2_o3
|
|
SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ... @az_4x4_o3
|
|
|
|
### SME2 Multi-vector SVE Constructive Unary
|
|
|
|
&zz_e zd zn esz
|
|
&zz_n zd zn n
|
|
@zz_1x2 ........ ... ..... ...... ..... zd:5 \
|
|
&zz_n n=1 zn=%zn_ax2
|
|
@zz_1x4 ........ ... ..... ...... ..... zd:5 \
|
|
&zz_n n=1 zn=%zn_ax4
|
|
@zz_2x1 ........ ... ..... ...... zn:5 ..... \
|
|
&zz_n n=1 zd=%zd_ax2
|
|
@zz_2x2 ........ ... ..... ...... .... . ..... \
|
|
&zz_n n=2 zd=%zd_ax2 zn=%zn_ax2
|
|
@zz_4x4 ........ ... ..... ...... .... . ..... \
|
|
&zz_n n=4 zd=%zd_ax4 zn=%zn_ax4
|
|
@zz_4x2_n1 ........ ... ..... ...... .... . ..... \
|
|
&zz_n n=1 zd=%zd_ax4 zn=%zn_ax2
|
|
|
|
BFCVT 11000001 011 00000 111000 ....0 ..... @zz_1x2
|
|
BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2
|
|
|
|
FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2
|
|
FCVTN 11000001 001 00000 111000 ....1 ..... @zz_1x2
|
|
|
|
FCVT_w 11000001 101 00000 111000 ..... ....0 @zz_2x1
|
|
FCVTL 11000001 101 00000 111000 ..... ....1 @zz_2x1
|
|
|
|
FCVTZS 11000001 001 00001 111000 ....0 ....0 @zz_2x2
|
|
FCVTZS 11000001 001 10001 111000 ...00 ...00 @zz_4x4
|
|
FCVTZU 11000001 001 00001 111000 ....1 ....0 @zz_2x2
|
|
FCVTZU 11000001 001 10001 111000 ...01 ...00 @zz_4x4
|
|
|
|
SCVTF 11000001 001 00010 111000 ....0 ....0 @zz_2x2
|
|
SCVTF 11000001 001 10010 111000 ...00 ...00 @zz_4x4
|
|
UCVTF 11000001 001 00010 111000 ....1 ....0 @zz_2x2
|
|
UCVTF 11000001 001 10010 111000 ...01 ...00 @zz_4x4
|
|
|
|
FRINTN 11000001 101 01000 111000 ....0 ....0 @zz_2x2
|
|
FRINTN 11000001 101 11000 111000 ...00 ...00 @zz_4x4
|
|
FRINTP 11000001 101 01001 111000 ....0 ....0 @zz_2x2
|
|
FRINTP 11000001 101 11001 111000 ...00 ...00 @zz_4x4
|
|
FRINTM 11000001 101 01010 111000 ....0 ....0 @zz_2x2
|
|
FRINTM 11000001 101 11010 111000 ...00 ...00 @zz_4x4
|
|
FRINTA 11000001 101 01100 111000 ....0 ....0 @zz_2x2
|
|
FRINTA 11000001 101 11100 111000 ...00 ...00 @zz_4x4
|
|
|
|
SQCVT_sh 11000001 001 00011 111000 ....0 ..... @zz_1x2
|
|
UQCVT_sh 11000001 001 00011 111000 ....1 ..... @zz_1x2
|
|
SQCVTU_sh 11000001 011 00011 111000 ....0 ..... @zz_1x2
|
|
|
|
SQCVT_sb 11000001 001 10011 111000 ...00 ..... @zz_1x4
|
|
UQCVT_sb 11000001 001 10011 111000 ...01 ..... @zz_1x4
|
|
SQCVTU_sb 11000001 011 10011 111000 ...00 ..... @zz_1x4
|
|
|
|
SQCVT_dh 11000001 101 10011 111000 ...00 ..... @zz_1x4
|
|
UQCVT_dh 11000001 101 10011 111000 ...01 ..... @zz_1x4
|
|
SQCVTU_dh 11000001 111 10011 111000 ...00 ..... @zz_1x4
|
|
|
|
SQCVTN_sb 11000001 001 10011 111000 ...10 ..... @zz_1x4
|
|
UQCVTN_sb 11000001 001 10011 111000 ...11 ..... @zz_1x4
|
|
SQCVTUN_sb 11000001 011 10011 111000 ...10 ..... @zz_1x4
|
|
|
|
SQCVTN_dh 11000001 101 10011 111000 ...10 ..... @zz_1x4
|
|
UQCVTN_dh 11000001 101 10011 111000 ...11 ..... @zz_1x4
|
|
SQCVTUN_dh 11000001 111 10011 111000 ...10 ..... @zz_1x4
|
|
|
|
SUNPK_2bh 11000001 011 00101 111000 ..... ....0 @zz_2x1
|
|
SUNPK_2hs 11000001 101 00101 111000 ..... ....0 @zz_2x1
|
|
SUNPK_2sd 11000001 111 00101 111000 ..... ....0 @zz_2x1
|
|
|
|
UUNPK_2bh 11000001 011 00101 111000 ..... ....1 @zz_2x1
|
|
UUNPK_2hs 11000001 101 00101 111000 ..... ....1 @zz_2x1
|
|
UUNPK_2sd 11000001 111 00101 111000 ..... ....1 @zz_2x1
|
|
|
|
SUNPK_4bh 11000001 011 10101 111000 ....0 ...00 @zz_4x2_n1
|
|
SUNPK_4hs 11000001 101 10101 111000 ....0 ...00 @zz_4x2_n1
|
|
SUNPK_4sd 11000001 111 10101 111000 ....0 ...00 @zz_4x2_n1
|
|
|
|
UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 @zz_4x2_n1
|
|
UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1
|
|
UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1
|
|
|
|
ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \
|
|
&zz_e zd=%zd_ax4 zn=%zn_ax4
|
|
ZIP_4 11000001 001 10111 111000 ...00 ... 00 \
|
|
&zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
|
|
|
|
UZP_4 11000001 esz:2 1 10110 111000 ...00 ... 10 \
|
|
&zz_e zd=%zd_ax4 zn=%zn_ax4
|
|
UZP_4 11000001 001 10111 111000 ...00 ... 10 \
|
|
&zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
|
|
|
|
### SME2 Multi-vector SVE Constructive Binary
|
|
|
|
&rshr zd zn shift
|
|
|
|
%rshr_sh_shift 16:4 !function=rsub_16
|
|
%rshr_sb_shift 16:5 !function=rsub_32
|
|
%rshr_dh_shift 22:1 16:5 !function=rsub_64
|
|
|
|
@rshr_sh ........ .... .... ...... ..... zd:5 \
|
|
&rshr zn=%zn_ax2 shift=%rshr_sh_shift
|
|
@rshr_sb ........ ... ..... ...... ..... zd:5 \
|
|
&rshr zn=%zn_ax4 shift=%rshr_sb_shift
|
|
@rshr_dh ........ ... ..... ...... ..... zd:5 \
|
|
&rshr zn=%zn_ax4 shift=%rshr_dh_shift
|
|
|
|
SQRSHR_sh 11000001 1110 .... 110101 ....0 ..... @rshr_sh
|
|
UQRSHR_sh 11000001 1110 .... 110101 ....1 ..... @rshr_sh
|
|
SQRSHRU_sh 11000001 1111 .... 110101 ....0 ..... @rshr_sh
|
|
|
|
SQRSHR_sb 11000001 011 ..... 110110 ...00 ..... @rshr_sb
|
|
SQRSHR_dh 11000001 1.1 ..... 110110 ...00 ..... @rshr_dh
|
|
UQRSHR_sb 11000001 011 ..... 110110 ...01 ..... @rshr_sb
|
|
UQRSHR_dh 11000001 1.1 ..... 110110 ...01 ..... @rshr_dh
|
|
SQRSHRU_sb 11000001 011 ..... 110110 ...10 ..... @rshr_sb
|
|
SQRSHRU_dh 11000001 1.1 ..... 110110 ...10 ..... @rshr_dh
|
|
|
|
SQRSHRN_sh 01000101 1011 .... 001010 ....0 ..... @rshr_sh
|
|
UQRSHRN_sh 01000101 1011 .... 001110 ....0 ..... @rshr_sh
|
|
SQRSHRUN_sh 01000101 1011 .... 000010 ....0 ..... @rshr_sh
|
|
|
|
SQRSHRN_sb 11000001 011 ..... 110111 ...00 ..... @rshr_sb
|
|
SQRSHRN_dh 11000001 1.1 ..... 110111 ...00 ..... @rshr_dh
|
|
UQRSHRN_sb 11000001 011 ..... 110111 ...01 ..... @rshr_sb
|
|
UQRSHRN_dh 11000001 1.1 ..... 110111 ...01 ..... @rshr_dh
|
|
SQRSHRUN_sb 11000001 011 ..... 110111 ...10 ..... @rshr_sb
|
|
SQRSHRUN_dh 11000001 1.1 ..... 110111 ...10 ..... @rshr_dh
|
|
|
|
&zzz_e zd zn zm esz
|
|
|
|
ZIP_2 11000001 esz:2 1 zm:5 110100 zn:5 .... 0 \
|
|
&zzz_e zd=%zd_ax2
|
|
ZIP_2 11000001 00 1 zm:5 110101 zn:5 .... 0 \
|
|
&zzz_e zd=%zd_ax2 esz=4
|
|
|
|
UZP_2 11000001 esz:2 1 zm:5 110100 zn:5 .... 1 \
|
|
&zzz_e zd=%zd_ax2
|
|
UZP_2 11000001 00 1 zm:5 110101 zn:5 .... 1 \
|
|
&zzz_e zd=%zd_ax2 esz=4
|
|
|
|
&zzz_en zd zn zm esz n
|
|
|
|
FCLAMP 11000001 esz:2 1 zm:5 110000 zn:5 .... 0 \
|
|
&zzz_en zd=%zd_ax2 n=2
|
|
FCLAMP 11000001 esz:2 1 zm:5 110010 zn:5 ...0 0 \
|
|
&zzz_en zd=%zd_ax4 n=4
|
|
|
|
SCLAMP 11000001 esz:2 1 zm:5 110001 zn:5 .... 0 \
|
|
&zzz_en zd=%zd_ax2 n=2
|
|
SCLAMP 11000001 esz:2 1 zm:5 110011 zn:5 ...0 0 \
|
|
&zzz_en zd=%zd_ax4 n=4
|
|
|
|
UCLAMP 11000001 esz:2 1 zm:5 110001 zn:5 .... 1 \
|
|
&zzz_en zd=%zd_ax2 n=2
|
|
UCLAMP 11000001 esz:2 1 zm:5 110011 zn:5 ...0 1 \
|
|
&zzz_en zd=%zd_ax4 n=4
|
|
|
|
### SME2 Multi-vector SVE Select
|
|
|
|
%sel_pg 10:3 !function=plus_8
|
|
|
|
SEL 11000001 esz:2 1 ....0 100 ... ....0 ....0 \
|
|
n=2 zd=%zd_ax2 zn=%zn_ax2 zm=%zm_ax2 pg=%sel_pg
|
|
SEL 11000001 esz:2 1 ...01 100 ... ...00 ...00 \
|
|
n=4 zd=%zd_ax4 zn=%zn_ax4 zm=%zm_ax4 pg=%sel_pg
|
|
|
|
### SME Multiple Zero
|
|
|
|
&zero_za rv off ngrp nvec
|
|
|
|
ZERO_za 11000000 000011 000 .. 0000000000 off:3 \
|
|
&zero_za ngrp=2 nvec=1 rv=%mova_rv
|
|
ZERO_za 11000000 000011 100 .. 0000000000 off:3 \
|
|
&zero_za ngrp=4 nvec=1 rv=%mova_rv
|
|
|
|
ZERO_za 11000000 000011 001 .. 0000000000 ... \
|
|
&zero_za ngrp=1 nvec=2 rv=%mova_rv off=%off3_x2
|
|
ZERO_za 11000000 000011 010 .. 0000000000 0.. \
|
|
&zero_za ngrp=2 nvec=2 rv=%mova_rv off=%off2_x2
|
|
ZERO_za 11000000 000011 011 .. 0000000000 0.. \
|
|
&zero_za ngrp=4 nvec=2 rv=%mova_rv off=%off2_x2
|
|
|
|
ZERO_za 11000000 000011 101 .. 0000000000 0.. \
|
|
&zero_za ngrp=1 nvec=4 rv=%mova_rv off=%off2_x4
|
|
ZERO_za 11000000 000011 110 .. 0000000000 00. \
|
|
&zero_za ngrp=2 nvec=4 rv=%mova_rv off=%off1_x4
|
|
ZERO_za 11000000 000011 111 .. 0000000000 00. \
|
|
&zero_za ngrp=4 nvec=4 rv=%mova_rv off=%off1_x4
|
|
|
|
### SME Lookup Table Read
|
|
|
|
&lut zd zn idx
|
|
|
|
# LUTI2, consecutive
|
|
LUTI2_c_1b 1100 0000 1100 11 idx:4 00 00 zn:5 zd:5 &lut
|
|
LUTI2_c_1h 1100 0000 1100 11 idx:4 01 00 zn:5 zd:5 &lut
|
|
LUTI2_c_1s 1100 0000 1100 11 idx:4 10 00 zn:5 zd:5 &lut
|
|
|
|
LUTI2_c_2b 1100 0000 1000 11 idx:3 1 00 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
LUTI2_c_2h 1100 0000 1000 11 idx:3 1 01 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
LUTI2_c_2s 1100 0000 1000 11 idx:3 1 10 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
|
|
LUTI2_c_4b 1100 0000 1000 11 idx:2 10 00 00 zn:5 ... 00 &lut zd=%zd_ax4
|
|
LUTI2_c_4h 1100 0000 1000 11 idx:2 10 01 00 zn:5 ... 00 &lut zd=%zd_ax4
|
|
LUTI2_c_4s 1100 0000 1000 11 idx:2 10 10 00 zn:5 ... 00 &lut zd=%zd_ax4
|
|
|
|
# LUTI2, strided (must check zd alignment)
|
|
LUTI2_s_2b 1100 0000 1001 11 idx:3 1 00 00 zn:5 zd:5 &lut
|
|
LUTI2_s_2h 1100 0000 1001 11 idx:3 1 01 00 zn:5 zd:5 &lut
|
|
|
|
LUTI2_s_4b 1100 0000 1001 11 idx:2 10 00 00 zn:5 zd:5 &lut
|
|
LUTI2_s_4h 1100 0000 1001 11 idx:2 10 01 00 zn:5 zd:5 &lut
|
|
|
|
# LUTI4, consecutive
|
|
LUTI4_c_1b 1100 0000 1100 101 idx:3 00 00 zn:5 zd:5 &lut
|
|
LUTI4_c_1h 1100 0000 1100 101 idx:3 01 00 zn:5 zd:5 &lut
|
|
LUTI4_c_1s 1100 0000 1100 101 idx:3 10 00 zn:5 zd:5 &lut
|
|
|
|
LUTI4_c_2b 1100 0000 1000 101 idx:2 1 00 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
LUTI4_c_2h 1100 0000 1000 101 idx:2 1 01 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
LUTI4_c_2s 1100 0000 1000 101 idx:2 1 10 00 zn:5 .... 0 &lut zd=%zd_ax2
|
|
|
|
LUTI4_c_4h 1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00 &lut zd=%zd_ax4
|
|
LUTI4_c_4s 1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00 &lut zd=%zd_ax4
|
|
|
|
# LUTI4, strided (must check zd alignment)
|
|
LUTI4_s_2b 1100 0000 1001 101 idx:2 1 00 00 zn:5 zd:5 &lut
|
|
LUTI4_s_2h 1100 0000 1001 101 idx:2 1 01 00 zn:5 zd:5 &lut
|
|
|
|
LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5 &lut
|