e4aad48f47364830acaf6b417feaa6438d9c8463
[oota-llvm.git] / test / MC / Disassembler / AArch64 / neon-instructions.txt
1 G# RUN: llvm-mc  -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
2
3 #------------------------------------------------------------------------------
4 # Vector Integer Add/Sub
5 #------------------------------------------------------------------------------
6 # CHECK: add v31.8b, v31.8b, v31.8b
7 # CHECK: sub v0.2d, v0.2d, v0.2d
8 0xff 0x87 0x3f 0x0e
9 0x00 0x84 0xe0 0x6e
10
11 #------------------------------------------------------------------------------
12 # Vector Floating-Point Add/Sub
13 #------------------------------------------------------------------------------
14
15 # CHECK: fadd v0.4s, v0.4s, v0.4s
16 # CHECK: fsub v31.2s, v31.2s, v31.2s
17 0x00 0xd4 0x20 0x4e
18 0xff 0xd7 0xbf 0x0e
19
20 #------------------------------------------------------------------------------
21 # Vector Integer Mul
22 #------------------------------------------------------------------------------
23 # CHECK: mul v0.8b, v1.8b, v2.8b
24 0x20 0x9c 0x22 0x0e
25
26 #------------------------------------------------------------------------------
27 # Vector Floating-Point Mul/Div
28 #------------------------------------------------------------------------------
29 # CHECK: fmul v0.2s, v1.2s, v2.2s
30 # CHECK: fdiv v31.2s, v31.2s, v31.2s
31 0x20 0xdc 0x22 0x2e
32 0xff 0xff 0x3f 0x2e
33
34 #----------------------------------------------------------------------
35 # Vector Polynomial Multiply
36 #----------------------------------------------------------------------
37 # CHECK: pmul v0.8b, v15.8b, v16.8b
38 # CHECK: pmul v31.16b, v7.16b, v8.16b
39 0xe0 0x9d 0x30 0x2e
40 0xff 0x9c 0x28 0x6e
41
42 #------------------------------------------------------------------------------
43 # Vector And, Orr, Eor, Orn, Bic
44 #------------------------------------------------------------------------------
45 # CHECK: and v2.8b, v2.8b, v2.8b
46 # CHECK: orr v31.16b, v31.16b, v30.16b
47 # CHECK: eor v0.16b, v1.16b, v2.16b
48 # CHECK: orn v9.16b, v10.16b, v11.16b
49 # CHECK: bic v31.8b, v30.8b, v29.8b
50 0x42 0x1c 0x22 0x0e
51 0xff 0x1f 0xbe 0x4e
52 0x20 0x1c 0x22 0x6e
53 0x49 0x1d 0xeb 0x4e
54 0xdf 0x1f 0x7d 0x0e
55
56 #------------------------------------------------------------------------------
57 # Vector Bsl, Bit, Bif
58 #------------------------------------------------------------------------------
59 # CHECK: bsl v0.8b, v1.8b, v2.8b
60 # CHECK: bit v31.16b, v31.16b, v31.16b
61 # CHECK: bif v0.16b, v1.16b, v2.16b
62 0x20 0x1c 0x62 0x2e
63 0xff 0x1f 0xbf 0x6e
64 0x20 0x1c 0xe2 0x6e
65
66
67 #------------------------------------------------------------------------------
68 # Vector Integer Multiply-accumulate and Multiply-subtract
69 #------------------------------------------------------------------------------
70 # CHECK: mla v0.8b, v1.8b, v2.8b
71 # CHECK: mls v31.4h, v31.4h, v31.4h
72 0x20 0x94 0x22 0x0e
73 0xff 0x97 0x7f 0x2e
74
75 #------------------------------------------------------------------------------
76 # Vector Floating-Point Multiply-accumulate and Multiply-subtract
77 #------------------------------------------------------------------------------
78 # CHECK: fmla v0.2s, v1.2s, v2.2s
79 # CHECK: fmls v31.2s, v31.2s, v31.2s
80 0x20 0xcc 0x22 0x0e
81 0xff 0xcf 0xbf 0x0e
82
83 #------------------------------------------------------------------------------
84 # Vector Move Immediate Shifted
85 # Vector Move Inverted Immediate Shifted
86 # Vector Bitwise Bit Clear (AND NOT) - immediate
87 # Vector Bitwise OR - immedidate
88 #------------------------------------------------------------------------------
89 # CHECK: movi v31.4s, #0xff, lsl #24
90 # CHECK: mvni v0.2s, #0x0
91 # CHECK: bic v15.4h, #0xf, lsl #8
92 # CHECK: orr v16.8h, #0x1f
93 0xff 0x67 0x07 0x4f
94 0x00 0x04 0x00 0x2f
95 0xef 0xb5 0x00 0x2f
96 0xf0 0x97 0x00 0x4f
97
98 #------------------------------------------------------------------------------
99 # Vector Move Immediate Masked
100 # Vector Move Inverted Immediate Masked
101 #------------------------------------------------------------------------------
102 # CHECK: movi v8.2s, #0x8, msl #8
103 # CHECK: mvni v16.4s, #0x10, msl #16
104 0x08 0xc5 0x00 0x0f
105 0x10 0xd6 0x00 0x6f
106
107 #------------------------------------------------------------------------------
108 # Vector Immediate - per byte
109 # Vector Move Immediate - bytemask, per doubleword
110 # Vector Move Immediate - bytemask, one doubleword
111 #------------------------------------------------------------------------------
112 # CHECK: movi v16.8b, #0xff
113 # CHECK: movi v31.16b, #0x1f
114 # CHECK: movi d15, #0xff00ff00ff00ff
115 # CHECK: movi v31.2d, #0xff0000ff0000ffff
116 0xf0 0xe7 0x07 0x0f
117 0xff 0xe7 0x00 0x4f
118 0xaf 0xe6 0x02 0x2f
119 0x7f 0xe6 0x04 0x6f
120
121 #------------------------------------------------------------------------------
122 # Vector Floating Point Move Immediate
123 #------------------------------------------------------------------------------
124 # CHECK: fmov v0.2s, #13.0
125 # CHECK: fmov v15.4s, #1.0
126 # CHECK: fmov v31.2d, #-1.25
127 0x40 0xf5 0x01 0x0f
128 0x0f 0xf6 0x03 0x4f
129 0x9f 0xf6 0x07 0x6f
130
131 #------------------------------------------------------------------------------
132 # Vector Move - register
133 #------------------------------------------------------------------------------
134
135 # FIXME: these should print as "mov", but TableGen can't handle it.
136
137 # CHECK: orr v1.16b, v15.16b, v15.16b
138 # CHECK: orr v25.8b, v4.8b, v4.8b
139 0xe1 0x1d 0xaf 0x4e
140 0x99 0x1c 0xa4 0x0e
141
142 #----------------------------------------------------------------------
143 # Vector Absolute Difference and Accumulate (Signed, Unsigned)
144 # Vector Absolute Difference (Signed, Unsigned)
145 # Vector Absolute Difference (Floating Point)
146 #----------------------------------------------------------------------
147
148 # CHECK: uaba v0.8b, v1.8b, v2.8b
149 # CHECK: saba v31.16b, v30.16b, v29.16b
150 # CHECK: uabd v15.4h, v16.4h, v17.4h
151 # CHECK: sabd v5.4h, v4.4h, v6.4h
152 # CHECK: fabd v1.4s, v31.4s, v16.4s
153 0x20 0x7c 0x22 0x2e
154 0xdf 0x7f 0x3d 0x4e
155 0x0f 0x76 0x71 0x2e
156 0x85 0x74 0x66 0x0e
157 0xe1 0xd7 0xb0 0x6e
158
159 #----------------------------------------------------------------------
160 # Scalar Integer Add
161 # Scalar Integer Sub
162 #----------------------------------------------------------------------
163
164 # CHECK: add d17, d31, d29
165 # CHECK: sub d15, d5, d16
166 0xf1 0x87 0xfd 0x5e
167 0xaf 0x84 0xf0 0x7e
168
169 #----------------------------------------------------------------------
170 # Vector Reciprocal Square Root Step (Floating Point)
171 #----------------------------------------------------------------------
172 # CHECK: frsqrts v31.2d, v15.2d, v8.2d
173 0xff 0xfd 0xe8 0x4e
174
175 #----------------------------------------------------------------------
176 # Vector Reciprocal Step (Floating Point)
177 #----------------------------------------------------------------------
178 # CHECK: frecps  v5.4s, v7.4s, v16.4s
179 0xe5 0xfc 0x30 0x4e
180
181 #----------------------------------------------------------------------
182 # Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
183 #----------------------------------------------------------------------
184 # CHECK: facge v0.4s, v31.4s, v16.4s
185 0xe0 0xef 0x30 0x6e
186
187 #----------------------------------------------------------------------
188 # Vector Absolute Compare Mask Less Than (Floating Point)
189 #----------------------------------------------------------------------
190 # CHECK: facgt v31.2d, v29.2d, v28.2d
191 0xbf 0xef 0xfc 0x6e
192
193 #----------------------------------------------------------------------
194 # Vector Compare Mask Equal (Integer)
195 #----------------------------------------------------------------------
196 # CHECK: cmeq v5.16b, v15.16b, v31.16b
197 0xe5 0x8d 0x3f 0x6e
198
199 #----------------------------------------------------------------------
200 # Vector Compare Mask Higher or Same (Unsigned Integer)
201 #----------------------------------------------------------------------
202 # CHECK: cmhs v1.8b, v16.8b, v30.8b
203 0x01 0x3e 0x3e 0x2e
204
205 #----------------------------------------------------------------------
206 # Vector Compare Mask Greater Than or Equal (Integer)
207 #----------------------------------------------------------------------
208 # CHECK: cmge v20.4h, v11.4h, v23.4h
209 0x74 0x3d 0x77 0x0e
210
211 #----------------------------------------------------------------------
212 # Vector Compare Mask Higher (Unsigned Integer)
213 # CHECK: cmhi v13.8h, v3.8h, v27.8h
214 0x6d 0x34 0x7b 0x6e
215
216 #----------------------------------------------------------------------
217 # Vector Compare Mask Greater Than (Integer)
218 #----------------------------------------------------------------------
219 # CHECK: cmgt v9.4s, v4.4s, v28.4s
220 0x89 0x34 0xbc 0x4e
221
222 #----------------------------------------------------------------------
223 # Vector Compare Mask Bitwise Test (Integer)
224 #----------------------------------------------------------------------
225 # CHECK: cmtst v21.2s, v19.2s, v18.2s
226 0x75 0x8e 0xb2 0x0e
227
228 #----------------------------------------------------------------------
229 # Vector Compare Mask Equal (Floating Point)
230 #----------------------------------------------------------------------
231 # CHECK: fcmeq v0.2s, v15.2s, v16.2s
232 0xe0 0xe5 0x30 0x0e
233
234 #----------------------------------------------------------------------
235 # Vector Compare Mask Greater Than Or Equal (Floating Point)
236 #----------------------------------------------------------------------
237 # CHECK: fcmge v31.4s, v7.4s, v29.4s
238 0xff 0xe4 0x3d 0x6e
239
240 #----------------------------------------------------------------------
241 # Vector Compare Mask Greater Than (Floating Point)
242 #----------------------------------------------------------------------
243 # CHECK: fcmgt v17.4s, v8.4s, v25.4s
244 0x11 0xe5 0xb9 0x6e
245
246 #----------------------------------------------------------------------
247 # Vector Compare Mask Equal to Zero (Integer)
248 #----------------------------------------------------------------------
249 # CHECK: cmeq v31.16b, v15.16b, #0x0
250 0xff 0x99 0x20 0x4e
251
252 #----------------------------------------------------------------------
253 # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
254 #----------------------------------------------------------------------
255 # CHECK: cmge v3.8b, v15.8b, #0x0
256 0xe3 0x89 0x20 0x2e
257
258 #----------------------------------------------------------------------
259 # Vector Compare Mask Greater Than Zero (Signed Integer)
260 #----------------------------------------------------------------------
261 # CHECK: cmgt v22.2s, v9.2s, #0x0
262 0x36 0x89 0xa0 0x0e
263
264 #----------------------------------------------------------------------
265 # Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
266 #----------------------------------------------------------------------
267 # CHECK: cmle v5.2d, v14.2d, #0x0
268 0xc5 0x99 0xe0 0x6e
269
270 #----------------------------------------------------------------------
271 # Vector Compare Mask Less Than Zero (Signed Integer)
272 #----------------------------------------------------------------------
273 # CHECK: cmlt v13.8h, v11.8h, #0x0
274 0x6d 0xa9 0x60 0x4e
275
276 #----------------------------------------------------------------------
277 # Vector Compare Mask Equal to Zero (Floating Point)
278 #----------------------------------------------------------------------
279 # CHECK: fcmeq v15.2s, v21.2s, #0.0
280 0xaf 0xda 0xa0 0x0e
281
282 #----------------------------------------------------------------------
283 # Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
284 #----------------------------------------------------------------------
285 # CHECK: fcmge v14.2d, v13.2d, #0.0
286 0xae 0xc9 0xe0 0x6e
287
288 #----------------------------------------------------------------------
289 # Vector Compare Mask Greater Than Zero (Floating Point)
290 #----------------------------------------------------------------------
291 # CHECK: fcmgt v9.4s, v23.4s, #0.0
292 0xe9 0xca 0xa0 0x4e
293
294 #----------------------------------------------------------------------
295 # Vector Compare Mask Less Than or Equal To Zero (Floating Point)
296 #----------------------------------------------------------------------
297 # CHECK: fcmle v11.2d, v6.2d, #0.0
298 0xcb 0xd8 0xe0 0x6e
299
300 #----------------------------------------------------------------------
301 # Vector Compare Mask Less Than Zero (Floating Point)
302 #----------------------------------------------------------------------
303 # CHECK: fcmlt v12.4s, v25.4s, #0.0
304 0x2c 0xeb 0xa0 0x4e
305
306
307 #------------------------------------------------------------------------------
308 # Vector Integer Halving Add (Signed)
309 # Vector Integer Halving Add (Unsigned)
310 # Vector Integer Halving Sub (Signed)
311 # Vector Integer Halving Sub (Unsigned)
312 #------------------------------------------------------------------------------
313 # CHECK: shadd v0.8b, v31.8b, v29.8b
314 # CHECK: uhadd v15.16b, v16.16b, v17.16b
315 # CHECK: shsub v0.4h, v1.4h, v2.4h
316 # CHECK: uhadd v5.8h, v7.8h, v8.8h
317 # CHECK: shsub v9.2s, v11.2s, v21.2s
318 # CHECK: uhsub v22.4s, v30.4s, v19.4s
319 0xe0 0x07 0x3d 0x0e
320 0x0f 0x06 0x31 0x6e
321 0x20 0x24 0x62 0x0e
322 0xe5 0x04 0x68 0x6e
323 0x69 0x25 0xb5 0x0e
324 0xd6 0x27 0xb3 0x6e
325
326 #------------------------------------------------------------------------------
327 # Vector Integer Rouding Halving Add (Signed)
328 # Vector Integer Rouding Halving Add (Unsigned)
329 #------------------------------------------------------------------------------
330 # CHECK: srhadd v3.8b, v5.8b, v7.8b
331 # CHECK: urhadd v7.16b, v17.16b, v27.16b
332 # CHECK: srhadd v10.4h, v11.4h, v13.4h
333 # CHECK: urhadd v1.8h, v2.8h, v3.8h
334 # CHECK: srhadd v4.2s, v5.2s, v6.2s
335 # CHECK: urhadd v7.4s, v7.4s, v7.4s
336 0xa3 0x14 0x27 0x0e
337 0x27 0x16 0x3b 0x6e
338 0x6a 0x15 0x6d 0x0e
339 0x41 0x14 0x63 0x6e
340 0xa4 0x14 0xa6 0x0e
341 0xe7 0x14 0xa7 0x6e
342
343 #------------------------------------------------------------------------------
344 # Vector Integer Saturating Add (Signed)
345 # Vector Integer Saturating Add (Unsigned)
346 # Vector Integer Saturating Sub (Signed)
347 # Vector Integer Saturating Sub (Unsigned)
348 #------------------------------------------------------------------------------
349 # CHECK: sqsub v0.8b, v1.8b, v2.8b
350 # CHECK: sqadd v0.16b, v1.16b, v2.16b
351 # CHECK: uqsub v0.4h, v1.4h, v2.4h
352 # CHECK: uqadd v0.8h, v1.8h, v2.8h
353 # CHECK: sqadd v0.2s, v1.2s, v2.2s
354 # CHECK: sqsub v0.4s, v1.4s, v2.4s
355 # CHECK: sqsub v0.2d, v1.2d, v2.2d
356 0x20 0x2c 0x22 0x0e
357 0x20 0x0c 0x22 0x4e
358 0x20 0x2c 0x62 0x2e
359 0x20 0x0c 0x62 0x6e
360 0x20 0x0c 0xa2 0x0e
361 0x20 0x2c 0xa2 0x4e
362 0x20 0x2c 0xe2 0x4e
363
364 #------------------------------------------------------------------------------
365 # Scalar Integer Saturating Add (Signed)
366 # Scalar Integer Saturating Add (Unsigned)
367 # Scalar Integer Saturating Sub (Signed)
368 # Scalar Integer Saturating Add (Unsigned)
369 #------------------------------------------------------------------------------
370 # CHECK: sqadd b20, b11, b15
371 # CHECK: uqadd h0, h1, h5
372 # CHECK: sqsub s20, s10, s7
373 # CHECK: uqsub d16, d16, d16
374 0x74 0x0d 0x2f 0x5e
375 0x20 0x0c 0x65 0x7e
376 0x54 0x2d 0xa7 0x5e
377 0x10 0x2e 0xf0 0x7e
378
379
380 #----------------------------------------------------------------------
381 # Vector Shift Left (Signed and Unsigned Integer)
382 #----------------------------------------------------------------------
383 # CHECK: sshl v10.8b, v15.8b, v22.8b
384 # CHECK: ushl v10.16b, v5.16b, v2.16b
385 # CHECK: sshl v10.4h, v15.4h, v22.4h
386 # CHECK: ushl v10.8h, v5.8h, v2.8h
387 # CHECK: sshl v10.2s, v15.2s, v22.2s
388 # CHECK: ushl v10.4s, v5.4s, v2.4s
389 # CHECK: sshl v0.2d, v1.2d, v2.2d
390 0xea 0x45 0x36 0x0e
391 0xaa 0x44 0x22 0x6e
392 0xea 0x45 0x76 0x0e
393 0xaa 0x44 0x62 0x6e
394 0xea 0x45 0xb6 0x0e
395 0xaa 0x44 0xa2 0x6e
396 0x20 0x44 0xe2 0x4e
397
398 #----------------------------------------------------------------------
399 # Vector Saturating Shift Left (Signed and Unsigned Integer)
400 #----------------------------------------------------------------------
401 # CHECK: sqshl v1.8b, v15.8b, v22.8b
402 # CHECK: uqshl v2.16b, v14.16b, v23.16b
403 # CHECK: sqshl v3.4h, v13.4h, v24.4h
404 # CHECK: uqshl v4.8h, v12.8h, v25.8h
405 # CHECK: sqshl v5.2s, v11.2s, v26.2s
406 # CHECK: uqshl v6.4s, v10.4s, v27.4s
407 # CHECK: uqshl v0.2d, v1.2d, v2.2d
408 0xe1 0x4d 0x36 0x0e
409 0xc2 0x4d 0x37 0x6e
410 0xa3 0x4d 0x78 0x0e
411 0x84 0x4d 0x79 0x6e
412 0x65 0x4d 0xba 0x0e
413 0x46 0x4d 0xbb 0x6e
414 0x20 0x4c 0xe2 0x6e
415
416 #----------------------------------------------------------------------
417 # Vector Rouding Shift Left (Signed and Unsigned Integer)
418 #----------------------------------------------------------------------
419 # CHECK: srshl v10.8b, v5.8b, v22.8b
420 # CHECK: urshl v10.16b, v5.16b, v2.16b
421 # CHECK: srshl v1.4h, v5.4h, v31.4h
422 # CHECK: urshl v1.8h, v5.8h, v2.8h
423 # CHECK: srshl v10.2s, v15.2s, v2.2s
424 # CHECK: urshl v1.4s, v5.4s, v2.4s
425 # CHECK: urshl v0.2d, v1.2d, v2.2d
426 0xaa 0x54 0x36 0x0e
427 0xaa 0x54 0x22 0x6e
428 0xa1 0x54 0x7f 0x0e
429 0xa1 0x54 0x62 0x6e
430 0xea 0x55 0xa2 0x0e
431 0xa1 0x54 0xa2 0x6e
432 0x20 0x54 0xe2 0x6e
433
434 #----------------------------------------------------------------------
435 # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
436 #----------------------------------------------------------------------
437 # CHECK: sqrshl v1.8b, v15.8b, v22.8b
438 # CHECK: uqrshl v2.16b, v14.16b, v23.16b
439 # CHECK: sqrshl v3.4h, v13.4h, v24.4h
440 # CHECK: uqrshl v4.8h, v12.8h, v25.8h
441 # CHECK: sqrshl v5.2s, v11.2s, v26.2s
442 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
443 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
444 0xe1 0x5d 0x36 0x0e
445 0xc2 0x5d 0x37 0x6e
446 0xa3 0x5d 0x78 0x0e
447 0x84 0x5d 0x79 0x6e
448 0x65 0x5d 0xba 0x0e
449 0x46 0x5d 0xbb 0x6e
450 0x46 0x5d 0xbb 0x6e
451
452 #----------------------------------------------------------------------
453 # Scalar Integer Shift Left (Signed, Unsigned)
454 #----------------------------------------------------------------------
455 # CHECK: sshl d31, d31, d31
456 # CHECK: ushl d0, d0, d0
457 0xff 0x47 0xff 0x5e
458 0x00 0x44 0xe0 0x7e
459
460 #----------------------------------------------------------------------
461 # Scalar Integer Saturating Shift Left (Signed, Unsigned)
462 #----------------------------------------------------------------------
463 # CHECK: sqshl d31, d31, d31
464 # CHECK: uqshl s23, s20, s16
465 # CHECK: sqshl h3, h4, h15
466 # CHECK: uqshl b11, b20, b30
467 0xff 0x4f 0xff 0x5e
468 0x97 0x4e 0xb0 0x7e
469 0x83 0x4c 0x6f 0x5e
470 0x8b 0x4e 0x3e 0x7e
471
472 #----------------------------------------------------------------------
473 # Scalar Integer Rouding Shift Left (Signed, Unsigned)
474 #----------------------------------------------------------------------
475 # CHECK: srshl d16, d16, d16
476 # CHECK: urshl d8, d7, d4
477 0x10 0x56 0xf0 0x5e
478 0xe8 0x54 0xe4 0x7e
479
480 #----------------------------------------------------------------------
481 # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
482 #----------------------------------------------------------------------
483 # CHECK: sqrshl d31, d31, d31
484 # CHECK: uqrshl s23, s20, s16
485 # CHECK: sqrshl h3, h4, h15
486 # CHECK: uqrshl b11, b20, b30
487 0xff 0x5f 0xff 0x5e
488 0x97 0x5e 0xb0 0x7e
489 0x83 0x5c 0x6f 0x5e
490 0x8b 0x5e 0x3e 0x7e
491
492 #----------------------------------------------------------------------
493 # Vector Maximum (Signed and Unsigned Integer)
494 #----------------------------------------------------------------------
495 # CHECK: smax v1.8b, v15.8b, v22.8b
496 # CHECK: umax v2.16b, v14.16b, v23.16b
497 # CHECK: smax v3.4h, v13.4h, v24.4h
498 # CHECK: umax v4.8h, v12.8h, v25.8h
499 # CHECK: smax v5.2s, v11.2s, v26.2s
500 # CHECK: umax v6.4s, v10.4s, v27.4s
501 0xe1 0x65 0x36 0x0e
502 0xc2 0x65 0x37 0x6e
503 0xa3 0x65 0x78 0x0e
504 0x84 0x65 0x79 0x6e
505 0x65 0x65 0xba 0x0e
506 0x46 0x65 0xbb 0x6e
507
508 #----------------------------------------------------------------------
509 # Vector Minimum (Signed and Unsigned Integer)
510 #----------------------------------------------------------------------
511 # CHECK: umin v1.8b, v15.8b, v22.8b
512 # CHECK: smin v2.16b, v14.16b, v23.16b
513 # CHECK: umin v3.4h, v13.4h, v24.4h
514 # CHECK: smin v4.8h, v12.8h, v25.8h
515 # CHECK: umin v5.2s, v11.2s, v26.2s
516 # CHECK: smin v6.4s, v10.4s, v27.4s
517 0xe1 0x6d 0x36 0x2e
518 0xc2 0x6d 0x37 0x4e
519 0xa3 0x6d 0x78 0x2e
520 0x84 0x6d 0x79 0x4e
521 0x65 0x6d 0xba 0x2e
522 0x46 0x6d 0xbb 0x4e
523
524 #----------------------------------------------------------------------
525 # Vector Maximum (Floating Point)
526 #----------------------------------------------------------------------
527 # CHECK: fmax v29.2s, v28.2s, v25.2s
528 # CHECK: fmax v9.4s, v8.4s, v5.4s
529 # CHECK: fmax v11.2d, v10.2d, v7.2d
530 0x9d 0xf7 0x39 0x0e
531 0x09 0xf5 0x25 0x4e
532 0x4b 0xf5 0x67 0x4e
533
534 #----------------------------------------------------------------------
535 # Vector Minimum (Floating Point)
536 #----------------------------------------------------------------------
537 # CHECK: fmin v29.2s, v28.2s, v25.2s
538 # CHECK: fmin v9.4s, v8.4s, v5.4s
539 # CHECK: fmin v11.2d, v10.2d, v7.2d
540 0x9d 0xf7 0xb9 0x0e
541 0x09 0xf5 0xa5 0x4e
542 0x4b 0xf5 0xe7 0x4e
543
544 #----------------------------------------------------------------------
545 # Vector maxNum (Floating Point)
546 #----------------------------------------------------------------------
547 # CHECK: fmaxnm v9.2s, v8.2s, v5.2s
548 # CHECK: fmaxnm v9.4s, v8.4s, v5.4s
549 # CHECK: fmaxnm v11.2d, v10.2d, v7.2d
550 0x09 0xc5 0x25 0x0e
551 0x09 0xc5 0x25 0x4e
552 0x4b 0xc5 0x67 0x4e
553
554 #----------------------------------------------------------------------
555 # Vector minNum (Floating Point)
556 #----------------------------------------------------------------------
557 # CHECK: fminnm v2.2s, v8.2s, v25.2s
558 # CHECK: fminnm v9.4s, v8.4s, v5.4s
559 # CHECK: fminnm v11.2d, v10.2d, v7.2d
560 0x02 0xc5 0xb9 0x0e
561 0x09 0xc5 0xa5 0x4e
562 0x4b 0xc5 0xe7 0x4e
563
564
565 #----------------------------------------------------------------------
566 # Vector Maximum Pairwise (Signed and Unsigned Integer)
567 #----------------------------------------------------------------------
568 # CHECK: smaxp v1.8b, v15.8b, v22.8b
569 # CHECK: umaxp v2.16b, v14.16b, v23.16b
570 # CHECK: smaxp v3.4h, v13.4h, v24.4h
571 # CHECK: umaxp v4.8h, v12.8h, v25.8h
572 # CHECK: smaxp v5.2s, v11.2s, v26.2s
573 # CHECK: umaxp v6.4s, v10.4s, v27.4s
574 0xe1 0xa5 0x36 0x0e
575 0xc2 0xa5 0x37 0x6e
576 0xa3 0xa5 0x78 0x0e
577 0x84 0xa5 0x79 0x6e
578 0x65 0xa5 0xba 0x0e
579 0x46 0xa5 0xbb 0x6e
580
581 #----------------------------------------------------------------------
582 # Vector Minimum Pairwise (Signed and Unsigned Integer)
583 #----------------------------------------------------------------------
584 # CHECK: uminp v1.8b, v15.8b, v22.8b
585 # CHECK: sminp v2.16b, v14.16b, v23.16b
586 # CHECK: uminp v3.4h, v13.4h, v24.4h
587 # CHECK: sminp v4.8h, v12.8h, v25.8h
588 # CHECK: uminp v5.2s, v11.2s, v26.2s
589 # CHECK: sminp v6.4s, v10.4s, v27.4s
590 0xe1 0xad 0x36 0x2e
591 0xc2 0xad 0x37 0x4e
592 0xa3 0xad 0x78 0x2e
593 0x84 0xad 0x79 0x4e
594 0x65 0xad 0xba 0x2e
595 0x46 0xad 0xbb 0x4e
596
597 #----------------------------------------------------------------------
598 # Vector Maximum Pairwise (Floating Point)
599 #----------------------------------------------------------------------
600 # CHECK: fmaxp v29.2s, v28.2s, v25.2s
601 # CHECK: fmaxp v9.4s, v8.4s, v5.4s
602 # CHECK: fmaxp v11.2d, v10.2d, v7.2d
603 0x9d 0xf7 0x39 0x2e
604 0x09 0xf5 0x25 0x6e
605 0x4b 0xf5 0x67 0x6e
606
607 #----------------------------------------------------------------------
608 # Vector Minimum Pairwise (Floating Point)
609 #----------------------------------------------------------------------
610 # CHECK: fminp v29.2s, v28.2s, v25.2s
611 # CHECK: fminp v9.4s, v8.4s, v5.4s
612 # CHECK: fminp v11.2d, v10.2d, v7.2d
613 0x9d 0xf7 0xb9 0x2e
614 0x09 0xf5 0xa5 0x6e
615 0x4b 0xf5 0xe7 0x6e
616
617 #----------------------------------------------------------------------
618 # Vector maxNum Pairwise (Floating Point)
619 #----------------------------------------------------------------------
620 # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
621 # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
622 # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
623 0x09 0xc5 0x25 0x2e
624 0x09 0xc5 0x25 0x6e
625 0x4b 0xc5 0x67 0x6e
626
627 #----------------------------------------------------------------------
628 # Vector minNum Pairwise (Floating Point)
629 #----------------------------------------------------------------------
630 # CHECK: fminnmp v2.2s, v8.2s, v25.2s
631 # CHECK: fminnmp v9.4s, v8.4s, v5.4s
632 # CHECK: fminnmp v11.2d, v10.2d, v7.2d
633 0x02 0xc5 0xb9 0x2e
634 0x09 0xc5 0xa5 0x6e
635 0x4b 0xc5 0xe7 0x6e
636
637 #------------------------------------------------------------------------------
638 # Vector Add Pairwise (Integer)
639 #------------------------------------------------------------------------------
640 # CHECK: addp v31.8b, v31.8b, v31.8b
641 # CHECK: addp v0.2d, v0.2d, v0.2d
642 0xff 0xbf 0x3f 0x0e
643 0x00 0xbc 0xe0 0x4e
644
645 #------------------------------------------------------------------------------
646 # Vector Add Pairwise (Floating Point)
647 #------------------------------------------------------------------------------
648 # CHECK: faddp v0.4s, v0.4s, v0.4s
649 # CHECK: faddp v31.2s, v31.2s, v31.2s
650 0x00 0xd4 0x20 0x6e
651 0xff 0xd7 0x3f 0x2e
652
653
654 #------------------------------------------------------------------------------
655 # Vector Saturating Doubling Multiply High
656 # Vector Saturating Rouding Doubling Multiply High
657 #------------------------------------------------------------------------------
658 # CHECK: sqdmulh v31.2s, v31.2s, v31.2s
659 # CHECK: sqdmulh v5.4s, v7.4s, v9.4s
660 # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
661 # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
662 0xff 0xb7 0xbf 0x0e
663 0xe5 0xb4 0xa9 0x4e
664 0x7f 0xb4 0x6d 0x2e
665 0x40 0xb5 0x74 0x6e
666
667 #------------------------------------------------------------------------------
668 # Vector Multiply Extended
669 #------------------------------------------------------------------------------
670 # CHECK: fmulx v1.2s, v22.2s, v2.2s
671 # CHECK: fmulx v21.4s, v15.4s, v3.4s
672 # CHECK: fmulx v11.2d, v5.2d, v23.2d
673 0xc1 0xde 0x22 0x0e
674 0xf5 0xdd 0x23 0x4e
675 0xab 0xdc 0x77 0x4e
676
677 #----------------------------------------------------------------------
678 # Vector Shift Left by Immediate
679 #----------------------------------------------------------------------
680 # CHECK: shl v0.4h, v1.4h, #3
681 # CHECK: shl v0.16b, v1.16b, #3
682 # CHECK: shl v0.4s, v1.4s, #3
683 # CHECK: shl v0.2d, v1.2d, #3
684 0x20,0x54,0x13,0x0f
685 0x20,0x54,0x0b,0x4f
686 0x20,0x54,0x23,0x4f
687 0x20,0x54,0x43,0x4f
688
689 #----------------------------------------------------------------------
690 # Vector Shift Left Long (Signed, Unsigned) by Immediate
691 #----------------------------------------------------------------------
692 # CHECK: sshll v0.2d, v1.2s, #3
693 # CHECK: sshll2 v0.4s, v1.8h, #3
694 # CHECK: ushll v0.4s, v1.4h, #3
695 # CHECK: ushll2 v0.8h, v1.16b, #3
696 0x20 0xa4 0x23 0x0f
697 0x20 0xa4 0x13 0x4f
698 0x20 0xa4 0x13 0x2f
699 0x20 0xa4 0x0b 0x6f
700
701 #-----------------------------------------------------------------------------
702 #Integer shift right (Signed)
703 #-----------------------------------------------------------------------------
704 # CHECK: sshr v0.8b, v1.8b, #3
705 # CHECK: sshr v0.4h, v1.4h, #3
706 # CHECK: sshr v0.2s, v1.2s, #3
707 # CHECK: sshr v0.16b, v1.16b, #3
708 # CHECK: sshr v0.8h, v1.8h, #3
709 # CHECK: sshr v0.4s, v1.4s, #3
710 # CHECK: sshr v0.2d, v1.2d, #3
711 0x20,0x04,0x0d,0x0f
712 0x20,0x04,0x1d,0x0f
713 0x20,0x04,0x3d,0x0f
714 0x20,0x04,0x0d,0x4f
715 0x20,0x04,0x1d,0x4f
716 0x20,0x04,0x3d,0x4f
717 0x20,0x04,0x7d,0x4f
718
719 #-----------------------------------------------------------------------------
720 #Integer shift right (Unsigned)
721 #-----------------------------------------------------------------------------
722 # CHECK: ushr v0.8b, v1.8b, #3
723 # CHECK: ushr v0.4h, v1.4h, #3
724 # CHECK: ushr v0.2s, v1.2s, #3
725 # CHECK: ushr v0.16b, v1.16b, #3
726 # CHECK: ushr v0.8h, v1.8h, #3
727 # CHECK: ushr v0.4s, v1.4s, #3
728 # CHECK: ushr v0.2d, v1.2d, #3
729 0x20,0x04,0x0d,0x2f
730 0x20,0x04,0x1d,0x2f
731 0x20,0x04,0x3d,0x2f
732 0x20,0x04,0x0d,0x6f
733 0x20,0x04,0x1d,0x6f
734 0x20,0x04,0x3d,0x6f
735 0x20,0x04,0x7d,0x6f
736
737 #-----------------------------------------------------------------------------
738 #Integer shift right and accumulate (Signed)
739 #-----------------------------------------------------------------------------
740 # CHECK: ssra v0.8b, v1.8b, #3
741 # CHECK: ssra v0.4h, v1.4h, #3
742 # CHECK: ssra v0.2s, v1.2s, #3
743 # CHECK: ssra v0.16b, v1.16b, #3
744 # CHECK: ssra v0.8h, v1.8h, #3
745 # CHECK: ssra v0.4s, v1.4s, #3
746 # CHECK: ssra v0.2d, v1.2d, #3
747 0x20,0x14,0x0d,0x0f
748 0x20,0x14,0x1d,0x0f
749 0x20,0x14,0x3d,0x0f
750 0x20,0x14,0x0d,0x4f
751 0x20,0x14,0x1d,0x4f
752 0x20,0x14,0x3d,0x4f
753 0x20,0x14,0x7d,0x4f
754
755 #-----------------------------------------------------------------------------
756 #Integer shift right and accumulate (Unsigned)
757 #-----------------------------------------------------------------------------
758 # CHECK: usra v0.8b, v1.8b, #3
759 # CHECK: usra v0.4h, v1.4h, #3
760 # CHECK: usra v0.2s, v1.2s, #3
761 # CHECK: usra v0.16b, v1.16b, #3
762 # CHECK: usra v0.8h, v1.8h, #3
763 # CHECK: usra v0.4s, v1.4s, #3
764 # CHECK: usra v0.2d, v1.2d, #3
765 0x20,0x14,0x0d,0x2f
766 0x20,0x14,0x1d,0x2f
767 0x20,0x14,0x3d,0x2f
768 0x20,0x14,0x0d,0x6f
769 0x20,0x14,0x1d,0x6f
770 0x20,0x14,0x3d,0x6f
771 0x20,0x14,0x7d,0x6f
772
773 #-----------------------------------------------------------------------------
774 #Integer rounding shift right (Signed)
775 #-----------------------------------------------------------------------------
776 # CHECK: srshr v0.8b, v1.8b, #3
777 # CHECK: srshr v0.4h, v1.4h, #3
778 # CHECK: srshr v0.2s, v1.2s, #3
779 # CHECK: srshr v0.16b, v1.16b, #3
780 # CHECK: srshr v0.8h, v1.8h, #3
781 # CHECK: srshr v0.4s, v1.4s, #3
782 # CHECK: srshr v0.2d, v1.2d, #3
783 0x20,0x24,0x0d,0x0f
784 0x20,0x24,0x1d,0x0f
785 0x20,0x24,0x3d,0x0f
786 0x20,0x24,0x0d,0x4f
787 0x20,0x24,0x1d,0x4f
788 0x20,0x24,0x3d,0x4f
789 0x20,0x24,0x7d,0x4f
790
791 #-----------------------------------------------------------------------------
792 #Integer rounding shift right (Unsigned)
793 #-----------------------------------------------------------------------------
794 # CHECK: urshr v0.8b, v1.8b, #3
795 # CHECK: urshr v0.4h, v1.4h, #3
796 # CHECK: urshr v0.2s, v1.2s, #3
797 # CHECK: urshr v0.16b, v1.16b, #3
798 # CHECK: urshr v0.8h, v1.8h, #3
799 # CHECK: urshr v0.4s, v1.4s, #3
800 # CHECK: urshr v0.2d, v1.2d, #3
801 0x20,0x24,0x0d,0x2f
802 0x20,0x24,0x1d,0x2f
803 0x20,0x24,0x3d,0x2f
804 0x20,0x24,0x0d,0x6f
805 0x20,0x24,0x1d,0x6f
806 0x20,0x24,0x3d,0x6f
807 0x20,0x24,0x7d,0x6f
808
809 #-----------------------------------------------------------------------------
810 #Integer rounding shift right and accumulate (Signed)
811 #-----------------------------------------------------------------------------
812 # CHECK: srsra v0.8b, v1.8b, #3
813 # CHECK: srsra v0.4h, v1.4h, #3
814 # CHECK: srsra v0.2s, v1.2s, #3
815 # CHECK: srsra v0.16b, v1.16b, #3
816 # CHECK: srsra v0.8h, v1.8h, #3
817 # CHECK: srsra v0.4s, v1.4s, #3
818 # CHECK: srsra v0.2d, v1.2d, #3
819 0x20,0x34,0x0d,0x0f
820 0x20,0x34,0x1d,0x0f
821 0x20,0x34,0x3d,0x0f
822 0x20,0x34,0x0d,0x4f
823 0x20,0x34,0x1d,0x4f
824 0x20,0x34,0x3d,0x4f
825 0x20,0x34,0x7d,0x4f
826
827 #-----------------------------------------------------------------------------
828 #Integer rounding shift right and accumulate (Unsigned)
829 #-----------------------------------------------------------------------------
830 # CHECK: ursra v0.8b, v1.8b, #3
831 # CHECK: ursra v0.4h, v1.4h, #3
832 # CHECK: ursra v0.2s, v1.2s, #3
833 # CHECK: ursra v0.16b, v1.16b, #3
834 # CHECK: ursra v0.8h, v1.8h, #3
835 # CHECK: ursra v0.4s, v1.4s, #3
836 # CHECK: ursra v0.2d, v1.2d, #3
837 0x20,0x34,0x0d,0x2f
838 0x20,0x34,0x1d,0x2f
839 0x20,0x34,0x3d,0x2f
840 0x20,0x34,0x0d,0x6f
841 0x20,0x34,0x1d,0x6f
842 0x20,0x34,0x3d,0x6f
843 0x20,0x34,0x7d,0x6f
844
845 #-----------------------------------------------------------------------------
846 #Integer shift right and insert
847 #-----------------------------------------------------------------------------
848 # CHECK: sri v0.8b, v1.8b, #3
849 # CHECK: sri v0.4h, v1.4h, #3
850 # CHECK: sri v0.2s, v1.2s, #3
851 # CHECK: sri v0.16b, v1.16b, #3
852 # CHECK: sri v0.8h, v1.8h, #3
853 # CHECK: sri v0.4s, v1.4s, #3
854 # CHECK: sri v0.2d, v1.2d, #3
855 0x20,0x44,0x0d,0x2f
856 0x20,0x44,0x1d,0x2f
857 0x20,0x44,0x3d,0x2f
858 0x20,0x44,0x0d,0x6f
859 0x20,0x44,0x1d,0x6f
860 0x20,0x44,0x3d,0x6f
861 0x20,0x44,0x7d,0x6f
862
863 #-----------------------------------------------------------------------------
864 #Integer shift left and insert
865 #-----------------------------------------------------------------------------
866 # CHECK: sli v0.8b, v1.8b, #3
867 # CHECK: sli v0.4h, v1.4h, #3
868 # CHECK: sli v0.2s, v1.2s, #3
869 # CHECK: sli v0.16b, v1.16b, #3
870 # CHECK: sli v0.8h, v1.8h, #3
871 # CHECK: sli v0.4s, v1.4s, #3
872 # CHECK: sli v0.2d, v1.2d, #3
873 0x20,0x54,0x0b,0x2f
874 0x20,0x54,0x13,0x2f
875 0x20,0x54,0x23,0x2f
876 0x20,0x54,0x0b,0x6f
877 0x20,0x54,0x13,0x6f
878 0x20,0x54,0x23,0x6f
879 0x20,0x54,0x43,0x6f
880
881 #-----------------------------------------------------------------------------
882 #Integer saturating shift left unsigned
883 #-----------------------------------------------------------------------------
884 # CHECK: sqshlu v0.8b, v1.8b, #3
885 # CHECK: sqshlu v0.4h, v1.4h, #3
886 # CHECK: sqshlu v0.2s, v1.2s, #3
887 # CHECK: sqshlu v0.16b, v1.16b, #3
888 # CHECK: sqshlu v0.8h, v1.8h, #3
889 # CHECK: sqshlu v0.4s, v1.4s, #3
890 # CHECK: sqshlu v0.2d, v1.2d, #3
891 0x20,0x64,0x0b,0x2f
892 0x20,0x64,0x13,0x2f
893 0x20,0x64,0x23,0x2f
894 0x20,0x64,0x0b,0x6f
895 0x20,0x64,0x13,0x6f
896 0x20,0x64,0x23,0x6f
897 0x20,0x64,0x43,0x6f
898
899 #-----------------------------------------------------------------------------
900 #Integer saturating shift left (Signed)
901 #-----------------------------------------------------------------------------
902 # CHECK: sqshl v0.8b, v1.8b, #3
903 # CHECK: sqshl v0.4h, v1.4h, #3
904 # CHECK: sqshl v0.2s, v1.2s, #3
905 # CHECK: sqshl v0.16b, v1.16b, #3
906 # CHECK: sqshl v0.8h, v1.8h, #3
907 # CHECK: sqshl v0.4s, v1.4s, #3
908 # CHECK: sqshl v0.2d, v1.2d, #3
909 0x20,0x74,0x0b,0x0f
910 0x20,0x74,0x13,0x0f
911 0x20,0x74,0x23,0x0f
912 0x20,0x74,0x0b,0x4f
913 0x20,0x74,0x13,0x4f
914 0x20,0x74,0x23,0x4f
915 0x20,0x74,0x43,0x4f
916
917 #-----------------------------------------------------------------------------
918 #Integer saturating shift left (Unsigned)
919 #-----------------------------------------------------------------------------
920 # CHECK: uqshl v0.8b, v1.8b, #3
921 # CHECK: uqshl v0.4h, v1.4h, #3
922 # CHECK: uqshl v0.2s, v1.2s, #3
923 # CHECK: uqshl v0.16b, v1.16b, #3
924 # CHECK: uqshl v0.8h, v1.8h, #3
925 # CHECK: uqshl v0.4s, v1.4s, #3
926 # CHECK: uqshl v0.2d, v1.2d, #3
927 0x20,0x74,0x0b,0x2f
928 0x20,0x74,0x13,0x2f
929 0x20,0x74,0x23,0x2f
930 0x20,0x74,0x0b,0x6f
931 0x20,0x74,0x13,0x6f
932 0x20,0x74,0x23,0x6f
933 0x20,0x74,0x43,0x6f
934
935 #-----------------------------------------------------------------------------
936 #Integer shift right narrow
937 #-----------------------------------------------------------------------------
938 # CHECK: shrn v0.8b, v1.8h, #3
939 # CHECK: shrn v0.4h, v1.4s, #3
940 # CHECK: shrn v0.2s, v1.2d, #3
941 # CHECK: shrn2 v0.16b, v1.8h, #3
942 # CHECK: shrn2 v0.8h, v1.4s, #3
943 # CHECK: shrn2 v0.4s, v1.2d, #3
944 0x20,0x84,0x0d,0x0f
945 0x20,0x84,0x1d,0x0f
946 0x20,0x84,0x3d,0x0f
947 0x20,0x84,0x0d,0x4f
948 0x20,0x84,0x1d,0x4f
949 0x20,0x84,0x3d,0x4f
950
951 #-----------------------------------------------------------------------------
952 #Integer saturating shift right unsigned narrow (Signed)
953 #-----------------------------------------------------------------------------
954 # CHECK: sqshrun v0.8b, v1.8h, #3
955 # CHECK: sqshrun v0.4h, v1.4s, #3
956 # CHECK: sqshrun v0.2s, v1.2d, #3
957 # CHECK: sqshrun2 v0.16b, v1.8h, #3
958 # CHECK: sqshrun2 v0.8h, v1.4s, #3
959 # CHECK: sqshrun2 v0.4s, v1.2d, #3
960 0x20,0x84,0x0d,0x2f
961 0x20,0x84,0x1d,0x2f
962 0x20,0x84,0x3d,0x2f
963 0x20,0x84,0x0d,0x6f
964 0x20,0x84,0x1d,0x6f
965 0x20,0x84,0x3d,0x6f
966
967 #-----------------------------------------------------------------------------
968 #Integer rounding shift right narrow
969 #-----------------------------------------------------------------------------
970 # CHECK: rshrn v0.8b, v1.8h, #3
971 # CHECK: rshrn v0.4h, v1.4s, #3
972 # CHECK: rshrn v0.2s, v1.2d, #3
973 # CHECK: rshrn2 v0.16b, v1.8h, #3
974 # CHECK: rshrn2 v0.8h, v1.4s, #3
975 # CHECK: rshrn2 v0.4s, v1.2d, #3
976 0x20,0x8c,0x0d,0x0f
977 0x20,0x8c,0x1d,0x0f
978 0x20,0x8c,0x3d,0x0f
979 0x20,0x8c,0x0d,0x4f
980 0x20,0x8c,0x1d,0x4f
981 0x20,0x8c,0x3d,0x4f
982
983 #-----------------------------------------------------------------------------
984 #Integer saturating shift right rounded unsigned narrow (Signed)
985 #-----------------------------------------------------------------------------
986 # CHECK: sqrshrun v0.8b, v1.8h, #3
987 # CHECK: sqrshrun v0.4h, v1.4s, #3
988 # CHECK: sqrshrun v0.2s, v1.2d, #3
989 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
990 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
991 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
992 0x20,0x8c,0x0d,0x2f
993 0x20,0x8c,0x1d,0x2f
994 0x20,0x8c,0x3d,0x2f
995 0x20,0x8c,0x0d,0x6f
996 0x20,0x8c,0x1d,0x6f
997 0x20,0x8c,0x3d,0x6f
998
999 #-----------------------------------------------------------------------------
1000 #Integer saturating shift right narrow (Signed)
1001 #-----------------------------------------------------------------------------
1002 # CHECK: sqshrn v0.8b, v1.8h, #3
1003 # CHECK: sqshrn v0.4h, v1.4s, #3
1004 # CHECK: sqshrn v0.2s, v1.2d, #3
1005 # CHECK: sqshrn2 v0.16b, v1.8h, #3
1006 # CHECK: sqshrn2 v0.8h, v1.4s, #3
1007 # CHECK: sqshrn2 v0.4s, v1.2d, #3
1008 0x20,0x94,0x0d,0x0f
1009 0x20,0x94,0x1d,0x0f
1010 0x20,0x94,0x3d,0x0f
1011 0x20,0x94,0x0d,0x4f
1012 0x20,0x94,0x1d,0x4f
1013 0x20,0x94,0x3d,0x4f
1014
1015 #-----------------------------------------------------------------------------
1016 #Integer saturating shift right narrow (Unsigned)
1017 #-----------------------------------------------------------------------------
1018 # CHECK: uqshrn v0.8b, v1.8h, #3
1019 # CHECK: uqshrn v0.4h, v1.4s, #3
1020 # CHECK: uqshrn v0.2s, v1.2d, #3
1021 # CHECK: uqshrn2 v0.16b, v1.8h, #3
1022 # CHECK: uqshrn2 v0.8h, v1.4s, #3
1023 # CHECK: uqshrn2 v0.4s, v1.2d, #3
1024 0x20,0x94,0x0d,0x2f
1025 0x20,0x94,0x1d,0x2f
1026 0x20,0x94,0x3d,0x2f
1027 0x20,0x94,0x0d,0x6f
1028 0x20,0x94,0x1d,0x6f
1029 0x20,0x94,0x3d,0x6f
1030
1031 #-----------------------------------------------------------------------------
1032 #Integer saturating shift right rounded narrow (Signed)
1033 #-----------------------------------------------------------------------------
1034 # CHECK: sqrshrn v0.8b, v1.8h, #3
1035 # CHECK: sqrshrn v0.4h, v1.4s, #3
1036 # CHECK: sqrshrn v0.2s, v1.2d, #3
1037 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
1038 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
1039 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
1040 0x20,0x9c,0x0d,0x0f
1041 0x20,0x9c,0x1d,0x0f
1042 0x20,0x9c,0x3d,0x0f
1043 0x20,0x9c,0x0d,0x4f
1044 0x20,0x9c,0x1d,0x4f
1045 0x20,0x9c,0x3d,0x4f
1046
1047 #-----------------------------------------------------------------------------
1048 #Integer saturating shift right rounded narrow (Unsigned)
1049 #-----------------------------------------------------------------------------
1050 # CHECK: uqrshrn v0.8b, v1.8h, #3
1051 # CHECK: uqrshrn v0.4h, v1.4s, #3
1052 # CHECK: uqrshrn v0.2s, v1.2d, #3
1053 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
1054 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
1055 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
1056 0x20,0x9c,0x0d,0x2f
1057 0x20,0x9c,0x1d,0x2f
1058 0x20,0x9c,0x3d,0x2f
1059 0x20,0x9c,0x0d,0x6f
1060 0x20,0x9c,0x1d,0x6f
1061 0x20,0x9c,0x3d,0x6f
1062
1063 #-----------------------------------------------------------------------------
1064 #Fixed-point convert to floating-point
1065 #-----------------------------------------------------------------------------
1066 # CHECK: scvtf v0.2s, v1.2s, #3
1067 # CHECK: scvtf v0.4s, v1.4s, #3
1068 # CHECK: scvtf v0.2d, v1.2d, #3
1069 # CHECK: ucvtf v0.2s, v1.2s, #3
1070 # CHECK: ucvtf v0.4s, v1.4s, #3
1071 # CHECK: ucvtf v0.2d, v1.2d, #3
1072
1073 0x20,0xe4,0x3d,0x0f
1074 0x20,0xe4,0x3d,0x4f
1075 0x20,0xe4,0x7d,0x4f
1076 0x20,0xe4,0x3d,0x2f
1077 0x20,0xe4,0x3d,0x6f
1078 0x20,0xe4,0x7d,0x6f
1079
1080 #-----------------------------------------------------------------------------
1081 #Floating-point convert to fixed-point
1082 #-----------------------------------------------------------------------------
1083 # CHECK: fcvtzs v0.2s, v1.2s, #3
1084 # CHECK: fcvtzs v0.4s, v1.4s, #3
1085 # CHECK: fcvtzs v0.2d, v1.2d, #3
1086 # CHECK: fcvtzu v0.2s, v1.2s, #3
1087 # CHECK: fcvtzu v0.4s, v1.4s, #3
1088 # CHECK: fcvtzu v0.2d, v1.2d, #3
1089 0x20,0xfc,0x3d,0x0f
1090 0x20,0xfc,0x3d,0x4f
1091 0x20,0xfc,0x7d,0x4f
1092 0x20,0xfc,0x3d,0x2f
1093 0x20,0xfc,0x3d,0x6f
1094 0x20,0xfc,0x7d,0x6f
1095
1096
1097 #------------------------------------------------------------------------------
1098 # Vector with 3 operands having different data types
1099 #------------------------------------------------------------------------------
1100
1101 #------------------------------------------------------------------------------
1102 # Long
1103 #------------------------------------------------------------------------------
1104
1105 #------------------------------------------------------------------------------
1106 # Long - Variant 1
1107 #------------------------------------------------------------------------------
1108
1109 # CHECK: saddl v0.8h, v1.8b, v2.8b
1110 # CHECK: saddl v0.4s, v1.4h, v2.4h
1111 # CHECK: saddl v0.2d, v1.2s, v2.2s
1112 0x20 0x00 0x22 0x0e
1113 0x20 0x00 0x62 0x0e
1114 0x20 0x00 0xa2 0x0e
1115
1116 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
1117 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
1118 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
1119 0x20 0x00 0x62 0x4e
1120 0x20 0x00 0x22 0x4e
1121 0x20 0x00 0xa2 0x4e
1122
1123 # CHECK: uaddl v0.8h, v1.8b, v2.8b
1124 # CHECK: uaddl v0.4s, v1.4h, v2.4h
1125 # CHECK: uaddl v0.2d, v1.2s, v2.2s
1126 0x20 0x00 0x22 0x2e
1127 0x20 0x00 0x62 0x2e
1128 0x20 0x00 0xa2 0x2e
1129
1130 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1131 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1132 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
1133 0x20 0x00 0x22 0x6e
1134 0x20 0x00 0x62 0x6e
1135 0x20 0x00 0xa2 0x6e
1136
1137 # CHECK: ssubl v0.8h, v1.8b, v2.8b
1138 # CHECK: ssubl v0.4s, v1.4h, v2.4h
1139 # CHECK: ssubl v0.2d, v1.2s, v2.2s
1140 0x20 0x20 0x22 0x0e
1141 0x20 0x20 0x62 0x0e
1142 0x20 0x20 0xa2 0x0e
1143
1144 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1145 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1146 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
1147 0x20 0x20 0x22 0x4e
1148 0x20 0x20 0x62 0x4e
1149 0x20 0x20 0xa2 0x4e
1150
1151 # CHECK: usubl v0.8h, v1.8b, v2.8b
1152 # CHECK: usubl v0.4s, v1.4h, v2.4h
1153 # CHECK: usubl v0.2d, v1.2s, v2.2s
1154 0x20 0x20 0x22 0x2e
1155 0x20 0x20 0x62 0x2e
1156 0x20 0x20 0xa2 0x2e
1157
1158 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
1159 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
1160 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
1161 0x20 0x20 0x22 0x6e
1162 0x20 0x20 0x62 0x6e
1163 0x20 0x20 0xa2 0x6e
1164
1165 # CHECK: sabal v0.8h, v1.8b, v2.8b
1166 # CHECK: sabal v0.4s, v1.4h, v2.4h
1167 # CHECK: sabal v0.2d, v1.2s, v2.2s
1168 0x20 0x50 0x22 0x0e
1169 0x20 0x50 0x62 0x0e
1170 0x20 0x50 0xa2 0x0e
1171
1172 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
1173 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
1174 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
1175 0x20 0x50 0x22 0x4e
1176 0x20 0x50 0x62 0x4e
1177 0x20 0x50 0xa2 0x4e
1178
1179 # CHECK: uabal v0.8h, v1.8b, v2.8b
1180 # CHECK: uabal v0.4s, v1.4h, v2.4h
1181 # CHECK: uabal v0.2d, v1.2s, v2.2s
1182 0x20 0x50 0x22 0x2e
1183 0x20 0x50 0x62 0x2e
1184 0x20 0x50 0xa2 0x2e
1185
1186 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
1187 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
1188 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
1189 0x20 0x50 0x22 0x6e
1190 0x20 0x50 0x62 0x6e
1191 0x20 0x50 0xa2 0x6e
1192
1193 # CHECK: sabdl v0.8h, v1.8b, v2.8b
1194 # CHECK: sabdl v0.4s, v1.4h, v2.4h
1195 # CHECK: sabdl v0.2d, v1.2s, v2.2s
1196 0x20 0x70 0x22 0x0e
1197 0x20 0x70 0x62 0x0e
1198 0x20 0x70 0xa2 0x0e
1199
1200 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1201 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1202 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
1203 0x20 0x70 0x22 0x4e
1204 0x20 0x70 0x62 0x4e
1205 0x20 0x70 0xa2 0x4e
1206
1207 # CHECK: uabdl v0.8h, v1.8b, v2.8b
1208 # CHECK: uabdl v0.4s, v1.4h, v2.4h
1209 # CHECK: uabdl v0.2d, v1.2s, v2.2s
1210 0x20 0x70 0x22 0x2e
1211 0x20 0x70 0x62 0x2e
1212 0x20 0x70 0xa2 0x2e
1213
1214 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1215 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1216 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
1217 0x20 0x70 0x22 0x6e
1218 0x20 0x70 0x62 0x6e
1219 0x20 0x70 0xa2 0x6e
1220
1221 # CHECK: smlal v0.8h, v1.8b, v2.8b
1222 # CHECK: smlal v0.4s, v1.4h, v2.4h
1223 # CHECK: smlal v0.2d, v1.2s, v2.2s
1224 0x20 0x80 0x22 0x0e
1225 0x20 0x80 0x62 0x0e
1226 0x20 0x80 0xa2 0x0e
1227
1228 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
1229 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
1230 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
1231 0x20 0x80 0x22 0x4e
1232 0x20 0x80 0x62 0x4e
1233 0x20 0x80 0xa2 0x4e
1234
1235 # CHECK: umlal v0.8h, v1.8b, v2.8b
1236 # CHECK: umlal v0.4s, v1.4h, v2.4h
1237 # CHECK: umlal v0.2d, v1.2s, v2.2s
1238
1239 0x20 0x80 0x22 0x2e
1240 0x20 0x80 0x62 0x2e
1241 0x20 0x80 0xa2 0x2e
1242
1243 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
1244 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
1245 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
1246 0x20 0x80 0x22 0x6e
1247 0x20 0x80 0x62 0x6e
1248 0x20 0x80 0xa2 0x6e
1249
1250 # CHECK: smlsl v0.8h, v1.8b, v2.8b
1251 # CHECK: smlsl v0.4s, v1.4h, v2.4h
1252 # CHECK: smlsl v0.2d, v1.2s, v2.2s
1253 0x20 0xa0 0x22 0x0e
1254 0x20 0xa0 0x62 0x0e
1255 0x20 0xa0 0xa2 0x0e
1256
1257 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1258 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1259 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
1260 0x20 0xa0 0x22 0x4e
1261 0x20 0xa0 0x62 0x4e
1262 0x20 0xa0 0xa2 0x4e
1263
1264 # CHECK: umlsl v0.8h, v1.8b, v2.8b
1265 # CHECK: umlsl v0.4s, v1.4h, v2.4h
1266 # CHECK: umlsl v0.2d, v1.2s, v2.2s
1267 0x20 0xa0 0x22 0x2e
1268 0x20 0xa0 0x62 0x2e
1269 0x20 0xa0 0xa2 0x2e
1270
1271 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1272 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1273 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
1274 0x20 0xa0 0x22 0x6e
1275 0x20 0xa0 0x62 0x6e
1276 0x20 0xa0 0xa2 0x6e
1277
1278 # CHECK: smull v0.8h, v1.8b, v2.8b
1279 # CHECK: smull v0.4s, v1.4h, v2.4h
1280 # CHECK: smull v0.2d, v1.2s, v2.2s
1281 0x20 0xc0 0x22 0x0e
1282 0x20 0xc0 0x62 0x0e
1283 0x20 0xc0 0xa2 0x0e
1284
1285 # CHECK: smull2 v0.8h, v1.16b, v2.16b
1286 # CHECK: smull2 v0.4s, v1.8h, v2.8h
1287 # CHECK: smull2 v0.2d, v1.4s, v2.4s
1288 0x20 0xc0 0x22 0x4e
1289 0x20 0xc0 0x62 0x4e
1290 0x20 0xc0 0xa2 0x4e
1291
1292 # CHECK: umull v0.8h, v1.8b, v2.8b
1293 # CHECK: umull v0.4s, v1.4h, v2.4h
1294 # CHECK: umull v0.2d, v1.2s, v2.2s
1295 0x20 0xc0 0x22 0x2e
1296 0x20 0xc0 0x62 0x2e
1297 0x20 0xc0 0xa2 0x2e
1298
1299 # CHECK: umull2 v0.8h, v1.16b, v2.16b
1300 # CHECK: umull2 v0.4s, v1.8h, v2.8h
1301 # CHECK: umull2 v0.2d, v1.4s, v2.4s
1302 0x20 0xc0 0x22 0x6e
1303 0x20 0xc0 0x62 0x6e
1304 0x20 0xc0 0xa2 0x6e
1305
1306 #------------------------------------------------------------------------------
1307 # Long - Variant 2
1308 #------------------------------------------------------------------------------
1309
1310 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1311 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
1312 0x20 0x90 0x62 0x0e
1313 0x20 0x90 0xa2 0x0e
1314
1315 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1316 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
1317 0x20 0x90 0x62 0x4e
1318 0x20 0x90 0xa2 0x4e
1319
1320 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1321 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
1322 0x20 0xb0 0x62 0x0e
1323 0x20 0xb0 0xa2 0x0e
1324
1325 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1326 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
1327 0x20 0xb0 0x62 0x4e
1328 0x20 0xb0 0xa2 0x4e
1329
1330 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
1331 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
1332 0x20 0xd0 0x62 0x0e
1333 0x20 0xd0 0xa2 0x0e
1334
1335 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1336 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
1337 0x20 0xd0 0x62 0x4e
1338 0x20 0xd0 0xa2 0x4e
1339
1340 #------------------------------------------------------------------------------
1341 # Long - Variant 3
1342 #------------------------------------------------------------------------------
1343
1344 # CHECK: pmull v0.8h, v1.8b, v2.8b
1345 0x20 0xe0 0x22 0x0e
1346
1347 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
1348 0x20 0xe0 0x22 0x4e
1349
1350 #------------------------------------------------------------------------------
1351 # Widen
1352 #------------------------------------------------------------------------------
1353
1354 # CHECK: saddw v0.8h, v1.8h, v2.8b
1355 # CHECK: saddw v0.4s, v1.4s, v2.4h
1356 # CHECK: saddw v0.2d, v1.2d, v2.2s
1357 0x20 0x10 0x22 0x0e
1358 0x20 0x10 0x62 0x0e
1359 0x20 0x10 0xa2 0x0e
1360
1361 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
1362 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
1363 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
1364 0x20 0x10 0x22 0x4e
1365 0x20 0x10 0x62 0x4e
1366 0x20 0x10 0xa2 0x4e
1367
1368 # CHECK: uaddw v0.8h, v1.8h, v2.8b
1369 # CHECK: uaddw v0.4s, v1.4s, v2.4h
1370 # CHECK: uaddw v0.2d, v1.2d, v2.2s
1371 0x20 0x10 0x22 0x2e
1372 0x20 0x10 0x62 0x2e
1373 0x20 0x10 0xa2 0x2e
1374
1375 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1376 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1377 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
1378 0x20 0x10 0x22 0x6e
1379 0x20 0x10 0x62 0x6e
1380 0x20 0x10 0xa2 0x6e
1381
1382 # CHECK: ssubw v0.8h, v1.8h, v2.8b
1383 # CHECK: ssubw v0.4s, v1.4s, v2.4h
1384 # CHECK: ssubw v0.2d, v1.2d, v2.2s
1385 0x20 0x30 0x22 0x0e
1386 0x20 0x30 0x62 0x0e
1387 0x20 0x30 0xa2 0x0e
1388
1389 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1390 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1391 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
1392 0x20 0x30 0x22 0x4e
1393 0x20 0x30 0x62 0x4e
1394 0x20 0x30 0xa2 0x4e
1395
1396 # CHECK: usubw v0.8h, v1.8h, v2.8b
1397 # CHECK: usubw v0.4s, v1.4s, v2.4h
1398 # CHECK: usubw v0.2d, v1.2d, v2.2s
1399 0x20 0x30 0x22 0x2e
1400 0x20 0x30 0x62 0x2e
1401 0x20 0x30 0xa2 0x2e
1402
1403 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
1404 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
1405 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
1406 0x20 0x30 0x22 0x6e
1407 0x20 0x30 0x62 0x6e
1408 0x20 0x30 0xa2 0x6e
1409
1410 #------------------------------------------------------------------------------
1411 # Narrow
1412 #------------------------------------------------------------------------------
1413
1414 # CHECK: addhn v0.8b, v1.8h, v2.8h
1415 # CHECK: addhn v0.4h, v1.4s, v2.4s
1416 # CHECK: addhn v0.2s, v1.2d, v2.2d
1417 0x20 0x40 0x22 0x0e
1418 0x20 0x40 0x62 0x0e
1419 0x20 0x40 0xa2 0x0e
1420
1421 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
1422 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
1423 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
1424 0x20 0x40 0x22 0x4e
1425 0x20 0x40 0x62 0x4e
1426 0x20 0x40 0xa2 0x4e
1427
1428 # CHECK: raddhn v0.8b, v1.8h, v2.8h
1429 # CHECK: raddhn v0.4h, v1.4s, v2.4s
1430 # CHECK: raddhn v0.2s, v1.2d, v2.2d
1431 0x20 0x40 0x22 0x2e
1432 0x20 0x40 0x62 0x2e
1433 0x20 0x40 0xa2 0x2e
1434
1435 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1436 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1437 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
1438 0x20 0x40 0x22 0x6e
1439 0x20 0x40 0x62 0x6e
1440 0x20 0x40 0xa2 0x6e
1441
1442 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
1443 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
1444 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
1445 0x20 0x60 0x22 0x2e
1446 0x20 0x60 0x62 0x2e
1447 0x20 0x60 0xa2 0x2e
1448
1449 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1450 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1451 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
1452 0x20 0x60 0x22 0x6e
1453 0x20 0x60 0x62 0x6e
1454 0x20 0x60 0xa2 0x6e
1455
1456 #----------------------------------------------------------------------
1457 # Scalar Integer Saturating Doubling Multiply Half High
1458 #----------------------------------------------------------------------
1459 # CHECK: sqdmulh h10, h11, h12
1460 # CHECK: sqdmulh s20, s21, s2
1461 0x6a,0xb5,0x6c,0x5e
1462 0xb4,0xb6,0xa2,0x5e
1463
1464 #----------------------------------------------------------------------
1465 # Scalar Integer Saturating Rounding Doubling Multiply Half High
1466 #----------------------------------------------------------------------
1467 # CHECK: sqrdmulh h10, h11, h12
1468 # CHECK: sqrdmulh s20, s21, s2
1469 0x6a,0xb5,0x6c,0x7e
1470 0xb4,0xb6,0xa2,0x7e
1471
1472 #----------------------------------------------------------------------
1473 # Floating-point multiply extended
1474 #----------------------------------------------------------------------
1475 # CHECK: fmulx s20, s22, s15
1476 # CHECK: fmulx d23, d11, d1
1477 0xd4,0xde,0x2f,0x5e
1478 0x77,0xdd,0x61,0x5e
1479
1480 #----------------------------------------------------------------------
1481 # Floating-point Reciprocal Step
1482 #----------------------------------------------------------------------
1483 # CHECK: frecps s21, s16, s13
1484 # CHECK: frecps d22, d30, d21
1485 0x15,0xfe,0x2d,0x5e
1486 0xd6,0xff,0x75,0x5e
1487
1488 #----------------------------------------------------------------------
1489 # Floating-point Reciprocal Square Root Step
1490 #----------------------------------------------------------------------
1491 # CHECK: frsqrts s21, s5, s12
1492 # CHECK: frsqrts d8, d22, d18
1493 0xb5,0xfc,0xac,0x5e
1494 0xc8,0xfe,0xf2,0x5e
1495
1496 #----------------------------------------------------------------------
1497 # Scalar Signed Integer Convert To Floating-point
1498 #----------------------------------------------------------------------
1499 # CHECK: scvtf s22, s13
1500 # CHECK: scvtf d21, d12
1501 0xb6,0xd9,0x21,0x5e
1502 0x95,0xd9,0x61,0x5e
1503
1504 #----------------------------------------------------------------------
1505 # Scalar Unsigned Integer Convert To Floating-point
1506 #----------------------------------------------------------------------
1507 # CHECK: ucvtf s22, s13
1508 # CHECK: ucvtf d21, d14
1509 0xb6,0xd9,0x21,0x7e
1510 0xd5,0xd9,0x61,0x7e
1511
1512 #----------------------------------------------------------------------
1513 # Scalar Floating-point Reciprocal Estimate
1514 #----------------------------------------------------------------------
1515 # CHECK: frecpe s19, s14
1516 # CHECK: frecpe d13, d13
1517 0xd3,0xd9,0xa1,0x5e
1518 0xad,0xd9,0xe1,0x5e
1519
1520 #----------------------------------------------------------------------
1521 # Scalar Floating-point Reciprocal Exponent
1522 #----------------------------------------------------------------------
1523 # CHECK: frecpx s18, s10
1524 # CHECK: frecpx d16, d19
1525 0x52,0xf9,0xa1,0x5e
1526 0x70,0xfa,0xe1,0x5e
1527
1528 #----------------------------------------------------------------------
1529 # Scalar Floating-point Reciprocal Square Root Estimate
1530 #----------------------------------------------------------------------
1531 # CHECK: frsqrte s22, s13
1532 # CHECK: frsqrte d21, d12
1533 0xb6,0xd9,0xa1,0x7e
1534 0x95,0xd9,0xe1,0x7e
1535
1536 #----------------------------------------------------------------------
1537 # Scalar Compare Bitwise Equal
1538 #----------------------------------------------------------------------
1539 # CHECK: cmeq d20, d21, d22
1540 0xb4,0x8e,0xf6,0x7e
1541
1542 #----------------------------------------------------------------------
1543 # Scalar Compare Bitwise Equal To Zero
1544 #----------------------------------------------------------------------
1545 # CHECK: cmeq d20, d21, #0x0
1546 0xb4,0x9a,0xe0,0x5e
1547
1548 #----------------------------------------------------------------------
1549 # Scalar Compare Unsigned Higher Or Same
1550 #----------------------------------------------------------------------
1551 # CHECK: cmhs d20, d21, d22
1552 0xb4,0x3e,0xf6,0x7e
1553
1554         
1555 #----------------------------------------------------------------------
1556 # Scalar Compare Signed Greather Than Or Equal
1557 #----------------------------------------------------------------------
1558 # CHECK: cmge d20, d21, d22
1559 0xb4,0x3e,0xf6,0x5e
1560
1561 #----------------------------------------------------------------------
1562 # Scalar Compare Signed Greather Than Or Equal To Zero
1563 #----------------------------------------------------------------------
1564 # CHECK: cmge d20, d21, #0x0
1565 0xb4,0x8a,0xe0,0x7e
1566
1567 #----------------------------------------------------------------------
1568 # Scalar Compare Unsigned Higher
1569 #----------------------------------------------------------------------
1570 # CHECK: cmhi d20, d21, d22
1571 0xb4,0x36,0xf6,0x7e
1572
1573 #----------------------------------------------------------------------
1574 # Scalar Compare Signed Greater Than
1575 #----------------------------------------------------------------------
1576 # CHECK: cmgt d20, d21, d22
1577 0xb4,0x36,0xf6,0x5e
1578
1579 #----------------------------------------------------------------------
1580 # Scalar Compare Signed Greater Than Zero
1581 #----------------------------------------------------------------------
1582 # CHECK: cmgt d20, d21, #0x0
1583 0xb4,0x8a,0xe0,0x5e
1584
1585 #----------------------------------------------------------------------
1586 # Scalar Compare Signed Less Than Or Equal To Zero
1587 #----------------------------------------------------------------------
1588 # CHECK: cmle d20, d21, #0x0
1589 0xb4,0x9a,0xe0,0x7e
1590
1591 #----------------------------------------------------------------------
1592 # Scalar Compare Less Than Zero
1593 #----------------------------------------------------------------------
1594 # CHECK: cmlt d20, d21, #0x0
1595 0xb4,0xaa,0xe0,0x5e
1596
1597 #----------------------------------------------------------------------
1598 # Scalar Compare Bitwise Test Bits
1599 #----------------------------------------------------------------------
1600 # CHECK: cmtst d20, d21, d22
1601 0xb4,0x8e,0xf6,0x5e
1602
1603 #----------------------------------------------------------------------
1604 # Scalar Floating-point Compare Mask Equal
1605 #----------------------------------------------------------------------
1606 # CHECK: fcmeq s10, s11, s12
1607 # CHECK: fcmeq d20, d21, d22
1608 0x6a,0xe5,0x2c,0x5e
1609 0xb4,0xe6,0x76,0x5e
1610
1611 #----------------------------------------------------------------------
1612 # Scalar Floating-point Compare Mask Equal To Zero
1613 #----------------------------------------------------------------------
1614 # CHECK: fcmeq s10, s11, #0.0
1615 # CHECK: fcmeq d20, d21, #0.0
1616 0x6a,0xd9,0xa0,0x5e
1617 0xb4,0xda,0xe0,0x5e
1618
1619 #----------------------------------------------------------------------
1620 # Scalar Floating-point Compare Mask Greater Than Or Equal
1621 #----------------------------------------------------------------------
1622 # CHECK: fcmge s10, s11, s12
1623 # CHECK: fcmge d20, d21, d22
1624 0x6a,0xe5,0x2c,0x7e
1625 0xb4,0xe6,0x76,0x7e
1626
1627 #----------------------------------------------------------------------
1628 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1629 #----------------------------------------------------------------------
1630 # CHECK: fcmge s10, s11, #0.0
1631 # CHECK: fcmge d20, d21, #0.0
1632 0x6a,0xc9,0xa0,0x7e
1633 0xb4,0xca,0xe0,0x7e
1634
1635 #----------------------------------------------------------------------
1636 # Scalar Floating-point Compare Mask Greather Than
1637 #----------------------------------------------------------------------
1638 # CHECK: fcmgt s10, s11, s12
1639 # CHECK: fcmgt d20, d21, d22
1640 0x6a,0xe5,0xac,0x7e
1641 0xb4,0xe6,0xf6,0x7e
1642
1643 #----------------------------------------------------------------------
1644 # Scalar Floating-point Compare Mask Greather Than Zero
1645 #----------------------------------------------------------------------
1646 # CHECK: fcmgt s10, s11, #0.0
1647 # CHECK: fcmgt d20, d21, #0.0
1648 0x6a,0xc9,0xa0,0x5e
1649 0xb4,0xca,0xe0,0x5e
1650
1651 #----------------------------------------------------------------------
1652 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1653 #----------------------------------------------------------------------
1654 # CHECK: fcmle s10, s11, #0.0
1655 # CHECK: fcmle d20, d21, #0.0
1656 0x6a,0xd9,0xa0,0x7e
1657 0xb4,0xda,0xe0,0x7e
1658
1659 #----------------------------------------------------------------------
1660 # Scalar Floating-point Compare Mask Less Than
1661 #----------------------------------------------------------------------
1662 # CHECK: fcmlt s10, s11, #0.0
1663 # CHECK: fcmlt d20, d21, #0.0
1664 0x6a,0xe9,0xa0,0x5e
1665 0xb4,0xea,0xe0,0x5e
1666
1667 #----------------------------------------------------------------------
1668 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1669 #----------------------------------------------------------------------
1670 # CHECK: facge s10, s11, s12
1671 # CHECK: facge d20, d21, d22
1672 0x6a,0xed,0x2c,0x7e
1673 0xb4,0xee,0x76,0x7e
1674
1675 #----------------------------------------------------------------------
1676 # Scalar Floating-point Absolute Compare Mask Greater Than
1677 #----------------------------------------------------------------------
1678 # CHECK: facgt s10, s11, s12   
1679 # CHECK: facgt d20, d21, d22   
1680 0x6a,0xed,0xac,0x7e
1681 0xb4,0xee,0xf6,0x7e
1682
1683 #----------------------------------------------------------------------
1684 # Scalar Absolute Value
1685 #----------------------------------------------------------------------
1686 # CHECK: abs d29, d24
1687 0x1d,0xbb,0xe0,0x5e
1688
1689 #----------------------------------------------------------------------
1690 # Scalar Signed Saturating Absolute Value
1691 #----------------------------------------------------------------------
1692 # CHECK: sqabs b19, b14
1693 # CHECK: sqabs h21, h15
1694 # CHECK: sqabs s20, s12
1695 # CHECK: sqabs d18, d12
1696 0xd3,0x79,0x20,0x5e
1697 0xf5,0x79,0x60,0x5e
1698 0x94,0x79,0xa0,0x5e
1699 0x92,0x79,0xe0,0x5e
1700
1701 #----------------------------------------------------------------------
1702 # Scalar Negate
1703 #----------------------------------------------------------------------
1704 # CHECK: neg d29, d24
1705 0x1d,0xbb,0xe0,0x7e
1706
1707 #----------------------------------------------------------------------
1708 # Scalar Signed Saturating Negate
1709 #----------------------------------------------------------------------
1710 # CHECK: sqneg b19, b14
1711 # CHECK: sqneg h21, h15
1712 # CHECK: sqneg s20, s12
1713 # CHECK: sqneg d18, d12
1714 0xd3,0x79,0x20,0x7e
1715 0xf5,0x79,0x60,0x7e
1716 0x94,0x79,0xa0,0x7e
1717 0x92,0x79,0xe0,0x7e
1718
1719 #----------------------------------------------------------------------
1720 # Signed Saturating Accumulated of Unsigned Value
1721 #----------------------------------------------------------------------
1722 # CHECK: suqadd b19, b14
1723 # CHECK: suqadd h20, h15
1724 # CHECK: suqadd s21, s12
1725 # CHECK: suqadd d18, d22
1726 0xd3,0x39,0x20,0x5e
1727 0xf4,0x39,0x60,0x5e
1728 0x95,0x39,0xa0,0x5e
1729 0xd2,0x3a,0xe0,0x5e
1730
1731 #----------------------------------------------------------------------
1732 # Unsigned Saturating Accumulated of Signed Value
1733 #----------------------------------------------------------------------
1734 # CHECK: usqadd b19, b14
1735 # CHECK: usqadd h20, h15
1736 # CHECK: usqadd s21, s12
1737 # CHECK: usqadd d18, d22
1738 0xd3,0x39,0x20,0x7e
1739 0xf4,0x39,0x60,0x7e
1740 0x95,0x39,0xa0,0x7e
1741 0xd2,0x3a,0xe0,0x7e
1742
1743 #----------------------------------------------------------------------
1744 # Signed Saturating Doubling Multiply-Add Long
1745 #----------------------------------------------------------------------
1746 # CHECK: sqdmlal s17, h27, h12
1747 # CHECK: sqdmlal d19, s24, s12
1748 0x71,0x93,0x6c,0x5e
1749 0x13,0x93,0xac,0x5e
1750         
1751 #----------------------------------------------------------------------
1752 # Signed Saturating Doubling Multiply-Subtract Long
1753 #----------------------------------------------------------------------
1754 # CHECK: sqdmlsl s14, h12, h25
1755 # CHECK: sqdmlsl d12, s23, s13
1756 0x8e,0xb1,0x79,0x5e
1757 0xec,0xb2,0xad,0x5e
1758         
1759 #----------------------------------------------------------------------
1760 # Signed Saturating Doubling Multiply Long
1761 #----------------------------------------------------------------------
1762 # CHECK: sqdmull s12, h22, h12
1763 # CHECK: sqdmull d15, s22, s12
1764 0xcc,0xd2,0x6c,0x5e
1765 0xcf,0xd2,0xac,0x5e
1766
1767 #----------------------------------------------------------------------
1768 # Scalar Signed Saturating Extract Unsigned Narrow
1769 #----------------------------------------------------------------------
1770 # CHECK: sqxtun b19, h14
1771 # CHECK: sqxtun h21, s15
1772 # CHECK: sqxtun s20, d12
1773 0xd3,0x29,0x21,0x7e
1774 0xf5,0x29,0x61,0x7e
1775 0x94,0x29,0xa1,0x7e
1776
1777 #----------------------------------------------------------------------
1778 # Scalar Signed Saturating Extract Signed Narrow
1779 #----------------------------------------------------------------------
1780 # CHECK: sqxtn b18, h18
1781 # CHECK: sqxtn h20, s17
1782 # CHECK: sqxtn s19, d14
1783 0x52,0x4a,0x21,0x5e
1784 0x34,0x4a,0x61,0x5e
1785 0xd3,0x49,0xa1,0x5e
1786
1787 #----------------------------------------------------------------------
1788 # Scalar Unsigned Saturating Extract Narrow
1789 #----------------------------------------------------------------------
1790 # CHECK: uqxtn b18, h18
1791 # CHECK: uqxtn h20, s17
1792 # CHECK: uqxtn s19, d14
1793 0x52,0x4a,0x21,0x7e
1794 0x34,0x4a,0x61,0x7e
1795 0xd3,0x49,0xa1,0x7e
1796
1797 #----------------------------------------------------------------------
1798 # Scalar Signed Shift Right (Immediate)
1799 #----------------------------------------------------------------------
1800 # CHECK: sshr d15, d16, #12
1801 0x0f,0x06,0x74,0x5f
1802
1803 #----------------------------------------------------------------------
1804 # Scalar Unsigned Shift Right (Immediate)
1805 #----------------------------------------------------------------------
1806 # CHECK: ushr d10, d17, #18
1807 0x2a,0x06,0x6e,0x7f
1808
1809 #----------------------------------------------------------------------
1810 # Scalar Signed Rounding Shift Right (Immediate)
1811 #----------------------------------------------------------------------
1812 # CHECK: srshr d19, d18, #7
1813 0x53,0x26,0x79,0x5f
1814
1815 #----------------------------------------------------------------------
1816 # Scalar Unigned Rounding Shift Right (Immediate)
1817 #----------------------------------------------------------------------
1818 # CHECK: urshr d20, d23, #31
1819 0xf4,0x26,0x61,0x7f
1820
1821 #----------------------------------------------------------------------
1822 # Scalar Signed Shift Right and Accumulate (Immediate)
1823 #----------------------------------------------------------------------
1824 # CHECK: ssra d18, d12, #21
1825 0x92,0x15,0x6b,0x5f
1826
1827 #----------------------------------------------------------------------
1828 # Scalar Unsigned Shift Right and Accumulate (Immediate)
1829 #----------------------------------------------------------------------
1830 # CHECK: usra d20, d13, #61
1831 0xb4,0x15,0x43,0x7f
1832
1833 #----------------------------------------------------------------------
1834 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1835 #----------------------------------------------------------------------
1836 # CHECK: srsra d15, d11, #19
1837 0x6f,0x35,0x6d,0x5f
1838
1839 #----------------------------------------------------------------------
1840 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1841 #----------------------------------------------------------------------
1842 # CHECK: ursra d18, d10, #13
1843 0x52,0x35,0x73,0x7f
1844
1845 #----------------------------------------------------------------------
1846 # Scalar Shift Left (Immediate)
1847 #----------------------------------------------------------------------
1848 # CHECK: shl d7, d10, #12
1849 0x47,0x55,0x4c,0x5f
1850
1851 #----------------------------------------------------------------------
1852 # Signed Saturating Shift Left (Immediate)
1853 #----------------------------------------------------------------------
1854 # CHECK: sqshl b11, b19, #7
1855 # CHECK: sqshl h13, h18, #11
1856 # CHECK: sqshl s14, s17, #22
1857 # CHECK: sqshl d15, d16, #51
1858 0x6b,0x76,0x0f,0x5f
1859 0x4d,0x76,0x1b,0x5f
1860 0x2e,0x76,0x36,0x5f
1861 0x0f,0x76,0x73,0x5f
1862
1863 #----------------------------------------------------------------------
1864 # Unsigned Saturating Shift Left (Immediate)
1865 #----------------------------------------------------------------------
1866 # CHECK: uqshl b18, b15, #6
1867 # CHECK: uqshl h11, h18, #7
1868 # CHECK: uqshl s14, s19, #18
1869 # CHECK: uqshl d15, d12, #19
1870 0xf2,0x75,0x0e,0x7f
1871 0x4b,0x76,0x17,0x7f
1872 0x6e,0x76,0x32,0x7f
1873 0x8f,0x75,0x53,0x7f
1874
1875 #----------------------------------------------------------------------
1876 # Signed Saturating Shift Left Unsigned (Immediate)
1877 #----------------------------------------------------------------------
1878 # CHECK: sqshlu b15, b18, #6
1879 # CHECK: sqshlu h19, h17, #6
1880 # CHECK: sqshlu s16, s14, #25
1881 # CHECK: sqshlu d11, d13, #32
1882 0x4f,0x66,0x0e,0x7f
1883 0x33,0x66,0x16,0x7f
1884 0xd0,0x65,0x39,0x7f
1885 0xab,0x65,0x60,0x7f
1886
1887 #----------------------------------------------------------------------
1888 # Shift Right And Insert (Immediate)
1889 #----------------------------------------------------------------------
1890 # CHECK: sri d10, d12, #14
1891 0x8a,0x45,0x72,0x7f
1892
1893 #----------------------------------------------------------------------
1894 # Shift Left And Insert (Immediate)
1895 #----------------------------------------------------------------------
1896 # CHECK: sli d10, d14, #12
1897 0xca,0x55,0x4c,0x7f
1898
1899 #----------------------------------------------------------------------
1900 # Signed Saturating Shift Right Narrow (Immediate)
1901 #----------------------------------------------------------------------
1902 # CHECK: sqshrn b10, h15, #5
1903 # CHECK: sqshrn h17, s10, #4
1904 # CHECK: sqshrn s18, d10, #31
1905 0xea,0x95,0x0b,0x5f
1906 0x51,0x95,0x1c,0x5f
1907 0x52,0x95,0x21,0x5f
1908
1909 #----------------------------------------------------------------------
1910 # Unsigned Saturating Shift Right Narrow (Immediate)
1911 #----------------------------------------------------------------------
1912 # CHECK: uqshrn b12, h10, #7
1913 # CHECK: uqshrn h10, s14, #5
1914 # CHECK: uqshrn s10, d12, #13
1915 0x4c,0x95,0x09,0x7f
1916 0xca,0x95,0x1b,0x7f
1917 0x8a,0x95,0x33,0x7f
1918
1919 #----------------------------------------------------------------------
1920 # Signed Saturating Rounded Shift Right Narrow (Immediate)
1921 #----------------------------------------------------------------------
1922 # CHECK: sqrshrn b10, h13, #2
1923 # CHECK: sqrshrn h15, s10, #6
1924 # CHECK: sqrshrn s15, d12, #9
1925 0xaa,0x9d,0x0e,0x5f
1926 0x4f,0x9d,0x1a,0x5f
1927 0x8f,0x9d,0x37,0x5f
1928
1929 #----------------------------------------------------------------------
1930 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1931 #----------------------------------------------------------------------
1932 # CHECK: uqrshrn b10, h12, #5
1933 # CHECK: uqrshrn h12, s10, #14
1934 # CHECK: uqrshrn s10, d10, #25
1935 0x8a,0x9d,0x0b,0x7f
1936 0x4c,0x9d,0x12,0x7f
1937 0x4a,0x9d,0x27,0x7f
1938
1939 #----------------------------------------------------------------------
1940 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
1941 #----------------------------------------------------------------------
1942 # CHECK: sqshrun b15, h10, #7
1943 # CHECK: sqshrun h20, s14, #3
1944 # CHECK: sqshrun s10, d15, #15
1945 0x4f,0x85,0x09,0x7f
1946 0xd4,0x85,0x1d,0x7f
1947 0xea,0x85,0x31,0x7f
1948
1949 #----------------------------------------------------------------------
1950 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1951 #----------------------------------------------------------------------
1952 # CHECK: sqrshrun b17, h10, #6
1953 # CHECK: sqrshrun h10, s13, #15
1954 # CHECK: sqrshrun s22, d16, #31
1955 0x51,0x8d,0x0a,0x7f
1956 0xaa,0x8d,0x11,0x7f
1957 0x16,0x8e,0x21,0x7f
1958
1959 #----------------------------------------------------------------------
1960 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1961 #----------------------------------------------------------------------
1962 # CHECK: scvtf s22, s13, #32
1963 # CHECK: scvtf d21, d12, #64
1964 0xb6,0xe5,0x20,0x5f
1965 0x95,0xe5,0x40,0x5f
1966
1967 #----------------------------------------------------------------------
1968 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1969 #----------------------------------------------------------------------
1970 # CHECK: ucvtf s22, s13, #32
1971 # CHECK: ucvtf d21, d14, #64
1972 0xb6,0xe5,0x20,0x7f
1973 0xd5,0xe5,0x40,0x7f
1974
1975 #----------------------------------------------------------------------
1976 # Vector load/store multiple N-element structure
1977 #----------------------------------------------------------------------
1978 # CHECK: ld1 {v0.16b}, [x0]
1979 # CHECK: ld1 {v15.8h, v16.8h}, [x15]
1980 # CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp]
1981 # CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
1982 0x00,0x70,0x40,0x4c
1983 0xef,0xa5,0x40,0x4c
1984 0xff,0x6b,0x40,0x4c
1985 0x00,0x2c,0x40,0x4c
1986
1987 # CHECK: ld2 {v0.8b, v1.8b}, [x0]
1988 # CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15]
1989 # CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
1990 0x00,0x80,0x40,0x0c
1991 0xef,0x45,0x40,0x0c
1992 0xff,0x0b,0x40,0x0c
1993
1994 # CHECK: st1 {v0.16b}, [x0]
1995 # CHECK: st1 {v15.8h, v16.8h}, [x15]
1996 # CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp]
1997 # CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
1998 0x00,0x70,0x00,0x4c
1999 0xef,0xa5,0x00,0x4c
2000 0xff,0x6b,0x00,0x4c
2001 0x00,0x2c,0x00,0x4c
2002
2003 # CHECK: st2 {v0.8b, v1.8b}, [x0]
2004 # CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15]
2005 # CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2006 0x00,0x80,0x00,0x0c
2007 0xef,0x45,0x00,0x0c
2008 0xff,0x0b,0x00,0x0c
2009
2010 #----------------------------------------------------------------------
2011 # Vector load/store multiple N-element structure (post-index)
2012 #----------------------------------------------------------------------
2013 # CHECK: ld1 {v15.8h}, [x15], x2
2014 # CHECK: ld1 {v31.4s, v0.4s}, [sp], #32
2015 # CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2016 # CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2017 0xef,0x75,0xc2,0x4c
2018 0xff,0xab,0xdf,0x4c
2019 0x00,0x6c,0xdf,0x4c
2020 0x00,0x20,0xc3,0x0c
2021
2022 # CHECK: ld2 {v0.16b, v1.16b}, [x0], x1
2023 # CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2024 # CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2025 0x00,0x80,0xc1,0x4c
2026 0xef,0x45,0xc2,0x4c
2027 0xff,0x0b,0xdf,0x4c
2028
2029
2030 # CHECK: st1 {v15.8h}, [x15], x2
2031 # CHECK: st1 {v31.4s, v0.4s}, [sp], #32
2032 # CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2033 # CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2034 0xef,0x75,0x82,0x4c
2035 0xff,0xab,0x9f,0x4c
2036 0x00,0x6c,0x9f,0x4c
2037 0x00,0x20,0x83,0x0c
2038
2039 # CHECK: st2 {v0.16b, v1.16b}, [x0], x1
2040 # CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2041 # CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2042 0x00,0x80,0x81,0x4c
2043 0xef,0x45,0x82,0x4c
2044 0xff,0x0b,0x9f,0x4c
2045
2046 #----------------------------------------------------------------------
2047 # Bitwise extract
2048 #----------------------------------------------------------------------
2049 0x20,0x18,0x02,0x2e
2050 0x20,0x18,0x02,0x6e
2051 # CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
2052 # CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
2053
2054 #----------------------------------------------------------------------
2055 # unzip with 3 same vectors to get primary result
2056 #----------------------------------------------------------------------
2057 # CHECK: uzp1   v1.8b, v1.8b, v2.8b
2058 # CHECK: uzp1   v2.16b, v1.16b, v2.16b
2059 # CHECK: uzp1   v3.4h, v1.4h, v2.4h
2060 # CHECK: uzp1   v4.8h, v1.8h, v2.8h
2061 # CHECK: uzp1   v5.2s, v1.2s, v2.2s
2062 # CHECK: uzp1   v6.4s, v1.4s, v2.4s
2063 # CHECK: uzp1   v7.2d, v1.2d, v2.2d
2064 0x21,0x18,0x02,0x0e
2065 0x22,0x18,0x02,0x4e
2066 0x23,0x18,0x42,0x0e
2067 0x24,0x18,0x42,0x4e
2068 0x25,0x18,0x82,0x0e
2069 0x26,0x18,0x82,0x4e
2070 0x27,0x18,0xc2,0x4e
2071
2072 #----------------------------------------------------------------------
2073 # transpose with 3 same vectors to get primary result
2074 #----------------------------------------------------------------------
2075 # CHECK: trn1   v8.8b, v1.8b, v2.8b
2076 # CHECK: trn1   v9.16b, v1.16b, v2.16b
2077 # CHECK: trn1   v10.4h, v1.4h, v2.4h
2078 # CHECK: trn1   v27.8h, v7.8h, v2.8h
2079 # CHECK: trn1   v12.2s, v7.2s, v2.2s
2080 # CHECK: trn1   v29.4s, v6.4s, v2.4s
2081 # CHECK: trn1   v14.2d, v6.2d, v2.2d
2082 0x28,0x28,0x02,0x0e
2083 0x29,0x28,0x02,0x4e
2084 0x2a,0x28,0x42,0x0e
2085 0xfb,0x28,0x42,0x4e
2086 0xec,0x28,0x82,0x0e
2087 0xdd,0x28,0x82,0x4e
2088 0xce,0x28,0xc2,0x4e
2089
2090 #----------------------------------------------------------------------
2091 # zip with 3 same vectors to get primary result
2092 #----------------------------------------------------------------------
2093 # CHECK: zip1   v31.8b, v5.8b, v2.8b
2094 # CHECK: zip1   v0.16b, v5.16b, v2.16b
2095 # CHECK: zip1   v17.4h, v4.4h, v2.4h
2096 # CHECK: zip1   v2.8h, v4.8h, v2.8h
2097 # CHECK: zip1   v19.2s, v3.2s, v2.2s
2098 # CHECK: zip1   v4.4s, v3.4s, v2.4s
2099 # CHECK: zip1   v21.2d, v2.2d, v2.2d
2100 0xbf,0x38,0x02,0x0e
2101 0xa0,0x38,0x02,0x4e
2102 0x91,0x38,0x42,0x0e
2103 0x82,0x38,0x42,0x4e
2104 0x73,0x38,0x82,0x0e
2105 0x64,0x38,0x82,0x4e
2106 0x55,0x38,0xc2,0x4e
2107
2108 #----------------------------------------------------------------------
2109 # unzip with 3 same vectors to get secondary result
2110 #----------------------------------------------------------------------
2111 # CHECK: uzp2   v6.8b, v2.8b, v2.8b
2112 # CHECK: uzp2   v23.16b, v1.16b, v2.16b
2113 # CHECK: uzp2   v8.4h, v1.4h, v2.4h
2114 # CHECK: uzp2   v25.8h, v0.8h, v2.8h
2115 # CHECK: uzp2   v10.2s, v0.2s, v2.2s
2116 # CHECK: uzp2   v27.4s, v7.4s, v2.4s
2117 # CHECK: uzp2   v12.2d, v7.2d, v2.2d
2118 0x46,0x58,0x02,0x0e
2119 0x37,0x58,0x02,0x4e
2120 0x28,0x58,0x42,0x0e
2121 0x19,0x58,0x42,0x4e
2122 0x0a,0x58,0x82,0x0e
2123 0xfb,0x58,0x82,0x4e
2124 0xec,0x58,0xc2,0x4e
2125
2126 #----------------------------------------------------------------------
2127 # transpose with 3 same vectors to get secondary result
2128 #----------------------------------------------------------------------
2129 # CHECK: trn2   v29.8b, v6.8b, v2.8b
2130 # CHECK: trn2   v14.16b, v6.16b, v2.16b
2131 # CHECK: trn2   v31.4h, v5.4h, v2.4h
2132 # CHECK: trn2   v0.8h, v5.8h, v2.8h
2133 # CHECK: trn2   v17.2s, v4.2s, v2.2s
2134 # CHECK: trn2   v2.4s, v4.4s, v2.4s
2135 # CHECK: trn2   v19.2d, v3.2d, v2.2d
2136 0xdd,0x68,0x02,0x0e
2137 0xce,0x68,0x02,0x4e
2138 0xbf,0x68,0x42,0x0e
2139 0xa0,0x68,0x42,0x4e
2140 0x91,0x68,0x82,0x0e
2141 0x82,0x68,0x82,0x4e
2142 0x73,0x68,0xc2,0x4e
2143
2144 #----------------------------------------------------------------------
2145 # zip with 3 same vectors to get secondary result
2146 #----------------------------------------------------------------------
2147 # CHECK: zip2   v4.8b, v3.8b, v2.8b
2148 # CHECK: zip2   v21.16b, v2.16b, v2.16b
2149 # CHECK: zip2   v6.4h, v2.4h, v2.4h
2150 # CHECK: zip2   v23.8h, v1.8h, v2.8h
2151 # CHECK: zip2   v8.2s, v1.2s, v2.2s
2152 # CHECK: zip2   v25.4s, v0.4s, v2.4s
2153 # CHECK: zip2   v10.2d, v0.2d, v2.2d
2154 0x64,0x78,0x02,0x0e
2155 0x55,0x78,0x02,0x4e
2156 0x46,0x78,0x42,0x0e
2157 0x37,0x78,0x42,0x4e
2158 0x28,0x78,0x82,0x0e
2159 0x19,0x78,0x82,0x4e
2160 0x0a,0x78,0xc2,0x4e