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