863730ac6be889165038e416801c9651869445d9
[oota-llvm.git] / test / MC / Disassembler / AArch64 / neon-instructions.txt
1 # 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 long 
679 #----------------------------------------------------------------------
680 # CHECK: shll2  v2.8h, v4.16b, #8
681 # CHECK: shll2  v6.4s, v8.8h, #16
682 # CHECK: shll2  v6.2d, v8.4s, #32
683 # CHECK: shll   v2.8h, v4.8b, #8
684 # CHECK: shll   v6.4s, v8.4h, #16
685 # CHECK: shll   v6.2d, v8.2s, #32
686
687 0x82,0x38,0x21,0x6e
688 0x06,0x39,0x61,0x6e
689 0x06,0x39,0xa1,0x6e
690 0x82,0x38,0x21,0x2e
691 0x06,0x39,0x61,0x2e
692 0x06,0x39,0xa1,0x2e
693
694 #----------------------------------------------------------------------
695 # Vector Shift Left by Immediate
696 #----------------------------------------------------------------------
697 # CHECK: shl v0.4h, v1.4h, #3
698 # CHECK: shl v0.16b, v1.16b, #3
699 # CHECK: shl v0.4s, v1.4s, #3
700 # CHECK: shl v0.2d, v1.2d, #3
701 0x20,0x54,0x13,0x0f
702 0x20,0x54,0x0b,0x4f
703 0x20,0x54,0x23,0x4f
704 0x20,0x54,0x43,0x4f
705
706 #----------------------------------------------------------------------
707 # Vector Shift Left Long (Signed, Unsigned) by Immediate
708 #----------------------------------------------------------------------
709 # CHECK: sshll v0.2d, v1.2s, #3
710 # CHECK: sshll2 v0.4s, v1.8h, #3
711 # CHECK: ushll v0.4s, v1.4h, #3
712 # CHECK: ushll2 v0.8h, v1.16b, #3
713 0x20 0xa4 0x23 0x0f
714 0x20 0xa4 0x13 0x4f
715 0x20 0xa4 0x13 0x2f
716 0x20 0xa4 0x0b 0x6f
717
718 #-----------------------------------------------------------------------------
719 #Integer shift right (Signed)
720 #-----------------------------------------------------------------------------
721 # CHECK: sshr v0.8b, v1.8b, #3
722 # CHECK: sshr v0.4h, v1.4h, #3
723 # CHECK: sshr v0.2s, v1.2s, #3
724 # CHECK: sshr v0.16b, v1.16b, #3
725 # CHECK: sshr v0.8h, v1.8h, #3
726 # CHECK: sshr v0.4s, v1.4s, #3
727 # CHECK: sshr v0.2d, v1.2d, #3
728 0x20,0x04,0x0d,0x0f
729 0x20,0x04,0x1d,0x0f
730 0x20,0x04,0x3d,0x0f
731 0x20,0x04,0x0d,0x4f
732 0x20,0x04,0x1d,0x4f
733 0x20,0x04,0x3d,0x4f
734 0x20,0x04,0x7d,0x4f
735
736 #-----------------------------------------------------------------------------
737 #Integer shift right (Unsigned)
738 #-----------------------------------------------------------------------------
739 # CHECK: ushr v0.8b, v1.8b, #3
740 # CHECK: ushr v0.4h, v1.4h, #3
741 # CHECK: ushr v0.2s, v1.2s, #3
742 # CHECK: ushr v0.16b, v1.16b, #3
743 # CHECK: ushr v0.8h, v1.8h, #3
744 # CHECK: ushr v0.4s, v1.4s, #3
745 # CHECK: ushr v0.2d, v1.2d, #3
746 0x20,0x04,0x0d,0x2f
747 0x20,0x04,0x1d,0x2f
748 0x20,0x04,0x3d,0x2f
749 0x20,0x04,0x0d,0x6f
750 0x20,0x04,0x1d,0x6f
751 0x20,0x04,0x3d,0x6f
752 0x20,0x04,0x7d,0x6f
753
754 #-----------------------------------------------------------------------------
755 #Integer shift right and accumulate (Signed)
756 #-----------------------------------------------------------------------------
757 # CHECK: ssra v0.8b, v1.8b, #3
758 # CHECK: ssra v0.4h, v1.4h, #3
759 # CHECK: ssra v0.2s, v1.2s, #3
760 # CHECK: ssra v0.16b, v1.16b, #3
761 # CHECK: ssra v0.8h, v1.8h, #3
762 # CHECK: ssra v0.4s, v1.4s, #3
763 # CHECK: ssra v0.2d, v1.2d, #3
764 0x20,0x14,0x0d,0x0f
765 0x20,0x14,0x1d,0x0f
766 0x20,0x14,0x3d,0x0f
767 0x20,0x14,0x0d,0x4f
768 0x20,0x14,0x1d,0x4f
769 0x20,0x14,0x3d,0x4f
770 0x20,0x14,0x7d,0x4f
771
772 #-----------------------------------------------------------------------------
773 #Integer shift right and accumulate (Unsigned)
774 #-----------------------------------------------------------------------------
775 # CHECK: usra v0.8b, v1.8b, #3
776 # CHECK: usra v0.4h, v1.4h, #3
777 # CHECK: usra v0.2s, v1.2s, #3
778 # CHECK: usra v0.16b, v1.16b, #3
779 # CHECK: usra v0.8h, v1.8h, #3
780 # CHECK: usra v0.4s, v1.4s, #3
781 # CHECK: usra v0.2d, v1.2d, #3
782 0x20,0x14,0x0d,0x2f
783 0x20,0x14,0x1d,0x2f
784 0x20,0x14,0x3d,0x2f
785 0x20,0x14,0x0d,0x6f
786 0x20,0x14,0x1d,0x6f
787 0x20,0x14,0x3d,0x6f
788 0x20,0x14,0x7d,0x6f
789
790 #-----------------------------------------------------------------------------
791 #Integer rounding shift right (Signed)
792 #-----------------------------------------------------------------------------
793 # CHECK: srshr v0.8b, v1.8b, #3
794 # CHECK: srshr v0.4h, v1.4h, #3
795 # CHECK: srshr v0.2s, v1.2s, #3
796 # CHECK: srshr v0.16b, v1.16b, #3
797 # CHECK: srshr v0.8h, v1.8h, #3
798 # CHECK: srshr v0.4s, v1.4s, #3
799 # CHECK: srshr v0.2d, v1.2d, #3
800 0x20,0x24,0x0d,0x0f
801 0x20,0x24,0x1d,0x0f
802 0x20,0x24,0x3d,0x0f
803 0x20,0x24,0x0d,0x4f
804 0x20,0x24,0x1d,0x4f
805 0x20,0x24,0x3d,0x4f
806 0x20,0x24,0x7d,0x4f
807
808 #-----------------------------------------------------------------------------
809 #Integer rounding shift right (Unsigned)
810 #-----------------------------------------------------------------------------
811 # CHECK: urshr v0.8b, v1.8b, #3
812 # CHECK: urshr v0.4h, v1.4h, #3
813 # CHECK: urshr v0.2s, v1.2s, #3
814 # CHECK: urshr v0.16b, v1.16b, #3
815 # CHECK: urshr v0.8h, v1.8h, #3
816 # CHECK: urshr v0.4s, v1.4s, #3
817 # CHECK: urshr v0.2d, v1.2d, #3
818 0x20,0x24,0x0d,0x2f
819 0x20,0x24,0x1d,0x2f
820 0x20,0x24,0x3d,0x2f
821 0x20,0x24,0x0d,0x6f
822 0x20,0x24,0x1d,0x6f
823 0x20,0x24,0x3d,0x6f
824 0x20,0x24,0x7d,0x6f
825
826 #-----------------------------------------------------------------------------
827 #Integer rounding shift right and accumulate (Signed)
828 #-----------------------------------------------------------------------------
829 # CHECK: srsra v0.8b, v1.8b, #3
830 # CHECK: srsra v0.4h, v1.4h, #3
831 # CHECK: srsra v0.2s, v1.2s, #3
832 # CHECK: srsra v0.16b, v1.16b, #3
833 # CHECK: srsra v0.8h, v1.8h, #3
834 # CHECK: srsra v0.4s, v1.4s, #3
835 # CHECK: srsra v0.2d, v1.2d, #3
836 0x20,0x34,0x0d,0x0f
837 0x20,0x34,0x1d,0x0f
838 0x20,0x34,0x3d,0x0f
839 0x20,0x34,0x0d,0x4f
840 0x20,0x34,0x1d,0x4f
841 0x20,0x34,0x3d,0x4f
842 0x20,0x34,0x7d,0x4f
843
844 #-----------------------------------------------------------------------------
845 #Integer rounding shift right and accumulate (Unsigned)
846 #-----------------------------------------------------------------------------
847 # CHECK: ursra v0.8b, v1.8b, #3
848 # CHECK: ursra v0.4h, v1.4h, #3
849 # CHECK: ursra v0.2s, v1.2s, #3
850 # CHECK: ursra v0.16b, v1.16b, #3
851 # CHECK: ursra v0.8h, v1.8h, #3
852 # CHECK: ursra v0.4s, v1.4s, #3
853 # CHECK: ursra v0.2d, v1.2d, #3
854 0x20,0x34,0x0d,0x2f
855 0x20,0x34,0x1d,0x2f
856 0x20,0x34,0x3d,0x2f
857 0x20,0x34,0x0d,0x6f
858 0x20,0x34,0x1d,0x6f
859 0x20,0x34,0x3d,0x6f
860 0x20,0x34,0x7d,0x6f
861
862 #-----------------------------------------------------------------------------
863 #Integer shift right and insert
864 #-----------------------------------------------------------------------------
865 # CHECK: sri v0.8b, v1.8b, #3
866 # CHECK: sri v0.4h, v1.4h, #3
867 # CHECK: sri v0.2s, v1.2s, #3
868 # CHECK: sri v0.16b, v1.16b, #3
869 # CHECK: sri v0.8h, v1.8h, #3
870 # CHECK: sri v0.4s, v1.4s, #3
871 # CHECK: sri v0.2d, v1.2d, #3
872 0x20,0x44,0x0d,0x2f
873 0x20,0x44,0x1d,0x2f
874 0x20,0x44,0x3d,0x2f
875 0x20,0x44,0x0d,0x6f
876 0x20,0x44,0x1d,0x6f
877 0x20,0x44,0x3d,0x6f
878 0x20,0x44,0x7d,0x6f
879
880 #-----------------------------------------------------------------------------
881 #Integer shift left and insert
882 #-----------------------------------------------------------------------------
883 # CHECK: sli v0.8b, v1.8b, #3
884 # CHECK: sli v0.4h, v1.4h, #3
885 # CHECK: sli v0.2s, v1.2s, #3
886 # CHECK: sli v0.16b, v1.16b, #3
887 # CHECK: sli v0.8h, v1.8h, #3
888 # CHECK: sli v0.4s, v1.4s, #3
889 # CHECK: sli v0.2d, v1.2d, #3
890 0x20,0x54,0x0b,0x2f
891 0x20,0x54,0x13,0x2f
892 0x20,0x54,0x23,0x2f
893 0x20,0x54,0x0b,0x6f
894 0x20,0x54,0x13,0x6f
895 0x20,0x54,0x23,0x6f
896 0x20,0x54,0x43,0x6f
897
898 #-----------------------------------------------------------------------------
899 #Integer saturating shift left unsigned
900 #-----------------------------------------------------------------------------
901 # CHECK: sqshlu v0.8b, v1.8b, #3
902 # CHECK: sqshlu v0.4h, v1.4h, #3
903 # CHECK: sqshlu v0.2s, v1.2s, #3
904 # CHECK: sqshlu v0.16b, v1.16b, #3
905 # CHECK: sqshlu v0.8h, v1.8h, #3
906 # CHECK: sqshlu v0.4s, v1.4s, #3
907 # CHECK: sqshlu v0.2d, v1.2d, #3
908 0x20,0x64,0x0b,0x2f
909 0x20,0x64,0x13,0x2f
910 0x20,0x64,0x23,0x2f
911 0x20,0x64,0x0b,0x6f
912 0x20,0x64,0x13,0x6f
913 0x20,0x64,0x23,0x6f
914 0x20,0x64,0x43,0x6f
915
916 #-----------------------------------------------------------------------------
917 #Integer saturating shift left (Signed)
918 #-----------------------------------------------------------------------------
919 # CHECK: sqshl v0.8b, v1.8b, #3
920 # CHECK: sqshl v0.4h, v1.4h, #3
921 # CHECK: sqshl v0.2s, v1.2s, #3
922 # CHECK: sqshl v0.16b, v1.16b, #3
923 # CHECK: sqshl v0.8h, v1.8h, #3
924 # CHECK: sqshl v0.4s, v1.4s, #3
925 # CHECK: sqshl v0.2d, v1.2d, #3
926 0x20,0x74,0x0b,0x0f
927 0x20,0x74,0x13,0x0f
928 0x20,0x74,0x23,0x0f
929 0x20,0x74,0x0b,0x4f
930 0x20,0x74,0x13,0x4f
931 0x20,0x74,0x23,0x4f
932 0x20,0x74,0x43,0x4f
933
934 #-----------------------------------------------------------------------------
935 #Integer saturating shift left (Unsigned)
936 #-----------------------------------------------------------------------------
937 # CHECK: uqshl v0.8b, v1.8b, #3
938 # CHECK: uqshl v0.4h, v1.4h, #3
939 # CHECK: uqshl v0.2s, v1.2s, #3
940 # CHECK: uqshl v0.16b, v1.16b, #3
941 # CHECK: uqshl v0.8h, v1.8h, #3
942 # CHECK: uqshl v0.4s, v1.4s, #3
943 # CHECK: uqshl v0.2d, v1.2d, #3
944 0x20,0x74,0x0b,0x2f
945 0x20,0x74,0x13,0x2f
946 0x20,0x74,0x23,0x2f
947 0x20,0x74,0x0b,0x6f
948 0x20,0x74,0x13,0x6f
949 0x20,0x74,0x23,0x6f
950 0x20,0x74,0x43,0x6f
951
952 #-----------------------------------------------------------------------------
953 #Integer shift right narrow
954 #-----------------------------------------------------------------------------
955 # CHECK: shrn v0.8b, v1.8h, #3
956 # CHECK: shrn v0.4h, v1.4s, #3
957 # CHECK: shrn v0.2s, v1.2d, #3
958 # CHECK: shrn2 v0.16b, v1.8h, #3
959 # CHECK: shrn2 v0.8h, v1.4s, #3
960 # CHECK: shrn2 v0.4s, v1.2d, #3
961 0x20,0x84,0x0d,0x0f
962 0x20,0x84,0x1d,0x0f
963 0x20,0x84,0x3d,0x0f
964 0x20,0x84,0x0d,0x4f
965 0x20,0x84,0x1d,0x4f
966 0x20,0x84,0x3d,0x4f
967
968 #-----------------------------------------------------------------------------
969 #Integer saturating shift right unsigned narrow (Signed)
970 #-----------------------------------------------------------------------------
971 # CHECK: sqshrun v0.8b, v1.8h, #3
972 # CHECK: sqshrun v0.4h, v1.4s, #3
973 # CHECK: sqshrun v0.2s, v1.2d, #3
974 # CHECK: sqshrun2 v0.16b, v1.8h, #3
975 # CHECK: sqshrun2 v0.8h, v1.4s, #3
976 # CHECK: sqshrun2 v0.4s, v1.2d, #3
977 0x20,0x84,0x0d,0x2f
978 0x20,0x84,0x1d,0x2f
979 0x20,0x84,0x3d,0x2f
980 0x20,0x84,0x0d,0x6f
981 0x20,0x84,0x1d,0x6f
982 0x20,0x84,0x3d,0x6f
983
984 #-----------------------------------------------------------------------------
985 #Integer rounding shift right narrow
986 #-----------------------------------------------------------------------------
987 # CHECK: rshrn v0.8b, v1.8h, #3
988 # CHECK: rshrn v0.4h, v1.4s, #3
989 # CHECK: rshrn v0.2s, v1.2d, #3
990 # CHECK: rshrn2 v0.16b, v1.8h, #3
991 # CHECK: rshrn2 v0.8h, v1.4s, #3
992 # CHECK: rshrn2 v0.4s, v1.2d, #3
993 0x20,0x8c,0x0d,0x0f
994 0x20,0x8c,0x1d,0x0f
995 0x20,0x8c,0x3d,0x0f
996 0x20,0x8c,0x0d,0x4f
997 0x20,0x8c,0x1d,0x4f
998 0x20,0x8c,0x3d,0x4f
999
1000 #-----------------------------------------------------------------------------
1001 #Integer saturating shift right rounded unsigned narrow (Signed)
1002 #-----------------------------------------------------------------------------
1003 # CHECK: sqrshrun v0.8b, v1.8h, #3
1004 # CHECK: sqrshrun v0.4h, v1.4s, #3
1005 # CHECK: sqrshrun v0.2s, v1.2d, #3
1006 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
1007 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
1008 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
1009 0x20,0x8c,0x0d,0x2f
1010 0x20,0x8c,0x1d,0x2f
1011 0x20,0x8c,0x3d,0x2f
1012 0x20,0x8c,0x0d,0x6f
1013 0x20,0x8c,0x1d,0x6f
1014 0x20,0x8c,0x3d,0x6f
1015
1016 #-----------------------------------------------------------------------------
1017 #Integer saturating shift right narrow (Signed)
1018 #-----------------------------------------------------------------------------
1019 # CHECK: sqshrn v0.8b, v1.8h, #3
1020 # CHECK: sqshrn v0.4h, v1.4s, #3
1021 # CHECK: sqshrn v0.2s, v1.2d, #3
1022 # CHECK: sqshrn2 v0.16b, v1.8h, #3
1023 # CHECK: sqshrn2 v0.8h, v1.4s, #3
1024 # CHECK: sqshrn2 v0.4s, v1.2d, #3
1025 0x20,0x94,0x0d,0x0f
1026 0x20,0x94,0x1d,0x0f
1027 0x20,0x94,0x3d,0x0f
1028 0x20,0x94,0x0d,0x4f
1029 0x20,0x94,0x1d,0x4f
1030 0x20,0x94,0x3d,0x4f
1031
1032 #-----------------------------------------------------------------------------
1033 #Integer saturating shift right narrow (Unsigned)
1034 #-----------------------------------------------------------------------------
1035 # CHECK: uqshrn v0.8b, v1.8h, #3
1036 # CHECK: uqshrn v0.4h, v1.4s, #3
1037 # CHECK: uqshrn v0.2s, v1.2d, #3
1038 # CHECK: uqshrn2 v0.16b, v1.8h, #3
1039 # CHECK: uqshrn2 v0.8h, v1.4s, #3
1040 # CHECK: uqshrn2 v0.4s, v1.2d, #3
1041 0x20,0x94,0x0d,0x2f
1042 0x20,0x94,0x1d,0x2f
1043 0x20,0x94,0x3d,0x2f
1044 0x20,0x94,0x0d,0x6f
1045 0x20,0x94,0x1d,0x6f
1046 0x20,0x94,0x3d,0x6f
1047
1048 #-----------------------------------------------------------------------------
1049 #Integer saturating shift right rounded narrow (Signed)
1050 #-----------------------------------------------------------------------------
1051 # CHECK: sqrshrn v0.8b, v1.8h, #3
1052 # CHECK: sqrshrn v0.4h, v1.4s, #3
1053 # CHECK: sqrshrn v0.2s, v1.2d, #3
1054 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
1055 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
1056 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
1057 0x20,0x9c,0x0d,0x0f
1058 0x20,0x9c,0x1d,0x0f
1059 0x20,0x9c,0x3d,0x0f
1060 0x20,0x9c,0x0d,0x4f
1061 0x20,0x9c,0x1d,0x4f
1062 0x20,0x9c,0x3d,0x4f
1063
1064 #-----------------------------------------------------------------------------
1065 #Integer saturating shift right rounded narrow (Unsigned)
1066 #-----------------------------------------------------------------------------
1067 # CHECK: uqrshrn v0.8b, v1.8h, #3
1068 # CHECK: uqrshrn v0.4h, v1.4s, #3
1069 # CHECK: uqrshrn v0.2s, v1.2d, #3
1070 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
1071 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
1072 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
1073 0x20,0x9c,0x0d,0x2f
1074 0x20,0x9c,0x1d,0x2f
1075 0x20,0x9c,0x3d,0x2f
1076 0x20,0x9c,0x0d,0x6f
1077 0x20,0x9c,0x1d,0x6f
1078 0x20,0x9c,0x3d,0x6f
1079
1080 #-----------------------------------------------------------------------------
1081 #Fixed-point convert to floating-point
1082 #-----------------------------------------------------------------------------
1083 # CHECK: scvtf v0.2s, v1.2s, #3
1084 # CHECK: scvtf v0.4s, v1.4s, #3
1085 # CHECK: scvtf v0.2d, v1.2d, #3
1086 # CHECK: ucvtf v0.2s, v1.2s, #3
1087 # CHECK: ucvtf v0.4s, v1.4s, #3
1088 # CHECK: ucvtf v0.2d, v1.2d, #3
1089
1090 0x20,0xe4,0x3d,0x0f
1091 0x20,0xe4,0x3d,0x4f
1092 0x20,0xe4,0x7d,0x4f
1093 0x20,0xe4,0x3d,0x2f
1094 0x20,0xe4,0x3d,0x6f
1095 0x20,0xe4,0x7d,0x6f
1096
1097 #-----------------------------------------------------------------------------
1098 #Floating-point convert to fixed-point
1099 #-----------------------------------------------------------------------------
1100 # CHECK: fcvtzs v0.2s, v1.2s, #3
1101 # CHECK: fcvtzs v0.4s, v1.4s, #3
1102 # CHECK: fcvtzs v0.2d, v1.2d, #3
1103 # CHECK: fcvtzu v0.2s, v1.2s, #3
1104 # CHECK: fcvtzu v0.4s, v1.4s, #3
1105 # CHECK: fcvtzu v0.2d, v1.2d, #3
1106 0x20,0xfc,0x3d,0x0f
1107 0x20,0xfc,0x3d,0x4f
1108 0x20,0xfc,0x7d,0x4f
1109 0x20,0xfc,0x3d,0x2f
1110 0x20,0xfc,0x3d,0x6f
1111 0x20,0xfc,0x7d,0x6f
1112
1113
1114 #------------------------------------------------------------------------------
1115 # Vector with 3 operands having different data types
1116 #------------------------------------------------------------------------------
1117
1118 #------------------------------------------------------------------------------
1119 # Long
1120 #------------------------------------------------------------------------------
1121
1122 #------------------------------------------------------------------------------
1123 # Long - Variant 1
1124 #------------------------------------------------------------------------------
1125
1126 # CHECK: saddl v0.8h, v1.8b, v2.8b
1127 # CHECK: saddl v0.4s, v1.4h, v2.4h
1128 # CHECK: saddl v0.2d, v1.2s, v2.2s
1129 0x20 0x00 0x22 0x0e
1130 0x20 0x00 0x62 0x0e
1131 0x20 0x00 0xa2 0x0e
1132
1133 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
1134 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
1135 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
1136 0x20 0x00 0x62 0x4e
1137 0x20 0x00 0x22 0x4e
1138 0x20 0x00 0xa2 0x4e
1139
1140 # CHECK: uaddl v0.8h, v1.8b, v2.8b
1141 # CHECK: uaddl v0.4s, v1.4h, v2.4h
1142 # CHECK: uaddl v0.2d, v1.2s, v2.2s
1143 0x20 0x00 0x22 0x2e
1144 0x20 0x00 0x62 0x2e
1145 0x20 0x00 0xa2 0x2e
1146
1147 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1148 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1149 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
1150 0x20 0x00 0x22 0x6e
1151 0x20 0x00 0x62 0x6e
1152 0x20 0x00 0xa2 0x6e
1153
1154 # CHECK: ssubl v0.8h, v1.8b, v2.8b
1155 # CHECK: ssubl v0.4s, v1.4h, v2.4h
1156 # CHECK: ssubl v0.2d, v1.2s, v2.2s
1157 0x20 0x20 0x22 0x0e
1158 0x20 0x20 0x62 0x0e
1159 0x20 0x20 0xa2 0x0e
1160
1161 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1162 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1163 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
1164 0x20 0x20 0x22 0x4e
1165 0x20 0x20 0x62 0x4e
1166 0x20 0x20 0xa2 0x4e
1167
1168 # CHECK: usubl v0.8h, v1.8b, v2.8b
1169 # CHECK: usubl v0.4s, v1.4h, v2.4h
1170 # CHECK: usubl v0.2d, v1.2s, v2.2s
1171 0x20 0x20 0x22 0x2e
1172 0x20 0x20 0x62 0x2e
1173 0x20 0x20 0xa2 0x2e
1174
1175 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
1176 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
1177 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
1178 0x20 0x20 0x22 0x6e
1179 0x20 0x20 0x62 0x6e
1180 0x20 0x20 0xa2 0x6e
1181
1182 # CHECK: sabal v0.8h, v1.8b, v2.8b
1183 # CHECK: sabal v0.4s, v1.4h, v2.4h
1184 # CHECK: sabal v0.2d, v1.2s, v2.2s
1185 0x20 0x50 0x22 0x0e
1186 0x20 0x50 0x62 0x0e
1187 0x20 0x50 0xa2 0x0e
1188
1189 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
1190 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
1191 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
1192 0x20 0x50 0x22 0x4e
1193 0x20 0x50 0x62 0x4e
1194 0x20 0x50 0xa2 0x4e
1195
1196 # CHECK: uabal v0.8h, v1.8b, v2.8b
1197 # CHECK: uabal v0.4s, v1.4h, v2.4h
1198 # CHECK: uabal v0.2d, v1.2s, v2.2s
1199 0x20 0x50 0x22 0x2e
1200 0x20 0x50 0x62 0x2e
1201 0x20 0x50 0xa2 0x2e
1202
1203 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
1204 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
1205 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
1206 0x20 0x50 0x22 0x6e
1207 0x20 0x50 0x62 0x6e
1208 0x20 0x50 0xa2 0x6e
1209
1210 # CHECK: sabdl v0.8h, v1.8b, v2.8b
1211 # CHECK: sabdl v0.4s, v1.4h, v2.4h
1212 # CHECK: sabdl v0.2d, v1.2s, v2.2s
1213 0x20 0x70 0x22 0x0e
1214 0x20 0x70 0x62 0x0e
1215 0x20 0x70 0xa2 0x0e
1216
1217 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1218 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1219 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
1220 0x20 0x70 0x22 0x4e
1221 0x20 0x70 0x62 0x4e
1222 0x20 0x70 0xa2 0x4e
1223
1224 # CHECK: uabdl v0.8h, v1.8b, v2.8b
1225 # CHECK: uabdl v0.4s, v1.4h, v2.4h
1226 # CHECK: uabdl v0.2d, v1.2s, v2.2s
1227 0x20 0x70 0x22 0x2e
1228 0x20 0x70 0x62 0x2e
1229 0x20 0x70 0xa2 0x2e
1230
1231 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1232 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1233 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
1234 0x20 0x70 0x22 0x6e
1235 0x20 0x70 0x62 0x6e
1236 0x20 0x70 0xa2 0x6e
1237
1238 # CHECK: smlal v0.8h, v1.8b, v2.8b
1239 # CHECK: smlal v0.4s, v1.4h, v2.4h
1240 # CHECK: smlal v0.2d, v1.2s, v2.2s
1241 0x20 0x80 0x22 0x0e
1242 0x20 0x80 0x62 0x0e
1243 0x20 0x80 0xa2 0x0e
1244
1245 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
1246 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
1247 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
1248 0x20 0x80 0x22 0x4e
1249 0x20 0x80 0x62 0x4e
1250 0x20 0x80 0xa2 0x4e
1251
1252 # CHECK: umlal v0.8h, v1.8b, v2.8b
1253 # CHECK: umlal v0.4s, v1.4h, v2.4h
1254 # CHECK: umlal v0.2d, v1.2s, v2.2s
1255
1256 0x20 0x80 0x22 0x2e
1257 0x20 0x80 0x62 0x2e
1258 0x20 0x80 0xa2 0x2e
1259
1260 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
1261 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
1262 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
1263 0x20 0x80 0x22 0x6e
1264 0x20 0x80 0x62 0x6e
1265 0x20 0x80 0xa2 0x6e
1266
1267 # CHECK: smlsl v0.8h, v1.8b, v2.8b
1268 # CHECK: smlsl v0.4s, v1.4h, v2.4h
1269 # CHECK: smlsl v0.2d, v1.2s, v2.2s
1270 0x20 0xa0 0x22 0x0e
1271 0x20 0xa0 0x62 0x0e
1272 0x20 0xa0 0xa2 0x0e
1273
1274 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1275 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1276 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
1277 0x20 0xa0 0x22 0x4e
1278 0x20 0xa0 0x62 0x4e
1279 0x20 0xa0 0xa2 0x4e
1280
1281 # CHECK: umlsl v0.8h, v1.8b, v2.8b
1282 # CHECK: umlsl v0.4s, v1.4h, v2.4h
1283 # CHECK: umlsl v0.2d, v1.2s, v2.2s
1284 0x20 0xa0 0x22 0x2e
1285 0x20 0xa0 0x62 0x2e
1286 0x20 0xa0 0xa2 0x2e
1287
1288 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1289 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1290 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
1291 0x20 0xa0 0x22 0x6e
1292 0x20 0xa0 0x62 0x6e
1293 0x20 0xa0 0xa2 0x6e
1294
1295 # CHECK: smull v0.8h, v1.8b, v2.8b
1296 # CHECK: smull v0.4s, v1.4h, v2.4h
1297 # CHECK: smull v0.2d, v1.2s, v2.2s
1298 0x20 0xc0 0x22 0x0e
1299 0x20 0xc0 0x62 0x0e
1300 0x20 0xc0 0xa2 0x0e
1301
1302 # CHECK: smull2 v0.8h, v1.16b, v2.16b
1303 # CHECK: smull2 v0.4s, v1.8h, v2.8h
1304 # CHECK: smull2 v0.2d, v1.4s, v2.4s
1305 0x20 0xc0 0x22 0x4e
1306 0x20 0xc0 0x62 0x4e
1307 0x20 0xc0 0xa2 0x4e
1308
1309 # CHECK: umull v0.8h, v1.8b, v2.8b
1310 # CHECK: umull v0.4s, v1.4h, v2.4h
1311 # CHECK: umull v0.2d, v1.2s, v2.2s
1312 0x20 0xc0 0x22 0x2e
1313 0x20 0xc0 0x62 0x2e
1314 0x20 0xc0 0xa2 0x2e
1315
1316 # CHECK: umull2 v0.8h, v1.16b, v2.16b
1317 # CHECK: umull2 v0.4s, v1.8h, v2.8h
1318 # CHECK: umull2 v0.2d, v1.4s, v2.4s
1319 0x20 0xc0 0x22 0x6e
1320 0x20 0xc0 0x62 0x6e
1321 0x20 0xc0 0xa2 0x6e
1322
1323 #------------------------------------------------------------------------------
1324 # Long - Variant 2
1325 #------------------------------------------------------------------------------
1326
1327 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1328 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
1329 0x20 0x90 0x62 0x0e
1330 0x20 0x90 0xa2 0x0e
1331
1332 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1333 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
1334 0x20 0x90 0x62 0x4e
1335 0x20 0x90 0xa2 0x4e
1336
1337 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1338 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
1339 0x20 0xb0 0x62 0x0e
1340 0x20 0xb0 0xa2 0x0e
1341
1342 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1343 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
1344 0x20 0xb0 0x62 0x4e
1345 0x20 0xb0 0xa2 0x4e
1346
1347 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
1348 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
1349 0x20 0xd0 0x62 0x0e
1350 0x20 0xd0 0xa2 0x0e
1351
1352 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1353 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
1354 0x20 0xd0 0x62 0x4e
1355 0x20 0xd0 0xa2 0x4e
1356
1357 #------------------------------------------------------------------------------
1358 # Long - Variant 3
1359 #------------------------------------------------------------------------------
1360
1361 # CHECK: pmull v0.8h, v1.8b, v2.8b
1362 0x20 0xe0 0x22 0x0e
1363
1364 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
1365 0x20 0xe0 0x22 0x4e
1366
1367 #------------------------------------------------------------------------------
1368 # Widen
1369 #------------------------------------------------------------------------------
1370
1371 # CHECK: saddw v0.8h, v1.8h, v2.8b
1372 # CHECK: saddw v0.4s, v1.4s, v2.4h
1373 # CHECK: saddw v0.2d, v1.2d, v2.2s
1374 0x20 0x10 0x22 0x0e
1375 0x20 0x10 0x62 0x0e
1376 0x20 0x10 0xa2 0x0e
1377
1378 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
1379 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
1380 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
1381 0x20 0x10 0x22 0x4e
1382 0x20 0x10 0x62 0x4e
1383 0x20 0x10 0xa2 0x4e
1384
1385 # CHECK: uaddw v0.8h, v1.8h, v2.8b
1386 # CHECK: uaddw v0.4s, v1.4s, v2.4h
1387 # CHECK: uaddw v0.2d, v1.2d, v2.2s
1388 0x20 0x10 0x22 0x2e
1389 0x20 0x10 0x62 0x2e
1390 0x20 0x10 0xa2 0x2e
1391
1392 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1393 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1394 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
1395 0x20 0x10 0x22 0x6e
1396 0x20 0x10 0x62 0x6e
1397 0x20 0x10 0xa2 0x6e
1398
1399 # CHECK: ssubw v0.8h, v1.8h, v2.8b
1400 # CHECK: ssubw v0.4s, v1.4s, v2.4h
1401 # CHECK: ssubw v0.2d, v1.2d, v2.2s
1402 0x20 0x30 0x22 0x0e
1403 0x20 0x30 0x62 0x0e
1404 0x20 0x30 0xa2 0x0e
1405
1406 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1407 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1408 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
1409 0x20 0x30 0x22 0x4e
1410 0x20 0x30 0x62 0x4e
1411 0x20 0x30 0xa2 0x4e
1412
1413 # CHECK: usubw v0.8h, v1.8h, v2.8b
1414 # CHECK: usubw v0.4s, v1.4s, v2.4h
1415 # CHECK: usubw v0.2d, v1.2d, v2.2s
1416 0x20 0x30 0x22 0x2e
1417 0x20 0x30 0x62 0x2e
1418 0x20 0x30 0xa2 0x2e
1419
1420 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
1421 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
1422 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
1423 0x20 0x30 0x22 0x6e
1424 0x20 0x30 0x62 0x6e
1425 0x20 0x30 0xa2 0x6e
1426
1427 #------------------------------------------------------------------------------
1428 # Narrow
1429 #------------------------------------------------------------------------------
1430
1431 # CHECK: addhn v0.8b, v1.8h, v2.8h
1432 # CHECK: addhn v0.4h, v1.4s, v2.4s
1433 # CHECK: addhn v0.2s, v1.2d, v2.2d
1434 0x20 0x40 0x22 0x0e
1435 0x20 0x40 0x62 0x0e
1436 0x20 0x40 0xa2 0x0e
1437
1438 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
1439 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
1440 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
1441 0x20 0x40 0x22 0x4e
1442 0x20 0x40 0x62 0x4e
1443 0x20 0x40 0xa2 0x4e
1444
1445 # CHECK: raddhn v0.8b, v1.8h, v2.8h
1446 # CHECK: raddhn v0.4h, v1.4s, v2.4s
1447 # CHECK: raddhn v0.2s, v1.2d, v2.2d
1448 0x20 0x40 0x22 0x2e
1449 0x20 0x40 0x62 0x2e
1450 0x20 0x40 0xa2 0x2e
1451
1452 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1453 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1454 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
1455 0x20 0x40 0x22 0x6e
1456 0x20 0x40 0x62 0x6e
1457 0x20 0x40 0xa2 0x6e
1458
1459 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
1460 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
1461 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
1462 0x20 0x60 0x22 0x2e
1463 0x20 0x60 0x62 0x2e
1464 0x20 0x60 0xa2 0x2e
1465
1466 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1467 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1468 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
1469 0x20 0x60 0x22 0x6e
1470 0x20 0x60 0x62 0x6e
1471 0x20 0x60 0xa2 0x6e
1472
1473 #----------------------------------------------------------------------
1474 # Scalar Integer Saturating Doubling Multiply Half High
1475 #----------------------------------------------------------------------
1476 # CHECK: sqdmulh h10, h11, h12
1477 # CHECK: sqdmulh s20, s21, s2
1478 0x6a,0xb5,0x6c,0x5e
1479 0xb4,0xb6,0xa2,0x5e
1480
1481 #----------------------------------------------------------------------
1482 # Scalar Integer Saturating Rounding Doubling Multiply Half High
1483 #----------------------------------------------------------------------
1484 # CHECK: sqrdmulh h10, h11, h12
1485 # CHECK: sqrdmulh s20, s21, s2
1486 0x6a,0xb5,0x6c,0x7e
1487 0xb4,0xb6,0xa2,0x7e
1488
1489 #----------------------------------------------------------------------
1490 # Floating-point multiply extended
1491 #----------------------------------------------------------------------
1492 # CHECK: fmulx s20, s22, s15
1493 # CHECK: fmulx d23, d11, d1
1494 0xd4,0xde,0x2f,0x5e
1495 0x77,0xdd,0x61,0x5e
1496
1497 #----------------------------------------------------------------------
1498 # Floating-point Reciprocal Step
1499 #----------------------------------------------------------------------
1500 # CHECK: frecps s21, s16, s13
1501 # CHECK: frecps d22, d30, d21
1502 0x15,0xfe,0x2d,0x5e
1503 0xd6,0xff,0x75,0x5e
1504
1505 #----------------------------------------------------------------------
1506 # Floating-point Reciprocal Square Root Step
1507 #----------------------------------------------------------------------
1508 # CHECK: frsqrts s21, s5, s12
1509 # CHECK: frsqrts d8, d22, d18
1510 0xb5,0xfc,0xac,0x5e
1511 0xc8,0xfe,0xf2,0x5e
1512
1513 #----------------------------------------------------------------------
1514 # Scalar Signed Integer Convert To Floating-point
1515 #----------------------------------------------------------------------
1516 # CHECK: scvtf s22, s13
1517 # CHECK: scvtf d21, d12
1518 0xb6,0xd9,0x21,0x5e
1519 0x95,0xd9,0x61,0x5e
1520
1521 #----------------------------------------------------------------------
1522 # Scalar Unsigned Integer Convert To Floating-point
1523 #----------------------------------------------------------------------
1524 # CHECK: ucvtf s22, s13
1525 # CHECK: ucvtf d21, d14
1526 0xb6,0xd9,0x21,0x7e
1527 0xd5,0xd9,0x61,0x7e
1528
1529 #----------------------------------------------------------------------
1530 # Scalar Floating-point Reciprocal Estimate
1531 #----------------------------------------------------------------------
1532 # CHECK: frecpe s19, s14
1533 # CHECK: frecpe d13, d13
1534 0xd3,0xd9,0xa1,0x5e
1535 0xad,0xd9,0xe1,0x5e
1536
1537 #----------------------------------------------------------------------
1538 # Scalar Floating-point Reciprocal Exponent
1539 #----------------------------------------------------------------------
1540 # CHECK: frecpx s18, s10
1541 # CHECK: frecpx d16, d19
1542 0x52,0xf9,0xa1,0x5e
1543 0x70,0xfa,0xe1,0x5e
1544
1545 #----------------------------------------------------------------------
1546 # Scalar Floating-point Reciprocal Square Root Estimate
1547 #----------------------------------------------------------------------
1548 # CHECK: frsqrte s22, s13
1549 # CHECK: frsqrte d21, d12
1550 0xb6,0xd9,0xa1,0x7e
1551 0x95,0xd9,0xe1,0x7e
1552
1553 #----------------------------------------------------------------------
1554 # Scalar Compare Bitwise Equal
1555 #----------------------------------------------------------------------
1556 # CHECK: cmeq d20, d21, d22
1557 0xb4,0x8e,0xf6,0x7e
1558
1559 #----------------------------------------------------------------------
1560 # Scalar Compare Bitwise Equal To Zero
1561 #----------------------------------------------------------------------
1562 # CHECK: cmeq d20, d21, #0x0
1563 0xb4,0x9a,0xe0,0x5e
1564
1565 #----------------------------------------------------------------------
1566 # Scalar Compare Unsigned Higher Or Same
1567 #----------------------------------------------------------------------
1568 # CHECK: cmhs d20, d21, d22
1569 0xb4,0x3e,0xf6,0x7e
1570
1571         
1572 #----------------------------------------------------------------------
1573 # Scalar Compare Signed Greather Than Or Equal
1574 #----------------------------------------------------------------------
1575 # CHECK: cmge d20, d21, d22
1576 0xb4,0x3e,0xf6,0x5e
1577
1578 #----------------------------------------------------------------------
1579 # Scalar Compare Signed Greather Than Or Equal To Zero
1580 #----------------------------------------------------------------------
1581 # CHECK: cmge d20, d21, #0x0
1582 0xb4,0x8a,0xe0,0x7e
1583
1584 #----------------------------------------------------------------------
1585 # Scalar Compare Unsigned Higher
1586 #----------------------------------------------------------------------
1587 # CHECK: cmhi d20, d21, d22
1588 0xb4,0x36,0xf6,0x7e
1589
1590 #----------------------------------------------------------------------
1591 # Scalar Compare Signed Greater Than
1592 #----------------------------------------------------------------------
1593 # CHECK: cmgt d20, d21, d22
1594 0xb4,0x36,0xf6,0x5e
1595
1596 #----------------------------------------------------------------------
1597 # Scalar Compare Signed Greater Than Zero
1598 #----------------------------------------------------------------------
1599 # CHECK: cmgt d20, d21, #0x0
1600 0xb4,0x8a,0xe0,0x5e
1601
1602 #----------------------------------------------------------------------
1603 # Scalar Compare Signed Less Than Or Equal To Zero
1604 #----------------------------------------------------------------------
1605 # CHECK: cmle d20, d21, #0x0
1606 0xb4,0x9a,0xe0,0x7e
1607
1608 #----------------------------------------------------------------------
1609 # Scalar Compare Less Than Zero
1610 #----------------------------------------------------------------------
1611 # CHECK: cmlt d20, d21, #0x0
1612 0xb4,0xaa,0xe0,0x5e
1613
1614 #----------------------------------------------------------------------
1615 # Scalar Compare Bitwise Test Bits
1616 #----------------------------------------------------------------------
1617 # CHECK: cmtst d20, d21, d22
1618 0xb4,0x8e,0xf6,0x5e
1619
1620 #----------------------------------------------------------------------
1621 # Scalar Floating-point Compare Mask Equal
1622 #----------------------------------------------------------------------
1623 # CHECK: fcmeq s10, s11, s12
1624 # CHECK: fcmeq d20, d21, d22
1625 0x6a,0xe5,0x2c,0x5e
1626 0xb4,0xe6,0x76,0x5e
1627
1628 #----------------------------------------------------------------------
1629 # Scalar Floating-point Compare Mask Equal To Zero
1630 #----------------------------------------------------------------------
1631 # CHECK: fcmeq s10, s11, #0.0
1632 # CHECK: fcmeq d20, d21, #0.0
1633 0x6a,0xd9,0xa0,0x5e
1634 0xb4,0xda,0xe0,0x5e
1635
1636 #----------------------------------------------------------------------
1637 # Scalar Floating-point Compare Mask Greater Than Or Equal
1638 #----------------------------------------------------------------------
1639 # CHECK: fcmge s10, s11, s12
1640 # CHECK: fcmge d20, d21, d22
1641 0x6a,0xe5,0x2c,0x7e
1642 0xb4,0xe6,0x76,0x7e
1643
1644 #----------------------------------------------------------------------
1645 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1646 #----------------------------------------------------------------------
1647 # CHECK: fcmge s10, s11, #0.0
1648 # CHECK: fcmge d20, d21, #0.0
1649 0x6a,0xc9,0xa0,0x7e
1650 0xb4,0xca,0xe0,0x7e
1651
1652 #----------------------------------------------------------------------
1653 # Scalar Floating-point Compare Mask Greather Than
1654 #----------------------------------------------------------------------
1655 # CHECK: fcmgt s10, s11, s12
1656 # CHECK: fcmgt d20, d21, d22
1657 0x6a,0xe5,0xac,0x7e
1658 0xb4,0xe6,0xf6,0x7e
1659
1660 #----------------------------------------------------------------------
1661 # Scalar Floating-point Compare Mask Greather Than Zero
1662 #----------------------------------------------------------------------
1663 # CHECK: fcmgt s10, s11, #0.0
1664 # CHECK: fcmgt d20, d21, #0.0
1665 0x6a,0xc9,0xa0,0x5e
1666 0xb4,0xca,0xe0,0x5e
1667
1668 #----------------------------------------------------------------------
1669 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1670 #----------------------------------------------------------------------
1671 # CHECK: fcmle s10, s11, #0.0
1672 # CHECK: fcmle d20, d21, #0.0
1673 0x6a,0xd9,0xa0,0x7e
1674 0xb4,0xda,0xe0,0x7e
1675
1676 #----------------------------------------------------------------------
1677 # Scalar Floating-point Compare Mask Less Than
1678 #----------------------------------------------------------------------
1679 # CHECK: fcmlt s10, s11, #0.0
1680 # CHECK: fcmlt d20, d21, #0.0
1681 0x6a,0xe9,0xa0,0x5e
1682 0xb4,0xea,0xe0,0x5e
1683
1684 #----------------------------------------------------------------------
1685 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1686 #----------------------------------------------------------------------
1687 # CHECK: facge s10, s11, s12
1688 # CHECK: facge d20, d21, d22
1689 0x6a,0xed,0x2c,0x7e
1690 0xb4,0xee,0x76,0x7e
1691
1692 #----------------------------------------------------------------------
1693 # Scalar Floating-point Absolute Compare Mask Greater Than
1694 #----------------------------------------------------------------------
1695 # CHECK: facgt s10, s11, s12   
1696 # CHECK: facgt d20, d21, d22   
1697 0x6a,0xed,0xac,0x7e
1698 0xb4,0xee,0xf6,0x7e
1699
1700 #----------------------------------------------------------------------
1701 # Scalar Absolute Value
1702 #----------------------------------------------------------------------
1703 # CHECK: abs d29, d24
1704 0x1d,0xbb,0xe0,0x5e
1705
1706 #----------------------------------------------------------------------
1707 # Scalar Signed Saturating Absolute Value
1708 #----------------------------------------------------------------------
1709 # CHECK: sqabs b19, b14
1710 # CHECK: sqabs h21, h15
1711 # CHECK: sqabs s20, s12
1712 # CHECK: sqabs d18, d12
1713 0xd3,0x79,0x20,0x5e
1714 0xf5,0x79,0x60,0x5e
1715 0x94,0x79,0xa0,0x5e
1716 0x92,0x79,0xe0,0x5e
1717
1718 #----------------------------------------------------------------------
1719 # Scalar Negate
1720 #----------------------------------------------------------------------
1721 # CHECK: neg d29, d24
1722 0x1d,0xbb,0xe0,0x7e
1723
1724 #----------------------------------------------------------------------
1725 # Scalar Signed Saturating Negate
1726 #----------------------------------------------------------------------
1727 # CHECK: sqneg b19, b14
1728 # CHECK: sqneg h21, h15
1729 # CHECK: sqneg s20, s12
1730 # CHECK: sqneg d18, d12
1731 0xd3,0x79,0x20,0x7e
1732 0xf5,0x79,0x60,0x7e
1733 0x94,0x79,0xa0,0x7e
1734 0x92,0x79,0xe0,0x7e
1735
1736 #----------------------------------------------------------------------
1737 # Signed Saturating Accumulated of Unsigned Value
1738 #----------------------------------------------------------------------
1739 # CHECK: suqadd b19, b14
1740 # CHECK: suqadd h20, h15
1741 # CHECK: suqadd s21, s12
1742 # CHECK: suqadd d18, d22
1743 0xd3,0x39,0x20,0x5e
1744 0xf4,0x39,0x60,0x5e
1745 0x95,0x39,0xa0,0x5e
1746 0xd2,0x3a,0xe0,0x5e
1747
1748 #----------------------------------------------------------------------
1749 # Unsigned Saturating Accumulated of Signed Value
1750 #----------------------------------------------------------------------
1751 # CHECK: usqadd b19, b14
1752 # CHECK: usqadd h20, h15
1753 # CHECK: usqadd s21, s12
1754 # CHECK: usqadd d18, d22
1755 0xd3,0x39,0x20,0x7e
1756 0xf4,0x39,0x60,0x7e
1757 0x95,0x39,0xa0,0x7e
1758 0xd2,0x3a,0xe0,0x7e
1759
1760 #----------------------------------------------------------------------
1761 # Signed Saturating Doubling Multiply-Add Long
1762 #----------------------------------------------------------------------
1763 # CHECK: sqdmlal s17, h27, h12
1764 # CHECK: sqdmlal d19, s24, s12
1765 0x71,0x93,0x6c,0x5e
1766 0x13,0x93,0xac,0x5e
1767         
1768 #----------------------------------------------------------------------
1769 # Signed Saturating Doubling Multiply-Subtract Long
1770 #----------------------------------------------------------------------
1771 # CHECK: sqdmlsl s14, h12, h25
1772 # CHECK: sqdmlsl d12, s23, s13
1773 0x8e,0xb1,0x79,0x5e
1774 0xec,0xb2,0xad,0x5e
1775         
1776 #----------------------------------------------------------------------
1777 # Signed Saturating Doubling Multiply Long
1778 #----------------------------------------------------------------------
1779 # CHECK: sqdmull s12, h22, h12
1780 # CHECK: sqdmull d15, s22, s12
1781 0xcc,0xd2,0x6c,0x5e
1782 0xcf,0xd2,0xac,0x5e
1783
1784 #----------------------------------------------------------------------
1785 # Scalar Signed Saturating Extract Unsigned Narrow
1786 #----------------------------------------------------------------------
1787 # CHECK: sqxtun b19, h14
1788 # CHECK: sqxtun h21, s15
1789 # CHECK: sqxtun s20, d12
1790 0xd3,0x29,0x21,0x7e
1791 0xf5,0x29,0x61,0x7e
1792 0x94,0x29,0xa1,0x7e
1793
1794 #----------------------------------------------------------------------
1795 # Scalar Signed Saturating Extract Signed Narrow
1796 #----------------------------------------------------------------------
1797 # CHECK: sqxtn b18, h18
1798 # CHECK: sqxtn h20, s17
1799 # CHECK: sqxtn s19, d14
1800 0x52,0x4a,0x21,0x5e
1801 0x34,0x4a,0x61,0x5e
1802 0xd3,0x49,0xa1,0x5e
1803
1804 #----------------------------------------------------------------------
1805 # Scalar Unsigned Saturating Extract Narrow
1806 #----------------------------------------------------------------------
1807 # CHECK: uqxtn b18, h18
1808 # CHECK: uqxtn h20, s17
1809 # CHECK: uqxtn s19, d14
1810 0x52,0x4a,0x21,0x7e
1811 0x34,0x4a,0x61,0x7e
1812 0xd3,0x49,0xa1,0x7e
1813
1814 #----------------------------------------------------------------------
1815 # Scalar Signed Shift Right (Immediate)
1816 #----------------------------------------------------------------------
1817 # CHECK: sshr d15, d16, #12
1818 0x0f,0x06,0x74,0x5f
1819
1820 #----------------------------------------------------------------------
1821 # Scalar Unsigned Shift Right (Immediate)
1822 #----------------------------------------------------------------------
1823 # CHECK: ushr d10, d17, #18
1824 0x2a,0x06,0x6e,0x7f
1825
1826 #----------------------------------------------------------------------
1827 # Scalar Signed Rounding Shift Right (Immediate)
1828 #----------------------------------------------------------------------
1829 # CHECK: srshr d19, d18, #7
1830 0x53,0x26,0x79,0x5f
1831
1832 #----------------------------------------------------------------------
1833 # Scalar Unigned Rounding Shift Right (Immediate)
1834 #----------------------------------------------------------------------
1835 # CHECK: urshr d20, d23, #31
1836 0xf4,0x26,0x61,0x7f
1837
1838 #----------------------------------------------------------------------
1839 # Scalar Signed Shift Right and Accumulate (Immediate)
1840 #----------------------------------------------------------------------
1841 # CHECK: ssra d18, d12, #21
1842 0x92,0x15,0x6b,0x5f
1843
1844 #----------------------------------------------------------------------
1845 # Scalar Unsigned Shift Right and Accumulate (Immediate)
1846 #----------------------------------------------------------------------
1847 # CHECK: usra d20, d13, #61
1848 0xb4,0x15,0x43,0x7f
1849
1850 #----------------------------------------------------------------------
1851 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1852 #----------------------------------------------------------------------
1853 # CHECK: srsra d15, d11, #19
1854 0x6f,0x35,0x6d,0x5f
1855
1856 #----------------------------------------------------------------------
1857 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1858 #----------------------------------------------------------------------
1859 # CHECK: ursra d18, d10, #13
1860 0x52,0x35,0x73,0x7f
1861
1862 #----------------------------------------------------------------------
1863 # Scalar Shift Left (Immediate)
1864 #----------------------------------------------------------------------
1865 # CHECK: shl d7, d10, #12
1866 0x47,0x55,0x4c,0x5f
1867
1868 #----------------------------------------------------------------------
1869 # Signed Saturating Shift Left (Immediate)
1870 #----------------------------------------------------------------------
1871 # CHECK: sqshl b11, b19, #7
1872 # CHECK: sqshl h13, h18, #11
1873 # CHECK: sqshl s14, s17, #22
1874 # CHECK: sqshl d15, d16, #51
1875 0x6b,0x76,0x0f,0x5f
1876 0x4d,0x76,0x1b,0x5f
1877 0x2e,0x76,0x36,0x5f
1878 0x0f,0x76,0x73,0x5f
1879
1880 #----------------------------------------------------------------------
1881 # Unsigned Saturating Shift Left (Immediate)
1882 #----------------------------------------------------------------------
1883 # CHECK: uqshl b18, b15, #6
1884 # CHECK: uqshl h11, h18, #7
1885 # CHECK: uqshl s14, s19, #18
1886 # CHECK: uqshl d15, d12, #19
1887 0xf2,0x75,0x0e,0x7f
1888 0x4b,0x76,0x17,0x7f
1889 0x6e,0x76,0x32,0x7f
1890 0x8f,0x75,0x53,0x7f
1891
1892 #----------------------------------------------------------------------
1893 # Signed Saturating Shift Left Unsigned (Immediate)
1894 #----------------------------------------------------------------------
1895 # CHECK: sqshlu b15, b18, #6
1896 # CHECK: sqshlu h19, h17, #6
1897 # CHECK: sqshlu s16, s14, #25
1898 # CHECK: sqshlu d11, d13, #32
1899 0x4f,0x66,0x0e,0x7f
1900 0x33,0x66,0x16,0x7f
1901 0xd0,0x65,0x39,0x7f
1902 0xab,0x65,0x60,0x7f
1903
1904 #----------------------------------------------------------------------
1905 # Shift Right And Insert (Immediate)
1906 #----------------------------------------------------------------------
1907 # CHECK: sri d10, d12, #14
1908 0x8a,0x45,0x72,0x7f
1909
1910 #----------------------------------------------------------------------
1911 # Shift Left And Insert (Immediate)
1912 #----------------------------------------------------------------------
1913 # CHECK: sli d10, d14, #12
1914 0xca,0x55,0x4c,0x7f
1915
1916 #----------------------------------------------------------------------
1917 # Signed Saturating Shift Right Narrow (Immediate)
1918 #----------------------------------------------------------------------
1919 # CHECK: sqshrn b10, h15, #5
1920 # CHECK: sqshrn h17, s10, #4
1921 # CHECK: sqshrn s18, d10, #31
1922 0xea,0x95,0x0b,0x5f
1923 0x51,0x95,0x1c,0x5f
1924 0x52,0x95,0x21,0x5f
1925
1926 #----------------------------------------------------------------------
1927 # Unsigned Saturating Shift Right Narrow (Immediate)
1928 #----------------------------------------------------------------------
1929 # CHECK: uqshrn b12, h10, #7
1930 # CHECK: uqshrn h10, s14, #5
1931 # CHECK: uqshrn s10, d12, #13
1932 0x4c,0x95,0x09,0x7f
1933 0xca,0x95,0x1b,0x7f
1934 0x8a,0x95,0x33,0x7f
1935
1936 #----------------------------------------------------------------------
1937 # Signed Saturating Rounded Shift Right Narrow (Immediate)
1938 #----------------------------------------------------------------------
1939 # CHECK: sqrshrn b10, h13, #2
1940 # CHECK: sqrshrn h15, s10, #6
1941 # CHECK: sqrshrn s15, d12, #9
1942 0xaa,0x9d,0x0e,0x5f
1943 0x4f,0x9d,0x1a,0x5f
1944 0x8f,0x9d,0x37,0x5f
1945
1946 #----------------------------------------------------------------------
1947 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1948 #----------------------------------------------------------------------
1949 # CHECK: uqrshrn b10, h12, #5
1950 # CHECK: uqrshrn h12, s10, #14
1951 # CHECK: uqrshrn s10, d10, #25
1952 0x8a,0x9d,0x0b,0x7f
1953 0x4c,0x9d,0x12,0x7f
1954 0x4a,0x9d,0x27,0x7f
1955
1956 #----------------------------------------------------------------------
1957 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
1958 #----------------------------------------------------------------------
1959 # CHECK: sqshrun b15, h10, #7
1960 # CHECK: sqshrun h20, s14, #3
1961 # CHECK: sqshrun s10, d15, #15
1962 0x4f,0x85,0x09,0x7f
1963 0xd4,0x85,0x1d,0x7f
1964 0xea,0x85,0x31,0x7f
1965
1966 #----------------------------------------------------------------------
1967 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1968 #----------------------------------------------------------------------
1969 # CHECK: sqrshrun b17, h10, #6
1970 # CHECK: sqrshrun h10, s13, #15
1971 # CHECK: sqrshrun s22, d16, #31
1972 0x51,0x8d,0x0a,0x7f
1973 0xaa,0x8d,0x11,0x7f
1974 0x16,0x8e,0x21,0x7f
1975
1976 #----------------------------------------------------------------------
1977 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1978 #----------------------------------------------------------------------
1979 # CHECK: scvtf s22, s13, #32
1980 # CHECK: scvtf d21, d12, #64
1981 0xb6,0xe5,0x20,0x5f
1982 0x95,0xe5,0x40,0x5f
1983
1984 #----------------------------------------------------------------------
1985 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1986 #----------------------------------------------------------------------
1987 # CHECK: ucvtf s22, s13, #32
1988 # CHECK: ucvtf d21, d14, #64
1989 0xb6,0xe5,0x20,0x7f
1990 0xd5,0xe5,0x40,0x7f
1991
1992 #----------------------------------------------------------------------
1993 # Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1994 #----------------------------------------------------------------------
1995 # CHECK: fcvtzs s21, s12, #1
1996 # CHECK: fcvtzs d21, d12, #1
1997 0x95,0xfd,0x3f,0x5f
1998 0x95,0xfd,0x7f,0x5f
1999         
2000 #----------------------------------------------------------------------
2001 # Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
2002 #----------------------------------------------------------------------
2003 # CHECK: fcvtzu s21, s12, #1
2004 # CHECK: fcvtzu d21, d12, #1
2005 0x95,0xfd,0x3f,0x7f
2006 0x95,0xfd,0x7f,0x7f
2007
2008 #----------------------------------------------------------------------
2009 # Vector load/store multiple N-element structure
2010 #----------------------------------------------------------------------
2011 # CHECK: ld1 {v0.16b}, [x0]
2012 # CHECK: ld1 {v15.8h, v16.8h}, [x15]
2013 # CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp]
2014 # CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
2015 0x00,0x70,0x40,0x4c
2016 0xef,0xa5,0x40,0x4c
2017 0xff,0x6b,0x40,0x4c
2018 0x00,0x2c,0x40,0x4c
2019
2020 # CHECK: ld2 {v0.8b, v1.8b}, [x0]
2021 # CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15]
2022 # CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2023 0x00,0x80,0x40,0x0c
2024 0xef,0x45,0x40,0x0c
2025 0xff,0x0b,0x40,0x0c
2026
2027 # CHECK: st1 {v0.16b}, [x0]
2028 # CHECK: st1 {v15.8h, v16.8h}, [x15]
2029 # CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp]
2030 # CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
2031 0x00,0x70,0x00,0x4c
2032 0xef,0xa5,0x00,0x4c
2033 0xff,0x6b,0x00,0x4c
2034 0x00,0x2c,0x00,0x4c
2035
2036 # CHECK: st2 {v0.8b, v1.8b}, [x0]
2037 # CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15]
2038 # CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2039 0x00,0x80,0x00,0x0c
2040 0xef,0x45,0x00,0x0c
2041 0xff,0x0b,0x00,0x0c
2042
2043 #----------------------------------------------------------------------
2044 # Vector load/store multiple N-element structure (post-index)
2045 #----------------------------------------------------------------------
2046 # CHECK: ld1 {v15.8h}, [x15], x2
2047 # CHECK: ld1 {v31.4s, v0.4s}, [sp], #32
2048 # CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2049 # CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2050 0xef,0x75,0xc2,0x4c
2051 0xff,0xab,0xdf,0x4c
2052 0x00,0x6c,0xdf,0x4c
2053 0x00,0x20,0xc3,0x0c
2054
2055 # CHECK: ld2 {v0.16b, v1.16b}, [x0], x1
2056 # CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2057 # CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2058 0x00,0x80,0xc1,0x4c
2059 0xef,0x45,0xc2,0x4c
2060 0xff,0x0b,0xdf,0x4c
2061
2062
2063 # CHECK: st1 {v15.8h}, [x15], x2
2064 # CHECK: st1 {v31.4s, v0.4s}, [sp], #32
2065 # CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2066 # CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2067 0xef,0x75,0x82,0x4c
2068 0xff,0xab,0x9f,0x4c
2069 0x00,0x6c,0x9f,0x4c
2070 0x00,0x20,0x83,0x0c
2071
2072 # CHECK: st2 {v0.16b, v1.16b}, [x0], x1
2073 # CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2074 # CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2075 0x00,0x80,0x81,0x4c
2076 0xef,0x45,0x82,0x4c
2077 0xff,0x0b,0x9f,0x4c
2078
2079 #----------------------------------------------------------------------
2080 # Vector load single N-element structure to all lane of N
2081 # consecutive registers (N = 1,2,3,4)
2082 #----------------------------------------------------------------------
2083 # CHECK: ld1r {v0.16b}, [x0]
2084 # CHECK: ld1r {v15.8h}, [x15]
2085 # CHECK: ld2r {v31.4s, v0.4s}, [sp]
2086 # CHECK: ld2r {v0.2d, v1.2d}, [x0]
2087 # CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0]
2088 # CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15]
2089 # CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2090 # CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp]
2091 0x00,0xc0,0x40,0x4d
2092 0xef,0xc5,0x40,0x4d
2093 0xff,0xcb,0x60,0x4d
2094 0x00,0xcc,0x60,0x4d
2095 0x00,0xe0,0x40,0x0d
2096 0xef,0xe5,0x40,0x0d
2097 0xff,0xeb,0x60,0x0d
2098 0xff,0xef,0x60,0x0d
2099
2100 #----------------------------------------------------------------------
2101 # Vector load/store single N-element structure to/from one lane of N
2102 # consecutive registers (N = 1,2,3,4)
2103 #----------------------------------------------------------------------
2104 # CHECK: ld1 {v0.b}[9], [x0]
2105 # CHECK: ld2 {v15.h, v16.h}[7], [x15]
2106 # CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp]
2107 # CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0]
2108 # CHECK: st1 {v0.d}[1], [x0]
2109 # CHECK: st2 {v31.s, v0.s}[3], [sp]
2110 # CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15]
2111 # CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0]
2112 0x00,0x04,0x40,0x4d
2113 0xef,0x59,0x60,0x4d
2114 0xff,0xb3,0x40,0x4d
2115 0x00,0xa4,0x60,0x4d
2116 0x00,0x84,0x00,0x4d
2117 0xff,0x93,0x20,0x4d
2118 0xef,0x79,0x00,0x4d
2119 0x00,0x24,0x20,0x4d
2120
2121 #----------------------------------------------------------------------
2122 # Post-index of vector load single N-element structure to all lane of N
2123 # consecutive registers (N = 1,2,3,4)
2124 #----------------------------------------------------------------------
2125 # CHECK: ld1r {v0.16b}, [x0], #1
2126 # CHECK: ld1r {v15.8h}, [x15], #2
2127 # CHECK: ld2r {v31.4s, v0.4s}, [sp], #8
2128 # CHECK: ld2r {v0.2d, v1.2d}, [x0], #16
2129 # CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0], #3
2130 # CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #6
2131 # CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp], x30
2132 # CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], x7
2133 0x00,0xc0,0xdf,0x4d
2134 0xef,0xc5,0xdf,0x4d
2135 0xff,0xcb,0xff,0x4d
2136 0x00,0xcc,0xff,0x4d
2137 0x00,0xe0,0xdf,0x0d
2138 0xef,0xe5,0xdf,0x0d
2139 0xff,0xeb,0xfe,0x0d
2140 0xff,0xef,0xe7,0x0d
2141
2142 #----------------------------------------------------------------------
2143 # Post-index of vector load/store single N-element structure to/from
2144 #  one lane of N consecutive registers (N = 1,2,3,4)
2145 #----------------------------------------------------------------------
2146 # CHECK: ld1 {v0.b}[9], [x0], #1
2147 # CHECK: ld2 {v15.h, v16.h}[7], [x15], #4
2148 # CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp], x3
2149 # CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32
2150 # CHECK: ld4 {v0.h, v1.h, v2.h, v3.h}[7], [x0], x0
2151 # CHECK: st1 {v0.d}[1], [x0], #8
2152 # CHECK: st2 {v31.s, v0.s}[3], [sp], #8
2153 # CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15], #6
2154 # CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0], x5
2155 0x00,0x04,0xdf,0x4d
2156 0xef,0x59,0xff,0x4d
2157 0xff,0xb3,0xc3,0x4d
2158 0x00,0xa4,0xff,0x4d
2159 0x00,0x78,0xe0,0x4d
2160 0x00,0x84,0x9f,0x4d
2161 0xff,0x93,0xbf,0x4d
2162 0xef,0x79,0x9f,0x4d
2163 0x00,0x24,0xa5,0x4d
2164
2165 #----------------------------------------------------------------------
2166 # Bitwise extract
2167 #----------------------------------------------------------------------
2168 0x20,0x18,0x02,0x2e
2169 0x20,0x18,0x02,0x6e
2170 # CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
2171 # CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
2172
2173 #----------------------------------------------------------------------
2174 # unzip with 3 same vectors to get primary result
2175 #----------------------------------------------------------------------
2176 # CHECK: uzp1   v1.8b, v1.8b, v2.8b
2177 # CHECK: uzp1   v2.16b, v1.16b, v2.16b
2178 # CHECK: uzp1   v3.4h, v1.4h, v2.4h
2179 # CHECK: uzp1   v4.8h, v1.8h, v2.8h
2180 # CHECK: uzp1   v5.2s, v1.2s, v2.2s
2181 # CHECK: uzp1   v6.4s, v1.4s, v2.4s
2182 # CHECK: uzp1   v7.2d, v1.2d, v2.2d
2183 0x21,0x18,0x02,0x0e
2184 0x22,0x18,0x02,0x4e
2185 0x23,0x18,0x42,0x0e
2186 0x24,0x18,0x42,0x4e
2187 0x25,0x18,0x82,0x0e
2188 0x26,0x18,0x82,0x4e
2189 0x27,0x18,0xc2,0x4e
2190
2191 #----------------------------------------------------------------------
2192 # transpose with 3 same vectors to get primary result
2193 #----------------------------------------------------------------------
2194 # CHECK: trn1   v8.8b, v1.8b, v2.8b
2195 # CHECK: trn1   v9.16b, v1.16b, v2.16b
2196 # CHECK: trn1   v10.4h, v1.4h, v2.4h
2197 # CHECK: trn1   v27.8h, v7.8h, v2.8h
2198 # CHECK: trn1   v12.2s, v7.2s, v2.2s
2199 # CHECK: trn1   v29.4s, v6.4s, v2.4s
2200 # CHECK: trn1   v14.2d, v6.2d, v2.2d
2201 0x28,0x28,0x02,0x0e
2202 0x29,0x28,0x02,0x4e
2203 0x2a,0x28,0x42,0x0e
2204 0xfb,0x28,0x42,0x4e
2205 0xec,0x28,0x82,0x0e
2206 0xdd,0x28,0x82,0x4e
2207 0xce,0x28,0xc2,0x4e
2208
2209 #----------------------------------------------------------------------
2210 # zip with 3 same vectors to get primary result
2211 #----------------------------------------------------------------------
2212 # CHECK: zip1   v31.8b, v5.8b, v2.8b
2213 # CHECK: zip1   v0.16b, v5.16b, v2.16b
2214 # CHECK: zip1   v17.4h, v4.4h, v2.4h
2215 # CHECK: zip1   v2.8h, v4.8h, v2.8h
2216 # CHECK: zip1   v19.2s, v3.2s, v2.2s
2217 # CHECK: zip1   v4.4s, v3.4s, v2.4s
2218 # CHECK: zip1   v21.2d, v2.2d, v2.2d
2219 0xbf,0x38,0x02,0x0e
2220 0xa0,0x38,0x02,0x4e
2221 0x91,0x38,0x42,0x0e
2222 0x82,0x38,0x42,0x4e
2223 0x73,0x38,0x82,0x0e
2224 0x64,0x38,0x82,0x4e
2225 0x55,0x38,0xc2,0x4e
2226
2227 #----------------------------------------------------------------------
2228 # unzip with 3 same vectors to get secondary result
2229 #----------------------------------------------------------------------
2230 # CHECK: uzp2   v6.8b, v2.8b, v2.8b
2231 # CHECK: uzp2   v23.16b, v1.16b, v2.16b
2232 # CHECK: uzp2   v8.4h, v1.4h, v2.4h
2233 # CHECK: uzp2   v25.8h, v0.8h, v2.8h
2234 # CHECK: uzp2   v10.2s, v0.2s, v2.2s
2235 # CHECK: uzp2   v27.4s, v7.4s, v2.4s
2236 # CHECK: uzp2   v12.2d, v7.2d, v2.2d
2237 0x46,0x58,0x02,0x0e
2238 0x37,0x58,0x02,0x4e
2239 0x28,0x58,0x42,0x0e
2240 0x19,0x58,0x42,0x4e
2241 0x0a,0x58,0x82,0x0e
2242 0xfb,0x58,0x82,0x4e
2243 0xec,0x58,0xc2,0x4e
2244
2245 #----------------------------------------------------------------------
2246 # transpose with 3 same vectors to get secondary result
2247 #----------------------------------------------------------------------
2248 # CHECK: trn2   v29.8b, v6.8b, v2.8b
2249 # CHECK: trn2   v14.16b, v6.16b, v2.16b
2250 # CHECK: trn2   v31.4h, v5.4h, v2.4h
2251 # CHECK: trn2   v0.8h, v5.8h, v2.8h
2252 # CHECK: trn2   v17.2s, v4.2s, v2.2s
2253 # CHECK: trn2   v2.4s, v4.4s, v2.4s
2254 # CHECK: trn2   v19.2d, v3.2d, v2.2d
2255 0xdd,0x68,0x02,0x0e
2256 0xce,0x68,0x02,0x4e
2257 0xbf,0x68,0x42,0x0e
2258 0xa0,0x68,0x42,0x4e
2259 0x91,0x68,0x82,0x0e
2260 0x82,0x68,0x82,0x4e
2261 0x73,0x68,0xc2,0x4e
2262
2263 #----------------------------------------------------------------------
2264 # zip with 3 same vectors to get secondary result
2265 #----------------------------------------------------------------------
2266 # CHECK: zip2   v4.8b, v3.8b, v2.8b
2267 # CHECK: zip2   v21.16b, v2.16b, v2.16b
2268 # CHECK: zip2   v6.4h, v2.4h, v2.4h
2269 # CHECK: zip2   v23.8h, v1.8h, v2.8h
2270 # CHECK: zip2   v8.2s, v1.2s, v2.2s
2271 # CHECK: zip2   v25.4s, v0.4s, v2.4s
2272 # CHECK: zip2   v10.2d, v0.2d, v2.2d
2273 0x64,0x78,0x02,0x0e
2274 0x55,0x78,0x02,0x4e
2275 0x46,0x78,0x42,0x0e
2276 0x37,0x78,0x42,0x4e
2277 0x28,0x78,0x82,0x0e
2278 0x19,0x78,0x82,0x4e
2279 0x0a,0x78,0xc2,0x4e
2280
2281 #----------------------------------------------------------------------
2282 # Scalar Floating Point  multiply (scalar, by element)
2283 #----------------------------------------------------------------------
2284 # CHECK: fmul s0, s1, v1.s[0]
2285 # CHECK: fmul s0, s1, v1.s[3]
2286 # CHECK: fmul d0, d1, v1.d[0]
2287 # CHECK: fmul d0, d1, v1.d[1]
2288 # CHECK: fmul d15, d15, v15.d[1]
2289 0x20 0x90 0x81 0x5f
2290 0x20 0x98 0xa1 0x5f
2291 0x20 0x90 0xc1 0x5f
2292 0x20 0x98 0xc1 0x5f
2293 0xef 0x99 0xcf 0x5f
2294
2295 #----------------------------------------------------------------------
2296 # Scalar Floating Point  multiply extended (scalar, by element)
2297 #----------------------------------------------------------------------
2298 # CHECK: fmulx s3, s5, v7.s[0]
2299 # CHECK: fmulx s3, s5, v7.s[3]
2300 # CHECK: fmulx s3, s5, v15.s[3]
2301 # CHECK: fmulx d0, d4, v8.d[0]
2302 # CHECK: fmulx d0, d4, v8.d[1]
2303 0xa3 0x90 0x87 0x7f
2304 0xa3 0x98 0xa7 0x7f
2305 0xa3 0x98 0xaf 0x7f
2306 0x80 0x90 0xc8 0x7f
2307 0x80 0x98 0xc8 0x7f
2308
2309 #----------------------------------------------------------------------
2310 # Scalar Floating Point fused multiply-add (scalar, by element)
2311 #----------------------------------------------------------------------
2312 # CHECK: fmla s0, s1, v1.s[0]
2313 # CHECK: fmla s0, s1, v1.s[3]
2314 # CHECK: fmla d0, d1, v1.d[0]
2315 # CHECK: fmla d0, d1, v1.d[1]
2316 # CHECK: fmla d15, d15, v15.d[1]
2317 0x20 0x10 0x81 0x5f
2318 0x20 0x18 0xa1 0x5f
2319 0x20 0x10 0xc1 0x5f
2320 0x20 0x18 0xc1 0x5f
2321 0xef 0x19 0xcf 0x5f
2322
2323 #----------------------------------------------------------------------
2324 # Scalar Floating Point fused multiply-sub (scalar, by element)
2325 #----------------------------------------------------------------------
2326 # CHECK: fmls s3, s5, v7.s[0]
2327 # CHECK: fmls s3, s5, v7.s[3]
2328 # CHECK: fmls s3, s5, v15.s[3]
2329 # CHECK: fmls d0, d4, v8.d[0]
2330 # CHECK: fmls d0, d4, v8.d[1]
2331 0xa3 0x50 0x87 0x5f
2332 0xa3 0x58 0xa7 0x5f
2333 0xa3 0x58 0xaf 0x5f
2334 0x80 0x50 0xc8 0x5f
2335 0x80 0x58 0xc8 0x5f
2336
2337 #----------------------------------------------------------------------
2338 # Scalar Signed saturating doubling
2339 # multiply-add long (scalar, by element)
2340 #----------------------------------------------------------------------
2341 # CHECK: sqdmlal s0, h0, v0.h[0]
2342 # CHECK: sqdmlal s0, h0, v0.h[1]
2343 # CHECK: sqdmlal s0, h0, v0.h[2]
2344 # CHECK: sqdmlal s0, h0, v0.h[3]
2345 # CHECK: sqdmlal s0, h0, v0.h[4]
2346 # CHECK: sqdmlal s0, h0, v0.h[5]
2347 # CHECK: sqdmlal s0, h0, v0.h[6]
2348 # CHECK: sqdmlal s0, h0, v0.h[7]
2349 # CHECK: sqdmlal d8, s9, v15.s[0]
2350 # CHECK: sqdmlal d8, s9, v15.s[1]
2351 # CHECK: sqdmlal d8, s9, v15.s[2]
2352 # CHECK: sqdmlal d8, s9, v15.s[3]
2353 0x00 0x30 0x40 0x5f
2354 0x00 0x30 0x50 0x5f
2355 0x00 0x30 0x60 0x5f
2356 0x00 0x30 0x70 0x5f
2357 0x00 0x38 0x40 0x5f
2358 0x00 0x38 0x50 0x5f
2359 0x00 0x38 0x60 0x5f
2360 0x00 0x38 0x70 0x5f
2361 0x28 0x31 0x8f 0x5f
2362 0x28 0x31 0xaf 0x5f
2363 0x28 0x39 0x8f 0x5f
2364 0x28 0x39 0xaf 0x5f
2365
2366 #----------------------------------------------------------------------
2367 # Scalar Signed saturating doubling
2368 # multiply-sub long (scalar, by element)
2369 #----------------------------------------------------------------------
2370 # CHECK: sqdmlsl s0, h0, v0.h[0]
2371 # CHECK: sqdmlsl s0, h0, v0.h[1]
2372 # CHECK: sqdmlsl s0, h0, v0.h[2]
2373 # CHECK: sqdmlsl s0, h0, v0.h[3]
2374 # CHECK: sqdmlsl s0, h0, v0.h[4]
2375 # CHECK: sqdmlsl s0, h0, v0.h[5]
2376 # CHECK: sqdmlsl s0, h0, v0.h[6]
2377 # CHECK: sqdmlsl s0, h0, v0.h[7]
2378 # CHECK: sqdmlsl d8, s9, v15.s[0]
2379 # CHECK: sqdmlsl d8, s9, v15.s[1]
2380 # CHECK: sqdmlsl d8, s9, v15.s[2]
2381 # CHECK: sqdmlsl d8, s9, v15.s[3]
2382 0x00 0x70 0x40 0x5f
2383 0x00 0x70 0x50 0x5f
2384 0x00 0x70 0x60 0x5f
2385 0x00 0x70 0x70 0x5f
2386 0x00 0x78 0x40 0x5f
2387 0x00 0x78 0x50 0x5f
2388 0x00 0x78 0x60 0x5f
2389 0x00 0x78 0x70 0x5f
2390 0x28 0x71 0x8f 0x5f
2391 0x28 0x71 0xaf 0x5f
2392 0x28 0x79 0x8f 0x5f
2393 0x28 0x79 0xaf 0x5f
2394
2395 #----------------------------------------------------------------------
2396 # Scalar Signed saturating doubling multiply long (scalar, by element)
2397 #----------------------------------------------------------------------
2398 # CHECK: sqdmull s1, h1, v1.h[0]
2399 # CHECK: sqdmull s1, h1, v1.h[1]
2400 # CHECK: sqdmull s1, h1, v1.h[2]
2401 # CHECK: sqdmull s1, h1, v1.h[3]
2402 # CHECK: sqdmull s1, h1, v1.h[4]
2403 # CHECK: sqdmull s1, h1, v1.h[5]
2404 # CHECK: sqdmull s1, h1, v1.h[6]
2405 # CHECK: sqdmull s1, h1, v1.h[7]
2406 # CHECK: sqdmull d1, s1, v4.s[0]
2407 # CHECK: sqdmull d1, s1, v4.s[1]
2408 # CHECK: sqdmull d1, s1, v4.s[2]
2409 # CHECK: sqdmull d1, s1, v4.s[3]
2410 0x21 0xb0 0x41 0x5f
2411 0x21 0xb0 0x51 0x5f
2412 0x21 0xb0 0x61 0x5f
2413 0x21 0xb0 0x71 0x5f
2414 0x21 0xb8 0x41 0x5f
2415 0x21 0xb8 0x51 0x5f
2416 0x21 0xb8 0x61 0x5f
2417 0x21 0xb8 0x71 0x5f
2418 0x21 0xb0 0x84 0x5f
2419 0x21 0xb0 0xa4 0x5f
2420 0x21 0xb8 0x84 0x5f
2421 0x21 0xb8 0xa4 0x5f
2422
2423 #----------------------------------------------------------------------
2424 # Scalar Signed saturating doubling multiply returning
2425 # high half (scalar, by element)
2426 #----------------------------------------------------------------------
2427 # CHECK: sqdmulh h7, h1, v14.h[0]
2428 # CHECK: sqdmulh h7, h15, v8.h[1]
2429 # CHECK: sqdmulh h7, h15, v8.h[2]
2430 # CHECK: sqdmulh h7, h15, v8.h[3]
2431 # CHECK: sqdmulh h7, h15, v8.h[4]
2432 # CHECK: sqdmulh h7, h15, v8.h[5]
2433 # CHECK: sqdmulh h7, h15, v8.h[6]
2434 # CHECK: sqdmulh h7, h15, v8.h[7]
2435 # CHECK: sqdmulh s15, s3, v4.s[0]
2436 # CHECK: sqdmulh s15, s14, v16.s[1]
2437 # CHECK: sqdmulh s15, s15, v16.s[2]
2438 # CHECK: sqdmulh s15, s16, v17.s[3]
2439 0x27 0xc0 0x4e 0x5f
2440 0xe7 0xc1 0x58 0x5f
2441 0xe7 0xc1 0x68 0x5f
2442 0xe7 0xc1 0x78 0x5f
2443 0xe7 0xc9 0x48 0x5f
2444 0xe7 0xc9 0x58 0x5f
2445 0xe7 0xc9 0x68 0x5f
2446 0xe7 0xc9 0x78 0x5f
2447 0x6f 0xc0 0x84 0x5f
2448 0xcf 0xc1 0xb0 0x5f
2449 0xef 0xc9 0x90 0x5f
2450 0x0f 0xca 0xb1 0x5f
2451
2452 #----------------------------------------------------------------------
2453 # Scalar Signed saturating rounding doubling multiply
2454 # returning high half (scalar, by element)
2455 #----------------------------------------------------------------------
2456 # CHECK: sqrdmulh h7, h1, v14.h[0]
2457 # CHECK: sqrdmulh h7, h15, v8.h[1]
2458 # CHECK: sqrdmulh h7, h15, v8.h[2]
2459 # CHECK: sqrdmulh h7, h15, v8.h[3]
2460 # CHECK: sqrdmulh h7, h15, v8.h[4]
2461 # CHECK: sqrdmulh h7, h15, v8.h[5]
2462 # CHECK: sqrdmulh h7, h15, v8.h[6]
2463 # CHECK: sqrdmulh h7, h15, v8.h[7]
2464 # CHECK: sqrdmulh s15, s3, v4.s[0]
2465 # CHECK: sqrdmulh s15, s14, v16.s[1]
2466 # CHECK: sqrdmulh s15, s15, v16.s[2]
2467 # CHECK: sqrdmulh s15, s16, v17.s[3]
2468 0x27 0xd0 0x4e 0x5f
2469 0xe7 0xd1 0x58 0x5f
2470 0xe7 0xd1 0x68 0x5f
2471 0xe7 0xd1 0x78 0x5f
2472 0xe7 0xd9 0x48 0x5f
2473 0xe7 0xd9 0x58 0x5f
2474 0xe7 0xd9 0x68 0x5f
2475 0xe7 0xd9 0x78 0x5f
2476 0x6f 0xd0 0x84 0x5f
2477 0xcf 0xd1 0xb0 0x5f
2478 0xef 0xd9 0x90 0x5f
2479 0x0f 0xda 0xb1 0x5f
2480
2481 #----------------------------------------------------------------------
2482 #Duplicate element (scalar)
2483 #----------------------------------------------------------------------
2484 # CHECK: dup b0, v0.b[15]
2485 # CHECK: dup h2, v31.h[5]
2486 # CHECK: dup s17, v2.s[2]
2487 # CHECK: dup d6, v12.d[1]
2488 0x00 0x04 0x1f 0x5e
2489 0xe2 0x07 0x16 0x5e
2490 0x51 0x04 0x14 0x5e
2491 0x86 0x05 0x18 0x5e
2492
2493 #----------------------------------------------------------------------
2494 # Table look up
2495 #----------------------------------------------------------------------
2496 0x20,0x00,0x02,0x0e
2497 0xf0,0x23,0x02,0x0e
2498 0x20,0x40,0x02,0x0e
2499 0xf0,0x62,0x02,0x0e
2500 # CHECK: tbl v0.8b, {v1.16b}, v2.8b
2501 # CHECK: tbl v16.8b, {v31.16b, v0.16b}, v2.8b
2502 # CHECK: tbl v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2503 # CHECK: tbl v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2504
2505 0x20,0x00,0x02,0x4e
2506 0xf0,0x23,0x02,0x4e
2507 0x20,0x40,0x02,0x4e
2508 0xe0,0x63,0x02,0x4e
2509 # CHECK: tbl v0.16b, {v1.16b}, v2.16b
2510 # CHECK: tbl v16.16b, {v31.16b, v0.16b}, v2.16b
2511 # CHECK: tbl v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2512 # CHECK: tbl v0.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
2513
2514 0x20,0x10,0x02,0x0e
2515 0xf0,0x33,0x02,0x0e
2516 0x20,0x50,0x02,0x0e
2517 0xf0,0x72,0x02,0x0e
2518 # CHECK: tbx v0.8b, {v1.16b}, v2.8b
2519 # CHECK: tbx v16.8b, {v31.16b, v0.16b}, v2.8b
2520 # CHECK: tbx v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2521 # CHECK: tbx v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2522
2523 0x20,0x10,0x02,0x4e
2524 0xf0,0x33,0x02,0x4e
2525 0x20,0x50,0x02,0x4e
2526 0xf0,0x73,0x02,0x4e
2527 # CHECK: tbx v0.16b, {v1.16b}, v2.16b
2528 # CHECK: tbx v16.16b, {v31.16b, v0.16b}, v2.16b
2529 # CHECK: tbx v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2530 # CHECK: tbx v16.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
2531
2532 #----------------------------------------------------------------------
2533 # Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
2534 # Odd
2535 #----------------------------------------------------------------------
2536 # CHECK: fcvtxn s22, d13
2537 0xb6,0x69,0x61,0x7e
2538
2539 #----------------------------------------------------------------------
2540 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2541 # With Ties To Away
2542 #----------------------------------------------------------------------
2543 # CHECK: fcvtas s12, s13
2544 # CHECK: fcvtas d21, d14
2545
2546 0xac,0xc9,0x21,0x5e
2547 0xd5,0xc9,0x61,0x5e
2548
2549 #----------------------------------------------------------------------
2550 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2551 # Nearest With Ties To Away
2552 #----------------------------------------------------------------------
2553 # CHECK: fcvtau s12, s13
2554 # CHECK: fcvtau d21, d14
2555 0xac,0xc9,0x21,0x7e
2556 0xd5,0xc9,0x61,0x7e
2557
2558 #----------------------------------------------------------------------
2559 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2560 # Minus Infinity
2561 #----------------------------------------------------------------------
2562 # CHECK: fcvtms s22, s13
2563 # CHECK: fcvtms d21, d14
2564 0xb6,0xb9,0x21,0x5e
2565 0xd5,0xb9,0x61,0x5e
2566
2567 #----------------------------------------------------------------------
2568 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2569 # Minus Infinity
2570 #----------------------------------------------------------------------
2571 # CHECK: fcvtmu s12, s13
2572 # CHECK: fcvtmu d21, d14
2573 0xac,0xb9,0x21,0x7e
2574 0xd5,0xb9,0x61,0x7e
2575
2576 #----------------------------------------------------------------------
2577 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2578 # With Ties To Even
2579 #----------------------------------------------------------------------
2580
2581 # CHECK: fcvtns s22, s13
2582 # CHECK: fcvtns d21, d14
2583
2584 0xb6,0xa9,0x21,0x5e
2585 0xd5,0xa9,0x61,0x5e
2586
2587 #----------------------------------------------------------------------
2588 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2589 # Nearest With Ties To Even
2590 #----------------------------------------------------------------------
2591
2592 # CHECK: fcvtnu s12, s13
2593 # CHECK: fcvtnu d21, d14
2594 0xac,0xa9,0x21,0x7e
2595 0xd5,0xa9,0x61,0x7e
2596         
2597 #----------------------------------------------------------------------
2598 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2599 # Positive Infinity
2600 #----------------------------------------------------------------------
2601 # CHECK: fcvtps s22, s13
2602 # CHECK: fcvtps d21, d14
2603 0xb6,0xa9,0xa1,0x5e
2604 0xd5,0xa9,0xe1,0x5e
2605         
2606 #----------------------------------------------------------------------
2607 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2608 # Positive Infinity
2609 #----------------------------------------------------------------------
2610 # CHECK: fcvtpu s12, s13
2611 # CHECK: fcvtpu d21, d14
2612 0xac,0xa9,0xa1,0x7e
2613 0xd5,0xa9,0xe1,0x7e
2614
2615 #----------------------------------------------------------------------
2616 # Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
2617 #----------------------------------------------------------------------
2618 # CHECK: fcvtzs s12, s13
2619 # CHECK: fcvtzs d21, d14
2620 0xac,0xb9,0xa1,0x5e
2621 0xd5,0xb9,0xe1,0x5e
2622         
2623 #----------------------------------------------------------------------
2624 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
2625 # Zero
2626 #----------------------------------------------------------------------
2627 # CHECK: fcvtzu s12, s13
2628 # CHECK: fcvtzu d21, d14
2629 0xac,0xb9,0xa1,0x7e
2630 0xd5,0xb9,0xe1,0x7e
2631
2632 #----------------------------------------------------------------------
2633 # Scalar Floating-point Absolute Difference
2634 #----------------------------------------------------------------------
2635 # CHECK: fabd s29, s24, s20
2636 # CHECK: fabd d29, d24, d20
2637 0x1d,0xd7,0xb4,0x7e
2638 0x1d,0xd7,0xf4,0x7e