xref: /openbmc/qemu/target/arm/tcg/sme.decode (revision 0d70c5aa1bbfb0f5099d53d6e084337a8246cc0c)
1# AArch64 SME instruction descriptions
2#
3#  Copyright (c) 2022 Linaro, Ltd
4#
5# This library is free software; you can redistribute it and/or
6# modify it under the terms of the GNU Lesser General Public
7# License as published by the Free Software Foundation; either
8# version 2.1 of the License, or (at your option) any later version.
9#
10# This library is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public
16# License along with this library; if not, see <http://www.gnu.org/licenses/>.
17
18#
19# This file is processed by scripts/decodetree.py
20#
21
22### SME Misc
23
24ZERO            11000000 00 001 00000000000 imm:8
25ZERO_zt0        11000000 01 001 00000000000 00000001
26
27### SME Move into/from Array
28
29%mova_rs        13:2 !function=plus_12
30%mova_rv        13:2 !function=plus_8
31&mova_a         rv zr off
32&mova_p         esz rs pg zr za off v:bool
33&mova_t         esz rs zr za off v:bool
34
35MOVA_tz         11000000 00 00000 0 v:1 .. pg:3 zr:5 0 off:4  \
36                &mova_p rs=%mova_rs esz=0 za=0
37MOVA_tz         11000000 01 00000 0 v:1 .. pg:3 zr:5 0 za:1 off:3  \
38                &mova_p rs=%mova_rs esz=1
39MOVA_tz         11000000 10 00000 0 v:1 .. pg:3 zr:5 0 za:2 off:2  \
40                &mova_p rs=%mova_rs esz=2
41MOVA_tz         11000000 11 00000 0 v:1 .. pg:3 zr:5 0 za:3 off:1  \
42                &mova_p rs=%mova_rs esz=3
43MOVA_tz         11000000 11 00000 1 v:1 .. pg:3 zr:5 0 za:4  \
44                &mova_p rs=%mova_rs esz=4 off=0
45
46MOVA_zt         11000000 00 00001 0 v:1 .. pg:3 0 off:4      zr:5  \
47                &mova_p rs=%mova_rs esz=0 za=0
48MOVA_zt         11000000 01 00001 0 v:1 .. pg:3 0 za:1 off:3 zr:5  \
49                &mova_p rs=%mova_rs esz=1
50MOVA_zt         11000000 10 00001 0 v:1 .. pg:3 0 za:2 off:2 zr:5  \
51                &mova_p rs=%mova_rs esz=2
52MOVA_zt         11000000 11 00001 0 v:1 .. pg:3 0 za:3 off:1 zr:5  \
53                &mova_p rs=%mova_rs esz=3
54MOVA_zt         11000000 11 00001 1 v:1 .. pg:3 0 za:4       zr:5  \
55                &mova_p rs=%mova_rs esz=4 off=0
56
57MOVA_tz2        11000000 00 00010 0 v:1 .. 000  zr:4 0 00      off:3  \
58                &mova_t rs=%mova_rs esz=0 za=0
59MOVA_tz2        11000000 01 00010 0 v:1 .. 000  zr:4 0 00 za:1 off:2  \
60                &mova_t rs=%mova_rs esz=1
61MOVA_tz2        11000000 10 00010 0 v:1 .. 000  zr:4 0 00 za:2 off:1  \
62                &mova_t rs=%mova_rs esz=2
63MOVA_tz2        11000000 11 00010 0 v:1 .. 000  zr:4 0 00 za:3        \
64                &mova_t rs=%mova_rs esz=3 off=0
65
66MOVA_zt2        11000000 00 00011 0 v:1 .. 000 00      off:3 zr:4 0 \
67                &mova_t rs=%mova_rs esz=0 za=0
68MOVA_zt2        11000000 01 00011 0 v:1 .. 000 00 za:1 off:2 zr:4 0 \
69                &mova_t rs=%mova_rs esz=1
70MOVA_zt2        11000000 10 00011 0 v:1 .. 000 00 za:2 off:1 zr:4 0 \
71                &mova_t rs=%mova_rs esz=2
72MOVA_zt2        11000000 11 00011 0 v:1 .. 000 00 za:3       zr:4 0 \
73                &mova_t rs=%mova_rs esz=3 off=0
74
75MOVA_tz4        11000000 00 00010 0 v:1 .. 001 zr:3 00 000      off:2  \
76                &mova_t rs=%mova_rs esz=0 za=0
77MOVA_tz4        11000000 01 00010 0 v:1 .. 001 zr:3 00 000 za:1 off:1  \
78                &mova_t rs=%mova_rs esz=1
79MOVA_tz4        11000000 10 00010 0 v:1 .. 001 zr:3 00 000 za:2        \
80                &mova_t rs=%mova_rs esz=2 off=0
81MOVA_tz4        11000000 11 00010 0 v:1 .. 001 zr:3 00 00 za:3         \
82                &mova_t rs=%mova_rs esz=3 off=0
83
84MOVA_zt4        11000000 00 00011 0 v:1 .. 001 000      off:2 zr:3 00 \
85                &mova_t rs=%mova_rs esz=0 za=0
86MOVA_zt4        11000000 01 00011 0 v:1 .. 001 000 za:1 off:1 zr:3 00 \
87                &mova_t rs=%mova_rs esz=1
88MOVA_zt4        11000000 10 00011 0 v:1 .. 001 000 za:2       zr:3 00 \
89                &mova_t rs=%mova_rs esz=2 off=0
90MOVA_zt4        11000000 11 00011 0 v:1 .. 001 00 za:3        zr:3 00 \
91                &mova_t rs=%mova_rs esz=3 off=0
92
93MOVA_az2        11000000 00 00010 00 .. 010 zr:4  000 off:3  \
94                &mova_a rv=%mova_rv
95MOVA_az4        11000000 00 00010 00 .. 011 zr:3 0000 off:3  \
96                &mova_a rv=%mova_rv
97
98MOVA_za2        11000000 00 00011 00 .. 010 00 off:3 zr:4 0  \
99                &mova_a rv=%mova_rv
100MOVA_za4        11000000 00 00011 00 .. 011 00 off:3 zr:3 00 \
101                &mova_a rv=%mova_rv
102
103### SME Move and Zero
104
105MOVAZ_za2       11000000 00000110 0 .. 01010 off:3 zr:4 0    \
106                &mova_a rv=%mova_rv
107MOVAZ_za4       11000000 00000110 0 .. 01110 off:3 zr:3 00   \
108                &mova_a rv=%mova_rv
109
110MOVAZ_zt        11000000 00 00001 0 v:1 .. 0001 off:4 zr:5    \
111                &mova_t rs=%mova_rs esz=0 za=0
112MOVAZ_zt        11000000 01 00001 0 v:1 .. 0001 za:1 off:3 zr:5    \
113                &mova_t rs=%mova_rs esz=1
114MOVAZ_zt        11000000 10 00001 0 v:1 .. 0001 za:2 off:2 zr:5    \
115                &mova_t rs=%mova_rs esz=2
116MOVAZ_zt        11000000 11 00001 0 v:1 .. 0001 za:3 off:1 zr:5    \
117                &mova_t rs=%mova_rs esz=3
118MOVAZ_zt        11000000 11 00001 1 v:1 .. 0001 za:4 zr:5    \
119                &mova_t rs=%mova_rs esz=4 off=0
120
121MOVAZ_zt2       11000000 00 00011 0 v:1 .. 00010 off:3 zr:4 0 \
122                &mova_t rs=%mova_rs esz=0 za=0
123MOVAZ_zt2       11000000 01 00011 0 v:1 .. 00010 za:1 off:2 zr:4 0 \
124                &mova_t rs=%mova_rs esz=1
125MOVAZ_zt2       11000000 10 00011 0 v:1 .. 00010 za:2 off:1 zr:4 0 \
126                &mova_t rs=%mova_rs esz=2
127MOVAZ_zt2       11000000 11 00011 0 v:1 .. 00010 za:3 zr:4 0 \
128                &mova_t rs=%mova_rs esz=3 off=0
129
130MOVAZ_zt4       11000000 00 00011 0 v:1 .. 001100 off:2 zr:3 00 \
131                &mova_t rs=%mova_rs esz=0 za=0
132MOVAZ_zt4       11000000 01 00011 0 v:1 .. 001100 za:1 off:1 zr:3 00 \
133                &mova_t rs=%mova_rs esz=1
134MOVAZ_zt4       11000000 10 00011 0 v:1 .. 001100 za:2 zr:3 00 \
135                &mova_t rs=%mova_rs esz=2 off=0
136MOVAZ_zt4       11000000 11 00011 0 v:1 .. 00110 za:3 zr:3 00 \
137                &mova_t rs=%mova_rs esz=3 off=0
138
139### SME Move into/from ZT0
140
141MOVT_rzt        1100 0000 0100 1100 0 off:3 00 11111 rt:5
142MOVT_ztr        1100 0000 0100 1110 0 off:3 00 11111 rt:5
143
144### SME Memory
145
146&ldst           esz rs pg rn rm za off v:bool st:bool
147
148LDST1           1110000 0 00 st:1 rm:5 v:1 .. pg:3 rn:5 0 off:4  \
149                &ldst rs=%mova_rs esz=0 za=0
150LDST1           1110000 0 01 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:1 off:3  \
151                &ldst rs=%mova_rs esz=1
152LDST1           1110000 0 10 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:2 off:2  \
153                &ldst rs=%mova_rs esz=2
154LDST1           1110000 0 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:3 off:1  \
155                &ldst rs=%mova_rs esz=3
156LDST1           1110000 1 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:4  \
157                &ldst rs=%mova_rs esz=4 off=0
158
159&ldstr          rv rn imm
160@ldstr          ....... ... . ...... .. ... rn:5 . imm:4 \
161                &ldstr rv=%mova_rs
162
163LDR             1110000 100 0 000000 .. 000 ..... 0 ....        @ldstr
164STR             1110000 100 1 000000 .. 000 ..... 0 ....        @ldstr
165
166&ldstzt0        rn
167@ldstzt0        ....... ... . ...... .. ... rn:5  .....         &ldstzt0
168
169LDR_zt0         1110000 100 0 111111 00 000 ..... 00000         @ldstzt0
170STR_zt0         1110000 100 1 111111 00 000 ..... 00000         @ldstzt0
171
172### SME Add Vector to Array
173
174&adda           zad zn pm pn
175@adda_32        ........ .. ..... . pm:3 pn:3 zn:5 ... zad:2    &adda
176@adda_64        ........ .. ..... . pm:3 pn:3 zn:5 ..  zad:3    &adda
177
178ADDHA_s         11000000 10 01000 0 ... ... ..... 000 ..        @adda_32
179ADDVA_s         11000000 10 01000 1 ... ... ..... 000 ..        @adda_32
180ADDHA_d         11000000 11 01000 0 ... ... ..... 00 ...        @adda_64
181ADDVA_d         11000000 11 01000 1 ... ... ..... 00 ...        @adda_64
182
183### SME Outer Product
184
185&op             zad zn zm pm pn sub:bool
186@op_16          ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 ... zad:1 &op
187@op_32          ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 .. zad:2 &op
188@op_64          ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 .  zad:3 &op
189
190FMOPA_h         10000001 100 ..... ... ... ..... . 100 .        @op_16
191FMOPA_s         10000000 100 ..... ... ... ..... . 00 ..        @op_32
192FMOPA_d         10000000 110 ..... ... ... ..... . 0 ...        @op_64
193
194BFMOPA          10000001 101 ..... ... ... ..... . 100 .        @op_16
195
196BFMOPA_w        10000001 100 ..... ... ... ..... . 00 ..        @op_32
197FMOPA_w_h       10000001 101 ..... ... ... ..... . 00 ..        @op_32
198
199SMOPA_s         1010000 0 10 0 ..... ... ... ..... . 00 ..      @op_32
200SUMOPA_s        1010000 0 10 1 ..... ... ... ..... . 00 ..      @op_32
201USMOPA_s        1010000 1 10 0 ..... ... ... ..... . 00 ..      @op_32
202UMOPA_s         1010000 1 10 1 ..... ... ... ..... . 00 ..      @op_32
203
204SMOPA_d         1010000 0 11 0 ..... ... ... ..... . 0 ...      @op_64
205SUMOPA_d        1010000 0 11 1 ..... ... ... ..... . 0 ...      @op_64
206USMOPA_d        1010000 1 11 0 ..... ... ... ..... . 0 ...      @op_64
207UMOPA_d         1010000 1 11 1 ..... ... ... ..... . 0 ...      @op_64
208
209BMOPA           1000000 0 10 0 ..... ... ... ..... . 10 ..      @op_32
210SMOPA2_s        1010000 0 10 0 ..... ... ... ..... . 10 ..      @op_32
211UMOPA2_s        1010000 1 10 0 ..... ... ... ..... . 10 ..      @op_32
212
213### SME2 Multi-vector Multiple and Single SVE Destructive
214
215%zd_ax2         1:4 !function=times_2
216%zd_ax4         2:3 !function=times_4
217
218&z2z_en         zdn zm esz n
219@z2z_2x1        ....... . esz:2 .. zm:4 ....0. ..... .... . \
220                &z2z_en n=2 zdn=%zd_ax2
221@z2z_4x1        ....... . esz:2 .. zm:4 ....1. ..... ...0 . \
222                &z2z_en n=4 zdn=%zd_ax4
223
224SMAX_n1        1100000 1 .. 10 .... 1010.0 00000 .... 0    @z2z_2x1
225SMAX_n1        1100000 1 .. 10 .... 1010.0 00000 .... 0    @z2z_4x1
226UMAX_n1        1100000 1 .. 10 .... 1010.0 00000 .... 1    @z2z_2x1
227UMAX_n1        1100000 1 .. 10 .... 1010.0 00000 .... 1    @z2z_4x1
228SMIN_n1        1100000 1 .. 10 .... 1010.0 00001 .... 0    @z2z_2x1
229SMIN_n1        1100000 1 .. 10 .... 1010.0 00001 .... 0    @z2z_4x1
230UMIN_n1        1100000 1 .. 10 .... 1010.0 00001 .... 1    @z2z_2x1
231UMIN_n1        1100000 1 .. 10 .... 1010.0 00001 .... 1    @z2z_4x1
232
233FMAX_n1        1100000 1 .. 10 .... 1010.0 01000 .... 0    @z2z_2x1
234FMAX_n1        1100000 1 .. 10 .... 1010.0 01000 .... 0    @z2z_4x1
235FMIN_n1        1100000 1 .. 10 .... 1010.0 01000 .... 1    @z2z_2x1
236FMIN_n1        1100000 1 .. 10 .... 1010.0 01000 .... 1    @z2z_4x1
237FMAXNM_n1      1100000 1 .. 10 .... 1010.0 01001 .... 0    @z2z_2x1
238FMAXNM_n1      1100000 1 .. 10 .... 1010.0 01001 .... 0    @z2z_4x1
239FMINNM_n1      1100000 1 .. 10 .... 1010.0 01001 .... 1    @z2z_2x1
240FMINNM_n1      1100000 1 .. 10 .... 1010.0 01001 .... 1    @z2z_4x1
241
242SRSHL_n1       1100000 1 .. 10 .... 1010.0 10001 .... 0    @z2z_2x1
243SRSHL_n1       1100000 1 .. 10 .... 1010.0 10001 .... 0    @z2z_4x1
244URSHL_n1       1100000 1 .. 10 .... 1010.0 10001 .... 1    @z2z_2x1
245URSHL_n1       1100000 1 .. 10 .... 1010.0 10001 .... 1    @z2z_4x1
246
247ADD_n1         1100000 1 .. 10 .... 1010.0 11000 .... 0    @z2z_2x1
248ADD_n1         1100000 1 .. 10 .... 1010.0 11000 .... 0    @z2z_4x1
249
250SQDMULH_n1     1100000 1 .. 10 .... 1010.1 00000 .... 0    @z2z_2x1
251SQDMULH_n1     1100000 1 .. 10 .... 1010.1 00000 .... 0    @z2z_4x1
252
253### SME2 Multi-vector Multiple Vectors SVE Destructive
254
255%zm_ax2         17:4 !function=times_2
256%zm_ax4         18:3 !function=times_4
257
258@z2z_2x2        ....... . esz:2 . ....0 ....0. ..... .... . \
259                &z2z_en n=2 zdn=%zd_ax2 zm=%zm_ax2
260@z2z_4x4        ....... . esz:2 . ...00 ....1. ..... ...0 . \
261                &z2z_en n=4 zdn=%zd_ax4 zm=%zm_ax4
262
263SMAX_nn        1100000 1 .. 1 ..... 1011.0 00000 .... 0    @z2z_2x2
264SMAX_nn        1100000 1 .. 1 ..... 1011.0 00000 .... 0    @z2z_4x4
265UMAX_nn        1100000 1 .. 1 ..... 1011.0 00000 .... 1    @z2z_2x2
266UMAX_nn        1100000 1 .. 1 ..... 1011.0 00000 .... 1    @z2z_4x4
267SMIN_nn        1100000 1 .. 1 ..... 1011.0 00001 .... 0    @z2z_2x2
268SMIN_nn        1100000 1 .. 1 ..... 1011.0 00001 .... 0    @z2z_4x4
269UMIN_nn        1100000 1 .. 1 ..... 1011.0 00001 .... 1    @z2z_2x2
270UMIN_nn        1100000 1 .. 1 ..... 1011.0 00001 .... 1    @z2z_4x4
271
272FMAX_nn        1100000 1 .. 1 ..... 1011.0 01000 .... 0    @z2z_2x2
273FMAX_nn        1100000 1 .. 1 ..... 1011.0 01000 .... 0    @z2z_4x4
274FMIN_nn        1100000 1 .. 1 ..... 1011.0 01000 .... 1    @z2z_2x2
275FMIN_nn        1100000 1 .. 1 ..... 1011.0 01000 .... 1    @z2z_4x4
276FMAXNM_nn      1100000 1 .. 1 ..... 1011.0 01001 .... 0    @z2z_2x2
277FMAXNM_nn      1100000 1 .. 1 ..... 1011.0 01001 .... 0    @z2z_4x4
278FMINNM_nn      1100000 1 .. 1 ..... 1011.0 01001 .... 1    @z2z_2x2
279FMINNM_nn      1100000 1 .. 1 ..... 1011.0 01001 .... 1    @z2z_4x4
280
281SRSHL_nn       1100000 1 .. 1 ..... 1011.0 10001 .... 0    @z2z_2x2
282SRSHL_nn       1100000 1 .. 1 ..... 1011.0 10001 .... 0    @z2z_4x4
283URSHL_nn       1100000 1 .. 1 ..... 1011.0 10001 .... 1    @z2z_2x2
284URSHL_nn       1100000 1 .. 1 ..... 1011.0 10001 .... 1    @z2z_4x4
285
286SQDMULH_nn     1100000 1 .. 1 ..... 1011.1 00000 .... 0    @z2z_2x2
287SQDMULH_nn     1100000 1 .. 1 ..... 1011.1 00000 .... 0    @z2z_4x4
288
289### SME2 Multi-vector Multiple and Single Array Vectors
290
291&azz_n          n off rv zn zm
292@azz_nx1_o3     ........ .... zm:4 ...... zn:5 .. off:3     &azz_n rv=%mova_rv
293
294ADD_azz_n1_s    11000001 0010 .... 0 .. 110 ..... 10 ...    @azz_nx1_o3 n=2
295ADD_azz_n1_s    11000001 0011 .... 0 .. 110 ..... 10 ...    @azz_nx1_o3 n=4
296ADD_azz_n1_d    11000001 0110 .... 0 .. 110 ..... 10 ...    @azz_nx1_o3 n=2
297ADD_azz_n1_d    11000001 0111 .... 0 .. 110 ..... 10 ...    @azz_nx1_o3 n=4
298
299SUB_azz_n1_s    11000001 0010 .... 0 .. 110 ..... 11 ...    @azz_nx1_o3 n=2
300SUB_azz_n1_s    11000001 0011 .... 0 .. 110 ..... 11 ...    @azz_nx1_o3 n=4
301SUB_azz_n1_d    11000001 0110 .... 0 .. 110 ..... 11 ...    @azz_nx1_o3 n=2
302SUB_azz_n1_d    11000001 0111 .... 0 .. 110 ..... 11 ...    @azz_nx1_o3 n=4
303
304%off3_x2        0:3 !function=times_2
305%off2_x2        0:2 !function=times_2
306
307@azz_nx1_o3x2   ........ ... . zm:4 . .. ... zn:5 .. ...    \
308                &azz_n off=%off3_x2 rv=%mova_rv
309@azz_nx1_o2x2   ........ ... . zm:4 . .. ... zn:5 ... ..    \
310                &azz_n off=%off2_x2 rv=%mova_rv
311
312FMLAL_n1        11000001 001 0 .... 0 .. 011 ..... 00 ...   @azz_nx1_o3x2 n=1
313FMLAL_n1        11000001 001 0 .... 0 .. 010 ..... 000 ..   @azz_nx1_o2x2 n=2
314FMLAL_n1        11000001 001 1 .... 0 .. 010 ..... 000 ..   @azz_nx1_o2x2 n=4
315
316FMLSL_n1        11000001 001 0 .... 0 .. 011 ..... 01 ...   @azz_nx1_o3x2 n=1
317FMLSL_n1        11000001 001 0 .... 0 .. 010 ..... 010 ..   @azz_nx1_o2x2 n=2
318FMLSL_n1        11000001 001 1 .... 0 .. 010 ..... 010 ..   @azz_nx1_o2x2 n=4
319
320BFMLAL_n1       11000001 001 0 .... 0 .. 011 ..... 10 ...   @azz_nx1_o3x2 n=1
321BFMLAL_n1       11000001 001 0 .... 0 .. 010 ..... 100 ..   @azz_nx1_o2x2 n=2
322BFMLAL_n1       11000001 001 1 .... 0 .. 010 ..... 100 ..   @azz_nx1_o2x2 n=4
323
324BFMLSL_n1       11000001 001 0 .... 0 .. 011 ..... 11 ...   @azz_nx1_o3x2 n=1
325BFMLSL_n1       11000001 001 0 .... 0 .. 010 ..... 110 ..   @azz_nx1_o2x2 n=2
326BFMLSL_n1       11000001 001 1 .... 0 .. 010 ..... 110 ..   @azz_nx1_o2x2 n=4
327
328FDOT_n1         11000001 001 0 .... 0 .. 100 ..... 00 ...   @azz_nx1_o3 n=2
329FDOT_n1         11000001 001 1 .... 0 .. 100 ..... 00 ...   @azz_nx1_o3 n=4
330
331BFDOT_n1        11000001 001 0 .... 0 .. 100 ..... 10 ...   @azz_nx1_o3 n=2
332BFDOT_n1        11000001 001 1 .... 0 .. 100 ..... 10 ...   @azz_nx1_o3 n=4
333
334USDOT_n1        11000001 001 0 .... 0 .. 101 ..... 01 ...   @azz_nx1_o3 n=2
335USDOT_n1        11000001 001 1 .... 0 .. 101 ..... 01 ...   @azz_nx1_o3 n=4
336
337SUDOT_n1        11000001 001 0 .... 0 .. 101 ..... 11 ...   @azz_nx1_o3 n=2
338SUDOT_n1        11000001 001 1 .... 0 .. 101 ..... 11 ...   @azz_nx1_o3 n=4
339
340SDOT_n1_4b      11000001 001 0 .... 0 .. 101 ..... 00 ...   @azz_nx1_o3 n=2
341SDOT_n1_4b      11000001 001 1 .... 0 .. 101 ..... 00 ...   @azz_nx1_o3 n=4
342SDOT_n1_4h      11000001 011 0 .... 0 .. 101 ..... 00 ...   @azz_nx1_o3 n=2
343SDOT_n1_4h      11000001 011 1 .... 0 .. 101 ..... 00 ...   @azz_nx1_o3 n=4
344SDOT_n1_2h      11000001 011 0 .... 0 .. 101 ..... 01 ...   @azz_nx1_o3 n=2
345SDOT_n1_2h      11000001 011 1 .... 0 .. 101 ..... 01 ...   @azz_nx1_o3 n=4
346
347UDOT_n1_4b      11000001 001 0 .... 0 .. 101 ..... 10 ...   @azz_nx1_o3 n=2
348UDOT_n1_4b      11000001 001 1 .... 0 .. 101 ..... 10 ...   @azz_nx1_o3 n=4
349UDOT_n1_4h      11000001 011 0 .... 0 .. 101 ..... 10 ...   @azz_nx1_o3 n=2
350UDOT_n1_4h      11000001 011 1 .... 0 .. 101 ..... 10 ...   @azz_nx1_o3 n=4
351UDOT_n1_2h      11000001 011 0 .... 0 .. 101 ..... 11 ...   @azz_nx1_o3 n=2
352UDOT_n1_2h      11000001 011 1 .... 0 .. 101 ..... 11 ...   @azz_nx1_o3 n=4
353
354SMLAL_n1        11000001 011 0 .... 0 .. 011 ..... 00 ...   @azz_nx1_o3x2 n=1
355SMLAL_n1        11000001 011 0 .... 0 .. 010 ..... 000 ..   @azz_nx1_o2x2 n=2
356SMLAL_n1        11000001 011 1 .... 0 .. 010 ..... 000 ..   @azz_nx1_o2x2 n=4
357
358SMLSL_n1        11000001 011 0 .... 0 .. 011 ..... 01 ...   @azz_nx1_o3x2 n=1
359SMLSL_n1        11000001 011 0 .... 0 .. 010 ..... 010 ..   @azz_nx1_o2x2 n=2
360SMLSL_n1        11000001 011 1 .... 0 .. 010 ..... 010 ..   @azz_nx1_o2x2 n=4
361
362UMLAL_n1        11000001 011 0 .... 0 .. 011 ..... 10 ...   @azz_nx1_o3x2 n=1
363UMLAL_n1        11000001 011 0 .... 0 .. 010 ..... 100 ..   @azz_nx1_o2x2 n=2
364UMLAL_n1        11000001 011 1 .... 0 .. 010 ..... 100 ..   @azz_nx1_o2x2 n=4
365
366UMLSL_n1        11000001 011 0 .... 0 .. 011 ..... 11 ...   @azz_nx1_o3x2 n=1
367UMLSL_n1        11000001 011 0 .... 0 .. 010 ..... 110 ..   @azz_nx1_o2x2 n=2
368UMLSL_n1        11000001 011 1 .... 0 .. 010 ..... 110 ..   @azz_nx1_o2x2 n=4
369
370%off2_x4        0:2 !function=times_4
371%off1_x4        0:1 !function=times_4
372
373@azz_nx1_o2x4   ........ ... . zm:4 . .. ... zn:5 ... ..    \
374                &azz_n off=%off2_x4 rv=%mova_rv
375@azz_nx1_o1x4   ........ ... . zm:4 . .. ... zn:5 .... .    \
376                &azz_n off=%off1_x4 rv=%mova_rv
377
378SMLALL_n1_s     11000001 001 0 .... 0 .. 001 ..... 000 ..   @azz_nx1_o2x4 n=1
379SMLALL_n1_d     11000001 011 0 .... 0 .. 001 ..... 000 ..   @azz_nx1_o2x4 n=1
380SMLALL_n1_s     11000001 001 0 .... 0 .. 000 ..... 0000 .   @azz_nx1_o1x4 n=2
381SMLALL_n1_d     11000001 011 0 .... 0 .. 000 ..... 0000 .   @azz_nx1_o1x4 n=2
382SMLALL_n1_s     11000001 001 1 .... 0 .. 000 ..... 0000 .   @azz_nx1_o1x4 n=4
383SMLALL_n1_d     11000001 011 1 .... 0 .. 000 ..... 0000 .   @azz_nx1_o1x4 n=4
384
385SMLSLL_n1_s     11000001 001 0 .... 0 .. 001 ..... 010 ..   @azz_nx1_o2x4 n=1
386SMLSLL_n1_d     11000001 011 0 .... 0 .. 001 ..... 010 ..   @azz_nx1_o2x4 n=1
387SMLSLL_n1_s     11000001 001 0 .... 0 .. 000 ..... 0100 .   @azz_nx1_o1x4 n=2
388SMLSLL_n1_d     11000001 011 0 .... 0 .. 000 ..... 0100 .   @azz_nx1_o1x4 n=2
389SMLSLL_n1_s     11000001 001 1 .... 0 .. 000 ..... 0100 .   @azz_nx1_o1x4 n=4
390SMLSLL_n1_d     11000001 011 1 .... 0 .. 000 ..... 0100 .   @azz_nx1_o1x4 n=4
391
392UMLALL_n1_s     11000001 001 0 .... 0 .. 001 ..... 100 ..   @azz_nx1_o2x4 n=1
393UMLALL_n1_d     11000001 011 0 .... 0 .. 001 ..... 100 ..   @azz_nx1_o2x4 n=1
394UMLALL_n1_s     11000001 001 0 .... 0 .. 000 ..... 1000 .   @azz_nx1_o1x4 n=2
395UMLALL_n1_d     11000001 011 0 .... 0 .. 000 ..... 1000 .   @azz_nx1_o1x4 n=2
396UMLALL_n1_s     11000001 001 1 .... 0 .. 000 ..... 1000 .   @azz_nx1_o1x4 n=4
397UMLALL_n1_d     11000001 011 1 .... 0 .. 000 ..... 1000 .   @azz_nx1_o1x4 n=4
398
399UMLSLL_n1_s     11000001 001 0 .... 0 .. 001 ..... 110 ..   @azz_nx1_o2x4 n=1
400UMLSLL_n1_d     11000001 011 0 .... 0 .. 001 ..... 110 ..   @azz_nx1_o2x4 n=1
401UMLSLL_n1_s     11000001 001 0 .... 0 .. 000 ..... 1100 .   @azz_nx1_o1x4 n=2
402UMLSLL_n1_d     11000001 011 0 .... 0 .. 000 ..... 1100 .   @azz_nx1_o1x4 n=2
403UMLSLL_n1_s     11000001 001 1 .... 0 .. 000 ..... 1100 .   @azz_nx1_o1x4 n=4
404UMLSLL_n1_d     11000001 011 1 .... 0 .. 000 ..... 1100 .   @azz_nx1_o1x4 n=4
405
406USMLALL_n1_s    11000001 001 0 .... 0 .. 001 ..... 001 ..   @azz_nx1_o2x4 n=1
407USMLALL_n1_s    11000001 001 0 .... 0 .. 000 ..... 0010 .   @azz_nx1_o1x4 n=2
408USMLALL_n1_s    11000001 001 1 .... 0 .. 000 ..... 0010 .   @azz_nx1_o1x4 n=4
409
410SUMLALL_n1_s    11000001 001 0 .... 0 .. 000 ..... 1010 .   @azz_nx1_o1x4 n=2
411SUMLALL_n1_s    11000001 001 1 .... 0 .. 000 ..... 1010 .   @azz_nx1_o1x4 n=4
412
413BFMLA_n1        11000001 011 0 .... 0 .. 111 ..... 00 ...   @azz_nx1_o3 n=2
414FMLA_n1_h       11000001 001 0 .... 0 .. 111 ..... 00 ...   @azz_nx1_o3 n=2
415FMLA_n1_s       11000001 001 0 .... 0 .. 110 ..... 00 ...   @azz_nx1_o3 n=2
416FMLA_n1_d       11000001 011 0 .... 0 .. 110 ..... 00 ...   @azz_nx1_o3 n=2
417
418BFMLA_n1        11000001 011 1 .... 0 .. 111 ..... 00 ...   @azz_nx1_o3 n=4
419FMLA_n1_h       11000001 001 1 .... 0 .. 111 ..... 00 ...   @azz_nx1_o3 n=4
420FMLA_n1_s       11000001 001 1 .... 0 .. 110 ..... 00 ...   @azz_nx1_o3 n=4
421FMLA_n1_d       11000001 011 1 .... 0 .. 110 ..... 00 ...   @azz_nx1_o3 n=4
422
423BFMLS_n1        11000001 011 0 .... 0 .. 111 ..... 01 ...   @azz_nx1_o3 n=2
424FMLS_n1_h       11000001 001 0 .... 0 .. 111 ..... 01 ...   @azz_nx1_o3 n=2
425FMLS_n1_s       11000001 001 0 .... 0 .. 110 ..... 01 ...   @azz_nx1_o3 n=2
426FMLS_n1_d       11000001 011 0 .... 0 .. 110 ..... 01 ...   @azz_nx1_o3 n=2
427
428BFMLS_n1        11000001 011 1 .... 0 .. 111 ..... 01 ...   @azz_nx1_o3 n=4
429FMLS_n1_h       11000001 001 1 .... 0 .. 111 ..... 01 ...   @azz_nx1_o3 n=4
430FMLS_n1_s       11000001 001 1 .... 0 .. 110 ..... 01 ...   @azz_nx1_o3 n=4
431FMLS_n1_d       11000001 011 1 .... 0 .. 110 ..... 01 ...   @azz_nx1_o3 n=4
432
433### SME2 Multi-vector Multiple Array Vectors
434
435%zn_ax2         6:4 !function=times_2
436%zn_ax4         7:3 !function=times_4
437
438@azz_2x2_o3     ........ ... ..... . .. ... ..... .. off:3  \
439                &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2
440@azz_4x4_o3     ........ ... ..... . .. ... ..... .. off:3  \
441                &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4
442
443ADD_azz_nn_s    11000001 101 ....0 0 .. 110 ....0 10 ...    @azz_2x2_o3
444ADD_azz_nn_s    11000001 101 ...01 0 .. 110 ...00 10 ...    @azz_4x4_o3
445ADD_azz_nn_d    11000001 111 ....0 0 .. 110 ....0 10 ...    @azz_2x2_o3
446ADD_azz_nn_d    11000001 111 ...01 0 .. 110 ...00 10 ...    @azz_4x4_o3
447
448SUB_azz_nn_s    11000001 101 ....0 0 .. 110 ....0 11 ...    @azz_2x2_o3
449SUB_azz_nn_s    11000001 101 ...01 0 .. 110 ...00 11 ...    @azz_4x4_o3
450SUB_azz_nn_d    11000001 111 ....0 0 .. 110 ....0 11 ...    @azz_2x2_o3
451SUB_azz_nn_d    11000001 111 ...01 0 .. 110 ...00 11 ...    @azz_4x4_o3
452
453@azz_2x2_o2x2   ........ ... ..... . .. ... ..... ... ..    \
454                &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off2_x2
455@azz_4x4_o2x2   ........ ... ..... . .. ... ..... ... ..    \
456                &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off2_x2
457
458FMLAL_nn        11000001 101 ....0 0 .. 010 ....0 000 ..    @azz_2x2_o2x2
459FMLAL_nn        11000001 101 ...01 0 .. 010 ...00 000 ..    @azz_4x4_o2x2
460
461FMLSL_nn        11000001 101 ....0 0 .. 010 ....0 010 ..    @azz_2x2_o2x2
462FMLSL_nn        11000001 101 ...01 0 .. 010 ...00 010 ..    @azz_4x4_o2x2
463
464BFMLAL_nn       11000001 101 ....0 0 .. 010 ....0 100 ..    @azz_2x2_o2x2
465BFMLAL_nn       11000001 101 ...01 0 .. 010 ...00 100 ..    @azz_4x4_o2x2
466
467BFMLSL_nn       11000001 101 ....0 0 .. 010 ....0 110 ..    @azz_2x2_o2x2
468BFMLSL_nn       11000001 101 ...01 0 .. 010 ...00 110 ..    @azz_4x4_o2x2
469
470FDOT_nn         11000001 101 ....0 0 .. 100 ....0 00 ...    @azz_2x2_o3
471FDOT_nn         11000001 101 ...01 0 .. 100 ...00 00 ...    @azz_4x4_o3
472
473BFDOT_nn        11000001 101 ....0 0 .. 100 ....0 10 ...    @azz_2x2_o3
474BFDOT_nn        11000001 101 ...01 0 .. 100 ...00 10 ...    @azz_4x4_o3
475
476USDOT_nn        11000001 101 ....0 0 .. 101 ....0 01 ...    @azz_2x2_o3
477USDOT_nn        11000001 101 ...01 0 .. 101 ...00 01 ...    @azz_4x4_o3
478
479SDOT_nn_4b      11000001 101 ....0 0 .. 101 ....0 00 ...    @azz_2x2_o3
480SDOT_nn_4b      11000001 101 ...01 0 .. 101 ...00 00 ...    @azz_4x4_o3
481SDOT_nn_4h      11000001 111 ....0 0 .. 101 ....0 00 ...    @azz_2x2_o3
482SDOT_nn_4h      11000001 111 ...01 0 .. 101 ...00 00 ...    @azz_4x4_o3
483SDOT_nn_2h      11000001 111 ....0 0 .. 101 ....0 01 ...    @azz_2x2_o3
484SDOT_nn_2h      11000001 111 ...01 0 .. 101 ...00 01 ...    @azz_4x4_o3
485
486UDOT_nn_4b      11000001 101 ....0 0 .. 101 ....0 10 ...    @azz_2x2_o3
487UDOT_nn_4b      11000001 101 ...01 0 .. 101 ...00 10 ...    @azz_4x4_o3
488UDOT_nn_4h      11000001 111 ....0 0 .. 101 ....0 10 ...    @azz_2x2_o3
489UDOT_nn_4h      11000001 111 ...01 0 .. 101 ...00 10 ...    @azz_4x4_o3
490UDOT_nn_2h      11000001 111 ....0 0 .. 101 ....0 11 ...    @azz_2x2_o3
491UDOT_nn_2h      11000001 111 ...01 0 .. 101 ...00 11 ...    @azz_4x4_o3
492
493SMLAL_nn        11000001 111 ....0 0 .. 010 ....0 000 ..    @azz_2x2_o2x2
494SMLAL_nn        11000001 111 ...01 0 .. 010 ...00 000 ..    @azz_4x4_o2x2
495
496SMLSL_nn        11000001 111 ....0 0 .. 010 ....0 010 ..    @azz_2x2_o2x2
497SMLSL_nn        11000001 111 ...01 0 .. 010 ...00 010 ..    @azz_4x4_o2x2
498
499UMLAL_nn        11000001 111 ....0 0 .. 010 ....0 100 ..    @azz_2x2_o2x2
500UMLAL_nn        11000001 111 ...01 0 .. 010 ...00 100 ..    @azz_4x4_o2x2
501
502UMLSL_nn        11000001 111 ....0 0 .. 010 ....0 110 ..    @azz_2x2_o2x2
503UMLSL_nn        11000001 111 ...01 0 .. 010 ...00 110 ..    @azz_4x4_o2x2
504
505@azz_2x2_o1x4   ........ ... ..... . .. ... ..... ... ..    \
506                &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off1_x4
507@azz_4x4_o1x4   ........ ... ..... . .. ... ..... ... ..    \
508                &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off1_x4
509
510SMLALL_nn_s     11000001 101 ....0 0 .. 000 ....0 0000 .    @azz_2x2_o1x4
511SMLALL_nn_d     11000001 111 ....0 0 .. 000 ....0 0000 .    @azz_2x2_o1x4
512SMLALL_nn_s     11000001 101 ...01 0 .. 000 ...00 0000 .    @azz_4x4_o1x4
513SMLALL_nn_d     11000001 111 ...01 0 .. 000 ...00 0000 .    @azz_4x4_o1x4
514
515SMLSLL_nn_s     11000001 101 ....0 0 .. 000 ....0 0100 .    @azz_2x2_o1x4
516SMLSLL_nn_d     11000001 111 ....0 0 .. 000 ....0 0100 .    @azz_2x2_o1x4
517SMLSLL_nn_s     11000001 101 ...01 0 .. 000 ...00 0100 .    @azz_4x4_o1x4
518SMLSLL_nn_d     11000001 111 ...01 0 .. 000 ...00 0100 .    @azz_4x4_o1x4
519
520UMLALL_nn_s     11000001 101 ....0 0 .. 000 ....0 1000 .    @azz_2x2_o1x4
521UMLALL_nn_d     11000001 111 ....0 0 .. 000 ....0 1000 .    @azz_2x2_o1x4
522UMLALL_nn_s     11000001 101 ...01 0 .. 000 ...00 1000 .    @azz_4x4_o1x4
523UMLALL_nn_d     11000001 111 ...01 0 .. 000 ...00 1000 .    @azz_4x4_o1x4
524
525UMLSLL_nn_s     11000001 101 ....0 0 .. 000 ....0 1100 .    @azz_2x2_o1x4
526UMLSLL_nn_d     11000001 111 ....0 0 .. 000 ....0 1100 .    @azz_2x2_o1x4
527UMLSLL_nn_s     11000001 101 ...01 0 .. 000 ...00 1100 .    @azz_4x4_o1x4
528UMLSLL_nn_d     11000001 111 ...01 0 .. 000 ...00 1100 .    @azz_4x4_o1x4
529
530USMLALL_nn_s    11000001 101 ....0 0 .. 000 ....0 0010 .    @azz_2x2_o1x4
531USMLALL_nn_s    11000001 101 ...01 0 .. 000 ...00 0010 .    @azz_4x4_o1x4
532
533BFMLA_nn        11000001 111 ....0 0 .. 100 ....0 01 ...    @azz_2x2_o3
534FMLA_nn_h       11000001 101 ....0 0 .. 100 ....0 01 ...    @azz_2x2_o3
535FMLA_nn_s       11000001 101 ....0 0 .. 110 ....0 00 ...    @azz_2x2_o3
536FMLA_nn_d       11000001 111 ....0 0 .. 110 ....0 00 ...    @azz_2x2_o3
537
538BFMLA_nn        11000001 111 ...01 0 .. 100 ...00 01 ...    @azz_4x4_o3
539FMLA_nn_h       11000001 101 ...01 0 .. 100 ...00 01 ...    @azz_4x4_o3
540FMLA_nn_s       11000001 101 ...01 0 .. 110 ...00 00 ...    @azz_4x4_o3
541FMLA_nn_d       11000001 111 ...01 0 .. 110 ...00 00 ...    @azz_4x4_o3
542
543BFMLS_nn        11000001 111 ....0 0 .. 100 ....0 11 ...    @azz_2x2_o3
544FMLS_nn_h       11000001 101 ....0 0 .. 100 ....0 11 ...    @azz_2x2_o3
545FMLS_nn_s       11000001 101 ....0 0 .. 110 ....0 01 ...    @azz_2x2_o3
546FMLS_nn_d       11000001 111 ....0 0 .. 110 ....0 01 ...    @azz_2x2_o3
547
548BFMLS_nn        11000001 111 ...01 0 .. 100 ...00 11 ...    @azz_4x4_o3
549FMLS_nn_h       11000001 101 ...01 0 .. 100 ...00 11 ...    @azz_4x4_o3
550FMLS_nn_s       11000001 101 ...01 0 .. 110 ...00 01 ...    @azz_4x4_o3
551FMLS_nn_d       11000001 111 ...01 0 .. 110 ...00 01 ...    @azz_4x4_o3
552
553&az_n           n off rv zm
554@az_2x2_o3      ........ ... ..... . .. ... ..... .. off:3  \
555                &az_n n=2 rv=%mova_rv zm=%zn_ax2
556@az_4x4_o3      ........ ... ..... . .. ... ..... .. off:3  \
557                &az_n n=4 rv=%mova_rv zm=%zn_ax4
558
559FADD_nn_h       11000001 101 00100 0 .. 111 ....0 00 ...    @az_2x2_o3
560FADD_nn_s       11000001 101 00000 0 .. 111 ....0 00 ...    @az_2x2_o3
561FADD_nn_d       11000001 111 00000 0 .. 111 ....0 00 ...    @az_2x2_o3
562FADD_nn_h       11000001 101 00101 0 .. 111 ...00 00 ...    @az_4x4_o3
563FADD_nn_s       11000001 101 00001 0 .. 111 ...00 00 ...    @az_4x4_o3
564FADD_nn_d       11000001 111 00001 0 .. 111 ...00 00 ...    @az_4x4_o3
565
566FSUB_nn_h       11000001 101 00100 0 .. 111 ....0 01 ...    @az_2x2_o3
567FSUB_nn_s       11000001 101 00000 0 .. 111 ....0 01 ...    @az_2x2_o3
568FSUB_nn_d       11000001 111 00000 0 .. 111 ....0 01 ...    @az_2x2_o3
569FSUB_nn_h       11000001 101 00101 0 .. 111 ...00 01 ...    @az_4x4_o3
570FSUB_nn_s       11000001 101 00001 0 .. 111 ...00 01 ...    @az_4x4_o3
571FSUB_nn_d       11000001 111 00001 0 .. 111 ...00 01 ...    @az_4x4_o3
572
573BFADD_nn        11000001 111 00100 0 .. 111 ....0 00 ...    @az_2x2_o3
574BFADD_nn        11000001 111 00101 0 .. 111 ...00 00 ...    @az_4x4_o3
575BFSUB_nn        11000001 111 00100 0 .. 111 ....0 01 ...    @az_2x2_o3
576BFSUB_nn        11000001 111 00101 0 .. 111 ...00 01 ...    @az_4x4_o3
577
578### SME2 Multi-vector Indexed
579
580&azx_n          n off rv zn zm idx
581
582%idx3_15_10     15:1 10:2
583%idx2_10_2      10:2 2:1
584
585@azx_1x1_o3x2   ........ .... zm:4 . .. . .. zn:5 .. ...    \
586                &azx_n n=1 rv=%mova_rv off=%off3_x2 idx=%idx3_15_10
587@azx_2x1_o2x2   ........ .... zm:4 . .. . .. ..... .. ...   \
588                &azx_n n=2 rv=%mova_rv off=%off2_x2 zn=%zn_ax2 idx=%idx2_10_2
589@azx_4x1_o2x2   ........ .... zm:4 . .. . .. ..... .. ...   \
590                &azx_n n=4 rv=%mova_rv off=%off2_x2 zn=%zn_ax4 idx=%idx2_10_2
591
592FMLAL_nx        11000001 1000 .... . .. 1 .. ..... 00 ...   @azx_1x1_o3x2
593FMLAL_nx        11000001 1001 .... 0 .. 1 .. ....0 00 ...   @azx_2x1_o2x2
594FMLAL_nx        11000001 1001 .... 1 .. 1 .. ...00 00 ...   @azx_4x1_o2x2
595
596FMLSL_nx        11000001 1000 .... . .. 1 .. ..... 01 ...   @azx_1x1_o3x2
597FMLSL_nx        11000001 1001 .... 0 .. 1 .. ....0 01 ...   @azx_2x1_o2x2
598FMLSL_nx        11000001 1001 .... 1 .. 1 .. ...00 01 ...   @azx_4x1_o2x2
599
600BFMLAL_nx       11000001 1000 .... . .. 1 .. ..... 10 ...   @azx_1x1_o3x2
601BFMLAL_nx       11000001 1001 .... 0 .. 1 .. ....0 10 ...   @azx_2x1_o2x2
602BFMLAL_nx       11000001 1001 .... 1 .. 1 .. ...00 10 ...   @azx_4x1_o2x2
603
604BFMLSL_nx       11000001 1000 .... . .. 1 .. ..... 11 ...   @azx_1x1_o3x2
605BFMLSL_nx       11000001 1001 .... 0 .. 1 .. ....0 11 ...   @azx_2x1_o2x2
606BFMLSL_nx       11000001 1001 .... 1 .. 1 .. ...00 11 ...   @azx_4x1_o2x2
607
608@azx_2x1_i2_o3  ........ .... zm:4 . .. . idx:2 .... ... off:3 \
609                &azx_n n=2 rv=%mova_rv zn=%zn_ax2
610@azx_4x1_i2_o3  ........ .... zm:4 . .. . idx:2 .... ... off:3 \
611                &azx_n n=4 rv=%mova_rv zn=%zn_ax4
612@azx_2x1_i1_o3  ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
613                &azx_n n=2 rv=%mova_rv zn=%zn_ax2
614@azx_4x1_i1_o3  ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
615                &azx_n n=4 rv=%mova_rv zn=%zn_ax4
616
617FDOT_nx         11000001 0101 .... 0 .. 1 .. ....0 01 ...   @azx_2x1_i2_o3
618FDOT_nx         11000001 0101 .... 1 .. 1 .. ...00 01 ...   @azx_4x1_i2_o3
619
620BFDOT_nx        11000001 0101 .... 0 .. 1 .. ....0 11 ...   @azx_2x1_i2_o3
621BFDOT_nx        11000001 0101 .... 1 .. 1 .. ...00 11 ...   @azx_4x1_i2_o3
622
623FVDOT           11000001 0101 .... 0 .. 0 .. ....0 01 ...   @azx_2x1_i2_o3
624BFVDOT          11000001 0101 .... 0 .. 0 .. ....0 11 ...   @azx_2x1_i2_o3
625
626SDOT_nx_2h      11000001 0101 .... 0 .. 1 .. ....0 00 ...   @azx_2x1_i2_o3
627SDOT_nx_2h      11000001 0101 .... 1 .. 1 .. ...00 00 ...   @azx_4x1_i2_o3
628SDOT_nx_4b      11000001 0101 .... 0 .. 1 .. ....1 00 ...   @azx_2x1_i2_o3
629SDOT_nx_4b      11000001 0101 .... 1 .. 1 .. ...01 00 ...   @azx_4x1_i2_o3
630SDOT_nx_4h      11000001 1101 .... 0 .. 00 . ....0 01 ...   @azx_2x1_i1_o3
631SDOT_nx_4h      11000001 1101 .... 1 .. 00 . ...00 01 ...   @azx_4x1_i1_o3
632
633UDOT_nx_2h      11000001 0101 .... 0 .. 1 .. ....0 10 ...   @azx_2x1_i2_o3
634UDOT_nx_2h      11000001 0101 .... 1 .. 1 .. ...00 10 ...   @azx_4x1_i2_o3
635UDOT_nx_4b      11000001 0101 .... 0 .. 1 .. ....1 10 ...   @azx_2x1_i2_o3
636UDOT_nx_4b      11000001 0101 .... 1 .. 1 .. ...01 10 ...   @azx_4x1_i2_o3
637UDOT_nx_4h      11000001 1101 .... 0 .. 00 . ....0 11 ...   @azx_2x1_i1_o3
638UDOT_nx_4h      11000001 1101 .... 1 .. 00 . ...00 11 ...   @azx_4x1_i1_o3
639
640USDOT_nx        11000001 0101 .... 0 .. 1 .. ....1 01 ...   @azx_2x1_i2_o3
641USDOT_nx        11000001 0101 .... 1 .. 1 .. ...01 01 ...   @azx_4x1_i2_o3
642
643SUDOT_nx        11000001 0101 .... 0 .. 1 .. ....1 11 ...   @azx_2x1_i2_o3
644SUDOT_nx        11000001 0101 .... 1 .. 1 .. ...01 11 ...   @azx_4x1_i2_o3
645
646SVDOT_nx_2h     11000001 0101 .... 0 .. 0 .. ....1 00 ...   @azx_2x1_i2_o3
647SVDOT_nx_4b     11000001 0101 .... 1 .. 0 .. ...01 00 ...   @azx_4x1_i2_o3
648SVDOT_nx_4h     11000001 1101 .... 1 .. 01 . ...00 01 ...   @azx_4x1_i1_o3
649
650UVDOT_nx_2h     11000001 0101 .... 0 .. 0 .. ....1 10 ...   @azx_2x1_i2_o3
651UVDOT_nx_4b     11000001 0101 .... 1 .. 0 .. ...01 10 ...   @azx_4x1_i2_o3
652UVDOT_nx_4h     11000001 1101 .... 1 .. 01 . ...00 11 ...   @azx_4x1_i1_o3
653
654SUVDOT_nx_4b    11000001 0101 .... 1 .. 0 .. ...01 11 ...   @azx_4x1_i2_o3
655USVDOT_nx_4b    11000001 0101 .... 1 .. 0 .. ...01 01 ...   @azx_4x1_i2_o3
656
657SMLAL_nx        11000001 1100 .... . .. 1 .. ..... 00 ...   @azx_1x1_o3x2
658SMLAL_nx        11000001 1101 .... 0 .. 1 .. ....0 00 ...   @azx_2x1_o2x2
659SMLAL_nx        11000001 1101 .... 1 .. 1 .. ...00 00 ...   @azx_4x1_o2x2
660
661SMLSL_nx        11000001 1100 .... . .. 1 .. ..... 01 ...   @azx_1x1_o3x2
662SMLSL_nx        11000001 1101 .... 0 .. 1 .. ....0 01 ...   @azx_2x1_o2x2
663SMLSL_nx        11000001 1101 .... 1 .. 1 .. ...00 01 ...   @azx_4x1_o2x2
664
665UMLAL_nx        11000001 1100 .... . .. 1 .. ..... 10 ...   @azx_1x1_o3x2
666UMLAL_nx        11000001 1101 .... 0 .. 1 .. ....0 10 ...   @azx_2x1_o2x2
667UMLAL_nx        11000001 1101 .... 1 .. 1 .. ...00 10 ...   @azx_4x1_o2x2
668
669UMLSL_nx        11000001 1100 .... . .. 1 .. ..... 11 ...   @azx_1x1_o3x2
670UMLSL_nx        11000001 1101 .... 0 .. 1 .. ....0 11 ...   @azx_2x1_o2x2
671UMLSL_nx        11000001 1101 .... 1 .. 1 .. ...00 11 ...   @azx_4x1_o2x2
672
673%idx4_15_10     15:1 10:3
674%idx4_10_1      10:2 1:2
675%idx3_10_1      10:1 1:2
676
677@azx_1x1_i4_o2  ........ .... zm:4 . .. ... zn:5 ... ..     \
678                &azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx4_15_10
679@azx_1x1_i3_o2  ........ .... zm:4 . .. ... zn:5 ... ..     \
680                &azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx3_15_10
681@azx_2x1_i4_o1  ........ .... zm:4 . .. ... ..... ... ..     \
682                &azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx4_10_1
683@azx_2x1_i3_o1  ........ .... zm:4 . .. ... ..... ... ..     \
684                &azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx3_10_1
685@azx_4x1_i4_o1  ........ .... zm:4 . .. ... ..... ... ..     \
686                &azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx4_10_1
687@azx_4x1_i3_o1  ........ .... zm:4 . .. ... ..... ... ..     \
688                &azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx3_10_1
689
690SMLALL_nx_s     11000001 0000 .... . .. ... ..... 000 ..    @azx_1x1_i4_o2
691SMLALL_nx_d     11000001 1000 .... . .. 0.. ..... 000 ..    @azx_1x1_i3_o2
692SMLALL_nx_s     11000001 0001 .... 0 .. 0.. ....0 00 ...    @azx_2x1_i4_o1
693SMLALL_nx_d     11000001 1001 .... 0 .. 00. ....0 00 ...    @azx_2x1_i3_o1
694SMLALL_nx_s     11000001 0001 .... 1 .. 0.. ...00 00 ...    @azx_4x1_i4_o1
695SMLALL_nx_d     11000001 1001 .... 1 .. 00. ...00 00 ...    @azx_4x1_i3_o1
696
697SMLSLL_nx_s     11000001 0000 .... . .. ... ..... 010 ..    @azx_1x1_i4_o2
698SMLSLL_nx_d     11000001 1000 .... . .. 0.. ..... 010 ..    @azx_1x1_i3_o2
699SMLSLL_nx_s     11000001 0001 .... 0 .. 0.. ....0 01 ...    @azx_2x1_i4_o1
700SMLSLL_nx_d     11000001 1001 .... 0 .. 00. ....0 01 ...    @azx_2x1_i3_o1
701SMLSLL_nx_s     11000001 0001 .... 1 .. 0.. ...00 01 ...    @azx_4x1_i4_o1
702SMLSLL_nx_d     11000001 1001 .... 1 .. 00. ...00 01 ...    @azx_4x1_i3_o1
703
704UMLALL_nx_s     11000001 0000 .... . .. ... ..... 100 ..    @azx_1x1_i4_o2
705UMLALL_nx_d     11000001 1000 .... . .. 0.. ..... 100 ..    @azx_1x1_i3_o2
706UMLALL_nx_s     11000001 0001 .... 0 .. 0.. ....0 10 ...    @azx_2x1_i4_o1
707UMLALL_nx_d     11000001 1001 .... 0 .. 00. ....0 10 ...    @azx_2x1_i3_o1
708UMLALL_nx_s     11000001 0001 .... 1 .. 0.. ...00 10 ...    @azx_4x1_i4_o1
709UMLALL_nx_d     11000001 1001 .... 1 .. 00. ...00 10 ...    @azx_4x1_i3_o1
710
711UMLSLL_nx_s     11000001 0000 .... . .. ... ..... 110 ..    @azx_1x1_i4_o2
712UMLSLL_nx_d     11000001 1000 .... . .. 0.. ..... 110 ..    @azx_1x1_i3_o2
713UMLSLL_nx_s     11000001 0001 .... 0 .. 0.. ....0 11 ...    @azx_2x1_i4_o1
714UMLSLL_nx_d     11000001 1001 .... 0 .. 00. ....0 11 ...    @azx_2x1_i3_o1
715UMLSLL_nx_s     11000001 0001 .... 1 .. 0.. ...00 11 ...    @azx_4x1_i4_o1
716UMLSLL_nx_d     11000001 1001 .... 1 .. 00. ...00 11 ...    @azx_4x1_i3_o1
717
718USMLALL_nx_s    11000001 0000 .... . .. ... ..... 001 ..    @azx_1x1_i4_o2
719USMLALL_nx_s    11000001 0001 .... 0 .. 0.. ....1 00 ...    @azx_2x1_i4_o1
720USMLALL_nx_s    11000001 0001 .... 1 .. 0.. ...01 00 ...    @azx_4x1_i4_o1
721
722SUMLALL_nx_s    11000001 0000 .... . .. ... ..... 101 ..    @azx_1x1_i4_o2
723SUMLALL_nx_s    11000001 0001 .... 0 .. 0.. ....1 10 ...    @azx_2x1_i4_o1
724SUMLALL_nx_s    11000001 0001 .... 1 .. 0.. ...01 10 ...    @azx_4x1_i4_o1
725
726%idx3_10_3      10:2 3:1
727@azx_2x1_i3_o3  ........ .... zm:4 . .. ... ..... .. off:3  \
728                &azx_n n=2 rv=%mova_rv zn=%zn_ax2 idx=%idx3_10_3
729@azx_4x1_i3_o3  ........ .... zm:4 . .. ... ..... .. off:3  \
730                &azx_n n=4 rv=%mova_rv zn=%zn_ax4 idx=%idx3_10_3
731
732BFMLA_nx        11000001 0001 .... 0 .. 1.. ....1 0 ....    @azx_2x1_i3_o3
733FMLA_nx_h       11000001 0001 .... 0 .. 1.. ....0 0 ....    @azx_2x1_i3_o3
734FMLA_nx_s       11000001 0101 .... 0 .. 0.. ....0 00 ...    @azx_2x1_i2_o3
735FMLA_nx_d       11000001 1101 .... 0 .. 00. ....0 00 ...    @azx_2x1_i1_o3
736
737BFMLA_nx        11000001 0001 .... 1 .. 1.. ...01 0 ....    @azx_4x1_i3_o3
738FMLA_nx_h       11000001 0001 .... 1 .. 1.. ...00 0 ....    @azx_4x1_i3_o3
739FMLA_nx_s       11000001 0101 .... 1 .. 0.. ...00 00 ...    @azx_4x1_i2_o3
740FMLA_nx_d       11000001 1101 .... 1 .. 00. ...00 00 ...    @azx_4x1_i1_o3
741
742BFMLS_nx        11000001 0001 .... 0 .. 1.. ....1 1 ....    @azx_2x1_i3_o3
743FMLS_nx_h       11000001 0001 .... 0 .. 1.. ....0 1 ....    @azx_2x1_i3_o3
744FMLS_nx_s       11000001 0101 .... 0 .. 0.. ....0 10 ...    @azx_2x1_i2_o3
745FMLS_nx_d       11000001 1101 .... 0 .. 00. ....0 10 ...    @azx_2x1_i1_o3
746
747BFMLS_nx        11000001 0001 .... 1 .. 1.. ...01 1 ....    @azx_4x1_i3_o3
748FMLS_nx_h       11000001 0001 .... 1 .. 1.. ...00 1 ....    @azx_4x1_i3_o3
749FMLS_nx_s       11000001 0101 .... 1 .. 0.. ...00 10 ...    @azx_4x1_i2_o3
750FMLS_nx_d       11000001 1101 .... 1 .. 00. ...00 10 ...    @azx_4x1_i1_o3
751
752### SME2 Add / Sub array accumulators
753
754ADD_aaz_s       11000001 101 000000 .. 111 ....0 10 ...     @az_2x2_o3
755ADD_aaz_s       11000001 101 000010 .. 111 ...00 10 ...     @az_4x4_o3
756ADD_aaz_d       11000001 111 000000 .. 111 ....0 10 ...     @az_2x2_o3
757ADD_aaz_d       11000001 111 000010 .. 111 ...00 10 ...     @az_4x4_o3
758
759SUB_aaz_s       11000001 101 000000 .. 111 ....0 11 ...     @az_2x2_o3
760SUB_aaz_s       11000001 101 000010 .. 111 ...00 11 ...     @az_4x4_o3
761SUB_aaz_d       11000001 111 000000 .. 111 ....0 11 ...     @az_2x2_o3
762SUB_aaz_d       11000001 111 000010 .. 111 ...00 11 ...     @az_4x4_o3
763
764### SME2 Multi-vector SVE Constructive Unary
765
766&zz_e           zd zn esz
767&zz_n           zd zn n
768@zz_1x2         ........ ... ..... ...... ..... zd:5        \
769                &zz_n n=1 zn=%zn_ax2
770@zz_1x4         ........ ... ..... ...... ..... zd:5        \
771                &zz_n n=1 zn=%zn_ax4
772@zz_2x1         ........ ... ..... ...... zn:5  .....       \
773                &zz_n n=1 zd=%zd_ax2
774@zz_2x2         ........ ... ..... ...... .... . .....      \
775                &zz_n n=2 zd=%zd_ax2 zn=%zn_ax2
776@zz_4x4         ........ ... ..... ...... .... . .....      \
777                &zz_n n=4 zd=%zd_ax4 zn=%zn_ax4
778@zz_4x2_n1      ........ ... ..... ...... .... . .....      \
779                &zz_n n=1 zd=%zd_ax4 zn=%zn_ax2
780
781BFCVT           11000001 011 00000 111000 ....0 .....       @zz_1x2
782BFCVTN          11000001 011 00000 111000 ....1 .....       @zz_1x2
783
784FCVT_n          11000001 001 00000 111000 ....0 .....       @zz_1x2
785FCVTN           11000001 001 00000 111000 ....1 .....       @zz_1x2
786
787FCVT_w          11000001 101 00000 111000 ..... ....0       @zz_2x1
788FCVTL           11000001 101 00000 111000 ..... ....1       @zz_2x1
789
790FCVTZS          11000001 001 00001 111000 ....0 ....0       @zz_2x2
791FCVTZS          11000001 001 10001 111000 ...00 ...00       @zz_4x4
792FCVTZU          11000001 001 00001 111000 ....1 ....0       @zz_2x2
793FCVTZU          11000001 001 10001 111000 ...01 ...00       @zz_4x4
794
795SCVTF           11000001 001 00010 111000 ....0 ....0       @zz_2x2
796SCVTF           11000001 001 10010 111000 ...00 ...00       @zz_4x4
797UCVTF           11000001 001 00010 111000 ....1 ....0       @zz_2x2
798UCVTF           11000001 001 10010 111000 ...01 ...00       @zz_4x4
799
800FRINTN          11000001 101 01000 111000 ....0 ....0       @zz_2x2
801FRINTN          11000001 101 11000 111000 ...00 ...00       @zz_4x4
802FRINTP          11000001 101 01001 111000 ....0 ....0       @zz_2x2
803FRINTP          11000001 101 11001 111000 ...00 ...00       @zz_4x4
804FRINTM          11000001 101 01010 111000 ....0 ....0       @zz_2x2
805FRINTM          11000001 101 11010 111000 ...00 ...00       @zz_4x4
806FRINTA          11000001 101 01100 111000 ....0 ....0       @zz_2x2
807FRINTA          11000001 101 11100 111000 ...00 ...00       @zz_4x4
808
809SQCVT_sh        11000001 001 00011 111000 ....0 .....       @zz_1x2
810UQCVT_sh        11000001 001 00011 111000 ....1 .....       @zz_1x2
811SQCVTU_sh       11000001 011 00011 111000 ....0 .....       @zz_1x2
812
813SQCVT_sb        11000001 001 10011 111000 ...00 .....       @zz_1x4
814UQCVT_sb        11000001 001 10011 111000 ...01 .....       @zz_1x4
815SQCVTU_sb       11000001 011 10011 111000 ...00 .....       @zz_1x4
816
817SQCVT_dh        11000001 101 10011 111000 ...00 .....       @zz_1x4
818UQCVT_dh        11000001 101 10011 111000 ...01 .....       @zz_1x4
819SQCVTU_dh       11000001 111 10011 111000 ...00 .....       @zz_1x4
820
821SQCVTN_sb       11000001 001 10011 111000 ...10 .....       @zz_1x4
822UQCVTN_sb       11000001 001 10011 111000 ...11 .....       @zz_1x4
823SQCVTUN_sb      11000001 011 10011 111000 ...10 .....       @zz_1x4
824
825SQCVTN_dh       11000001 101 10011 111000 ...10 .....       @zz_1x4
826UQCVTN_dh       11000001 101 10011 111000 ...11 .....       @zz_1x4
827SQCVTUN_dh      11000001 111 10011 111000 ...10 .....       @zz_1x4
828
829SUNPK_2bh       11000001 011 00101 111000 ..... ....0       @zz_2x1
830SUNPK_2hs       11000001 101 00101 111000 ..... ....0       @zz_2x1
831SUNPK_2sd       11000001 111 00101 111000 ..... ....0       @zz_2x1
832
833UUNPK_2bh       11000001 011 00101 111000 ..... ....1       @zz_2x1
834UUNPK_2hs       11000001 101 00101 111000 ..... ....1       @zz_2x1
835UUNPK_2sd       11000001 111 00101 111000 ..... ....1       @zz_2x1
836
837SUNPK_4bh       11000001 011 10101 111000 ....0 ...00       @zz_4x2_n1
838SUNPK_4hs       11000001 101 10101 111000 ....0 ...00       @zz_4x2_n1
839SUNPK_4sd       11000001 111 10101 111000 ....0 ...00       @zz_4x2_n1
840
841UUNPK_4bh       11000001 011 10101 111000 ....0 ...01       @zz_4x2_n1
842UUNPK_4hs       11000001 101 10101 111000 ....0 ...01       @zz_4x2_n1
843UUNPK_4sd       11000001 111 10101 111000 ....0 ...01       @zz_4x2_n1
844
845ZIP_4           11000001 esz:2 1 10110 111000 ...00 ... 00   \
846                &zz_e zd=%zd_ax4 zn=%zn_ax4
847ZIP_4           11000001 001     10111 111000 ...00 ... 00   \
848                &zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
849
850UZP_4           11000001 esz:2 1 10110 111000 ...00 ... 10   \
851                &zz_e zd=%zd_ax4 zn=%zn_ax4
852UZP_4           11000001 001     10111 111000 ...00 ... 10   \
853                &zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
854
855### SME2 Multi-vector SVE Constructive Binary
856
857&rshr           zd zn shift
858
859%rshr_sh_shift  16:4 !function=rsub_16
860%rshr_sb_shift  16:5 !function=rsub_32
861%rshr_dh_shift  22:1 16:5 !function=rsub_64
862
863@rshr_sh        ........ .... .... ...... ..... zd:5        \
864                &rshr zn=%zn_ax2 shift=%rshr_sh_shift
865@rshr_sb        ........ ... ..... ...... ..... zd:5        \
866                &rshr zn=%zn_ax4 shift=%rshr_sb_shift
867@rshr_dh        ........ ... ..... ...... ..... zd:5        \
868                &rshr zn=%zn_ax4 shift=%rshr_dh_shift
869
870SQRSHR_sh       11000001 1110 .... 110101 ....0 .....       @rshr_sh
871UQRSHR_sh       11000001 1110 .... 110101 ....1 .....       @rshr_sh
872SQRSHRU_sh      11000001 1111 .... 110101 ....0 .....       @rshr_sh
873
874SQRSHR_sb       11000001 011 ..... 110110 ...00 .....       @rshr_sb
875SQRSHR_dh       11000001 1.1 ..... 110110 ...00 .....       @rshr_dh
876UQRSHR_sb       11000001 011 ..... 110110 ...01 .....       @rshr_sb
877UQRSHR_dh       11000001 1.1 ..... 110110 ...01 .....       @rshr_dh
878SQRSHRU_sb      11000001 011 ..... 110110 ...10 .....       @rshr_sb
879SQRSHRU_dh      11000001 1.1 ..... 110110 ...10 .....       @rshr_dh
880
881SQRSHRN_sh      01000101 1011 .... 001010 ....0 .....       @rshr_sh
882UQRSHRN_sh      01000101 1011 .... 001110 ....0 .....       @rshr_sh
883SQRSHRUN_sh     01000101 1011 .... 000010 ....0 .....       @rshr_sh
884
885SQRSHRN_sb      11000001 011 ..... 110111 ...00 .....       @rshr_sb
886SQRSHRN_dh      11000001 1.1 ..... 110111 ...00 .....       @rshr_dh
887UQRSHRN_sb      11000001 011 ..... 110111 ...01 .....       @rshr_sb
888UQRSHRN_dh      11000001 1.1 ..... 110111 ...01 .....       @rshr_dh
889SQRSHRUN_sb     11000001 011 ..... 110111 ...10 .....       @rshr_sb
890SQRSHRUN_dh     11000001 1.1 ..... 110111 ...10 .....       @rshr_dh
891
892&zzz_e          zd zn zm esz
893
894ZIP_2           11000001 esz:2 1 zm:5 110100 zn:5 .... 0    \
895                &zzz_e zd=%zd_ax2
896ZIP_2           11000001 00    1 zm:5 110101 zn:5 .... 0    \
897                &zzz_e zd=%zd_ax2 esz=4
898
899UZP_2           11000001 esz:2 1 zm:5 110100 zn:5 .... 1    \
900                &zzz_e zd=%zd_ax2
901UZP_2           11000001 00    1 zm:5 110101 zn:5 .... 1    \
902                &zzz_e zd=%zd_ax2 esz=4
903
904&zzz_en         zd zn zm esz n
905
906FCLAMP          11000001 esz:2 1 zm:5 110000 zn:5 .... 0    \
907                &zzz_en zd=%zd_ax2 n=2
908FCLAMP          11000001 esz:2 1 zm:5 110010 zn:5 ...0 0    \
909                &zzz_en zd=%zd_ax4 n=4
910
911SCLAMP          11000001 esz:2 1 zm:5 110001 zn:5 .... 0    \
912                &zzz_en zd=%zd_ax2 n=2
913SCLAMP          11000001 esz:2 1 zm:5 110011 zn:5 ...0 0    \
914                &zzz_en zd=%zd_ax4 n=4
915
916UCLAMP          11000001 esz:2 1 zm:5 110001 zn:5 .... 1    \
917                &zzz_en zd=%zd_ax2 n=2
918UCLAMP          11000001 esz:2 1 zm:5 110011 zn:5 ...0 1    \
919                &zzz_en zd=%zd_ax4 n=4
920
921### SME2 Multi-vector SVE Select
922
923%sel_pg         10:3 !function=plus_8
924
925SEL             11000001 esz:2 1 ....0 100 ... ....0 ....0  \
926                n=2 zd=%zd_ax2 zn=%zn_ax2 zm=%zm_ax2 pg=%sel_pg
927SEL             11000001 esz:2 1 ...01 100 ... ...00 ...00  \
928                n=4 zd=%zd_ax4 zn=%zn_ax4 zm=%zm_ax4 pg=%sel_pg
929
930### SME Multiple Zero
931
932&zero_za        rv off ngrp nvec
933
934ZERO_za         11000000 000011 000 .. 0000000000 off:3 \
935                &zero_za ngrp=2 nvec=1 rv=%mova_rv
936ZERO_za         11000000 000011 100 .. 0000000000 off:3 \
937                &zero_za ngrp=4 nvec=1 rv=%mova_rv
938
939ZERO_za         11000000 000011 001 .. 0000000000 ...   \
940                &zero_za ngrp=1 nvec=2 rv=%mova_rv off=%off3_x2
941ZERO_za         11000000 000011 010 .. 0000000000 0..   \
942                &zero_za ngrp=2 nvec=2 rv=%mova_rv off=%off2_x2
943ZERO_za         11000000 000011 011 .. 0000000000 0..   \
944                &zero_za ngrp=4 nvec=2 rv=%mova_rv off=%off2_x2
945
946ZERO_za         11000000 000011 101 .. 0000000000 0..   \
947                &zero_za ngrp=1 nvec=4 rv=%mova_rv off=%off2_x4
948ZERO_za         11000000 000011 110 .. 0000000000 00.   \
949                &zero_za ngrp=2 nvec=4 rv=%mova_rv off=%off1_x4
950ZERO_za         11000000 000011 111 .. 0000000000 00.   \
951                &zero_za ngrp=4 nvec=4 rv=%mova_rv off=%off1_x4
952
953### SME Lookup Table Read
954
955&lut            zd zn idx
956
957# LUTI2, consecutive
958LUTI2_c_1b      1100 0000 1100 11 idx:4    00 00 zn:5 zd:5      &lut
959LUTI2_c_1h      1100 0000 1100 11 idx:4    01 00 zn:5 zd:5      &lut
960LUTI2_c_1s      1100 0000 1100 11 idx:4    10 00 zn:5 zd:5      &lut
961
962LUTI2_c_2b      1100 0000 1000 11 idx:3  1 00 00 zn:5 .... 0    &lut zd=%zd_ax2
963LUTI2_c_2h      1100 0000 1000 11 idx:3  1 01 00 zn:5 .... 0    &lut zd=%zd_ax2
964LUTI2_c_2s      1100 0000 1000 11 idx:3  1 10 00 zn:5 .... 0    &lut zd=%zd_ax2
965
966LUTI2_c_4b      1100 0000 1000 11 idx:2 10 00 00 zn:5 ... 00    &lut zd=%zd_ax4
967LUTI2_c_4h      1100 0000 1000 11 idx:2 10 01 00 zn:5 ... 00    &lut zd=%zd_ax4
968LUTI2_c_4s      1100 0000 1000 11 idx:2 10 10 00 zn:5 ... 00    &lut zd=%zd_ax4
969
970# LUTI2, strided (must check zd alignment)
971LUTI2_s_2b      1100 0000 1001 11 idx:3  1 00 00 zn:5 zd:5      &lut
972LUTI2_s_2h      1100 0000 1001 11 idx:3  1 01 00 zn:5 zd:5      &lut
973
974LUTI2_s_4b      1100 0000 1001 11 idx:2 10 00 00 zn:5 zd:5      &lut
975LUTI2_s_4h      1100 0000 1001 11 idx:2 10 01 00 zn:5 zd:5      &lut
976
977# LUTI4, consecutive
978LUTI4_c_1b      1100 0000 1100 101 idx:3    00 00 zn:5 zd:5     &lut
979LUTI4_c_1h      1100 0000 1100 101 idx:3    01 00 zn:5 zd:5     &lut
980LUTI4_c_1s      1100 0000 1100 101 idx:3    10 00 zn:5 zd:5     &lut
981
982LUTI4_c_2b      1100 0000 1000 101 idx:2  1 00 00 zn:5 .... 0   &lut zd=%zd_ax2
983LUTI4_c_2h      1100 0000 1000 101 idx:2  1 01 00 zn:5 .... 0   &lut zd=%zd_ax2
984LUTI4_c_2s      1100 0000 1000 101 idx:2  1 10 00 zn:5 .... 0   &lut zd=%zd_ax2
985
986LUTI4_c_4h      1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00   &lut zd=%zd_ax4
987LUTI4_c_4s      1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00   &lut zd=%zd_ax4
988
989# LUTI4, strided (must check zd alignment)
990LUTI4_s_2b      1100 0000 1001 101 idx:2  1 00 00 zn:5 zd:5     &lut
991LUTI4_s_2h      1100 0000 1001 101 idx:2  1 01 00 zn:5 zd:5     &lut
992
993LUTI4_s_4h      1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5     &lut
994