master
decode 1,255 lines 60.1 KB
Raw
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
24 ZERO 11000000 00 001 00000000000 imm:8
25 ZERO_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
35 MOVA_tz 11000000 00 00000 0 v:1 .. pg:3 zr:5 0 off:4 \
36 &mova_p rs=%mova_rs esz=0 za=0
37 MOVA_tz 11000000 01 00000 0 v:1 .. pg:3 zr:5 0 za:1 off:3 \
38 &mova_p rs=%mova_rs esz=1
39 MOVA_tz 11000000 10 00000 0 v:1 .. pg:3 zr:5 0 za:2 off:2 \
40 &mova_p rs=%mova_rs esz=2
41 MOVA_tz 11000000 11 00000 0 v:1 .. pg:3 zr:5 0 za:3 off:1 \
42 &mova_p rs=%mova_rs esz=3
43 MOVA_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
46 MOVA_zt 11000000 00 00001 0 v:1 .. pg:3 0 off:4 zr:5 \
47 &mova_p rs=%mova_rs esz=0 za=0
48 MOVA_zt 11000000 01 00001 0 v:1 .. pg:3 0 za:1 off:3 zr:5 \
49 &mova_p rs=%mova_rs esz=1
50 MOVA_zt 11000000 10 00001 0 v:1 .. pg:3 0 za:2 off:2 zr:5 \
51 &mova_p rs=%mova_rs esz=2
52 MOVA_zt 11000000 11 00001 0 v:1 .. pg:3 0 za:3 off:1 zr:5 \
53 &mova_p rs=%mova_rs esz=3
54 MOVA_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
57 MOVA_tz2 11000000 00 00010 0 v:1 .. 000 zr:4 0 00 off:3 \
58 &mova_t rs=%mova_rs esz=0 za=0
59 MOVA_tz2 11000000 01 00010 0 v:1 .. 000 zr:4 0 00 za:1 off:2 \
60 &mova_t rs=%mova_rs esz=1
61 MOVA_tz2 11000000 10 00010 0 v:1 .. 000 zr:4 0 00 za:2 off:1 \
62 &mova_t rs=%mova_rs esz=2
63 MOVA_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
66 MOVA_zt2 11000000 00 00011 0 v:1 .. 000 00 off:3 zr:4 0 \
67 &mova_t rs=%mova_rs esz=0 za=0
68 MOVA_zt2 11000000 01 00011 0 v:1 .. 000 00 za:1 off:2 zr:4 0 \
69 &mova_t rs=%mova_rs esz=1
70 MOVA_zt2 11000000 10 00011 0 v:1 .. 000 00 za:2 off:1 zr:4 0 \
71 &mova_t rs=%mova_rs esz=2
72 MOVA_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
75 MOVA_tz4 11000000 00 00010 0 v:1 .. 001 zr:3 00 000 off:2 \
76 &mova_t rs=%mova_rs esz=0 za=0
77 MOVA_tz4 11000000 01 00010 0 v:1 .. 001 zr:3 00 000 za:1 off:1 \
78 &mova_t rs=%mova_rs esz=1
79 MOVA_tz4 11000000 10 00010 0 v:1 .. 001 zr:3 00 000 za:2 \
80 &mova_t rs=%mova_rs esz=2 off=0
81 MOVA_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
84 MOVA_zt4 11000000 00 00011 0 v:1 .. 001 000 off:2 zr:3 00 \
85 &mova_t rs=%mova_rs esz=0 za=0
86 MOVA_zt4 11000000 01 00011 0 v:1 .. 001 000 za:1 off:1 zr:3 00 \
87 &mova_t rs=%mova_rs esz=1
88 MOVA_zt4 11000000 10 00011 0 v:1 .. 001 000 za:2 zr:3 00 \
89 &mova_t rs=%mova_rs esz=2 off=0
90 MOVA_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
93 MOVA_az2 11000000 00 00010 00 .. 010 zr:4 000 off:3 \
94 &mova_a rv=%mova_rv
95 MOVA_az4 11000000 00 00010 00 .. 011 zr:3 0000 off:3 \
96 &mova_a rv=%mova_rv
97
98 MOVA_za2 11000000 00 00011 00 .. 010 00 off:3 zr:4 0 \
99 &mova_a rv=%mova_rv
100 MOVA_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
105 MOVAZ_za2 11000000 00000110 0 .. 01010 off:3 zr:4 0 \
106 &mova_a rv=%mova_rv
107 MOVAZ_za4 11000000 00000110 0 .. 01110 off:3 zr:3 00 \
108 &mova_a rv=%mova_rv
109
110 MOVAZ_zt 11000000 00 00001 0 v:1 .. 0001 off:4 zr:5 \
111 &mova_t rs=%mova_rs esz=0 za=0
112 MOVAZ_zt 11000000 01 00001 0 v:1 .. 0001 za:1 off:3 zr:5 \
113 &mova_t rs=%mova_rs esz=1
114 MOVAZ_zt 11000000 10 00001 0 v:1 .. 0001 za:2 off:2 zr:5 \
115 &mova_t rs=%mova_rs esz=2
116 MOVAZ_zt 11000000 11 00001 0 v:1 .. 0001 za:3 off:1 zr:5 \
117 &mova_t rs=%mova_rs esz=3
118 MOVAZ_zt 11000000 11 00001 1 v:1 .. 0001 za:4 zr:5 \
119 &mova_t rs=%mova_rs esz=4 off=0
120
121 MOVAZ_zt2 11000000 00 00011 0 v:1 .. 00010 off:3 zr:4 0 \
122 &mova_t rs=%mova_rs esz=0 za=0
123 MOVAZ_zt2 11000000 01 00011 0 v:1 .. 00010 za:1 off:2 zr:4 0 \
124 &mova_t rs=%mova_rs esz=1
125 MOVAZ_zt2 11000000 10 00011 0 v:1 .. 00010 za:2 off:1 zr:4 0 \
126 &mova_t rs=%mova_rs esz=2
127 MOVAZ_zt2 11000000 11 00011 0 v:1 .. 00010 za:3 zr:4 0 \
128 &mova_t rs=%mova_rs esz=3 off=0
129
130 MOVAZ_zt4 11000000 00 00011 0 v:1 .. 001100 off:2 zr:3 00 \
131 &mova_t rs=%mova_rs esz=0 za=0
132 MOVAZ_zt4 11000000 01 00011 0 v:1 .. 001100 za:1 off:1 zr:3 00 \
133 &mova_t rs=%mova_rs esz=1
134 MOVAZ_zt4 11000000 10 00011 0 v:1 .. 001100 za:2 zr:3 00 \
135 &mova_t rs=%mova_rs esz=2 off=0
136 MOVAZ_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
141 MOVT_rzt 1100 0000 0100 1100 0 off:3 00 11111 rt:5
142 MOVT_ztr 1100 0000 0100 1110 0 off:3 00 11111 rt:5
143
144 MOVT_ztz 1100 0000 0100 1111 00 off:2 00 11111 rt:5
145
146 ### SME Memory
147
148 &ldst esz rs pg rn rm za off v:bool st:bool
149
150 LDST1 1110000 0 00 st:1 rm:5 v:1 .. pg:3 rn:5 0 off:4 \
151 &ldst rs=%mova_rs esz=0 za=0
152 LDST1 1110000 0 01 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:1 off:3 \
153 &ldst rs=%mova_rs esz=1
154 LDST1 1110000 0 10 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:2 off:2 \
155 &ldst rs=%mova_rs esz=2
156 LDST1 1110000 0 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:3 off:1 \
157 &ldst rs=%mova_rs esz=3
158 LDST1 1110000 1 11 st:1 rm:5 v:1 .. pg:3 rn:5 0 za:4 \
159 &ldst rs=%mova_rs esz=4 off=0
160
161 &ldstr rv rn imm
162 @ldstr ....... ... . ...... .. ... rn:5 . imm:4 \
163 &ldstr rv=%mova_rs
164
165 LDR 1110000 100 0 000000 .. 000 ..... 0 .... @ldstr
166 STR 1110000 100 1 000000 .. 000 ..... 0 .... @ldstr
167
168 &ldstzt0 rn
169 @ldstzt0 ....... ... . ...... .. ... rn:5 ..... &ldstzt0
170
171 LDR_zt0 1110000 100 0 111111 00 000 ..... 00000 @ldstzt0
172 STR_zt0 1110000 100 1 111111 00 000 ..... 00000 @ldstzt0
173
174 ### SME Add Vector to Array
175
176 &adda zad zn pm pn
177 @adda_32 ........ .. ..... . pm:3 pn:3 zn:5 ... zad:2 &adda
178 @adda_64 ........ .. ..... . pm:3 pn:3 zn:5 .. zad:3 &adda
179
180 ADDHA_s 11000000 10 01000 0 ... ... ..... 000 .. @adda_32
181 ADDVA_s 11000000 10 01000 1 ... ... ..... 000 .. @adda_32
182 ADDHA_d 11000000 11 01000 0 ... ... ..... 00 ... @adda_64
183 ADDVA_d 11000000 11 01000 1 ... ... ..... 00 ... @adda_64
184
185 ### SME Outer Product
186
187 &op zad zn zm pm pn sub:bool
188 @op_16 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 ... zad:1 &op
189 @op_32 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 .. zad:2 &op
190 @op_64 ........ ... zm:5 pm:3 pn:3 zn:5 sub:1 . zad:3 &op
191
192 FMOPA_h 10000001 100 ..... ... ... ..... . 100 . @op_16
193 FMOPA_s 10000000 100 ..... ... ... ..... . 00 .. @op_32
194 FMOPA_d 10000000 110 ..... ... ... ..... . 0 ... @op_64
195
196 BFMOPA 10000001 101 ..... ... ... ..... . 100 . @op_16
197
198 BFMOPA_w 10000001 100 ..... ... ... ..... . 00 .. @op_32
199 FMOPA_w_h 10000001 101 ..... ... ... ..... . 00 .. @op_32
200
201 FMOPA_sb 10000000 101 zm:5 pm:3 pn:3 zn:5 0 00 zad:2 &op sub=0
202 FMOPA_hb 10000000 101 zm:5 pm:3 pn:3 zn:5 0100 zad:1 &op sub=0
203
204 SMOPA_s 1010000 0 10 0 ..... ... ... ..... . 00 .. @op_32
205 SUMOPA_s 1010000 0 10 1 ..... ... ... ..... . 00 .. @op_32
206 USMOPA_s 1010000 1 10 0 ..... ... ... ..... . 00 .. @op_32
207 UMOPA_s 1010000 1 10 1 ..... ... ... ..... . 00 .. @op_32
208
209 SMOPA_d 1010000 0 11 0 ..... ... ... ..... . 0 ... @op_64
210 SUMOPA_d 1010000 0 11 1 ..... ... ... ..... . 0 ... @op_64
211 USMOPA_d 1010000 1 11 0 ..... ... ... ..... . 0 ... @op_64
212 UMOPA_d 1010000 1 11 1 ..... ... ... ..... . 0 ... @op_64
213
214 BMOPA 1000000 0 10 0 ..... ... ... ..... . 10 .. @op_32
215 SMOPA2_s 1010000 0 10 0 ..... ... ... ..... . 10 .. @op_32
216 UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . 10 .. @op_32
217
218 ### SME2 Multi-vector Multiple and Single SVE Destructive
219
220 %zd_ax2 1:4 !function=times_2
221 %zd_ax4 2:3 !function=times_4
222 %zn_ax2 6:4 !function=times_2
223 %zn_ax4 7:3 !function=times_4
224
225 &zzz_en zd zn zm esz n
226
227 @z2z_2x1 ....... . esz:2 .. zm:4 ....0. ..... .... . \
228 &zzz_en n=2 zd=%zd_ax2 zn=%zd_ax2
229 @z2z_4x1 ....... . esz:2 .. zm:4 ....1. ..... ...0 . \
230 &zzz_en n=4 zd=%zd_ax4 zn=%zd_ax4
231
232 @z2z_2x1_e0 ....... . .. .. zm:4 ....0. ..... .... . \
233 &zzz_en esz=0 n=2 zd=%zd_ax2 zn=%zd_ax2
234 @z2z_4x1_e0 ....... . .. .. zm:4 ....1. ..... ...0 . \
235 &zzz_en esz=0 n=4 zd=%zd_ax4 zn=%zd_ax4
236
237 SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_2x1
238 SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_4x1
239 UMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 1 @z2z_2x1
240 UMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 1 @z2z_4x1
241 SMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 0 @z2z_2x1
242 SMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 0 @z2z_4x1
243 UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_2x1
244 UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_4x1
245
246 {
247 BFMAX_n1 1100000 1 00 10 .... 1010.0 01000 .... 0 @z2z_2x1_e0
248 FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_2x1
249 }
250 {
251 BFMAX_n1 1100000 1 00 10 .... 1010.0 01000 .... 0 @z2z_4x1_e0
252 FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_4x1
253 }
254 {
255 BFMIN_n1 1100000 1 00 10 .... 1010.0 01000 .... 1 @z2z_2x1_e0
256 FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_2x1
257 }
258 {
259 BFMIN_n1 1100000 1 00 10 .... 1010.0 01000 .... 1 @z2z_4x1_e0
260 FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_4x1
261 }
262 {
263 BFMAXNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 0 @z2z_2x1_e0
264 FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_2x1
265 }
266 {
267 BFMAXNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 0 @z2z_4x1_e0
268 FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_4x1
269 }
270 {
271 BFMINNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 1 @z2z_2x1_e0
272 FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_2x1
273 }
274 {
275 BFMINNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 1 @z2z_4x1_e0
276 FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_4x1
277 }
278
279 SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_2x1
280 SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_4x1
281 URSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 1 @z2z_2x1
282 URSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 1 @z2z_4x1
283
284 ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0 @z2z_2x1
285 ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0 @z2z_4x1
286
287 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_2x1
288 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_4x1
289
290 {
291 BFSCALE_n1 1100000 1 00 10 .... 1010.0 01100 .... 0 @z2z_2x1_e0
292 FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_2x1
293 }
294 {
295 BFSCALE_n1 1100000 1 00 10 .... 1010.0 01100 .... 0 @z2z_4x1_e0
296 FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_4x1
297 }
298
299 {
300 BFMUL_n1 1100000 1 00 1 zm:4 0 111010 ....0 ....0 \
301 &zzz_en n=2 zd=%zd_ax2 zn=%zn_ax2 esz=0
302 FMUL_n1 1100000 1 esz:2 1 zm:4 0 111010 ....0 ....0 \
303 &zzz_en n=2 zd=%zd_ax2 zn=%zn_ax2
304 }
305 {
306 BFMUL_n1 1100000 1 00 1 zm:4 1 111010 ...00 ...00 \
307 &zzz_en n=4 zd=%zd_ax4 zn=%zn_ax4 esz=0
308 FMUL_n1 1100000 1 esz:2 1 zm:4 1 111010 ...00 ...00 \
309 &zzz_en n=4 zd=%zd_ax4 zn=%zn_ax4
310 }
311
312 ### SME2 Multi-vector Multiple Vectors SVE Destructive
313
314 %zm_ax2 17:4 !function=times_2
315 %zm_ax4 18:3 !function=times_4
316
317 @z2z_2x2 ....... . esz:2 . ....0 ....0. ..... .... . \
318 &zzz_en n=2 zd=%zd_ax2 zn=%zd_ax2 zm=%zm_ax2
319 @z2z_4x4 ....... . esz:2 . ...00 ....1. ..... ...0 . \
320 &zzz_en n=4 zd=%zd_ax4 zn=%zd_ax4 zm=%zm_ax4
321
322 @z2z_2x2_e0 ....... . .. . ....0 ....0. ..... .... . \
323 &zzz_en esz=0 n=2 zd=%zd_ax2 zn=%zd_ax2 zm=%zm_ax2
324 @z2z_4x4_e0 ....... . .. . ...00 ....1. ..... ...0 . \
325 &zzz_en esz=0 n=4 zd=%zd_ax4 zn=%zd_ax4 zm=%zm_ax4
326
327 SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_2x2
328 SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_4x4
329 UMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 1 @z2z_2x2
330 UMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 1 @z2z_4x4
331 SMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 0 @z2z_2x2
332 SMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 0 @z2z_4x4
333 UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_2x2
334 UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_4x4
335
336 {
337 BFMAX_nn 1100000 1 00 1 ..... 1011.0 01000 .... 0 @z2z_2x2_e0
338 FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_2x2
339 }
340 {
341 BFMAX_nn 1100000 1 00 1 ..... 1011.0 01000 .... 0 @z2z_4x4_e0
342 FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_4x4
343 }
344 {
345 BFMIN_nn 1100000 1 00 1 ..... 1011.0 01000 .... 1 @z2z_2x2_e0
346 FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_2x2
347 }
348 {
349 BFMIN_nn 1100000 1 00 1 ..... 1011.0 01000 .... 1 @z2z_4x4_e0
350 FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_4x4
351 }
352 {
353 BFMAXNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 0 @z2z_2x2_e0
354 FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_2x2
355 }
356 {
357 BFMAXNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 0 @z2z_4x4_e0
358 FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_4x4
359 }
360 {
361 BFMINNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 1 @z2z_2x2_e0
362 FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_2x2
363 }
364 {
365 BFMINNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 1 @z2z_4x4_e0
366 FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_4x4
367 }
368
369 SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_2x2
370 SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_4x4
371 URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 1 @z2z_2x2
372 URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 1 @z2z_4x4
373
374 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_2x2
375 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_4x4
376
377 FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_2x2
378 FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_4x4
379 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_2x2
380 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_4x4
381
382 {
383 BFSCALE_nn 1100000 1 00 1 ..... 1011.0 01100 .... 0 @z2z_2x2_e0
384 FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_2x2
385 }
386 {
387 BFSCALE_nn 1100000 1 00 1 ..... 1011.0 01100 .... 0 @z2z_4x4_e0
388 FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_4x4
389 }
390
391 {
392 BFMUL_nn 1100000 1 00 1 ....0 111001 ....0 ....0 \
393 &zzz_en n=2 zd=%zd_ax2 zn=%zn_ax2 zm=%zm_ax2 esz=0
394 FMUL_nn 1100000 1 esz:2 1 ....0 111001 ....0 ....0 \
395 &zzz_en n=2 zd=%zd_ax2 zn=%zn_ax2 zm=%zm_ax2
396 }
397 {
398 BFMUL_nn 1100000 1 00 1 ...01 111001 ...00 ...00 \
399 &zzz_en n=4 zd=%zd_ax4 zn=%zn_ax4 zm=%zm_ax4 esz=0
400 FMUL_nn 1100000 1 esz:2 1 ...01 111001 ...00 ...00 \
401 &zzz_en n=4 zd=%zd_ax4 zn=%zn_ax4 zm=%zm_ax4
402 }
403
404 ### SME2 Multi-vector Multiple and Single Array Vectors
405
406 &azz_n n off rv zn zm
407 @azz_nx1_o3 ........ .... zm:4 ...... zn:5 .. off:3 &azz_n rv=%mova_rv
408
409 ADD_azz_n1_s 11000001 0010 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=2
410 ADD_azz_n1_s 11000001 0011 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=4
411 ADD_azz_n1_d 11000001 0110 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=2
412 ADD_azz_n1_d 11000001 0111 .... 0 .. 110 ..... 10 ... @azz_nx1_o3 n=4
413
414 SUB_azz_n1_s 11000001 0010 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=2
415 SUB_azz_n1_s 11000001 0011 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=4
416 SUB_azz_n1_d 11000001 0110 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=2
417 SUB_azz_n1_d 11000001 0111 .... 0 .. 110 ..... 11 ... @azz_nx1_o3 n=4
418
419 %off3_x2 0:3 !function=times_2
420 %off2_x2 0:2 !function=times_2
421
422 @azz_nx1_o3x2 ........ ... . zm:4 . .. ... zn:5 .. ... \
423 &azz_n off=%off3_x2 rv=%mova_rv
424 @azz_nx1_o2x2 ........ ... . zm:4 . .. ... zn:5 ... .. \
425 &azz_n off=%off2_x2 rv=%mova_rv
426
427 FMLAL_n1_sh 11000001 001 0 .... 0 .. 011 ..... 00 ... @azz_nx1_o3x2 n=1
428 FMLAL_n1_sh 11000001 001 0 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=2
429 FMLAL_n1_sh 11000001 001 1 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=4
430
431 FMLSL_n1_sh 11000001 001 0 .... 0 .. 011 ..... 01 ... @azz_nx1_o3x2 n=1
432 FMLSL_n1_sh 11000001 001 0 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=2
433 FMLSL_n1_sh 11000001 001 1 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=4
434
435 BFMLAL_n1 11000001 001 0 .... 0 .. 011 ..... 10 ... @azz_nx1_o3x2 n=1
436 BFMLAL_n1 11000001 001 0 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=2
437 BFMLAL_n1 11000001 001 1 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=4
438
439 BFMLSL_n1 11000001 001 0 .... 0 .. 011 ..... 11 ... @azz_nx1_o3x2 n=1
440 BFMLSL_n1 11000001 001 0 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=2
441 BFMLSL_n1 11000001 001 1 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=4
442
443 FDOT_n1 11000001 001 0 .... 0 .. 100 ..... 00 ... @azz_nx1_o3 n=2
444 FDOT_n1 11000001 001 1 .... 0 .. 100 ..... 00 ... @azz_nx1_o3 n=4
445
446 BFDOT_n1 11000001 001 0 .... 0 .. 100 ..... 10 ... @azz_nx1_o3 n=2
447 BFDOT_n1 11000001 001 1 .... 0 .. 100 ..... 10 ... @azz_nx1_o3 n=4
448
449 USDOT_n1 11000001 001 0 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=2
450 USDOT_n1 11000001 001 1 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=4
451
452 SUDOT_n1 11000001 001 0 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=2
453 SUDOT_n1 11000001 001 1 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=4
454
455 SDOT_n1_4b 11000001 001 0 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=2
456 SDOT_n1_4b 11000001 001 1 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=4
457 SDOT_n1_4h 11000001 011 0 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=2
458 SDOT_n1_4h 11000001 011 1 .... 0 .. 101 ..... 00 ... @azz_nx1_o3 n=4
459 SDOT_n1_2h 11000001 011 0 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=2
460 SDOT_n1_2h 11000001 011 1 .... 0 .. 101 ..... 01 ... @azz_nx1_o3 n=4
461
462 UDOT_n1_4b 11000001 001 0 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=2
463 UDOT_n1_4b 11000001 001 1 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=4
464 UDOT_n1_4h 11000001 011 0 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=2
465 UDOT_n1_4h 11000001 011 1 .... 0 .. 101 ..... 10 ... @azz_nx1_o3 n=4
466 UDOT_n1_2h 11000001 011 0 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=2
467 UDOT_n1_2h 11000001 011 1 .... 0 .. 101 ..... 11 ... @azz_nx1_o3 n=4
468
469 SMLAL_n1 11000001 011 0 .... 0 .. 011 ..... 00 ... @azz_nx1_o3x2 n=1
470 SMLAL_n1 11000001 011 0 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=2
471 SMLAL_n1 11000001 011 1 .... 0 .. 010 ..... 000 .. @azz_nx1_o2x2 n=4
472
473 SMLSL_n1 11000001 011 0 .... 0 .. 011 ..... 01 ... @azz_nx1_o3x2 n=1
474 SMLSL_n1 11000001 011 0 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=2
475 SMLSL_n1 11000001 011 1 .... 0 .. 010 ..... 010 .. @azz_nx1_o2x2 n=4
476
477 UMLAL_n1 11000001 011 0 .... 0 .. 011 ..... 10 ... @azz_nx1_o3x2 n=1
478 UMLAL_n1 11000001 011 0 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=2
479 UMLAL_n1 11000001 011 1 .... 0 .. 010 ..... 100 .. @azz_nx1_o2x2 n=4
480
481 UMLSL_n1 11000001 011 0 .... 0 .. 011 ..... 11 ... @azz_nx1_o3x2 n=1
482 UMLSL_n1 11000001 011 0 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=2
483 UMLSL_n1 11000001 011 1 .... 0 .. 010 ..... 110 .. @azz_nx1_o2x2 n=4
484
485 %off2_x4 0:2 !function=times_4
486 %off1_x4 0:1 !function=times_4
487
488 @azz_nx1_o2x4 ........ ... . zm:4 . .. ... zn:5 ... .. \
489 &azz_n off=%off2_x4 rv=%mova_rv
490 @azz_nx1_o1x4 ........ ... . zm:4 . .. ... zn:5 .... . \
491 &azz_n off=%off1_x4 rv=%mova_rv
492
493 SMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 000 .. @azz_nx1_o2x4 n=1
494 SMLALL_n1_d 11000001 011 0 .... 0 .. 001 ..... 000 .. @azz_nx1_o2x4 n=1
495 SMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=2
496 SMLALL_n1_d 11000001 011 0 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=2
497 SMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=4
498 SMLALL_n1_d 11000001 011 1 .... 0 .. 000 ..... 0000 . @azz_nx1_o1x4 n=4
499
500 SMLSLL_n1_s 11000001 001 0 .... 0 .. 001 ..... 010 .. @azz_nx1_o2x4 n=1
501 SMLSLL_n1_d 11000001 011 0 .... 0 .. 001 ..... 010 .. @azz_nx1_o2x4 n=1
502 SMLSLL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=2
503 SMLSLL_n1_d 11000001 011 0 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=2
504 SMLSLL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=4
505 SMLSLL_n1_d 11000001 011 1 .... 0 .. 000 ..... 0100 . @azz_nx1_o1x4 n=4
506
507 UMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 100 .. @azz_nx1_o2x4 n=1
508 UMLALL_n1_d 11000001 011 0 .... 0 .. 001 ..... 100 .. @azz_nx1_o2x4 n=1
509 UMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=2
510 UMLALL_n1_d 11000001 011 0 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=2
511 UMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=4
512 UMLALL_n1_d 11000001 011 1 .... 0 .. 000 ..... 1000 . @azz_nx1_o1x4 n=4
513
514 UMLSLL_n1_s 11000001 001 0 .... 0 .. 001 ..... 110 .. @azz_nx1_o2x4 n=1
515 UMLSLL_n1_d 11000001 011 0 .... 0 .. 001 ..... 110 .. @azz_nx1_o2x4 n=1
516 UMLSLL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=2
517 UMLSLL_n1_d 11000001 011 0 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=2
518 UMLSLL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=4
519 UMLSLL_n1_d 11000001 011 1 .... 0 .. 000 ..... 1100 . @azz_nx1_o1x4 n=4
520
521 USMLALL_n1_s 11000001 001 0 .... 0 .. 001 ..... 001 .. @azz_nx1_o2x4 n=1
522 USMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 0010 . @azz_nx1_o1x4 n=2
523 USMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 0010 . @azz_nx1_o1x4 n=4
524
525 SUMLALL_n1_s 11000001 001 0 .... 0 .. 000 ..... 1010 . @azz_nx1_o1x4 n=2
526 SUMLALL_n1_s 11000001 001 1 .... 0 .. 000 ..... 1010 . @azz_nx1_o1x4 n=4
527
528 BFMLA_n1 11000001 011 0 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=2
529 FMLA_n1_h 11000001 001 0 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=2
530 FMLA_n1_s 11000001 001 0 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=2
531 FMLA_n1_d 11000001 011 0 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=2
532
533 BFMLA_n1 11000001 011 1 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=4
534 FMLA_n1_h 11000001 001 1 .... 0 .. 111 ..... 00 ... @azz_nx1_o3 n=4
535 FMLA_n1_s 11000001 001 1 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=4
536 FMLA_n1_d 11000001 011 1 .... 0 .. 110 ..... 00 ... @azz_nx1_o3 n=4
537
538 BFMLS_n1 11000001 011 0 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=2
539 FMLS_n1_h 11000001 001 0 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=2
540 FMLS_n1_s 11000001 001 0 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=2
541 FMLS_n1_d 11000001 011 0 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=2
542
543 BFMLS_n1 11000001 011 1 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=4
544 FMLS_n1_h 11000001 001 1 .... 0 .. 111 ..... 01 ... @azz_nx1_o3 n=4
545 FMLS_n1_s 11000001 001 1 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=4
546 FMLS_n1_d 11000001 011 1 .... 0 .. 110 ..... 01 ... @azz_nx1_o3 n=4
547
548 FMLALL_n1_b 11000001 001 1 .... 0 .. 001 ..... 000 .. @azz_nx1_o2x4 n=1
549 FMLALL_n1_b 11000001 001 0 .... 0 .. 000 ..... 0001 . @azz_nx1_o1x4 n=2
550 FMLALL_n1_b 11000001 001 1 .... 0 .. 000 ..... 0001 . @azz_nx1_o1x4 n=4
551
552 FDOT_n1_sb 11000001 001 0 .... 0 .. 100 ..... 11 ... @azz_nx1_o3 n=2
553 FDOT_n1_sb 11000001 001 1 .... 0 .. 100 ..... 11 ... @azz_nx1_o3 n=4
554
555 FMLAL_n1_hb 11000001 001 1 .... 0 .. 011 ..... 00 ... @azz_nx1_o3x2 n=1
556 FMLAL_n1_hb 11000001 001 0 .... 0 .. 010 ..... 001 .. @azz_nx1_o2x2 n=2
557 FMLAL_n1_hb 11000001 001 1 .... 0 .. 010 ..... 001 .. @azz_nx1_o2x2 n=4
558
559 FDOT_n1_hb 11000001 001 0 .... 0 .. 100 ..... 01 ... @azz_nx1_o3 n=2
560 FDOT_n1_hb 11000001 001 1 .... 0 .. 100 ..... 01 ... @azz_nx1_o3 n=4
561
562 ### SME2 Multi-vector Multiple Array Vectors
563
564 @azz_2x2_o3 ........ ... ..... . .. ... ..... .. off:3 \
565 &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2
566 @azz_4x4_o3 ........ ... ..... . .. ... ..... .. off:3 \
567 &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4
568
569 ADD_azz_nn_s 11000001 101 ....0 0 .. 110 ....0 10 ... @azz_2x2_o3
570 ADD_azz_nn_s 11000001 101 ...01 0 .. 110 ...00 10 ... @azz_4x4_o3
571 ADD_azz_nn_d 11000001 111 ....0 0 .. 110 ....0 10 ... @azz_2x2_o3
572 ADD_azz_nn_d 11000001 111 ...01 0 .. 110 ...00 10 ... @azz_4x4_o3
573
574 SUB_azz_nn_s 11000001 101 ....0 0 .. 110 ....0 11 ... @azz_2x2_o3
575 SUB_azz_nn_s 11000001 101 ...01 0 .. 110 ...00 11 ... @azz_4x4_o3
576 SUB_azz_nn_d 11000001 111 ....0 0 .. 110 ....0 11 ... @azz_2x2_o3
577 SUB_azz_nn_d 11000001 111 ...01 0 .. 110 ...00 11 ... @azz_4x4_o3
578
579 @azz_2x2_o2x2 ........ ... ..... . .. ... ..... ... .. \
580 &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off2_x2
581 @azz_4x4_o2x2 ........ ... ..... . .. ... ..... ... .. \
582 &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off2_x2
583
584 FMLAL_nn_sh 11000001 101 ....0 0 .. 010 ....0 000 .. @azz_2x2_o2x2
585 FMLAL_nn_sh 11000001 101 ...01 0 .. 010 ...00 000 .. @azz_4x4_o2x2
586
587 FMLSL_nn_sh 11000001 101 ....0 0 .. 010 ....0 010 .. @azz_2x2_o2x2
588 FMLSL_nn_sh 11000001 101 ...01 0 .. 010 ...00 010 .. @azz_4x4_o2x2
589
590 BFMLAL_nn 11000001 101 ....0 0 .. 010 ....0 100 .. @azz_2x2_o2x2
591 BFMLAL_nn 11000001 101 ...01 0 .. 010 ...00 100 .. @azz_4x4_o2x2
592
593 BFMLSL_nn 11000001 101 ....0 0 .. 010 ....0 110 .. @azz_2x2_o2x2
594 BFMLSL_nn 11000001 101 ...01 0 .. 010 ...00 110 .. @azz_4x4_o2x2
595
596 FDOT_nn 11000001 101 ....0 0 .. 100 ....0 00 ... @azz_2x2_o3
597 FDOT_nn 11000001 101 ...01 0 .. 100 ...00 00 ... @azz_4x4_o3
598
599 BFDOT_nn 11000001 101 ....0 0 .. 100 ....0 10 ... @azz_2x2_o3
600 BFDOT_nn 11000001 101 ...01 0 .. 100 ...00 10 ... @azz_4x4_o3
601
602 USDOT_nn 11000001 101 ....0 0 .. 101 ....0 01 ... @azz_2x2_o3
603 USDOT_nn 11000001 101 ...01 0 .. 101 ...00 01 ... @azz_4x4_o3
604
605 SDOT_nn_4b 11000001 101 ....0 0 .. 101 ....0 00 ... @azz_2x2_o3
606 SDOT_nn_4b 11000001 101 ...01 0 .. 101 ...00 00 ... @azz_4x4_o3
607 SDOT_nn_4h 11000001 111 ....0 0 .. 101 ....0 00 ... @azz_2x2_o3
608 SDOT_nn_4h 11000001 111 ...01 0 .. 101 ...00 00 ... @azz_4x4_o3
609 SDOT_nn_2h 11000001 111 ....0 0 .. 101 ....0 01 ... @azz_2x2_o3
610 SDOT_nn_2h 11000001 111 ...01 0 .. 101 ...00 01 ... @azz_4x4_o3
611
612 UDOT_nn_4b 11000001 101 ....0 0 .. 101 ....0 10 ... @azz_2x2_o3
613 UDOT_nn_4b 11000001 101 ...01 0 .. 101 ...00 10 ... @azz_4x4_o3
614 UDOT_nn_4h 11000001 111 ....0 0 .. 101 ....0 10 ... @azz_2x2_o3
615 UDOT_nn_4h 11000001 111 ...01 0 .. 101 ...00 10 ... @azz_4x4_o3
616 UDOT_nn_2h 11000001 111 ....0 0 .. 101 ....0 11 ... @azz_2x2_o3
617 UDOT_nn_2h 11000001 111 ...01 0 .. 101 ...00 11 ... @azz_4x4_o3
618
619 SMLAL_nn 11000001 111 ....0 0 .. 010 ....0 000 .. @azz_2x2_o2x2
620 SMLAL_nn 11000001 111 ...01 0 .. 010 ...00 000 .. @azz_4x4_o2x2
621
622 SMLSL_nn 11000001 111 ....0 0 .. 010 ....0 010 .. @azz_2x2_o2x2
623 SMLSL_nn 11000001 111 ...01 0 .. 010 ...00 010 .. @azz_4x4_o2x2
624
625 UMLAL_nn 11000001 111 ....0 0 .. 010 ....0 100 .. @azz_2x2_o2x2
626 UMLAL_nn 11000001 111 ...01 0 .. 010 ...00 100 .. @azz_4x4_o2x2
627
628 UMLSL_nn 11000001 111 ....0 0 .. 010 ....0 110 .. @azz_2x2_o2x2
629 UMLSL_nn 11000001 111 ...01 0 .. 010 ...00 110 .. @azz_4x4_o2x2
630
631 @azz_2x2_o1x4 ........ ... ..... . .. ... ..... ... .. \
632 &azz_n n=2 rv=%mova_rv zn=%zn_ax2 zm=%zm_ax2 off=%off1_x4
633 @azz_4x4_o1x4 ........ ... ..... . .. ... ..... ... .. \
634 &azz_n n=4 rv=%mova_rv zn=%zn_ax4 zm=%zm_ax4 off=%off1_x4
635
636 SMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 0000 . @azz_2x2_o1x4
637 SMLALL_nn_d 11000001 111 ....0 0 .. 000 ....0 0000 . @azz_2x2_o1x4
638 SMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 0000 . @azz_4x4_o1x4
639 SMLALL_nn_d 11000001 111 ...01 0 .. 000 ...00 0000 . @azz_4x4_o1x4
640
641 SMLSLL_nn_s 11000001 101 ....0 0 .. 000 ....0 0100 . @azz_2x2_o1x4
642 SMLSLL_nn_d 11000001 111 ....0 0 .. 000 ....0 0100 . @azz_2x2_o1x4
643 SMLSLL_nn_s 11000001 101 ...01 0 .. 000 ...00 0100 . @azz_4x4_o1x4
644 SMLSLL_nn_d 11000001 111 ...01 0 .. 000 ...00 0100 . @azz_4x4_o1x4
645
646 UMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 1000 . @azz_2x2_o1x4
647 UMLALL_nn_d 11000001 111 ....0 0 .. 000 ....0 1000 . @azz_2x2_o1x4
648 UMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 1000 . @azz_4x4_o1x4
649 UMLALL_nn_d 11000001 111 ...01 0 .. 000 ...00 1000 . @azz_4x4_o1x4
650
651 UMLSLL_nn_s 11000001 101 ....0 0 .. 000 ....0 1100 . @azz_2x2_o1x4
652 UMLSLL_nn_d 11000001 111 ....0 0 .. 000 ....0 1100 . @azz_2x2_o1x4
653 UMLSLL_nn_s 11000001 101 ...01 0 .. 000 ...00 1100 . @azz_4x4_o1x4
654 UMLSLL_nn_d 11000001 111 ...01 0 .. 000 ...00 1100 . @azz_4x4_o1x4
655
656 USMLALL_nn_s 11000001 101 ....0 0 .. 000 ....0 0010 . @azz_2x2_o1x4
657 USMLALL_nn_s 11000001 101 ...01 0 .. 000 ...00 0010 . @azz_4x4_o1x4
658
659 BFMLA_nn 11000001 111 ....0 0 .. 100 ....0 01 ... @azz_2x2_o3
660 FMLA_nn_h 11000001 101 ....0 0 .. 100 ....0 01 ... @azz_2x2_o3
661 FMLA_nn_s 11000001 101 ....0 0 .. 110 ....0 00 ... @azz_2x2_o3
662 FMLA_nn_d 11000001 111 ....0 0 .. 110 ....0 00 ... @azz_2x2_o3
663
664 BFMLA_nn 11000001 111 ...01 0 .. 100 ...00 01 ... @azz_4x4_o3
665 FMLA_nn_h 11000001 101 ...01 0 .. 100 ...00 01 ... @azz_4x4_o3
666 FMLA_nn_s 11000001 101 ...01 0 .. 110 ...00 00 ... @azz_4x4_o3
667 FMLA_nn_d 11000001 111 ...01 0 .. 110 ...00 00 ... @azz_4x4_o3
668
669 BFMLS_nn 11000001 111 ....0 0 .. 100 ....0 11 ... @azz_2x2_o3
670 FMLS_nn_h 11000001 101 ....0 0 .. 100 ....0 11 ... @azz_2x2_o3
671 FMLS_nn_s 11000001 101 ....0 0 .. 110 ....0 01 ... @azz_2x2_o3
672 FMLS_nn_d 11000001 111 ....0 0 .. 110 ....0 01 ... @azz_2x2_o3
673
674 BFMLS_nn 11000001 111 ...01 0 .. 100 ...00 11 ... @azz_4x4_o3
675 FMLS_nn_h 11000001 101 ...01 0 .. 100 ...00 11 ... @azz_4x4_o3
676 FMLS_nn_s 11000001 101 ...01 0 .. 110 ...00 01 ... @azz_4x4_o3
677 FMLS_nn_d 11000001 111 ...01 0 .. 110 ...00 01 ... @azz_4x4_o3
678
679 FMLALL_nn_b 11000001 101 ....0 0 .. 000 ....1 0000 . @azz_2x2_o1x4
680 FMLALL_nn_b 11000001 101 ...01 0 .. 000 ...01 0000 . @azz_4x4_o1x4
681
682 FDOT_nn_sb 11000001 101 ....0 0 .. 100 ....1 10 ... @azz_2x2_o3
683 FDOT_nn_sb 11000001 101 ...01 0 .. 100 ...01 10 ... @azz_4x4_o3
684
685 FMLAL_nn_hb 11000001 101 ....0 0 .. 010 ....1 000 .. @azz_2x2_o2x2
686 FMLAL_nn_hb 11000001 101 ...01 0 .. 010 ...01 000 .. @azz_4x4_o2x2
687
688 FDOT_nn_hb 11000001 101 ....0 0 .. 100 ....1 00 ... @azz_2x2_o3
689 FDOT_nn_hb 11000001 101 ...01 0 .. 100 ...01 00 ... @azz_4x4_o3
690
691 &az_n n off rv zm
692 @az_2x2_o3 ........ ... ..... . .. ... ..... .. off:3 \
693 &az_n n=2 rv=%mova_rv zm=%zn_ax2
694 @az_4x4_o3 ........ ... ..... . .. ... ..... .. off:3 \
695 &az_n n=4 rv=%mova_rv zm=%zn_ax4
696
697 FADD_nn_h 11000001 101 00100 0 .. 111 ....0 00 ... @az_2x2_o3
698 FADD_nn_s 11000001 101 00000 0 .. 111 ....0 00 ... @az_2x2_o3
699 FADD_nn_d 11000001 111 00000 0 .. 111 ....0 00 ... @az_2x2_o3
700 FADD_nn_h 11000001 101 00101 0 .. 111 ...00 00 ... @az_4x4_o3
701 FADD_nn_s 11000001 101 00001 0 .. 111 ...00 00 ... @az_4x4_o3
702 FADD_nn_d 11000001 111 00001 0 .. 111 ...00 00 ... @az_4x4_o3
703
704 FSUB_nn_h 11000001 101 00100 0 .. 111 ....0 01 ... @az_2x2_o3
705 FSUB_nn_s 11000001 101 00000 0 .. 111 ....0 01 ... @az_2x2_o3
706 FSUB_nn_d 11000001 111 00000 0 .. 111 ....0 01 ... @az_2x2_o3
707 FSUB_nn_h 11000001 101 00101 0 .. 111 ...00 01 ... @az_4x4_o3
708 FSUB_nn_s 11000001 101 00001 0 .. 111 ...00 01 ... @az_4x4_o3
709 FSUB_nn_d 11000001 111 00001 0 .. 111 ...00 01 ... @az_4x4_o3
710
711 BFADD_nn 11000001 111 00100 0 .. 111 ....0 00 ... @az_2x2_o3
712 BFADD_nn 11000001 111 00101 0 .. 111 ...00 00 ... @az_4x4_o3
713 BFSUB_nn 11000001 111 00100 0 .. 111 ....0 01 ... @az_2x2_o3
714 BFSUB_nn 11000001 111 00101 0 .. 111 ...00 01 ... @az_4x4_o3
715
716 ### SME2 Multi-vector Indexed
717
718 &azx_n n off rv zn zm idx
719
720 %idx3_15_10 15:1 10:2
721 %idx2_10_2 10:2 2:1
722
723 @azx_1x1_o3x2 ........ .... zm:4 . .. . .. zn:5 .. ... \
724 &azx_n n=1 rv=%mova_rv off=%off3_x2 idx=%idx3_15_10
725 @azx_2x1_o2x2 ........ .... zm:4 . .. . .. ..... .. ... \
726 &azx_n n=2 rv=%mova_rv off=%off2_x2 zn=%zn_ax2 idx=%idx2_10_2
727 @azx_4x1_o2x2 ........ .... zm:4 . .. . .. ..... .. ... \
728 &azx_n n=4 rv=%mova_rv off=%off2_x2 zn=%zn_ax4 idx=%idx2_10_2
729
730 FMLAL_nx_sh 11000001 1000 .... . .. 1 .. ..... 00 ... @azx_1x1_o3x2
731 FMLAL_nx_sh 11000001 1001 .... 0 .. 1 .. ....0 00 ... @azx_2x1_o2x2
732 FMLAL_nx_sh 11000001 1001 .... 1 .. 1 .. ...00 00 ... @azx_4x1_o2x2
733
734 FMLSL_nx_sh 11000001 1000 .... . .. 1 .. ..... 01 ... @azx_1x1_o3x2
735 FMLSL_nx_sh 11000001 1001 .... 0 .. 1 .. ....0 01 ... @azx_2x1_o2x2
736 FMLSL_nx_sh 11000001 1001 .... 1 .. 1 .. ...00 01 ... @azx_4x1_o2x2
737
738 BFMLAL_nx 11000001 1000 .... . .. 1 .. ..... 10 ... @azx_1x1_o3x2
739 BFMLAL_nx 11000001 1001 .... 0 .. 1 .. ....0 10 ... @azx_2x1_o2x2
740 BFMLAL_nx 11000001 1001 .... 1 .. 1 .. ...00 10 ... @azx_4x1_o2x2
741
742 BFMLSL_nx 11000001 1000 .... . .. 1 .. ..... 11 ... @azx_1x1_o3x2
743 BFMLSL_nx 11000001 1001 .... 0 .. 1 .. ....0 11 ... @azx_2x1_o2x2
744 BFMLSL_nx 11000001 1001 .... 1 .. 1 .. ...00 11 ... @azx_4x1_o2x2
745
746 @azx_2x1_i2_o3 ........ .... zm:4 . .. . idx:2 .... ... off:3 \
747 &azx_n n=2 rv=%mova_rv zn=%zn_ax2
748 @azx_4x1_i2_o3 ........ .... zm:4 . .. . idx:2 .... ... off:3 \
749 &azx_n n=4 rv=%mova_rv zn=%zn_ax4
750 @azx_2x1_i1_o3 ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
751 &azx_n n=2 rv=%mova_rv zn=%zn_ax2
752 @azx_4x1_i1_o3 ........ .... zm:4 . .. .. idx:1 .... ... off:3 \
753 &azx_n n=4 rv=%mova_rv zn=%zn_ax4
754
755 FDOT_nx 11000001 0101 .... 0 .. 1 .. ....0 01 ... @azx_2x1_i2_o3
756 FDOT_nx 11000001 0101 .... 1 .. 1 .. ...00 01 ... @azx_4x1_i2_o3
757
758 BFDOT_nx 11000001 0101 .... 0 .. 1 .. ....0 11 ... @azx_2x1_i2_o3
759 BFDOT_nx 11000001 0101 .... 1 .. 1 .. ...00 11 ... @azx_4x1_i2_o3
760
761 FVDOT_sh 11000001 0101 .... 0 .. 0 .. ....0 01 ... @azx_2x1_i2_o3
762 BFVDOT 11000001 0101 .... 0 .. 0 .. ....0 11 ... @azx_2x1_i2_o3
763
764 SDOT_nx_2h 11000001 0101 .... 0 .. 1 .. ....0 00 ... @azx_2x1_i2_o3
765 SDOT_nx_2h 11000001 0101 .... 1 .. 1 .. ...00 00 ... @azx_4x1_i2_o3
766 SDOT_nx_4b 11000001 0101 .... 0 .. 1 .. ....1 00 ... @azx_2x1_i2_o3
767 SDOT_nx_4b 11000001 0101 .... 1 .. 1 .. ...01 00 ... @azx_4x1_i2_o3
768 SDOT_nx_4h 11000001 1101 .... 0 .. 00 . ....0 01 ... @azx_2x1_i1_o3
769 SDOT_nx_4h 11000001 1101 .... 1 .. 00 . ...00 01 ... @azx_4x1_i1_o3
770
771 UDOT_nx_2h 11000001 0101 .... 0 .. 1 .. ....0 10 ... @azx_2x1_i2_o3
772 UDOT_nx_2h 11000001 0101 .... 1 .. 1 .. ...00 10 ... @azx_4x1_i2_o3
773 UDOT_nx_4b 11000001 0101 .... 0 .. 1 .. ....1 10 ... @azx_2x1_i2_o3
774 UDOT_nx_4b 11000001 0101 .... 1 .. 1 .. ...01 10 ... @azx_4x1_i2_o3
775 UDOT_nx_4h 11000001 1101 .... 0 .. 00 . ....0 11 ... @azx_2x1_i1_o3
776 UDOT_nx_4h 11000001 1101 .... 1 .. 00 . ...00 11 ... @azx_4x1_i1_o3
777
778 USDOT_nx 11000001 0101 .... 0 .. 1 .. ....1 01 ... @azx_2x1_i2_o3
779 USDOT_nx 11000001 0101 .... 1 .. 1 .. ...01 01 ... @azx_4x1_i2_o3
780
781 SUDOT_nx 11000001 0101 .... 0 .. 1 .. ....1 11 ... @azx_2x1_i2_o3
782 SUDOT_nx 11000001 0101 .... 1 .. 1 .. ...01 11 ... @azx_4x1_i2_o3
783
784 SVDOT_nx_2h 11000001 0101 .... 0 .. 0 .. ....1 00 ... @azx_2x1_i2_o3
785 SVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 00 ... @azx_4x1_i2_o3
786 SVDOT_nx_4h 11000001 1101 .... 1 .. 01 . ...00 01 ... @azx_4x1_i1_o3
787
788 UVDOT_nx_2h 11000001 0101 .... 0 .. 0 .. ....1 10 ... @azx_2x1_i2_o3
789 UVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 10 ... @azx_4x1_i2_o3
790 UVDOT_nx_4h 11000001 1101 .... 1 .. 01 . ...00 11 ... @azx_4x1_i1_o3
791
792 SUVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 11 ... @azx_4x1_i2_o3
793 USVDOT_nx_4b 11000001 0101 .... 1 .. 0 .. ...01 01 ... @azx_4x1_i2_o3
794
795 SMLAL_nx 11000001 1100 .... . .. 1 .. ..... 00 ... @azx_1x1_o3x2
796 SMLAL_nx 11000001 1101 .... 0 .. 1 .. ....0 00 ... @azx_2x1_o2x2
797 SMLAL_nx 11000001 1101 .... 1 .. 1 .. ...00 00 ... @azx_4x1_o2x2
798
799 SMLSL_nx 11000001 1100 .... . .. 1 .. ..... 01 ... @azx_1x1_o3x2
800 SMLSL_nx 11000001 1101 .... 0 .. 1 .. ....0 01 ... @azx_2x1_o2x2
801 SMLSL_nx 11000001 1101 .... 1 .. 1 .. ...00 01 ... @azx_4x1_o2x2
802
803 UMLAL_nx 11000001 1100 .... . .. 1 .. ..... 10 ... @azx_1x1_o3x2
804 UMLAL_nx 11000001 1101 .... 0 .. 1 .. ....0 10 ... @azx_2x1_o2x2
805 UMLAL_nx 11000001 1101 .... 1 .. 1 .. ...00 10 ... @azx_4x1_o2x2
806
807 UMLSL_nx 11000001 1100 .... . .. 1 .. ..... 11 ... @azx_1x1_o3x2
808 UMLSL_nx 11000001 1101 .... 0 .. 1 .. ....0 11 ... @azx_2x1_o2x2
809 UMLSL_nx 11000001 1101 .... 1 .. 1 .. ...00 11 ... @azx_4x1_o2x2
810
811 %idx4_15_10 15:1 10:3
812 %idx4_10_1 10:2 1:2
813 %idx3_10_1 10:1 1:2
814
815 @azx_1x1_i4_o2 ........ .... zm:4 . .. ... zn:5 ... .. \
816 &azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx4_15_10
817 @azx_1x1_i3_o2 ........ .... zm:4 . .. ... zn:5 ... .. \
818 &azx_n n=1 rv=%mova_rv off=%off2_x4 idx=%idx3_15_10
819 @azx_2x1_i4_o1 ........ .... zm:4 . .. ... ..... ... .. \
820 &azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx4_10_1
821 @azx_2x1_i3_o1 ........ .... zm:4 . .. ... ..... ... .. \
822 &azx_n n=2 rv=%mova_rv off=%off1_x4 zn=%zn_ax2 idx=%idx3_10_1
823 @azx_4x1_i4_o1 ........ .... zm:4 . .. ... ..... ... .. \
824 &azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx4_10_1
825 @azx_4x1_i3_o1 ........ .... zm:4 . .. ... ..... ... .. \
826 &azx_n n=4 rv=%mova_rv off=%off1_x4 zn=%zn_ax4 idx=%idx3_10_1
827
828 SMLALL_nx_s 11000001 0000 .... . .. ... ..... 000 .. @azx_1x1_i4_o2
829 SMLALL_nx_d 11000001 1000 .... . .. 0.. ..... 000 .. @azx_1x1_i3_o2
830 SMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....0 00 ... @azx_2x1_i4_o1
831 SMLALL_nx_d 11000001 1001 .... 0 .. 00. ....0 00 ... @azx_2x1_i3_o1
832 SMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...00 00 ... @azx_4x1_i4_o1
833 SMLALL_nx_d 11000001 1001 .... 1 .. 00. ...00 00 ... @azx_4x1_i3_o1
834
835 SMLSLL_nx_s 11000001 0000 .... . .. ... ..... 010 .. @azx_1x1_i4_o2
836 SMLSLL_nx_d 11000001 1000 .... . .. 0.. ..... 010 .. @azx_1x1_i3_o2
837 SMLSLL_nx_s 11000001 0001 .... 0 .. 0.. ....0 01 ... @azx_2x1_i4_o1
838 SMLSLL_nx_d 11000001 1001 .... 0 .. 00. ....0 01 ... @azx_2x1_i3_o1
839 SMLSLL_nx_s 11000001 0001 .... 1 .. 0.. ...00 01 ... @azx_4x1_i4_o1
840 SMLSLL_nx_d 11000001 1001 .... 1 .. 00. ...00 01 ... @azx_4x1_i3_o1
841
842 UMLALL_nx_s 11000001 0000 .... . .. ... ..... 100 .. @azx_1x1_i4_o2
843 UMLALL_nx_d 11000001 1000 .... . .. 0.. ..... 100 .. @azx_1x1_i3_o2
844 UMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....0 10 ... @azx_2x1_i4_o1
845 UMLALL_nx_d 11000001 1001 .... 0 .. 00. ....0 10 ... @azx_2x1_i3_o1
846 UMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...00 10 ... @azx_4x1_i4_o1
847 UMLALL_nx_d 11000001 1001 .... 1 .. 00. ...00 10 ... @azx_4x1_i3_o1
848
849 UMLSLL_nx_s 11000001 0000 .... . .. ... ..... 110 .. @azx_1x1_i4_o2
850 UMLSLL_nx_d 11000001 1000 .... . .. 0.. ..... 110 .. @azx_1x1_i3_o2
851 UMLSLL_nx_s 11000001 0001 .... 0 .. 0.. ....0 11 ... @azx_2x1_i4_o1
852 UMLSLL_nx_d 11000001 1001 .... 0 .. 00. ....0 11 ... @azx_2x1_i3_o1
853 UMLSLL_nx_s 11000001 0001 .... 1 .. 0.. ...00 11 ... @azx_4x1_i4_o1
854 UMLSLL_nx_d 11000001 1001 .... 1 .. 00. ...00 11 ... @azx_4x1_i3_o1
855
856 USMLALL_nx_s 11000001 0000 .... . .. ... ..... 001 .. @azx_1x1_i4_o2
857 USMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....1 00 ... @azx_2x1_i4_o1
858 USMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...01 00 ... @azx_4x1_i4_o1
859
860 SUMLALL_nx_s 11000001 0000 .... . .. ... ..... 101 .. @azx_1x1_i4_o2
861 SUMLALL_nx_s 11000001 0001 .... 0 .. 0.. ....1 10 ... @azx_2x1_i4_o1
862 SUMLALL_nx_s 11000001 0001 .... 1 .. 0.. ...01 10 ... @azx_4x1_i4_o1
863
864 %idx3_10_3 10:2 3:1
865 @azx_2x1_i3_o3 ........ .... zm:4 . .. ... ..... .. off:3 \
866 &azx_n n=2 rv=%mova_rv zn=%zn_ax2 idx=%idx3_10_3
867 @azx_4x1_i3_o3 ........ .... zm:4 . .. ... ..... .. off:3 \
868 &azx_n n=4 rv=%mova_rv zn=%zn_ax4 idx=%idx3_10_3
869
870 BFMLA_nx 11000001 0001 .... 0 .. 1.. ....1 0 .... @azx_2x1_i3_o3
871 FMLA_nx_h 11000001 0001 .... 0 .. 1.. ....0 0 .... @azx_2x1_i3_o3
872 FMLA_nx_s 11000001 0101 .... 0 .. 0.. ....0 00 ... @azx_2x1_i2_o3
873 FMLA_nx_d 11000001 1101 .... 0 .. 00. ....0 00 ... @azx_2x1_i1_o3
874
875 BFMLA_nx 11000001 0001 .... 1 .. 1.. ...01 0 .... @azx_4x1_i3_o3
876 FMLA_nx_h 11000001 0001 .... 1 .. 1.. ...00 0 .... @azx_4x1_i3_o3
877 FMLA_nx_s 11000001 0101 .... 1 .. 0.. ...00 00 ... @azx_4x1_i2_o3
878 FMLA_nx_d 11000001 1101 .... 1 .. 00. ...00 00 ... @azx_4x1_i1_o3
879
880 BFMLS_nx 11000001 0001 .... 0 .. 1.. ....1 1 .... @azx_2x1_i3_o3
881 FMLS_nx_h 11000001 0001 .... 0 .. 1.. ....0 1 .... @azx_2x1_i3_o3
882 FMLS_nx_s 11000001 0101 .... 0 .. 0.. ....0 10 ... @azx_2x1_i2_o3
883 FMLS_nx_d 11000001 1101 .... 0 .. 00. ....0 10 ... @azx_2x1_i1_o3
884
885 BFMLS_nx 11000001 0001 .... 1 .. 1.. ...01 1 .... @azx_4x1_i3_o3
886 FMLS_nx_h 11000001 0001 .... 1 .. 1.. ...00 1 .... @azx_4x1_i3_o3
887 FMLS_nx_s 11000001 0101 .... 1 .. 0.. ...00 10 ... @azx_4x1_i2_o3
888 FMLS_nx_d 11000001 1101 .... 1 .. 00. ...00 10 ... @azx_4x1_i1_o3
889
890 FMLALL_nx_b 11000001 0100 .... . .. ... ..... 000 .. @azx_1x1_i4_o2
891 FMLALL_nx_b 11000001 1001 .... 0 .. 0.. ....1 00.. . @azx_2x1_i4_o1
892 FMLALL_nx_b 11000001 0001 .... 1 .. 0.. ...10 00.. . @azx_4x1_i4_o1
893
894 FDOT_nx_b 11000001 0101 .... 0 .. 0.. ....1 11 ... @azx_2x1_i2_o3
895 FDOT_nx_b 11000001 0101 .... 1 .. 0.. ...00 01 ... @azx_4x1_i2_o3
896
897 %idx4_15_10_3 15:1 10:2 3:1
898 %idx4_10_2 10:2 2:2
899 @azx_1x1_i4_o3x2 ........ .... zm:4 . .. . .. zn:5 .. ... \
900 &azx_n n=1 rv=%mova_rv off=%off3_x2 idx=%idx4_15_10_3
901 @azx_2x2_i4_o3x2 ........ .... zm:4 . .. . .. .... .. .. .. \
902 &azx_n n=2 rv=%mova_rv zn=%zn_ax2 off=%off2_x2 idx=%idx4_10_2
903 @azx_4x4_i4_o3x2 ........ .... zm:4 . .. . .. ... ... .. .. \
904 &azx_n n=4 rv=%mova_rv zn=%zn_ax4 off=%off2_x2 idx=%idx4_10_2
905
906 FMLAL_nx_hb 11000001 1100 .... . .. 0.. ..... 0. ... @azx_1x1_i4_o3x2
907 FMLAL_nx_hb 11000001 1001 .... 0 .. 1.. ....1 1.. .. @azx_2x2_i4_o3x2
908 FMLAL_nx_hb 11000001 1001 .... 1 .. 1.. ...01 0.. .. @azx_4x4_i4_o3x2
909
910 FDOT_nx_hb 11000001 1101 .... 0 .. 0.. ....1 0. ... @azx_2x1_i3_o3
911 FDOT_nx_hb 11000001 0001 .... 1 .. 1.. ...10 0. ... @azx_4x1_i3_o3
912
913 %idx2_10_3 10:1 3:1
914 @azx_4x2_i2_o3 ........ .... zm:4 . .. ... .... ... off:3 \
915 &azx_n n=4 rv=%mova_rv zn=%zn_ax2 idx=%idx2_10_3
916
917 FVDOTB_sb 11000001 1101 .... 0 .. 01. ....0 0. ... @azx_4x2_i2_o3
918 FVDOTT_sb 11000001 1101 .... 0 .. 01. ....0 1. ... @azx_4x2_i2_o3
919
920 FVDOT_hb 11000001 1101 .... 0 .. 1.. ....1 0. ... @azx_2x1_i3_o3
921
922 ### SME2 Add / Sub array accumulators
923
924 ADD_aaz_s 11000001 101 000000 .. 111 ....0 10 ... @az_2x2_o3
925 ADD_aaz_s 11000001 101 000010 .. 111 ...00 10 ... @az_4x4_o3
926 ADD_aaz_d 11000001 111 000000 .. 111 ....0 10 ... @az_2x2_o3
927 ADD_aaz_d 11000001 111 000010 .. 111 ...00 10 ... @az_4x4_o3
928
929 SUB_aaz_s 11000001 101 000000 .. 111 ....0 11 ... @az_2x2_o3
930 SUB_aaz_s 11000001 101 000010 .. 111 ...00 11 ... @az_4x4_o3
931 SUB_aaz_d 11000001 111 000000 .. 111 ....0 11 ... @az_2x2_o3
932 SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ... @az_4x4_o3
933
934 ### SME2 Multi-vector SVE Constructive Unary
935
936 &zz_e zd zn esz
937 &zz_n zd zn n
938 @zz_1x2 ........ ... ..... ...... ..... zd:5 \
939 &zz_n n=1 zn=%zn_ax2
940 @zz_1x4 ........ ... ..... ...... ..... zd:5 \
941 &zz_n n=1 zn=%zn_ax4
942 @zz_2x1 ........ ... ..... ...... zn:5 ..... \
943 &zz_n n=1 zd=%zd_ax2
944 @zz_2x2 ........ ... ..... ...... .... . ..... \
945 &zz_n n=2 zd=%zd_ax2 zn=%zn_ax2
946 @zz_4x4 ........ ... ..... ...... .... . ..... \
947 &zz_n n=4 zd=%zd_ax4 zn=%zn_ax4
948 @zz_4x2_n1 ........ ... ..... ...... .... . ..... \
949 &zz_n n=1 zd=%zd_ax4 zn=%zn_ax2
950
951 BFCVT_hs 11000001 011 00000 111000 ....0 ..... @zz_1x2
952 BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2
953
954 FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2
955 FCVTN 11000001 001 00000 111000 ....1 ..... @zz_1x2
956
957 FCVT_w 11000001 101 00000 111000 ..... ....0 @zz_2x1
958 FCVTL 11000001 101 00000 111000 ..... ....1 @zz_2x1
959
960 FCVTZS 11000001 001 00001 111000 ....0 ....0 @zz_2x2
961 FCVTZS 11000001 001 10001 111000 ...00 ...00 @zz_4x4
962 FCVTZU 11000001 001 00001 111000 ....1 ....0 @zz_2x2
963 FCVTZU 11000001 001 10001 111000 ...01 ...00 @zz_4x4
964
965 SCVTF 11000001 001 00010 111000 ....0 ....0 @zz_2x2
966 SCVTF 11000001 001 10010 111000 ...00 ...00 @zz_4x4
967 UCVTF 11000001 001 00010 111000 ....1 ....0 @zz_2x2
968 UCVTF 11000001 001 10010 111000 ...01 ...00 @zz_4x4
969
970 FRINTN 11000001 101 01000 111000 ....0 ....0 @zz_2x2
971 FRINTN 11000001 101 11000 111000 ...00 ...00 @zz_4x4
972 FRINTP 11000001 101 01001 111000 ....0 ....0 @zz_2x2
973 FRINTP 11000001 101 11001 111000 ...00 ...00 @zz_4x4
974 FRINTM 11000001 101 01010 111000 ....0 ....0 @zz_2x2
975 FRINTM 11000001 101 11010 111000 ...00 ...00 @zz_4x4
976 FRINTA 11000001 101 01100 111000 ....0 ....0 @zz_2x2
977 FRINTA 11000001 101 11100 111000 ...00 ...00 @zz_4x4
978
979 SQCVT_sh 11000001 001 00011 111000 ....0 ..... @zz_1x2
980 UQCVT_sh 11000001 001 00011 111000 ....1 ..... @zz_1x2
981 SQCVTU_sh 11000001 011 00011 111000 ....0 ..... @zz_1x2
982
983 SQCVT_sb 11000001 001 10011 111000 ...00 ..... @zz_1x4
984 UQCVT_sb 11000001 001 10011 111000 ...01 ..... @zz_1x4
985 SQCVTU_sb 11000001 011 10011 111000 ...00 ..... @zz_1x4
986
987 SQCVT_dh 11000001 101 10011 111000 ...00 ..... @zz_1x4
988 UQCVT_dh 11000001 101 10011 111000 ...01 ..... @zz_1x4
989 SQCVTU_dh 11000001 111 10011 111000 ...00 ..... @zz_1x4
990
991 SQCVTN_sb 11000001 001 10011 111000 ...10 ..... @zz_1x4
992 UQCVTN_sb 11000001 001 10011 111000 ...11 ..... @zz_1x4
993 SQCVTUN_sb 11000001 011 10011 111000 ...10 ..... @zz_1x4
994
995 SQCVTN_dh 11000001 101 10011 111000 ...10 ..... @zz_1x4
996 UQCVTN_dh 11000001 101 10011 111000 ...11 ..... @zz_1x4
997 SQCVTUN_dh 11000001 111 10011 111000 ...10 ..... @zz_1x4
998
999 SUNPK_2bh 11000001 011 00101 111000 ..... ....0 @zz_2x1
1000 SUNPK_2hs 11000001 101 00101 111000 ..... ....0 @zz_2x1
1001 SUNPK_2sd 11000001 111 00101 111000 ..... ....0 @zz_2x1
1002
1003 UUNPK_2bh 11000001 011 00101 111000 ..... ....1 @zz_2x1
1004 UUNPK_2hs 11000001 101 00101 111000 ..... ....1 @zz_2x1
1005 UUNPK_2sd 11000001 111 00101 111000 ..... ....1 @zz_2x1
1006
1007 SUNPK_4bh 11000001 011 10101 111000 ....0 ...00 @zz_4x2_n1
1008 SUNPK_4hs 11000001 101 10101 111000 ....0 ...00 @zz_4x2_n1
1009 SUNPK_4sd 11000001 111 10101 111000 ....0 ...00 @zz_4x2_n1
1010
1011 UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 @zz_4x2_n1
1012 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1
1013 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1
1014
1015 F1CVT 11000001 001 00110 111000 ..... ....0 @zz_2x1
1016 F2CVT 11000001 101 00110 111000 ..... ....0 @zz_2x1
1017 F1CVTL 11000001 001 00110 111000 ..... ....1 @zz_2x1
1018 F2CVTL 11000001 101 00110 111000 ..... ....1 @zz_2x1
1019
1020 BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1
1021 BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1
1022 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1
1023 BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1
1024
1025 FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2
1026
1027 FCVT_bs 11000001 001 10100 111000 ...00 ..... @zz_1x4
1028 FCVTN_bs 11000001 001 10100 111000 ...01 ..... @zz_1x4
1029
1030 ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \
1031 &zz_e zd=%zd_ax4 zn=%zn_ax4
1032 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \
1033 &zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
1034
1035 UZP_4 11000001 esz:2 1 10110 111000 ...00 ... 10 \
1036 &zz_e zd=%zd_ax4 zn=%zn_ax4
1037 UZP_4 11000001 001 10111 111000 ...00 ... 10 \
1038 &zz_e esz=4 zd=%zd_ax4 zn=%zn_ax4
1039
1040 ### SME2 Multi-vector SVE Constructive Binary
1041
1042 &rshr zd zn shift
1043
1044 %rshr_sh_shift 16:4 !function=rsub_16
1045 %rshr_sb_shift 16:5 !function=rsub_32
1046 %rshr_dh_shift 22:1 16:5 !function=rsub_64
1047
1048 @rshr_sh ........ .... .... ...... ..... zd:5 \
1049 &rshr zn=%zn_ax2 shift=%rshr_sh_shift
1050 @rshr_sb ........ ... ..... ...... ..... zd:5 \
1051 &rshr zn=%zn_ax4 shift=%rshr_sb_shift
1052 @rshr_dh ........ ... ..... ...... ..... zd:5 \
1053 &rshr zn=%zn_ax4 shift=%rshr_dh_shift
1054
1055 SQRSHR_sh 11000001 1110 .... 110101 ....0 ..... @rshr_sh
1056 UQRSHR_sh 11000001 1110 .... 110101 ....1 ..... @rshr_sh
1057 SQRSHRU_sh 11000001 1111 .... 110101 ....0 ..... @rshr_sh
1058
1059 SQRSHR_sb 11000001 011 ..... 110110 ...00 ..... @rshr_sb
1060 SQRSHR_dh 11000001 1.1 ..... 110110 ...00 ..... @rshr_dh
1061 UQRSHR_sb 11000001 011 ..... 110110 ...01 ..... @rshr_sb
1062 UQRSHR_dh 11000001 1.1 ..... 110110 ...01 ..... @rshr_dh
1063 SQRSHRU_sb 11000001 011 ..... 110110 ...10 ..... @rshr_sb
1064 SQRSHRU_dh 11000001 1.1 ..... 110110 ...10 ..... @rshr_dh
1065
1066 SQRSHRN_sh 01000101 1011 .... 001010 ....0 ..... @rshr_sh
1067 UQRSHRN_sh 01000101 1011 .... 001110 ....0 ..... @rshr_sh
1068 SQRSHRUN_sh 01000101 1011 .... 000010 ....0 ..... @rshr_sh
1069
1070 SQRSHRN_sb 11000001 011 ..... 110111 ...00 ..... @rshr_sb
1071 SQRSHRN_dh 11000001 1.1 ..... 110111 ...00 ..... @rshr_dh
1072 UQRSHRN_sb 11000001 011 ..... 110111 ...01 ..... @rshr_sb
1073 UQRSHRN_dh 11000001 1.1 ..... 110111 ...01 ..... @rshr_dh
1074 SQRSHRUN_sb 11000001 011 ..... 110111 ...10 ..... @rshr_sb
1075 SQRSHRUN_dh 11000001 1.1 ..... 110111 ...10 ..... @rshr_dh
1076
1077 &zzz_e zd zn zm esz
1078
1079 ZIP_2 11000001 esz:2 1 zm:5 110100 zn:5 .... 0 \
1080 &zzz_e zd=%zd_ax2
1081 ZIP_2 11000001 00 1 zm:5 110101 zn:5 .... 0 \
1082 &zzz_e zd=%zd_ax2 esz=4
1083
1084 UZP_2 11000001 esz:2 1 zm:5 110100 zn:5 .... 1 \
1085 &zzz_e zd=%zd_ax2
1086 UZP_2 11000001 00 1 zm:5 110101 zn:5 .... 1 \
1087 &zzz_e zd=%zd_ax2 esz=4
1088
1089 FCLAMP 11000001 esz:2 1 zm:5 110000 zn:5 .... 0 \
1090 &zzz_en zd=%zd_ax2 n=2
1091 FCLAMP 11000001 esz:2 1 zm:5 110010 zn:5 ...0 0 \
1092 &zzz_en zd=%zd_ax4 n=4
1093
1094 SCLAMP 11000001 esz:2 1 zm:5 110001 zn:5 .... 0 \
1095 &zzz_en zd=%zd_ax2 n=2
1096 SCLAMP 11000001 esz:2 1 zm:5 110011 zn:5 ...0 0 \
1097 &zzz_en zd=%zd_ax4 n=4
1098
1099 UCLAMP 11000001 esz:2 1 zm:5 110001 zn:5 .... 1 \
1100 &zzz_en zd=%zd_ax2 n=2
1101 UCLAMP 11000001 esz:2 1 zm:5 110011 zn:5 ...0 1 \
1102 &zzz_en zd=%zd_ax4 n=4
1103
1104 ### SME2 Multi-vector SVE Select
1105
1106 %sel_pg 10:3 !function=plus_8
1107
1108 SEL 11000001 esz:2 1 ....0 100 ... ....0 ....0 \
1109 n=2 zd=%zd_ax2 zn=%zn_ax2 zm=%zm_ax2 pg=%sel_pg
1110 SEL 11000001 esz:2 1 ...01 100 ... ...00 ...00 \
1111 n=4 zd=%zd_ax4 zn=%zn_ax4 zm=%zm_ax4 pg=%sel_pg
1112
1113 ### SME Multiple Zero
1114
1115 &zero_za rv off ngrp nvec
1116
1117 ZERO_za 11000000 000011 000 .. 0000000000 off:3 \
1118 &zero_za ngrp=2 nvec=1 rv=%mova_rv
1119 ZERO_za 11000000 000011 100 .. 0000000000 off:3 \
1120 &zero_za ngrp=4 nvec=1 rv=%mova_rv
1121
1122 ZERO_za 11000000 000011 001 .. 0000000000 ... \
1123 &zero_za ngrp=1 nvec=2 rv=%mova_rv off=%off3_x2
1124 ZERO_za 11000000 000011 010 .. 0000000000 0.. \
1125 &zero_za ngrp=2 nvec=2 rv=%mova_rv off=%off2_x2
1126 ZERO_za 11000000 000011 011 .. 0000000000 0.. \
1127 &zero_za ngrp=4 nvec=2 rv=%mova_rv off=%off2_x2
1128
1129 ZERO_za 11000000 000011 101 .. 0000000000 0.. \
1130 &zero_za ngrp=1 nvec=4 rv=%mova_rv off=%off2_x4
1131 ZERO_za 11000000 000011 110 .. 0000000000 00. \
1132 &zero_za ngrp=2 nvec=4 rv=%mova_rv off=%off1_x4
1133 ZERO_za 11000000 000011 111 .. 0000000000 00. \
1134 &zero_za ngrp=4 nvec=4 rv=%mova_rv off=%off1_x4
1135
1136 ### SME Lookup Table Read
1137
1138 &lut zd zn idx
1139
1140 # LUTI2, consecutive
1141 LUTI2_c_1b 1100 0000 1100 11 idx:4 00 00 zn:5 zd:5 &lut
1142 LUTI2_c_1h 1100 0000 1100 11 idx:4 01 00 zn:5 zd:5 &lut
1143 LUTI2_c_1s 1100 0000 1100 11 idx:4 10 00 zn:5 zd:5 &lut
1144
1145 LUTI2_c_2b 1100 0000 1000 11 idx:3 1 00 00 zn:5 .... 0 &lut zd=%zd_ax2
1146 LUTI2_c_2h 1100 0000 1000 11 idx:3 1 01 00 zn:5 .... 0 &lut zd=%zd_ax2
1147 LUTI2_c_2s 1100 0000 1000 11 idx:3 1 10 00 zn:5 .... 0 &lut zd=%zd_ax2
1148
1149 LUTI2_c_4b 1100 0000 1000 11 idx:2 10 00 00 zn:5 ... 00 &lut zd=%zd_ax4
1150 LUTI2_c_4h 1100 0000 1000 11 idx:2 10 01 00 zn:5 ... 00 &lut zd=%zd_ax4
1151 LUTI2_c_4s 1100 0000 1000 11 idx:2 10 10 00 zn:5 ... 00 &lut zd=%zd_ax4
1152
1153 # LUTI2, strided (must check zd alignment)
1154 LUTI2_s_2b 1100 0000 1001 11 idx:3 1 00 00 zn:5 zd:5 &lut
1155 LUTI2_s_2h 1100 0000 1001 11 idx:3 1 01 00 zn:5 zd:5 &lut
1156
1157 LUTI2_s_4b 1100 0000 1001 11 idx:2 10 00 00 zn:5 zd:5 &lut
1158 LUTI2_s_4h 1100 0000 1001 11 idx:2 10 01 00 zn:5 zd:5 &lut
1159
1160 # LUTI4, consecutive
1161 LUTI4_c_1b 1100 0000 1100 101 idx:3 00 00 zn:5 zd:5 &lut
1162 LUTI4_c_1h 1100 0000 1100 101 idx:3 01 00 zn:5 zd:5 &lut
1163 LUTI4_c_1s 1100 0000 1100 101 idx:3 10 00 zn:5 zd:5 &lut
1164
1165 LUTI4_c_2b 1100 0000 1000 101 idx:2 1 00 00 zn:5 .... 0 &lut zd=%zd_ax2
1166 LUTI4_c_2h 1100 0000 1000 101 idx:2 1 01 00 zn:5 .... 0 &lut zd=%zd_ax2
1167 LUTI4_c_2s 1100 0000 1000 101 idx:2 1 10 00 zn:5 .... 0 &lut zd=%zd_ax2
1168
1169 LUTI4_c_4h 1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00 &lut zd=%zd_ax4
1170 LUTI4_c_4s 1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00 &lut zd=%zd_ax4
1171
1172 LUTI4_c_4b 1100 0000 1000 101 1 00 00 00 ....0 ...00 \
1173 &lut zd=%zd_ax4 zn=%zn_ax2 idx=0
1174
1175 # LUTI4, strided (must check zd alignment)
1176 LUTI4_s_2b 1100 0000 1001 101 idx:2 1 00 00 zn:5 zd:5 &lut
1177 LUTI4_s_2h 1100 0000 1001 101 idx:2 1 01 00 zn:5 zd:5 &lut
1178
1179 LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5 &lut
1180
1181 LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \
1182 &lut zn=%zn_ax2 idx=0
1183
1184 # SME MOP4 Quarter-tile outer products
1185
1186 &mop4 zad zn zm s:bool n:bool m:bool
1187
1188 %mop4_zm 17:3 !function=times_2_plus_16
1189 %mop4_zn 6:3 !function=times_2
1190
1191 @mop4_o1 .... .... ... m:1 .... .... .. n:1 ... . s:1 ... zad:1 \
1192 &mop4 zm=%mop4_zm zn=%mop4_zn
1193 @mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \
1194 &mop4 zm=%mop4_zm zn=%mop4_zn
1195 @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \
1196 &mop4 zm=%mop4_zm zn=%mop4_zn
1197
1198 @mop4_o1_s0 .... .... ... m:1 .... .... .. n:1 ... . .... zad:1 \
1199 &mop4 zm=%mop4_zm zn=%mop4_zn s=0
1200 @mop4_o2_s0 .... .... ... m:1 .... .... .. n:1 ... . ... zad:2 \
1201 &mop4 zm=%mop4_zm zn=%mop4_zn s=0
1202
1203 BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 100. @mop4_o1
1204 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1
1205 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2
1206 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3
1207
1208 BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2
1209 FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2
1210
1211 FMOP4A_sb 1000 0000 001. ...0 0000 00.. ..00 00.. @mop4_o2_s0
1212 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0
1213
1214 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2
1215 UMOP4_sh 1000 0001 000. ...0 1000 00.. ..0. 10.. @mop4_o2
1216
1217 SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2
1218 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3
1219
1220 SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2
1221 SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3
1222
1223 UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2
1224 UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3
1225
1226 USMOP4_sb 1000 0001 000. ...0 1000 00.. ..0. 00.. @mop4_o2
1227 USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1... @mop4_o3
1228
1229 # SME TMOP Sparse outer products
1230
1231 &tmop zad zn zm zk idx
1232 %tmop_zk 10:3 !function=expand_tmop_zk
1233
1234 @tmop_o1 .... .... ... zm:5 ... ... .... idx:2 ... zad:1 \
1235 &tmop zn=%zn_ax2 zk=%tmop_zk
1236 @tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \
1237 &tmop zn=%zn_ax2 zk=%tmop_zk
1238
1239 BFTMOPA_hh 1000 0001 011 ..... 000 ... .... .. 100 . @tmop_o1
1240 FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1
1241 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2
1242
1243 BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2
1244 FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2
1245
1246 FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1
1247 FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2
1248
1249 STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2
1250 UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2
1251
1252 STMOPA_sb 1000 0000 010 ..... 100 ... .... .. 00 .. @tmop_o2
1253 SUTMOPA_sb 1000 0000 011 ..... 100 ... .... .. 00 .. @tmop_o2
1254 USTMOPA_sb 1000 0001 010 ..... 100 ... .... .. 00 .. @tmop_o2
1255 UTMOPA_sb 1000 0001 011 ..... 100 ... .... .. 00 .. @tmop_o2