1# RUN: llvm-mc  -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
2
3#------------------------------------------------------------------------------
4# Vector Integer Add/Sub
5#------------------------------------------------------------------------------
6# CHECK: add v31.8b, v31.8b, v31.8b
7# CHECK: sub v0.2d, v0.2d, v0.2d
80xff 0x87 0x3f 0x0e
90x00 0x84 0xe0 0x6e
10
11#------------------------------------------------------------------------------
12# Vector Floating-Point Add/Sub
13#------------------------------------------------------------------------------
14
15# CHECK: fadd v0.4s, v0.4s, v0.4s
16# CHECK: fsub v31.2s, v31.2s, v31.2s
170x00 0xd4 0x20 0x4e
180xff 0xd7 0xbf 0x0e
19
20#------------------------------------------------------------------------------
21# Vector Integer Mul
22#------------------------------------------------------------------------------
23# CHECK: mul v0.8b, v1.8b, v2.8b
240x20 0x9c 0x22 0x0e
25
26#------------------------------------------------------------------------------
27# Vector Floating-Point Mul/Div
28#------------------------------------------------------------------------------
29# CHECK: fmul v0.2s, v1.2s, v2.2s
30# CHECK: fdiv v31.2s, v31.2s, v31.2s
310x20 0xdc 0x22 0x2e
320xff 0xff 0x3f 0x2e
33
34#----------------------------------------------------------------------
35# Vector Polynomial Multiply
36#----------------------------------------------------------------------
37# CHECK: pmul v0.8b, v15.8b, v16.8b
38# CHECK: pmul v31.16b, v7.16b, v8.16b
390xe0 0x9d 0x30 0x2e
400xff 0x9c 0x28 0x6e
41
42#------------------------------------------------------------------------------
43# Vector And, Orr, Eor, Orn, Bic
44#------------------------------------------------------------------------------
45# CHECK: and v2.8b, v2.8b, v2.8b
46# CHECK: orr v31.16b, v31.16b, v30.16b
47# CHECK: eor v0.16b, v1.16b, v2.16b
48# CHECK: orn v9.16b, v10.16b, v11.16b
49# CHECK: bic v31.8b, v30.8b, v29.8b
500x42 0x1c 0x22 0x0e
510xff 0x1f 0xbe 0x4e
520x20 0x1c 0x22 0x6e
530x49 0x1d 0xeb 0x4e
540xdf 0x1f 0x7d 0x0e
55
56#------------------------------------------------------------------------------
57# Vector Bsl, Bit, Bif
58#------------------------------------------------------------------------------
59# CHECK: bsl v0.8b, v1.8b, v2.8b
60# CHECK: bit v31.16b, v31.16b, v31.16b
61# CHECK: bif v0.16b, v1.16b, v2.16b
620x20 0x1c 0x62 0x2e
630xff 0x1f 0xbf 0x6e
640x20 0x1c 0xe2 0x6e
65
66
67#------------------------------------------------------------------------------
68# Vector Integer Multiply-accumulate and Multiply-subtract
69#------------------------------------------------------------------------------
70# CHECK: mla v0.8b, v1.8b, v2.8b
71# CHECK: mls v31.4h, v31.4h, v31.4h
720x20 0x94 0x22 0x0e
730xff 0x97 0x7f 0x2e
74
75#------------------------------------------------------------------------------
76# Vector Floating-Point Multiply-accumulate and Multiply-subtract
77#------------------------------------------------------------------------------
78# CHECK: fmla v0.2s, v1.2s, v2.2s
79# CHECK: fmls v31.2s, v31.2s, v31.2s
800x20 0xcc 0x22 0x0e
810xff 0xcf 0xbf 0x0e
82
83#------------------------------------------------------------------------------
84# Vector Move Immediate Shifted
85# Vector Move Inverted Immediate Shifted
86# Vector Bitwise Bit Clear (AND NOT) - immediate
87# Vector Bitwise OR - immedidate
88#------------------------------------------------------------------------------
89# CHECK: movi v31.4s, #0xff, lsl #24
90# CHECK: mvni v0.2s, #0x0
91# CHECK: bic v15.4h, #0xf, lsl #8
92# CHECK: orr v16.8h, #0x1f
930xff 0x67 0x07 0x4f
940x00 0x04 0x00 0x2f
950xef 0xb5 0x00 0x2f
960xf0 0x97 0x00 0x4f
97
98#------------------------------------------------------------------------------
99# Vector Move Immediate Masked
100# Vector Move Inverted Immediate Masked
101#------------------------------------------------------------------------------
102# CHECK: movi v8.2s, #0x8, msl #8
103# CHECK: mvni v16.4s, #0x10, msl #16
1040x08 0xc5 0x00 0x0f
1050x10 0xd6 0x00 0x6f
106
107#------------------------------------------------------------------------------
108# Vector Immediate - per byte
109# Vector Move Immediate - bytemask, per doubleword
110# Vector Move Immediate - bytemask, one doubleword
111#------------------------------------------------------------------------------
112# CHECK: movi v16.8b, #0xff
113# CHECK: movi v31.16b, #0x1f
114# CHECK: movi d15, #0xff00ff00ff00ff
115# CHECK: movi v31.2d, #0xff0000ff0000ffff
1160xf0 0xe7 0x07 0x0f
1170xff 0xe7 0x00 0x4f
1180xaf 0xe6 0x02 0x2f
1190x7f 0xe6 0x04 0x6f
120
121#------------------------------------------------------------------------------
122# Vector Floating Point Move Immediate
123#------------------------------------------------------------------------------
124# CHECK: fmov v0.2s, #13.0
125# CHECK: fmov v15.4s, #1.0
126# CHECK: fmov v31.2d, #-1.25
1270x40 0xf5 0x01 0x0f
1280x0f 0xf6 0x03 0x4f
1290x9f 0xf6 0x07 0x6f
130
131#------------------------------------------------------------------------------
132# Vector Move - register
133#------------------------------------------------------------------------------
134
135# FIXME: these should print as "mov", but TableGen can't handle it.
136
137# CHECK: orr v1.16b, v15.16b, v15.16b
138# CHECK: orr v25.8b, v4.8b, v4.8b
1390xe1 0x1d 0xaf 0x4e
1400x99 0x1c 0xa4 0x0e
141
142#----------------------------------------------------------------------
143# Vector Absolute Difference and Accumulate (Signed, Unsigned)
144# Vector Absolute Difference (Signed, Unsigned)
145# Vector Absolute Difference (Floating Point)
146#----------------------------------------------------------------------
147
148# CHECK: uaba v0.8b, v1.8b, v2.8b
149# CHECK: saba v31.16b, v30.16b, v29.16b
150# CHECK: uabd v15.4h, v16.4h, v17.4h
151# CHECK: sabd v5.4h, v4.4h, v6.4h
152# CHECK: fabd v1.4s, v31.4s, v16.4s
1530x20 0x7c 0x22 0x2e
1540xdf 0x7f 0x3d 0x4e
1550x0f 0x76 0x71 0x2e
1560x85 0x74 0x66 0x0e
1570xe1 0xd7 0xb0 0x6e
158
159#----------------------------------------------------------------------
160# Scalar Integer Add
161# Scalar Integer Sub
162#----------------------------------------------------------------------
163
164# CHECK: add d17, d31, d29
165# CHECK: sub d15, d5, d16
1660xf1 0x87 0xfd 0x5e
1670xaf 0x84 0xf0 0x7e
168
169#----------------------------------------------------------------------
170# Vector Reciprocal Square Root Step (Floating Point)
171#----------------------------------------------------------------------
172# CHECK: frsqrts v31.2d, v15.2d, v8.2d
1730xff 0xfd 0xe8 0x4e
174
175#----------------------------------------------------------------------
176# Vector Reciprocal Step (Floating Point)
177#----------------------------------------------------------------------
178# CHECK: frecps  v5.4s, v7.4s, v16.4s
1790xe5 0xfc 0x30 0x4e
180
181#----------------------------------------------------------------------
182# Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
183#----------------------------------------------------------------------
184# CHECK: facge v0.4s, v31.4s, v16.4s
1850xe0 0xef 0x30 0x6e
186
187#----------------------------------------------------------------------
188# Vector Absolute Compare Mask Less Than (Floating Point)
189#----------------------------------------------------------------------
190# CHECK: facgt v31.2d, v29.2d, v28.2d
1910xbf 0xef 0xfc 0x6e
192
193#----------------------------------------------------------------------
194# Vector Compare Mask Equal (Integer)
195#----------------------------------------------------------------------
196# CHECK: cmeq v5.16b, v15.16b, v31.16b
1970xe5 0x8d 0x3f 0x6e
198
199#----------------------------------------------------------------------
200# Vector Compare Mask Higher or Same (Unsigned Integer)
201#----------------------------------------------------------------------
202# CHECK: cmhs v1.8b, v16.8b, v30.8b
2030x01 0x3e 0x3e 0x2e
204
205#----------------------------------------------------------------------
206# Vector Compare Mask Greater Than or Equal (Integer)
207#----------------------------------------------------------------------
208# CHECK: cmge v20.4h, v11.4h, v23.4h
2090x74 0x3d 0x77 0x0e
210
211#----------------------------------------------------------------------
212# Vector Compare Mask Higher (Unsigned Integer)
213# CHECK: cmhi v13.8h, v3.8h, v27.8h
2140x6d 0x34 0x7b 0x6e
215
216#----------------------------------------------------------------------
217# Vector Compare Mask Greater Than (Integer)
218#----------------------------------------------------------------------
219# CHECK: cmgt v9.4s, v4.4s, v28.4s
2200x89 0x34 0xbc 0x4e
221
222#----------------------------------------------------------------------
223# Vector Compare Mask Bitwise Test (Integer)
224#----------------------------------------------------------------------
225# CHECK: cmtst v21.2s, v19.2s, v18.2s
2260x75 0x8e 0xb2 0x0e
227
228#----------------------------------------------------------------------
229# Vector Compare Mask Equal (Floating Point)
230#----------------------------------------------------------------------
231# CHECK: fcmeq v0.2s, v15.2s, v16.2s
2320xe0 0xe5 0x30 0x0e
233
234#----------------------------------------------------------------------
235# Vector Compare Mask Greater Than Or Equal (Floating Point)
236#----------------------------------------------------------------------
237# CHECK: fcmge v31.4s, v7.4s, v29.4s
2380xff 0xe4 0x3d 0x6e
239
240#----------------------------------------------------------------------
241# Vector Compare Mask Greater Than (Floating Point)
242#----------------------------------------------------------------------
243# CHECK: fcmgt v17.4s, v8.4s, v25.4s
2440x11 0xe5 0xb9 0x6e
245
246#----------------------------------------------------------------------
247# Vector Compare Mask Equal to Zero (Integer)
248#----------------------------------------------------------------------
249# CHECK: cmeq v31.16b, v15.16b, #0x0
2500xff 0x99 0x20 0x4e
251
252#----------------------------------------------------------------------
253# Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
254#----------------------------------------------------------------------
255# CHECK: cmge v3.8b, v15.8b, #0x0
2560xe3 0x89 0x20 0x2e
257
258#----------------------------------------------------------------------
259# Vector Compare Mask Greater Than Zero (Signed Integer)
260#----------------------------------------------------------------------
261# CHECK: cmgt v22.2s, v9.2s, #0x0
2620x36 0x89 0xa0 0x0e
263
264#----------------------------------------------------------------------
265# Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
266#----------------------------------------------------------------------
267# CHECK: cmle v5.2d, v14.2d, #0x0
2680xc5 0x99 0xe0 0x6e
269
270#----------------------------------------------------------------------
271# Vector Compare Mask Less Than Zero (Signed Integer)
272#----------------------------------------------------------------------
273# CHECK: cmlt v13.8h, v11.8h, #0x0
2740x6d 0xa9 0x60 0x4e
275
276#----------------------------------------------------------------------
277# Vector Compare Mask Equal to Zero (Floating Point)
278#----------------------------------------------------------------------
279# CHECK: fcmeq v15.2s, v21.2s, #0.0
2800xaf 0xda 0xa0 0x0e
281
282#----------------------------------------------------------------------
283# Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
284#----------------------------------------------------------------------
285# CHECK: fcmge v14.2d, v13.2d, #0.0
2860xae 0xc9 0xe0 0x6e
287
288#----------------------------------------------------------------------
289# Vector Compare Mask Greater Than Zero (Floating Point)
290#----------------------------------------------------------------------
291# CHECK: fcmgt v9.4s, v23.4s, #0.0
2920xe9 0xca 0xa0 0x4e
293
294#----------------------------------------------------------------------
295# Vector Compare Mask Less Than or Equal To Zero (Floating Point)
296#----------------------------------------------------------------------
297# CHECK: fcmle v11.2d, v6.2d, #0.0
2980xcb 0xd8 0xe0 0x6e
299
300#----------------------------------------------------------------------
301# Vector Compare Mask Less Than Zero (Floating Point)
302#----------------------------------------------------------------------
303# CHECK: fcmlt v12.4s, v25.4s, #0.0
3040x2c 0xeb 0xa0 0x4e
305
306
307#------------------------------------------------------------------------------
308# Vector Integer Halving Add (Signed)
309# Vector Integer Halving Add (Unsigned)
310# Vector Integer Halving Sub (Signed)
311# Vector Integer Halving Sub (Unsigned)
312#------------------------------------------------------------------------------
313# CHECK: shadd v0.8b, v31.8b, v29.8b
314# CHECK: uhadd v15.16b, v16.16b, v17.16b
315# CHECK: shsub v0.4h, v1.4h, v2.4h
316# CHECK: uhadd v5.8h, v7.8h, v8.8h
317# CHECK: shsub v9.2s, v11.2s, v21.2s
318# CHECK: uhsub v22.4s, v30.4s, v19.4s
3190xe0 0x07 0x3d 0x0e
3200x0f 0x06 0x31 0x6e
3210x20 0x24 0x62 0x0e
3220xe5 0x04 0x68 0x6e
3230x69 0x25 0xb5 0x0e
3240xd6 0x27 0xb3 0x6e
325
326#------------------------------------------------------------------------------
327# Vector Integer Rouding Halving Add (Signed)
328# Vector Integer Rouding Halving Add (Unsigned)
329#------------------------------------------------------------------------------
330# CHECK: srhadd v3.8b, v5.8b, v7.8b
331# CHECK: urhadd v7.16b, v17.16b, v27.16b
332# CHECK: srhadd v10.4h, v11.4h, v13.4h
333# CHECK: urhadd v1.8h, v2.8h, v3.8h
334# CHECK: srhadd v4.2s, v5.2s, v6.2s
335# CHECK: urhadd v7.4s, v7.4s, v7.4s
3360xa3 0x14 0x27 0x0e
3370x27 0x16 0x3b 0x6e
3380x6a 0x15 0x6d 0x0e
3390x41 0x14 0x63 0x6e
3400xa4 0x14 0xa6 0x0e
3410xe7 0x14 0xa7 0x6e
342
343#------------------------------------------------------------------------------
344# Vector Integer Saturating Add (Signed)
345# Vector Integer Saturating Add (Unsigned)
346# Vector Integer Saturating Sub (Signed)
347# Vector Integer Saturating Sub (Unsigned)
348#------------------------------------------------------------------------------
349# CHECK: sqsub v0.8b, v1.8b, v2.8b
350# CHECK: sqadd v0.16b, v1.16b, v2.16b
351# CHECK: uqsub v0.4h, v1.4h, v2.4h
352# CHECK: uqadd v0.8h, v1.8h, v2.8h
353# CHECK: sqadd v0.2s, v1.2s, v2.2s
354# CHECK: sqsub v0.4s, v1.4s, v2.4s
355# CHECK: sqsub v0.2d, v1.2d, v2.2d
3560x20 0x2c 0x22 0x0e
3570x20 0x0c 0x22 0x4e
3580x20 0x2c 0x62 0x2e
3590x20 0x0c 0x62 0x6e
3600x20 0x0c 0xa2 0x0e
3610x20 0x2c 0xa2 0x4e
3620x20 0x2c 0xe2 0x4e
363
364#------------------------------------------------------------------------------
365# Scalar Integer Saturating Add (Signed)
366# Scalar Integer Saturating Add (Unsigned)
367# Scalar Integer Saturating Sub (Signed)
368# Scalar Integer Saturating Add (Unsigned)
369#------------------------------------------------------------------------------
370# CHECK: sqadd b20, b11, b15
371# CHECK: uqadd h0, h1, h5
372# CHECK: sqsub s20, s10, s7
373# CHECK: uqsub d16, d16, d16
3740x74 0x0d 0x2f 0x5e
3750x20 0x0c 0x65 0x7e
3760x54 0x2d 0xa7 0x5e
3770x10 0x2e 0xf0 0x7e
378
379
380#----------------------------------------------------------------------
381# Vector Shift Left (Signed and Unsigned Integer)
382#----------------------------------------------------------------------
383# CHECK: sshl v10.8b, v15.8b, v22.8b
384# CHECK: ushl v10.16b, v5.16b, v2.16b
385# CHECK: sshl v10.4h, v15.4h, v22.4h
386# CHECK: ushl v10.8h, v5.8h, v2.8h
387# CHECK: sshl v10.2s, v15.2s, v22.2s
388# CHECK: ushl v10.4s, v5.4s, v2.4s
389# CHECK: sshl v0.2d, v1.2d, v2.2d
3900xea 0x45 0x36 0x0e
3910xaa 0x44 0x22 0x6e
3920xea 0x45 0x76 0x0e
3930xaa 0x44 0x62 0x6e
3940xea 0x45 0xb6 0x0e
3950xaa 0x44 0xa2 0x6e
3960x20 0x44 0xe2 0x4e
397
398#----------------------------------------------------------------------
399# Vector Saturating Shift Left (Signed and Unsigned Integer)
400#----------------------------------------------------------------------
401# CHECK: sqshl v1.8b, v15.8b, v22.8b
402# CHECK: uqshl v2.16b, v14.16b, v23.16b
403# CHECK: sqshl v3.4h, v13.4h, v24.4h
404# CHECK: uqshl v4.8h, v12.8h, v25.8h
405# CHECK: sqshl v5.2s, v11.2s, v26.2s
406# CHECK: uqshl v6.4s, v10.4s, v27.4s
407# CHECK: uqshl v0.2d, v1.2d, v2.2d
4080xe1 0x4d 0x36 0x0e
4090xc2 0x4d 0x37 0x6e
4100xa3 0x4d 0x78 0x0e
4110x84 0x4d 0x79 0x6e
4120x65 0x4d 0xba 0x0e
4130x46 0x4d 0xbb 0x6e
4140x20 0x4c 0xe2 0x6e
415
416#----------------------------------------------------------------------
417# Vector Rouding Shift Left (Signed and Unsigned Integer)
418#----------------------------------------------------------------------
419# CHECK: srshl v10.8b, v5.8b, v22.8b
420# CHECK: urshl v10.16b, v5.16b, v2.16b
421# CHECK: srshl v1.4h, v5.4h, v31.4h
422# CHECK: urshl v1.8h, v5.8h, v2.8h
423# CHECK: srshl v10.2s, v15.2s, v2.2s
424# CHECK: urshl v1.4s, v5.4s, v2.4s
425# CHECK: urshl v0.2d, v1.2d, v2.2d
4260xaa 0x54 0x36 0x0e
4270xaa 0x54 0x22 0x6e
4280xa1 0x54 0x7f 0x0e
4290xa1 0x54 0x62 0x6e
4300xea 0x55 0xa2 0x0e
4310xa1 0x54 0xa2 0x6e
4320x20 0x54 0xe2 0x6e
433
434#----------------------------------------------------------------------
435# Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
436#----------------------------------------------------------------------
437# CHECK: sqrshl v1.8b, v15.8b, v22.8b
438# CHECK: uqrshl v2.16b, v14.16b, v23.16b
439# CHECK: sqrshl v3.4h, v13.4h, v24.4h
440# CHECK: uqrshl v4.8h, v12.8h, v25.8h
441# CHECK: sqrshl v5.2s, v11.2s, v26.2s
442# CHECK: uqrshl v6.4s, v10.4s, v27.4s
443# CHECK: uqrshl v6.4s, v10.4s, v27.4s
4440xe1 0x5d 0x36 0x0e
4450xc2 0x5d 0x37 0x6e
4460xa3 0x5d 0x78 0x0e
4470x84 0x5d 0x79 0x6e
4480x65 0x5d 0xba 0x0e
4490x46 0x5d 0xbb 0x6e
4500x46 0x5d 0xbb 0x6e
451
452#----------------------------------------------------------------------
453# Scalar Integer Shift Left (Signed, Unsigned)
454#----------------------------------------------------------------------
455# CHECK: sshl d31, d31, d31
456# CHECK: ushl d0, d0, d0
4570xff 0x47 0xff 0x5e
4580x00 0x44 0xe0 0x7e
459
460#----------------------------------------------------------------------
461# Scalar Integer Saturating Shift Left (Signed, Unsigned)
462#----------------------------------------------------------------------
463# CHECK: sqshl d31, d31, d31
464# CHECK: uqshl s23, s20, s16
465# CHECK: sqshl h3, h4, h15
466# CHECK: uqshl b11, b20, b30
4670xff 0x4f 0xff 0x5e
4680x97 0x4e 0xb0 0x7e
4690x83 0x4c 0x6f 0x5e
4700x8b 0x4e 0x3e 0x7e
471
472#----------------------------------------------------------------------
473# Scalar Integer Rouding Shift Left (Signed, Unsigned)
474#----------------------------------------------------------------------
475# CHECK: srshl d16, d16, d16
476# CHECK: urshl d8, d7, d4
4770x10 0x56 0xf0 0x5e
4780xe8 0x54 0xe4 0x7e
479
480#----------------------------------------------------------------------
481# Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
482#----------------------------------------------------------------------
483# CHECK: sqrshl d31, d31, d31
484# CHECK: uqrshl s23, s20, s16
485# CHECK: sqrshl h3, h4, h15
486# CHECK: uqrshl b11, b20, b30
4870xff 0x5f 0xff 0x5e
4880x97 0x5e 0xb0 0x7e
4890x83 0x5c 0x6f 0x5e
4900x8b 0x5e 0x3e 0x7e
491
492#----------------------------------------------------------------------
493# Vector Maximum (Signed and Unsigned Integer)
494#----------------------------------------------------------------------
495# CHECK: smax v1.8b, v15.8b, v22.8b
496# CHECK: umax v2.16b, v14.16b, v23.16b
497# CHECK: smax v3.4h, v13.4h, v24.4h
498# CHECK: umax v4.8h, v12.8h, v25.8h
499# CHECK: smax v5.2s, v11.2s, v26.2s
500# CHECK: umax v6.4s, v10.4s, v27.4s
5010xe1 0x65 0x36 0x0e
5020xc2 0x65 0x37 0x6e
5030xa3 0x65 0x78 0x0e
5040x84 0x65 0x79 0x6e
5050x65 0x65 0xba 0x0e
5060x46 0x65 0xbb 0x6e
507
508#----------------------------------------------------------------------
509# Vector Minimum (Signed and Unsigned Integer)
510#----------------------------------------------------------------------
511# CHECK: umin v1.8b, v15.8b, v22.8b
512# CHECK: smin v2.16b, v14.16b, v23.16b
513# CHECK: umin v3.4h, v13.4h, v24.4h
514# CHECK: smin v4.8h, v12.8h, v25.8h
515# CHECK: umin v5.2s, v11.2s, v26.2s
516# CHECK: smin v6.4s, v10.4s, v27.4s
5170xe1 0x6d 0x36 0x2e
5180xc2 0x6d 0x37 0x4e
5190xa3 0x6d 0x78 0x2e
5200x84 0x6d 0x79 0x4e
5210x65 0x6d 0xba 0x2e
5220x46 0x6d 0xbb 0x4e
523
524#----------------------------------------------------------------------
525# Vector Maximum (Floating Point)
526#----------------------------------------------------------------------
527# CHECK: fmax v29.2s, v28.2s, v25.2s
528# CHECK: fmax v9.4s, v8.4s, v5.4s
529# CHECK: fmax v11.2d, v10.2d, v7.2d
5300x9d 0xf7 0x39 0x0e
5310x09 0xf5 0x25 0x4e
5320x4b 0xf5 0x67 0x4e
533
534#----------------------------------------------------------------------
535# Vector Minimum (Floating Point)
536#----------------------------------------------------------------------
537# CHECK: fmin v29.2s, v28.2s, v25.2s
538# CHECK: fmin v9.4s, v8.4s, v5.4s
539# CHECK: fmin v11.2d, v10.2d, v7.2d
5400x9d 0xf7 0xb9 0x0e
5410x09 0xf5 0xa5 0x4e
5420x4b 0xf5 0xe7 0x4e
543
544#----------------------------------------------------------------------
545# Vector maxNum (Floating Point)
546#----------------------------------------------------------------------
547# CHECK: fmaxnm v9.2s, v8.2s, v5.2s
548# CHECK: fmaxnm v9.4s, v8.4s, v5.4s
549# CHECK: fmaxnm v11.2d, v10.2d, v7.2d
5500x09 0xc5 0x25 0x0e
5510x09 0xc5 0x25 0x4e
5520x4b 0xc5 0x67 0x4e
553
554#----------------------------------------------------------------------
555# Vector minNum (Floating Point)
556#----------------------------------------------------------------------
557# CHECK: fminnm v2.2s, v8.2s, v25.2s
558# CHECK: fminnm v9.4s, v8.4s, v5.4s
559# CHECK: fminnm v11.2d, v10.2d, v7.2d
5600x02 0xc5 0xb9 0x0e
5610x09 0xc5 0xa5 0x4e
5620x4b 0xc5 0xe7 0x4e
563
564
565#----------------------------------------------------------------------
566# Vector Maximum Pairwise (Signed and Unsigned Integer)
567#----------------------------------------------------------------------
568# CHECK: smaxp v1.8b, v15.8b, v22.8b
569# CHECK: umaxp v2.16b, v14.16b, v23.16b
570# CHECK: smaxp v3.4h, v13.4h, v24.4h
571# CHECK: umaxp v4.8h, v12.8h, v25.8h
572# CHECK: smaxp v5.2s, v11.2s, v26.2s
573# CHECK: umaxp v6.4s, v10.4s, v27.4s
5740xe1 0xa5 0x36 0x0e
5750xc2 0xa5 0x37 0x6e
5760xa3 0xa5 0x78 0x0e
5770x84 0xa5 0x79 0x6e
5780x65 0xa5 0xba 0x0e
5790x46 0xa5 0xbb 0x6e
580
581#----------------------------------------------------------------------
582# Vector Minimum Pairwise (Signed and Unsigned Integer)
583#----------------------------------------------------------------------
584# CHECK: uminp v1.8b, v15.8b, v22.8b
585# CHECK: sminp v2.16b, v14.16b, v23.16b
586# CHECK: uminp v3.4h, v13.4h, v24.4h
587# CHECK: sminp v4.8h, v12.8h, v25.8h
588# CHECK: uminp v5.2s, v11.2s, v26.2s
589# CHECK: sminp v6.4s, v10.4s, v27.4s
5900xe1 0xad 0x36 0x2e
5910xc2 0xad 0x37 0x4e
5920xa3 0xad 0x78 0x2e
5930x84 0xad 0x79 0x4e
5940x65 0xad 0xba 0x2e
5950x46 0xad 0xbb 0x4e
596
597#----------------------------------------------------------------------
598# Vector Maximum Pairwise (Floating Point)
599#----------------------------------------------------------------------
600# CHECK: fmaxp v29.2s, v28.2s, v25.2s
601# CHECK: fmaxp v9.4s, v8.4s, v5.4s
602# CHECK: fmaxp v11.2d, v10.2d, v7.2d
6030x9d 0xf7 0x39 0x2e
6040x09 0xf5 0x25 0x6e
6050x4b 0xf5 0x67 0x6e
606
607#----------------------------------------------------------------------
608# Vector Minimum Pairwise (Floating Point)
609#----------------------------------------------------------------------
610# CHECK: fminp v29.2s, v28.2s, v25.2s
611# CHECK: fminp v9.4s, v8.4s, v5.4s
612# CHECK: fminp v11.2d, v10.2d, v7.2d
6130x9d 0xf7 0xb9 0x2e
6140x09 0xf5 0xa5 0x6e
6150x4b 0xf5 0xe7 0x6e
616
617#----------------------------------------------------------------------
618# Vector maxNum Pairwise (Floating Point)
619#----------------------------------------------------------------------
620# CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
621# CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
622# CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
6230x09 0xc5 0x25 0x2e
6240x09 0xc5 0x25 0x6e
6250x4b 0xc5 0x67 0x6e
626
627#----------------------------------------------------------------------
628# Vector minNum Pairwise (Floating Point)
629#----------------------------------------------------------------------
630# CHECK: fminnmp v2.2s, v8.2s, v25.2s
631# CHECK: fminnmp v9.4s, v8.4s, v5.4s
632# CHECK: fminnmp v11.2d, v10.2d, v7.2d
6330x02 0xc5 0xb9 0x2e
6340x09 0xc5 0xa5 0x6e
6350x4b 0xc5 0xe7 0x6e
636
637#------------------------------------------------------------------------------
638# Vector Add Pairwise (Integer)
639#------------------------------------------------------------------------------
640# CHECK: addp v31.8b, v31.8b, v31.8b
641# CHECK: addp v0.2d, v0.2d, v0.2d
6420xff 0xbf 0x3f 0x0e
6430x00 0xbc 0xe0 0x4e
644
645#------------------------------------------------------------------------------
646# Vector Add Pairwise (Floating Point)
647#------------------------------------------------------------------------------
648# CHECK: faddp v0.4s, v0.4s, v0.4s
649# CHECK: faddp v31.2s, v31.2s, v31.2s
6500x00 0xd4 0x20 0x6e
6510xff 0xd7 0x3f 0x2e
652
653
654#------------------------------------------------------------------------------
655# Vector Saturating Doubling Multiply High
656# Vector Saturating Rouding Doubling Multiply High
657#------------------------------------------------------------------------------
658# CHECK: sqdmulh v31.2s, v31.2s, v31.2s
659# CHECK: sqdmulh v5.4s, v7.4s, v9.4s
660# CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
661# CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
6620xff 0xb7 0xbf 0x0e
6630xe5 0xb4 0xa9 0x4e
6640x7f 0xb4 0x6d 0x2e
6650x40 0xb5 0x74 0x6e
666
667#------------------------------------------------------------------------------
668# Vector Multiply Extended
669#------------------------------------------------------------------------------
670# CHECK: fmulx v1.2s, v22.2s, v2.2s
671# CHECK: fmulx v21.4s, v15.4s, v3.4s
672# CHECK: fmulx v11.2d, v5.2d, v23.2d
6730xc1 0xde 0x22 0x0e
6740xf5 0xdd 0x23 0x4e
6750xab 0xdc 0x77 0x4e
676
677#----------------------------------------------------------------------
678# Vector Shift Left by Immediate
679#----------------------------------------------------------------------
680# CHECK: shl v0.4h, v1.4h, #3
681# CHECK: shl v0.16b, v1.16b, #3
682# CHECK: shl v0.4s, v1.4s, #3
683# CHECK: shl v0.2d, v1.2d, #3
6840x20,0x54,0x13,0x0f
6850x20,0x54,0x0b,0x4f
6860x20,0x54,0x23,0x4f
6870x20,0x54,0x43,0x4f
688
689#----------------------------------------------------------------------
690# Vector Shift Left Long (Signed, Unsigned) by Immediate
691#----------------------------------------------------------------------
692# CHECK: sshll v0.2d, v1.2s, #3
693# CHECK: sshll2 v0.4s, v1.8h, #3
694# CHECK: ushll v0.4s, v1.4h, #3
695# CHECK: ushll2 v0.8h, v1.16b, #3
6960x20 0xa4 0x23 0x0f
6970x20 0xa4 0x13 0x4f
6980x20 0xa4 0x13 0x2f
6990x20 0xa4 0x0b 0x6f
700
701#-----------------------------------------------------------------------------
702#Integer shift right (Signed)
703#-----------------------------------------------------------------------------
704# CHECK: sshr v0.8b, v1.8b, #3
705# CHECK: sshr v0.4h, v1.4h, #3
706# CHECK: sshr v0.2s, v1.2s, #3
707# CHECK: sshr v0.16b, v1.16b, #3
708# CHECK: sshr v0.8h, v1.8h, #3
709# CHECK: sshr v0.4s, v1.4s, #3
710# CHECK: sshr v0.2d, v1.2d, #3
7110x20,0x04,0x0d,0x0f
7120x20,0x04,0x1d,0x0f
7130x20,0x04,0x3d,0x0f
7140x20,0x04,0x0d,0x4f
7150x20,0x04,0x1d,0x4f
7160x20,0x04,0x3d,0x4f
7170x20,0x04,0x7d,0x4f
718
719#-----------------------------------------------------------------------------
720#Integer shift right (Unsigned)
721#-----------------------------------------------------------------------------
722# CHECK: ushr v0.8b, v1.8b, #3
723# CHECK: ushr v0.4h, v1.4h, #3
724# CHECK: ushr v0.2s, v1.2s, #3
725# CHECK: ushr v0.16b, v1.16b, #3
726# CHECK: ushr v0.8h, v1.8h, #3
727# CHECK: ushr v0.4s, v1.4s, #3
728# CHECK: ushr v0.2d, v1.2d, #3
7290x20,0x04,0x0d,0x2f
7300x20,0x04,0x1d,0x2f
7310x20,0x04,0x3d,0x2f
7320x20,0x04,0x0d,0x6f
7330x20,0x04,0x1d,0x6f
7340x20,0x04,0x3d,0x6f
7350x20,0x04,0x7d,0x6f
736
737#-----------------------------------------------------------------------------
738#Integer shift right and accumulate (Signed)
739#-----------------------------------------------------------------------------
740# CHECK: ssra v0.8b, v1.8b, #3
741# CHECK: ssra v0.4h, v1.4h, #3
742# CHECK: ssra v0.2s, v1.2s, #3
743# CHECK: ssra v0.16b, v1.16b, #3
744# CHECK: ssra v0.8h, v1.8h, #3
745# CHECK: ssra v0.4s, v1.4s, #3
746# CHECK: ssra v0.2d, v1.2d, #3
7470x20,0x14,0x0d,0x0f
7480x20,0x14,0x1d,0x0f
7490x20,0x14,0x3d,0x0f
7500x20,0x14,0x0d,0x4f
7510x20,0x14,0x1d,0x4f
7520x20,0x14,0x3d,0x4f
7530x20,0x14,0x7d,0x4f
754
755#-----------------------------------------------------------------------------
756#Integer shift right and accumulate (Unsigned)
757#-----------------------------------------------------------------------------
758# CHECK: usra v0.8b, v1.8b, #3
759# CHECK: usra v0.4h, v1.4h, #3
760# CHECK: usra v0.2s, v1.2s, #3
761# CHECK: usra v0.16b, v1.16b, #3
762# CHECK: usra v0.8h, v1.8h, #3
763# CHECK: usra v0.4s, v1.4s, #3
764# CHECK: usra v0.2d, v1.2d, #3
7650x20,0x14,0x0d,0x2f
7660x20,0x14,0x1d,0x2f
7670x20,0x14,0x3d,0x2f
7680x20,0x14,0x0d,0x6f
7690x20,0x14,0x1d,0x6f
7700x20,0x14,0x3d,0x6f
7710x20,0x14,0x7d,0x6f
772
773#-----------------------------------------------------------------------------
774#Integer rounding shift right (Signed)
775#-----------------------------------------------------------------------------
776# CHECK: srshr v0.8b, v1.8b, #3
777# CHECK: srshr v0.4h, v1.4h, #3
778# CHECK: srshr v0.2s, v1.2s, #3
779# CHECK: srshr v0.16b, v1.16b, #3
780# CHECK: srshr v0.8h, v1.8h, #3
781# CHECK: srshr v0.4s, v1.4s, #3
782# CHECK: srshr v0.2d, v1.2d, #3
7830x20,0x24,0x0d,0x0f
7840x20,0x24,0x1d,0x0f
7850x20,0x24,0x3d,0x0f
7860x20,0x24,0x0d,0x4f
7870x20,0x24,0x1d,0x4f
7880x20,0x24,0x3d,0x4f
7890x20,0x24,0x7d,0x4f
790
791#-----------------------------------------------------------------------------
792#Integer rounding shift right (Unsigned)
793#-----------------------------------------------------------------------------
794# CHECK: urshr v0.8b, v1.8b, #3
795# CHECK: urshr v0.4h, v1.4h, #3
796# CHECK: urshr v0.2s, v1.2s, #3
797# CHECK: urshr v0.16b, v1.16b, #3
798# CHECK: urshr v0.8h, v1.8h, #3
799# CHECK: urshr v0.4s, v1.4s, #3
800# CHECK: urshr v0.2d, v1.2d, #3
8010x20,0x24,0x0d,0x2f
8020x20,0x24,0x1d,0x2f
8030x20,0x24,0x3d,0x2f
8040x20,0x24,0x0d,0x6f
8050x20,0x24,0x1d,0x6f
8060x20,0x24,0x3d,0x6f
8070x20,0x24,0x7d,0x6f
808
809#-----------------------------------------------------------------------------
810#Integer rounding shift right and accumulate (Signed)
811#-----------------------------------------------------------------------------
812# CHECK: srsra v0.8b, v1.8b, #3
813# CHECK: srsra v0.4h, v1.4h, #3
814# CHECK: srsra v0.2s, v1.2s, #3
815# CHECK: srsra v0.16b, v1.16b, #3
816# CHECK: srsra v0.8h, v1.8h, #3
817# CHECK: srsra v0.4s, v1.4s, #3
818# CHECK: srsra v0.2d, v1.2d, #3
8190x20,0x34,0x0d,0x0f
8200x20,0x34,0x1d,0x0f
8210x20,0x34,0x3d,0x0f
8220x20,0x34,0x0d,0x4f
8230x20,0x34,0x1d,0x4f
8240x20,0x34,0x3d,0x4f
8250x20,0x34,0x7d,0x4f
826
827#-----------------------------------------------------------------------------
828#Integer rounding shift right and accumulate (Unsigned)
829#-----------------------------------------------------------------------------
830# CHECK: ursra v0.8b, v1.8b, #3
831# CHECK: ursra v0.4h, v1.4h, #3
832# CHECK: ursra v0.2s, v1.2s, #3
833# CHECK: ursra v0.16b, v1.16b, #3
834# CHECK: ursra v0.8h, v1.8h, #3
835# CHECK: ursra v0.4s, v1.4s, #3
836# CHECK: ursra v0.2d, v1.2d, #3
8370x20,0x34,0x0d,0x2f
8380x20,0x34,0x1d,0x2f
8390x20,0x34,0x3d,0x2f
8400x20,0x34,0x0d,0x6f
8410x20,0x34,0x1d,0x6f
8420x20,0x34,0x3d,0x6f
8430x20,0x34,0x7d,0x6f
844
845#-----------------------------------------------------------------------------
846#Integer shift right and insert
847#-----------------------------------------------------------------------------
848# CHECK: sri v0.8b, v1.8b, #3
849# CHECK: sri v0.4h, v1.4h, #3
850# CHECK: sri v0.2s, v1.2s, #3
851# CHECK: sri v0.16b, v1.16b, #3
852# CHECK: sri v0.8h, v1.8h, #3
853# CHECK: sri v0.4s, v1.4s, #3
854# CHECK: sri v0.2d, v1.2d, #3
8550x20,0x44,0x0d,0x2f
8560x20,0x44,0x1d,0x2f
8570x20,0x44,0x3d,0x2f
8580x20,0x44,0x0d,0x6f
8590x20,0x44,0x1d,0x6f
8600x20,0x44,0x3d,0x6f
8610x20,0x44,0x7d,0x6f
862
863#-----------------------------------------------------------------------------
864#Integer shift left and insert
865#-----------------------------------------------------------------------------
866# CHECK: sli v0.8b, v1.8b, #3
867# CHECK: sli v0.4h, v1.4h, #3
868# CHECK: sli v0.2s, v1.2s, #3
869# CHECK: sli v0.16b, v1.16b, #3
870# CHECK: sli v0.8h, v1.8h, #3
871# CHECK: sli v0.4s, v1.4s, #3
872# CHECK: sli v0.2d, v1.2d, #3
8730x20,0x54,0x0b,0x2f
8740x20,0x54,0x13,0x2f
8750x20,0x54,0x23,0x2f
8760x20,0x54,0x0b,0x6f
8770x20,0x54,0x13,0x6f
8780x20,0x54,0x23,0x6f
8790x20,0x54,0x43,0x6f
880
881#-----------------------------------------------------------------------------
882#Integer saturating shift left unsigned
883#-----------------------------------------------------------------------------
884# CHECK: sqshlu v0.8b, v1.8b, #3
885# CHECK: sqshlu v0.4h, v1.4h, #3
886# CHECK: sqshlu v0.2s, v1.2s, #3
887# CHECK: sqshlu v0.16b, v1.16b, #3
888# CHECK: sqshlu v0.8h, v1.8h, #3
889# CHECK: sqshlu v0.4s, v1.4s, #3
890# CHECK: sqshlu v0.2d, v1.2d, #3
8910x20,0x64,0x0b,0x2f
8920x20,0x64,0x13,0x2f
8930x20,0x64,0x23,0x2f
8940x20,0x64,0x0b,0x6f
8950x20,0x64,0x13,0x6f
8960x20,0x64,0x23,0x6f
8970x20,0x64,0x43,0x6f
898
899#-----------------------------------------------------------------------------
900#Integer saturating shift left (Signed)
901#-----------------------------------------------------------------------------
902# CHECK: sqshl v0.8b, v1.8b, #3
903# CHECK: sqshl v0.4h, v1.4h, #3
904# CHECK: sqshl v0.2s, v1.2s, #3
905# CHECK: sqshl v0.16b, v1.16b, #3
906# CHECK: sqshl v0.8h, v1.8h, #3
907# CHECK: sqshl v0.4s, v1.4s, #3
908# CHECK: sqshl v0.2d, v1.2d, #3
9090x20,0x74,0x0b,0x0f
9100x20,0x74,0x13,0x0f
9110x20,0x74,0x23,0x0f
9120x20,0x74,0x0b,0x4f
9130x20,0x74,0x13,0x4f
9140x20,0x74,0x23,0x4f
9150x20,0x74,0x43,0x4f
916
917#-----------------------------------------------------------------------------
918#Integer saturating shift left (Unsigned)
919#-----------------------------------------------------------------------------
920# CHECK: uqshl v0.8b, v1.8b, #3
921# CHECK: uqshl v0.4h, v1.4h, #3
922# CHECK: uqshl v0.2s, v1.2s, #3
923# CHECK: uqshl v0.16b, v1.16b, #3
924# CHECK: uqshl v0.8h, v1.8h, #3
925# CHECK: uqshl v0.4s, v1.4s, #3
926# CHECK: uqshl v0.2d, v1.2d, #3
9270x20,0x74,0x0b,0x2f
9280x20,0x74,0x13,0x2f
9290x20,0x74,0x23,0x2f
9300x20,0x74,0x0b,0x6f
9310x20,0x74,0x13,0x6f
9320x20,0x74,0x23,0x6f
9330x20,0x74,0x43,0x6f
934
935#-----------------------------------------------------------------------------
936#Integer shift right narrow
937#-----------------------------------------------------------------------------
938# CHECK: shrn v0.8b, v1.8h, #3
939# CHECK: shrn v0.4h, v1.4s, #3
940# CHECK: shrn v0.2s, v1.2d, #3
941# CHECK: shrn2 v0.16b, v1.8h, #3
942# CHECK: shrn2 v0.8h, v1.4s, #3
943# CHECK: shrn2 v0.4s, v1.2d, #3
9440x20,0x84,0x0d,0x0f
9450x20,0x84,0x1d,0x0f
9460x20,0x84,0x3d,0x0f
9470x20,0x84,0x0d,0x4f
9480x20,0x84,0x1d,0x4f
9490x20,0x84,0x3d,0x4f
950
951#-----------------------------------------------------------------------------
952#Integer saturating shift right unsigned narrow (Signed)
953#-----------------------------------------------------------------------------
954# CHECK: sqshrun v0.8b, v1.8h, #3
955# CHECK: sqshrun v0.4h, v1.4s, #3
956# CHECK: sqshrun v0.2s, v1.2d, #3
957# CHECK: sqshrun2 v0.16b, v1.8h, #3
958# CHECK: sqshrun2 v0.8h, v1.4s, #3
959# CHECK: sqshrun2 v0.4s, v1.2d, #3
9600x20,0x84,0x0d,0x2f
9610x20,0x84,0x1d,0x2f
9620x20,0x84,0x3d,0x2f
9630x20,0x84,0x0d,0x6f
9640x20,0x84,0x1d,0x6f
9650x20,0x84,0x3d,0x6f
966
967#-----------------------------------------------------------------------------
968#Integer rounding shift right narrow
969#-----------------------------------------------------------------------------
970# CHECK: rshrn v0.8b, v1.8h, #3
971# CHECK: rshrn v0.4h, v1.4s, #3
972# CHECK: rshrn v0.2s, v1.2d, #3
973# CHECK: rshrn2 v0.16b, v1.8h, #3
974# CHECK: rshrn2 v0.8h, v1.4s, #3
975# CHECK: rshrn2 v0.4s, v1.2d, #3
9760x20,0x8c,0x0d,0x0f
9770x20,0x8c,0x1d,0x0f
9780x20,0x8c,0x3d,0x0f
9790x20,0x8c,0x0d,0x4f
9800x20,0x8c,0x1d,0x4f
9810x20,0x8c,0x3d,0x4f
982
983#-----------------------------------------------------------------------------
984#Integer saturating shift right rounded unsigned narrow (Signed)
985#-----------------------------------------------------------------------------
986# CHECK: sqrshrun v0.8b, v1.8h, #3
987# CHECK: sqrshrun v0.4h, v1.4s, #3
988# CHECK: sqrshrun v0.2s, v1.2d, #3
989# CHECK: sqrshrun2 v0.16b, v1.8h, #3
990# CHECK: sqrshrun2 v0.8h, v1.4s, #3
991# CHECK: sqrshrun2 v0.4s, v1.2d, #3
9920x20,0x8c,0x0d,0x2f
9930x20,0x8c,0x1d,0x2f
9940x20,0x8c,0x3d,0x2f
9950x20,0x8c,0x0d,0x6f
9960x20,0x8c,0x1d,0x6f
9970x20,0x8c,0x3d,0x6f
998
999#-----------------------------------------------------------------------------
1000#Integer saturating shift right narrow (Signed)
1001#-----------------------------------------------------------------------------
1002# CHECK: sqshrn v0.8b, v1.8h, #3
1003# CHECK: sqshrn v0.4h, v1.4s, #3
1004# CHECK: sqshrn v0.2s, v1.2d, #3
1005# CHECK: sqshrn2 v0.16b, v1.8h, #3
1006# CHECK: sqshrn2 v0.8h, v1.4s, #3
1007# CHECK: sqshrn2 v0.4s, v1.2d, #3
10080x20,0x94,0x0d,0x0f
10090x20,0x94,0x1d,0x0f
10100x20,0x94,0x3d,0x0f
10110x20,0x94,0x0d,0x4f
10120x20,0x94,0x1d,0x4f
10130x20,0x94,0x3d,0x4f
1014
1015#-----------------------------------------------------------------------------
1016#Integer saturating shift right narrow (Unsigned)
1017#-----------------------------------------------------------------------------
1018# CHECK: uqshrn v0.8b, v1.8h, #3
1019# CHECK: uqshrn v0.4h, v1.4s, #3
1020# CHECK: uqshrn v0.2s, v1.2d, #3
1021# CHECK: uqshrn2 v0.16b, v1.8h, #3
1022# CHECK: uqshrn2 v0.8h, v1.4s, #3
1023# CHECK: uqshrn2 v0.4s, v1.2d, #3
10240x20,0x94,0x0d,0x2f
10250x20,0x94,0x1d,0x2f
10260x20,0x94,0x3d,0x2f
10270x20,0x94,0x0d,0x6f
10280x20,0x94,0x1d,0x6f
10290x20,0x94,0x3d,0x6f
1030
1031#-----------------------------------------------------------------------------
1032#Integer saturating shift right rounded narrow (Signed)
1033#-----------------------------------------------------------------------------
1034# CHECK: sqrshrn v0.8b, v1.8h, #3
1035# CHECK: sqrshrn v0.4h, v1.4s, #3
1036# CHECK: sqrshrn v0.2s, v1.2d, #3
1037# CHECK: sqrshrn2 v0.16b, v1.8h, #3
1038# CHECK: sqrshrn2 v0.8h, v1.4s, #3
1039# CHECK: sqrshrn2 v0.4s, v1.2d, #3
10400x20,0x9c,0x0d,0x0f
10410x20,0x9c,0x1d,0x0f
10420x20,0x9c,0x3d,0x0f
10430x20,0x9c,0x0d,0x4f
10440x20,0x9c,0x1d,0x4f
10450x20,0x9c,0x3d,0x4f
1046
1047#-----------------------------------------------------------------------------
1048#Integer saturating shift right rounded narrow (Unsigned)
1049#-----------------------------------------------------------------------------
1050# CHECK: uqrshrn v0.8b, v1.8h, #3
1051# CHECK: uqrshrn v0.4h, v1.4s, #3
1052# CHECK: uqrshrn v0.2s, v1.2d, #3
1053# CHECK: uqrshrn2 v0.16b, v1.8h, #3
1054# CHECK: uqrshrn2 v0.8h, v1.4s, #3
1055# CHECK: uqrshrn2 v0.4s, v1.2d, #3
10560x20,0x9c,0x0d,0x2f
10570x20,0x9c,0x1d,0x2f
10580x20,0x9c,0x3d,0x2f
10590x20,0x9c,0x0d,0x6f
10600x20,0x9c,0x1d,0x6f
10610x20,0x9c,0x3d,0x6f
1062
1063#-----------------------------------------------------------------------------
1064#Fixed-point convert to floating-point
1065#-----------------------------------------------------------------------------
1066# CHECK: scvtf v0.2s, v1.2s, #3
1067# CHECK: scvtf v0.4s, v1.4s, #3
1068# CHECK: scvtf v0.2d, v1.2d, #3
1069# CHECK: ucvtf v0.2s, v1.2s, #3
1070# CHECK: ucvtf v0.4s, v1.4s, #3
1071# CHECK: ucvtf v0.2d, v1.2d, #3
1072
10730x20,0xe4,0x3d,0x0f
10740x20,0xe4,0x3d,0x4f
10750x20,0xe4,0x7d,0x4f
10760x20,0xe4,0x3d,0x2f
10770x20,0xe4,0x3d,0x6f
10780x20,0xe4,0x7d,0x6f
1079
1080#-----------------------------------------------------------------------------
1081#Floating-point convert to fixed-point
1082#-----------------------------------------------------------------------------
1083# CHECK: fcvtzs v0.2s, v1.2s, #3
1084# CHECK: fcvtzs v0.4s, v1.4s, #3
1085# CHECK: fcvtzs v0.2d, v1.2d, #3
1086# CHECK: fcvtzu v0.2s, v1.2s, #3
1087# CHECK: fcvtzu v0.4s, v1.4s, #3
1088# CHECK: fcvtzu v0.2d, v1.2d, #3
10890x20,0xfc,0x3d,0x0f
10900x20,0xfc,0x3d,0x4f
10910x20,0xfc,0x7d,0x4f
10920x20,0xfc,0x3d,0x2f
10930x20,0xfc,0x3d,0x6f
10940x20,0xfc,0x7d,0x6f
1095
1096
1097#------------------------------------------------------------------------------
1098# Vector with 3 operands having different data types
1099#------------------------------------------------------------------------------
1100
1101#------------------------------------------------------------------------------
1102# Long
1103#------------------------------------------------------------------------------
1104
1105#------------------------------------------------------------------------------
1106# Long - Variant 1
1107#------------------------------------------------------------------------------
1108
1109# CHECK: saddl v0.8h, v1.8b, v2.8b
1110# CHECK: saddl v0.4s, v1.4h, v2.4h
1111# CHECK: saddl v0.2d, v1.2s, v2.2s
11120x20 0x00 0x22 0x0e
11130x20 0x00 0x62 0x0e
11140x20 0x00 0xa2 0x0e
1115
1116# CHECK: saddl2 v0.4s, v1.8h, v2.8h
1117# CHECK: saddl2 v0.8h, v1.16b, v2.16b
1118# CHECK: saddl2 v0.2d, v1.4s, v2.4s
11190x20 0x00 0x62 0x4e
11200x20 0x00 0x22 0x4e
11210x20 0x00 0xa2 0x4e
1122
1123# CHECK: uaddl v0.8h, v1.8b, v2.8b
1124# CHECK: uaddl v0.4s, v1.4h, v2.4h
1125# CHECK: uaddl v0.2d, v1.2s, v2.2s
11260x20 0x00 0x22 0x2e
11270x20 0x00 0x62 0x2e
11280x20 0x00 0xa2 0x2e
1129
1130# CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1131# CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1132# CHECK: uaddl2 v0.2d, v1.4s, v2.4s
11330x20 0x00 0x22 0x6e
11340x20 0x00 0x62 0x6e
11350x20 0x00 0xa2 0x6e
1136
1137# CHECK: ssubl v0.8h, v1.8b, v2.8b
1138# CHECK: ssubl v0.4s, v1.4h, v2.4h
1139# CHECK: ssubl v0.2d, v1.2s, v2.2s
11400x20 0x20 0x22 0x0e
11410x20 0x20 0x62 0x0e
11420x20 0x20 0xa2 0x0e
1143
1144# CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1145# CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1146# CHECK: ssubl2 v0.2d, v1.4s, v2.4s
11470x20 0x20 0x22 0x4e
11480x20 0x20 0x62 0x4e
11490x20 0x20 0xa2 0x4e
1150
1151# CHECK: usubl v0.8h, v1.8b, v2.8b
1152# CHECK: usubl v0.4s, v1.4h, v2.4h
1153# CHECK: usubl v0.2d, v1.2s, v2.2s
11540x20 0x20 0x22 0x2e
11550x20 0x20 0x62 0x2e
11560x20 0x20 0xa2 0x2e
1157
1158# CHECK: usubl2 v0.8h, v1.16b, v2.16b
1159# CHECK: usubl2 v0.4s, v1.8h, v2.8h
1160# CHECK: usubl2 v0.2d, v1.4s, v2.4s
11610x20 0x20 0x22 0x6e
11620x20 0x20 0x62 0x6e
11630x20 0x20 0xa2 0x6e
1164
1165# CHECK: sabal v0.8h, v1.8b, v2.8b
1166# CHECK: sabal v0.4s, v1.4h, v2.4h
1167# CHECK: sabal v0.2d, v1.2s, v2.2s
11680x20 0x50 0x22 0x0e
11690x20 0x50 0x62 0x0e
11700x20 0x50 0xa2 0x0e
1171
1172# CHECK: sabal2 v0.8h, v1.16b, v2.16b
1173# CHECK: sabal2 v0.4s, v1.8h, v2.8h
1174# CHECK: sabal2 v0.2d, v1.4s, v2.4s
11750x20 0x50 0x22 0x4e
11760x20 0x50 0x62 0x4e
11770x20 0x50 0xa2 0x4e
1178
1179# CHECK: uabal v0.8h, v1.8b, v2.8b
1180# CHECK: uabal v0.4s, v1.4h, v2.4h
1181# CHECK: uabal v0.2d, v1.2s, v2.2s
11820x20 0x50 0x22 0x2e
11830x20 0x50 0x62 0x2e
11840x20 0x50 0xa2 0x2e
1185
1186# CHECK: uabal2 v0.8h, v1.16b, v2.16b
1187# CHECK: uabal2 v0.4s, v1.8h, v2.8h
1188# CHECK: uabal2 v0.2d, v1.4s, v2.4s
11890x20 0x50 0x22 0x6e
11900x20 0x50 0x62 0x6e
11910x20 0x50 0xa2 0x6e
1192
1193# CHECK: sabdl v0.8h, v1.8b, v2.8b
1194# CHECK: sabdl v0.4s, v1.4h, v2.4h
1195# CHECK: sabdl v0.2d, v1.2s, v2.2s
11960x20 0x70 0x22 0x0e
11970x20 0x70 0x62 0x0e
11980x20 0x70 0xa2 0x0e
1199
1200# CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1201# CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1202# CHECK: sabdl2 v0.2d, v1.4s, v2.4s
12030x20 0x70 0x22 0x4e
12040x20 0x70 0x62 0x4e
12050x20 0x70 0xa2 0x4e
1206
1207# CHECK: uabdl v0.8h, v1.8b, v2.8b
1208# CHECK: uabdl v0.4s, v1.4h, v2.4h
1209# CHECK: uabdl v0.2d, v1.2s, v2.2s
12100x20 0x70 0x22 0x2e
12110x20 0x70 0x62 0x2e
12120x20 0x70 0xa2 0x2e
1213
1214# CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1215# CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1216# CHECK: uabdl2 v0.2d, v1.4s, v2.4s
12170x20 0x70 0x22 0x6e
12180x20 0x70 0x62 0x6e
12190x20 0x70 0xa2 0x6e
1220
1221# CHECK: smlal v0.8h, v1.8b, v2.8b
1222# CHECK: smlal v0.4s, v1.4h, v2.4h
1223# CHECK: smlal v0.2d, v1.2s, v2.2s
12240x20 0x80 0x22 0x0e
12250x20 0x80 0x62 0x0e
12260x20 0x80 0xa2 0x0e
1227
1228# CHECK: smlal2 v0.8h, v1.16b, v2.16b
1229# CHECK: smlal2 v0.4s, v1.8h, v2.8h
1230# CHECK: smlal2 v0.2d, v1.4s, v2.4s
12310x20 0x80 0x22 0x4e
12320x20 0x80 0x62 0x4e
12330x20 0x80 0xa2 0x4e
1234
1235# CHECK: umlal v0.8h, v1.8b, v2.8b
1236# CHECK: umlal v0.4s, v1.4h, v2.4h
1237# CHECK: umlal v0.2d, v1.2s, v2.2s
1238
12390x20 0x80 0x22 0x2e
12400x20 0x80 0x62 0x2e
12410x20 0x80 0xa2 0x2e
1242
1243# CHECK: umlal2 v0.8h, v1.16b, v2.16b
1244# CHECK: umlal2 v0.4s, v1.8h, v2.8h
1245# CHECK: umlal2 v0.2d, v1.4s, v2.4s
12460x20 0x80 0x22 0x6e
12470x20 0x80 0x62 0x6e
12480x20 0x80 0xa2 0x6e
1249
1250# CHECK: smlsl v0.8h, v1.8b, v2.8b
1251# CHECK: smlsl v0.4s, v1.4h, v2.4h
1252# CHECK: smlsl v0.2d, v1.2s, v2.2s
12530x20 0xa0 0x22 0x0e
12540x20 0xa0 0x62 0x0e
12550x20 0xa0 0xa2 0x0e
1256
1257# CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1258# CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1259# CHECK: smlsl2 v0.2d, v1.4s, v2.4s
12600x20 0xa0 0x22 0x4e
12610x20 0xa0 0x62 0x4e
12620x20 0xa0 0xa2 0x4e
1263
1264# CHECK: umlsl v0.8h, v1.8b, v2.8b
1265# CHECK: umlsl v0.4s, v1.4h, v2.4h
1266# CHECK: umlsl v0.2d, v1.2s, v2.2s
12670x20 0xa0 0x22 0x2e
12680x20 0xa0 0x62 0x2e
12690x20 0xa0 0xa2 0x2e
1270
1271# CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1272# CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1273# CHECK: umlsl2 v0.2d, v1.4s, v2.4s
12740x20 0xa0 0x22 0x6e
12750x20 0xa0 0x62 0x6e
12760x20 0xa0 0xa2 0x6e
1277
1278# CHECK: smull v0.8h, v1.8b, v2.8b
1279# CHECK: smull v0.4s, v1.4h, v2.4h
1280# CHECK: smull v0.2d, v1.2s, v2.2s
12810x20 0xc0 0x22 0x0e
12820x20 0xc0 0x62 0x0e
12830x20 0xc0 0xa2 0x0e
1284
1285# CHECK: smull2 v0.8h, v1.16b, v2.16b
1286# CHECK: smull2 v0.4s, v1.8h, v2.8h
1287# CHECK: smull2 v0.2d, v1.4s, v2.4s
12880x20 0xc0 0x22 0x4e
12890x20 0xc0 0x62 0x4e
12900x20 0xc0 0xa2 0x4e
1291
1292# CHECK: umull v0.8h, v1.8b, v2.8b
1293# CHECK: umull v0.4s, v1.4h, v2.4h
1294# CHECK: umull v0.2d, v1.2s, v2.2s
12950x20 0xc0 0x22 0x2e
12960x20 0xc0 0x62 0x2e
12970x20 0xc0 0xa2 0x2e
1298
1299# CHECK: umull2 v0.8h, v1.16b, v2.16b
1300# CHECK: umull2 v0.4s, v1.8h, v2.8h
1301# CHECK: umull2 v0.2d, v1.4s, v2.4s
13020x20 0xc0 0x22 0x6e
13030x20 0xc0 0x62 0x6e
13040x20 0xc0 0xa2 0x6e
1305
1306#------------------------------------------------------------------------------
1307# Long - Variant 2
1308#------------------------------------------------------------------------------
1309
1310# CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1311# CHECK: sqdmlal v0.2d, v1.2s, v2.2s
13120x20 0x90 0x62 0x0e
13130x20 0x90 0xa2 0x0e
1314
1315# CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1316# CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
13170x20 0x90 0x62 0x4e
13180x20 0x90 0xa2 0x4e
1319
1320# CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1321# CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
13220x20 0xb0 0x62 0x0e
13230x20 0xb0 0xa2 0x0e
1324
1325# CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1326# CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
13270x20 0xb0 0x62 0x4e
13280x20 0xb0 0xa2 0x4e
1329
1330# CHECK: sqdmull v0.4s, v1.4h, v2.4h
1331# CHECK: sqdmull v0.2d, v1.2s, v2.2s
13320x20 0xd0 0x62 0x0e
13330x20 0xd0 0xa2 0x0e
1334
1335# CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1336# CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
13370x20 0xd0 0x62 0x4e
13380x20 0xd0 0xa2 0x4e
1339
1340#------------------------------------------------------------------------------
1341# Long - Variant 3
1342#------------------------------------------------------------------------------
1343
1344# CHECK: pmull v0.8h, v1.8b, v2.8b
13450x20 0xe0 0x22 0x0e
1346
1347# CHECK: pmull2 v0.8h, v1.16b, v2.16b
13480x20 0xe0 0x22 0x4e
1349
1350#------------------------------------------------------------------------------
1351# Widen
1352#------------------------------------------------------------------------------
1353
1354# CHECK: saddw v0.8h, v1.8h, v2.8b
1355# CHECK: saddw v0.4s, v1.4s, v2.4h
1356# CHECK: saddw v0.2d, v1.2d, v2.2s
13570x20 0x10 0x22 0x0e
13580x20 0x10 0x62 0x0e
13590x20 0x10 0xa2 0x0e
1360
1361# CHECK: saddw2 v0.8h, v1.8h, v2.16b
1362# CHECK: saddw2 v0.4s, v1.4s, v2.8h
1363# CHECK: saddw2 v0.2d, v1.2d, v2.4s
13640x20 0x10 0x22 0x4e
13650x20 0x10 0x62 0x4e
13660x20 0x10 0xa2 0x4e
1367
1368# CHECK: uaddw v0.8h, v1.8h, v2.8b
1369# CHECK: uaddw v0.4s, v1.4s, v2.4h
1370# CHECK: uaddw v0.2d, v1.2d, v2.2s
13710x20 0x10 0x22 0x2e
13720x20 0x10 0x62 0x2e
13730x20 0x10 0xa2 0x2e
1374
1375# CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1376# CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1377# CHECK: uaddw2 v0.2d, v1.2d, v2.4s
13780x20 0x10 0x22 0x6e
13790x20 0x10 0x62 0x6e
13800x20 0x10 0xa2 0x6e
1381
1382# CHECK: ssubw v0.8h, v1.8h, v2.8b
1383# CHECK: ssubw v0.4s, v1.4s, v2.4h
1384# CHECK: ssubw v0.2d, v1.2d, v2.2s
13850x20 0x30 0x22 0x0e
13860x20 0x30 0x62 0x0e
13870x20 0x30 0xa2 0x0e
1388
1389# CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1390# CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1391# CHECK: ssubw2 v0.2d, v1.2d, v2.4s
13920x20 0x30 0x22 0x4e
13930x20 0x30 0x62 0x4e
13940x20 0x30 0xa2 0x4e
1395
1396# CHECK: usubw v0.8h, v1.8h, v2.8b
1397# CHECK: usubw v0.4s, v1.4s, v2.4h
1398# CHECK: usubw v0.2d, v1.2d, v2.2s
13990x20 0x30 0x22 0x2e
14000x20 0x30 0x62 0x2e
14010x20 0x30 0xa2 0x2e
1402
1403# CHECK: usubw2 v0.8h, v1.8h, v2.16b
1404# CHECK: usubw2 v0.4s, v1.4s, v2.8h
1405# CHECK: usubw2 v0.2d, v1.2d, v2.4s
14060x20 0x30 0x22 0x6e
14070x20 0x30 0x62 0x6e
14080x20 0x30 0xa2 0x6e
1409
1410#------------------------------------------------------------------------------
1411# Narrow
1412#------------------------------------------------------------------------------
1413
1414# CHECK: addhn v0.8b, v1.8h, v2.8h
1415# CHECK: addhn v0.4h, v1.4s, v2.4s
1416# CHECK: addhn v0.2s, v1.2d, v2.2d
14170x20 0x40 0x22 0x0e
14180x20 0x40 0x62 0x0e
14190x20 0x40 0xa2 0x0e
1420
1421# CHECK: addhn2 v0.16b, v1.8h, v2.8h
1422# CHECK: addhn2 v0.8h, v1.4s, v2.4s
1423# CHECK: addhn2 v0.4s, v1.2d, v2.2d
14240x20 0x40 0x22 0x4e
14250x20 0x40 0x62 0x4e
14260x20 0x40 0xa2 0x4e
1427
1428# CHECK: raddhn v0.8b, v1.8h, v2.8h
1429# CHECK: raddhn v0.4h, v1.4s, v2.4s
1430# CHECK: raddhn v0.2s, v1.2d, v2.2d
14310x20 0x40 0x22 0x2e
14320x20 0x40 0x62 0x2e
14330x20 0x40 0xa2 0x2e
1434
1435# CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1436# CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1437# CHECK: raddhn2 v0.4s, v1.2d, v2.2d
14380x20 0x40 0x22 0x6e
14390x20 0x40 0x62 0x6e
14400x20 0x40 0xa2 0x6e
1441
1442# CHECK: rsubhn v0.8b, v1.8h, v2.8h
1443# CHECK: rsubhn v0.4h, v1.4s, v2.4s
1444# CHECK: rsubhn v0.2s, v1.2d, v2.2d
14450x20 0x60 0x22 0x2e
14460x20 0x60 0x62 0x2e
14470x20 0x60 0xa2 0x2e
1448
1449# CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1450# CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1451# CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
14520x20 0x60 0x22 0x6e
14530x20 0x60 0x62 0x6e
14540x20 0x60 0xa2 0x6e
1455
1456#----------------------------------------------------------------------
1457# Scalar Integer Saturating Doubling Multiply Half High
1458#----------------------------------------------------------------------
1459# CHECK: sqdmulh h10, h11, h12
1460# CHECK: sqdmulh s20, s21, s2
14610x6a,0xb5,0x6c,0x5e
14620xb4,0xb6,0xa2,0x5e
1463
1464#----------------------------------------------------------------------
1465# Scalar Integer Saturating Rounding Doubling Multiply Half High
1466#----------------------------------------------------------------------
1467# CHECK: sqrdmulh h10, h11, h12
1468# CHECK: sqrdmulh s20, s21, s2
14690x6a,0xb5,0x6c,0x7e
14700xb4,0xb6,0xa2,0x7e
1471
1472#----------------------------------------------------------------------
1473# Floating-point multiply extended
1474#----------------------------------------------------------------------
1475# CHECK: fmulx s20, s22, s15
1476# CHECK: fmulx d23, d11, d1
14770xd4,0xde,0x2f,0x5e
14780x77,0xdd,0x61,0x5e
1479
1480#----------------------------------------------------------------------
1481# Floating-point Reciprocal Step
1482#----------------------------------------------------------------------
1483# CHECK: frecps s21, s16, s13
1484# CHECK: frecps d22, d30, d21
14850x15,0xfe,0x2d,0x5e
14860xd6,0xff,0x75,0x5e
1487
1488#----------------------------------------------------------------------
1489# Floating-point Reciprocal Square Root Step
1490#----------------------------------------------------------------------
1491# CHECK: frsqrts s21, s5, s12
1492# CHECK: frsqrts d8, d22, d18
14930xb5,0xfc,0xac,0x5e
14940xc8,0xfe,0xf2,0x5e
1495
1496#----------------------------------------------------------------------
1497# Scalar Signed Integer Convert To Floating-point
1498#----------------------------------------------------------------------
1499# CHECK: scvtf s22, s13
1500# CHECK: scvtf d21, d12
15010xb6,0xd9,0x21,0x5e
15020x95,0xd9,0x61,0x5e
1503
1504#----------------------------------------------------------------------
1505# Scalar Unsigned Integer Convert To Floating-point
1506#----------------------------------------------------------------------
1507# CHECK: ucvtf s22, s13
1508# CHECK: ucvtf d21, d14
15090xb6,0xd9,0x21,0x7e
15100xd5,0xd9,0x61,0x7e
1511
1512#----------------------------------------------------------------------
1513# Scalar Floating-point Reciprocal Estimate
1514#----------------------------------------------------------------------
1515# CHECK: frecpe s19, s14
1516# CHECK: frecpe d13, d13
15170xd3,0xd9,0xa1,0x5e
15180xad,0xd9,0xe1,0x5e
1519
1520#----------------------------------------------------------------------
1521# Scalar Floating-point Reciprocal Exponent
1522#----------------------------------------------------------------------
1523# CHECK: frecpx s18, s10
1524# CHECK: frecpx d16, d19
15250x52,0xf9,0xa1,0x5e
15260x70,0xfa,0xe1,0x5e
1527
1528#----------------------------------------------------------------------
1529# Scalar Floating-point Reciprocal Square Root Estimate
1530#----------------------------------------------------------------------
1531# CHECK: frsqrte s22, s13
1532# CHECK: frsqrte d21, d12
15330xb6,0xd9,0xa1,0x7e
15340x95,0xd9,0xe1,0x7e
1535
1536#----------------------------------------------------------------------
1537# Scalar Compare Bitwise Equal
1538#----------------------------------------------------------------------
1539# CHECK: cmeq d20, d21, d22
15400xb4,0x8e,0xf6,0x7e
1541
1542#----------------------------------------------------------------------
1543# Scalar Compare Bitwise Equal To Zero
1544#----------------------------------------------------------------------
1545# CHECK: cmeq d20, d21, #0x0
15460xb4,0x9a,0xe0,0x5e
1547
1548#----------------------------------------------------------------------
1549# Scalar Compare Unsigned Higher Or Same
1550#----------------------------------------------------------------------
1551# CHECK: cmhs d20, d21, d22
15520xb4,0x3e,0xf6,0x7e
1553
1554
1555#----------------------------------------------------------------------
1556# Scalar Compare Signed Greather Than Or Equal
1557#----------------------------------------------------------------------
1558# CHECK: cmge d20, d21, d22
15590xb4,0x3e,0xf6,0x5e
1560
1561#----------------------------------------------------------------------
1562# Scalar Compare Signed Greather Than Or Equal To Zero
1563#----------------------------------------------------------------------
1564# CHECK: cmge d20, d21, #0x0
15650xb4,0x8a,0xe0,0x7e
1566
1567#----------------------------------------------------------------------
1568# Scalar Compare Unsigned Higher
1569#----------------------------------------------------------------------
1570# CHECK: cmhi d20, d21, d22
15710xb4,0x36,0xf6,0x7e
1572
1573#----------------------------------------------------------------------
1574# Scalar Compare Signed Greater Than
1575#----------------------------------------------------------------------
1576# CHECK: cmgt d20, d21, d22
15770xb4,0x36,0xf6,0x5e
1578
1579#----------------------------------------------------------------------
1580# Scalar Compare Signed Greater Than Zero
1581#----------------------------------------------------------------------
1582# CHECK: cmgt d20, d21, #0x0
15830xb4,0x8a,0xe0,0x5e
1584
1585#----------------------------------------------------------------------
1586# Scalar Compare Signed Less Than Or Equal To Zero
1587#----------------------------------------------------------------------
1588# CHECK: cmle d20, d21, #0x0
15890xb4,0x9a,0xe0,0x7e
1590
1591#----------------------------------------------------------------------
1592# Scalar Compare Less Than Zero
1593#----------------------------------------------------------------------
1594# CHECK: cmlt d20, d21, #0x0
15950xb4,0xaa,0xe0,0x5e
1596
1597#----------------------------------------------------------------------
1598# Scalar Compare Bitwise Test Bits
1599#----------------------------------------------------------------------
1600# CHECK: cmtst d20, d21, d22
16010xb4,0x8e,0xf6,0x5e
1602
1603#----------------------------------------------------------------------
1604# Scalar Floating-point Compare Mask Equal
1605#----------------------------------------------------------------------
1606# CHECK: fcmeq s10, s11, s12
1607# CHECK: fcmeq d20, d21, d22
16080x6a,0xe5,0x2c,0x5e
16090xb4,0xe6,0x76,0x5e
1610
1611#----------------------------------------------------------------------
1612# Scalar Floating-point Compare Mask Equal To Zero
1613#----------------------------------------------------------------------
1614# CHECK: fcmeq s10, s11, #0.0
1615# CHECK: fcmeq d20, d21, #0.0
16160x6a,0xd9,0xa0,0x5e
16170xb4,0xda,0xe0,0x5e
1618
1619#----------------------------------------------------------------------
1620# Scalar Floating-point Compare Mask Greater Than Or Equal
1621#----------------------------------------------------------------------
1622# CHECK: fcmge s10, s11, s12
1623# CHECK: fcmge d20, d21, d22
16240x6a,0xe5,0x2c,0x7e
16250xb4,0xe6,0x76,0x7e
1626
1627#----------------------------------------------------------------------
1628# Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1629#----------------------------------------------------------------------
1630# CHECK: fcmge s10, s11, #0.0
1631# CHECK: fcmge d20, d21, #0.0
16320x6a,0xc9,0xa0,0x7e
16330xb4,0xca,0xe0,0x7e
1634
1635#----------------------------------------------------------------------
1636# Scalar Floating-point Compare Mask Greather Than
1637#----------------------------------------------------------------------
1638# CHECK: fcmgt s10, s11, s12
1639# CHECK: fcmgt d20, d21, d22
16400x6a,0xe5,0xac,0x7e
16410xb4,0xe6,0xf6,0x7e
1642
1643#----------------------------------------------------------------------
1644# Scalar Floating-point Compare Mask Greather Than Zero
1645#----------------------------------------------------------------------
1646# CHECK: fcmgt s10, s11, #0.0
1647# CHECK: fcmgt d20, d21, #0.0
16480x6a,0xc9,0xa0,0x5e
16490xb4,0xca,0xe0,0x5e
1650
1651#----------------------------------------------------------------------
1652# Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1653#----------------------------------------------------------------------
1654# CHECK: fcmle s10, s11, #0.0
1655# CHECK: fcmle d20, d21, #0.0
16560x6a,0xd9,0xa0,0x7e
16570xb4,0xda,0xe0,0x7e
1658
1659#----------------------------------------------------------------------
1660# Scalar Floating-point Compare Mask Less Than
1661#----------------------------------------------------------------------
1662# CHECK: fcmlt s10, s11, #0.0
1663# CHECK: fcmlt d20, d21, #0.0
16640x6a,0xe9,0xa0,0x5e
16650xb4,0xea,0xe0,0x5e
1666
1667#----------------------------------------------------------------------
1668# Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1669#----------------------------------------------------------------------
1670# CHECK: facge s10, s11, s12
1671# CHECK: facge d20, d21, d22
16720x6a,0xed,0x2c,0x7e
16730xb4,0xee,0x76,0x7e
1674
1675#----------------------------------------------------------------------
1676# Scalar Floating-point Absolute Compare Mask Greater Than
1677#----------------------------------------------------------------------
1678# CHECK: facgt s10, s11, s12
1679# CHECK: facgt d20, d21, d22
16800x6a,0xed,0xac,0x7e
16810xb4,0xee,0xf6,0x7e
1682
1683#----------------------------------------------------------------------
1684# Scalar Absolute Value
1685#----------------------------------------------------------------------
1686# CHECK: abs d29, d24
16870x1d,0xbb,0xe0,0x5e
1688
1689#----------------------------------------------------------------------
1690# Scalar Signed Saturating Absolute Value
1691#----------------------------------------------------------------------
1692# CHECK: sqabs b19, b14
1693# CHECK: sqabs h21, h15
1694# CHECK: sqabs s20, s12
1695# CHECK: sqabs d18, d12
16960xd3,0x79,0x20,0x5e
16970xf5,0x79,0x60,0x5e
16980x94,0x79,0xa0,0x5e
16990x92,0x79,0xe0,0x5e
1700
1701#----------------------------------------------------------------------
1702# Scalar Negate
1703#----------------------------------------------------------------------
1704# CHECK: neg d29, d24
17050x1d,0xbb,0xe0,0x7e
1706
1707#----------------------------------------------------------------------
1708# Scalar Signed Saturating Negate
1709#----------------------------------------------------------------------
1710# CHECK: sqneg b19, b14
1711# CHECK: sqneg h21, h15
1712# CHECK: sqneg s20, s12
1713# CHECK: sqneg d18, d12
17140xd3,0x79,0x20,0x7e
17150xf5,0x79,0x60,0x7e
17160x94,0x79,0xa0,0x7e
17170x92,0x79,0xe0,0x7e
1718
1719#----------------------------------------------------------------------
1720# Signed Saturating Accumulated of Unsigned Value
1721#----------------------------------------------------------------------
1722# CHECK: suqadd b19, b14
1723# CHECK: suqadd h20, h15
1724# CHECK: suqadd s21, s12
1725# CHECK: suqadd d18, d22
17260xd3,0x39,0x20,0x5e
17270xf4,0x39,0x60,0x5e
17280x95,0x39,0xa0,0x5e
17290xd2,0x3a,0xe0,0x5e
1730
1731#----------------------------------------------------------------------
1732# Unsigned Saturating Accumulated of Signed Value
1733#----------------------------------------------------------------------
1734# CHECK: usqadd b19, b14
1735# CHECK: usqadd h20, h15
1736# CHECK: usqadd s21, s12
1737# CHECK: usqadd d18, d22
17380xd3,0x39,0x20,0x7e
17390xf4,0x39,0x60,0x7e
17400x95,0x39,0xa0,0x7e
17410xd2,0x3a,0xe0,0x7e
1742
1743#----------------------------------------------------------------------
1744# Signed Saturating Doubling Multiply-Add Long
1745#----------------------------------------------------------------------
1746# CHECK: sqdmlal s17, h27, h12
1747# CHECK: sqdmlal d19, s24, s12
17480x71,0x93,0x6c,0x5e
17490x13,0x93,0xac,0x5e
1750
1751#----------------------------------------------------------------------
1752# Signed Saturating Doubling Multiply-Subtract Long
1753#----------------------------------------------------------------------
1754# CHECK: sqdmlsl s14, h12, h25
1755# CHECK: sqdmlsl d12, s23, s13
17560x8e,0xb1,0x79,0x5e
17570xec,0xb2,0xad,0x5e
1758
1759#----------------------------------------------------------------------
1760# Signed Saturating Doubling Multiply Long
1761#----------------------------------------------------------------------
1762# CHECK: sqdmull s12, h22, h12
1763# CHECK: sqdmull d15, s22, s12
17640xcc,0xd2,0x6c,0x5e
17650xcf,0xd2,0xac,0x5e
1766
1767#----------------------------------------------------------------------
1768# Scalar Signed Saturating Extract Unsigned Narrow
1769#----------------------------------------------------------------------
1770# CHECK: sqxtun b19, h14
1771# CHECK: sqxtun h21, s15
1772# CHECK: sqxtun s20, d12
17730xd3,0x29,0x21,0x7e
17740xf5,0x29,0x61,0x7e
17750x94,0x29,0xa1,0x7e
1776
1777#----------------------------------------------------------------------
1778# Scalar Signed Saturating Extract Signed Narrow
1779#----------------------------------------------------------------------
1780# CHECK: sqxtn b18, h18
1781# CHECK: sqxtn h20, s17
1782# CHECK: sqxtn s19, d14
17830x52,0x4a,0x21,0x5e
17840x34,0x4a,0x61,0x5e
17850xd3,0x49,0xa1,0x5e
1786
1787#----------------------------------------------------------------------
1788# Scalar Unsigned Saturating Extract Narrow
1789#----------------------------------------------------------------------
1790# CHECK: uqxtn b18, h18
1791# CHECK: uqxtn h20, s17
1792# CHECK: uqxtn s19, d14
17930x52,0x4a,0x21,0x7e
17940x34,0x4a,0x61,0x7e
17950xd3,0x49,0xa1,0x7e
1796
1797#----------------------------------------------------------------------
1798# Scalar Signed Shift Right (Immediate)
1799#----------------------------------------------------------------------
1800# CHECK: sshr d15, d16, #12
18010x0f,0x06,0x74,0x5f
1802
1803#----------------------------------------------------------------------
1804# Scalar Unsigned Shift Right (Immediate)
1805#----------------------------------------------------------------------
1806# CHECK: ushr d10, d17, #18
18070x2a,0x06,0x6e,0x7f
1808
1809#----------------------------------------------------------------------
1810# Scalar Signed Rounding Shift Right (Immediate)
1811#----------------------------------------------------------------------
1812# CHECK: srshr d19, d18, #7
18130x53,0x26,0x79,0x5f
1814
1815#----------------------------------------------------------------------
1816# Scalar Unigned Rounding Shift Right (Immediate)
1817#----------------------------------------------------------------------
1818# CHECK: urshr d20, d23, #31
18190xf4,0x26,0x61,0x7f
1820
1821#----------------------------------------------------------------------
1822# Scalar Signed Shift Right and Accumulate (Immediate)
1823#----------------------------------------------------------------------
1824# CHECK: ssra d18, d12, #21
18250x92,0x15,0x6b,0x5f
1826
1827#----------------------------------------------------------------------
1828# Scalar Unsigned Shift Right and Accumulate (Immediate)
1829#----------------------------------------------------------------------
1830# CHECK: usra d20, d13, #61
18310xb4,0x15,0x43,0x7f
1832
1833#----------------------------------------------------------------------
1834# Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1835#----------------------------------------------------------------------
1836# CHECK: srsra d15, d11, #19
18370x6f,0x35,0x6d,0x5f
1838
1839#----------------------------------------------------------------------
1840# Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1841#----------------------------------------------------------------------
1842# CHECK: ursra d18, d10, #13
18430x52,0x35,0x73,0x7f
1844
1845#----------------------------------------------------------------------
1846# Scalar Shift Left (Immediate)
1847#----------------------------------------------------------------------
1848# CHECK: shl d7, d10, #12
18490x47,0x55,0x4c,0x5f
1850
1851#----------------------------------------------------------------------
1852# Signed Saturating Shift Left (Immediate)
1853#----------------------------------------------------------------------
1854# CHECK: sqshl b11, b19, #7
1855# CHECK: sqshl h13, h18, #11
1856# CHECK: sqshl s14, s17, #22
1857# CHECK: sqshl d15, d16, #51
18580x6b,0x76,0x0f,0x5f
18590x4d,0x76,0x1b,0x5f
18600x2e,0x76,0x36,0x5f
18610x0f,0x76,0x73,0x5f
1862
1863#----------------------------------------------------------------------
1864# Unsigned Saturating Shift Left (Immediate)
1865#----------------------------------------------------------------------
1866# CHECK: uqshl b18, b15, #6
1867# CHECK: uqshl h11, h18, #7
1868# CHECK: uqshl s14, s19, #18
1869# CHECK: uqshl d15, d12, #19
18700xf2,0x75,0x0e,0x7f
18710x4b,0x76,0x17,0x7f
18720x6e,0x76,0x32,0x7f
18730x8f,0x75,0x53,0x7f
1874
1875#----------------------------------------------------------------------
1876# Signed Saturating Shift Left Unsigned (Immediate)
1877#----------------------------------------------------------------------
1878# CHECK: sqshlu b15, b18, #6
1879# CHECK: sqshlu h19, h17, #6
1880# CHECK: sqshlu s16, s14, #25
1881# CHECK: sqshlu d11, d13, #32
18820x4f,0x66,0x0e,0x7f
18830x33,0x66,0x16,0x7f
18840xd0,0x65,0x39,0x7f
18850xab,0x65,0x60,0x7f
1886
1887#----------------------------------------------------------------------
1888# Shift Right And Insert (Immediate)
1889#----------------------------------------------------------------------
1890# CHECK: sri d10, d12, #14
18910x8a,0x45,0x72,0x7f
1892
1893#----------------------------------------------------------------------
1894# Shift Left And Insert (Immediate)
1895#----------------------------------------------------------------------
1896# CHECK: sli d10, d14, #12
18970xca,0x55,0x4c,0x7f
1898
1899#----------------------------------------------------------------------
1900# Signed Saturating Shift Right Narrow (Immediate)
1901#----------------------------------------------------------------------
1902# CHECK: sqshrn b10, h15, #5
1903# CHECK: sqshrn h17, s10, #4
1904# CHECK: sqshrn s18, d10, #31
19050xea,0x95,0x0b,0x5f
19060x51,0x95,0x1c,0x5f
19070x52,0x95,0x21,0x5f
1908
1909#----------------------------------------------------------------------
1910# Unsigned Saturating Shift Right Narrow (Immediate)
1911#----------------------------------------------------------------------
1912# CHECK: uqshrn b12, h10, #7
1913# CHECK: uqshrn h10, s14, #5
1914# CHECK: uqshrn s10, d12, #13
19150x4c,0x95,0x09,0x7f
19160xca,0x95,0x1b,0x7f
19170x8a,0x95,0x33,0x7f
1918
1919#----------------------------------------------------------------------
1920# Signed Saturating Rounded Shift Right Narrow (Immediate)
1921#----------------------------------------------------------------------
1922# CHECK: sqrshrn b10, h13, #2
1923# CHECK: sqrshrn h15, s10, #6
1924# CHECK: sqrshrn s15, d12, #9
19250xaa,0x9d,0x0e,0x5f
19260x4f,0x9d,0x1a,0x5f
19270x8f,0x9d,0x37,0x5f
1928
1929#----------------------------------------------------------------------
1930# Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1931#----------------------------------------------------------------------
1932# CHECK: uqrshrn b10, h12, #5
1933# CHECK: uqrshrn h12, s10, #14
1934# CHECK: uqrshrn s10, d10, #25
19350x8a,0x9d,0x0b,0x7f
19360x4c,0x9d,0x12,0x7f
19370x4a,0x9d,0x27,0x7f
1938
1939#----------------------------------------------------------------------
1940# Signed Saturating Shift Right Unsigned Narrow (Immediate)
1941#----------------------------------------------------------------------
1942# CHECK: sqshrun b15, h10, #7
1943# CHECK: sqshrun h20, s14, #3
1944# CHECK: sqshrun s10, d15, #15
19450x4f,0x85,0x09,0x7f
19460xd4,0x85,0x1d,0x7f
19470xea,0x85,0x31,0x7f
1948
1949#----------------------------------------------------------------------
1950# Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1951#----------------------------------------------------------------------
1952# CHECK: sqrshrun b17, h10, #6
1953# CHECK: sqrshrun h10, s13, #15
1954# CHECK: sqrshrun s22, d16, #31
19550x51,0x8d,0x0a,0x7f
19560xaa,0x8d,0x11,0x7f
19570x16,0x8e,0x21,0x7f
1958
1959#----------------------------------------------------------------------
1960# Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1961#----------------------------------------------------------------------
1962# CHECK: scvtf s22, s13, #32
1963# CHECK: scvtf d21, d12, #64
19640xb6,0xe5,0x20,0x5f
19650x95,0xe5,0x40,0x5f
1966
1967#----------------------------------------------------------------------
1968# Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1969#----------------------------------------------------------------------
1970# CHECK: ucvtf s22, s13, #32
1971# CHECK: ucvtf d21, d14, #64
19720xb6,0xe5,0x20,0x7f
19730xd5,0xe5,0x40,0x7f
1974
1975#----------------------------------------------------------------------
1976# Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1977#----------------------------------------------------------------------
1978# CHECK: fcvtzs s21, s12, #1
1979# CHECK: fcvtzs d21, d12, #1
19800x95,0xfd,0x3f,0x5f
19810x95,0xfd,0x7f,0x5f
1982
1983#----------------------------------------------------------------------
1984# Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
1985#----------------------------------------------------------------------
1986# CHECK: fcvtzu s21, s12, #1
1987# CHECK: fcvtzu d21, d12, #1
19880x95,0xfd,0x3f,0x7f
19890x95,0xfd,0x7f,0x7f
1990
1991#----------------------------------------------------------------------
1992# Vector load/store multiple N-element structure
1993#----------------------------------------------------------------------
1994# CHECK: ld1 {v0.16b}, [x0]
1995# CHECK: ld1 {v15.8h, v16.8h}, [x15]
1996# CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp]
1997# CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
19980x00,0x70,0x40,0x4c
19990xef,0xa5,0x40,0x4c
20000xff,0x6b,0x40,0x4c
20010x00,0x2c,0x40,0x4c
2002
2003# CHECK: ld2 {v0.8b, v1.8b}, [x0]
2004# CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15]
2005# CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
20060x00,0x80,0x40,0x0c
20070xef,0x45,0x40,0x0c
20080xff,0x0b,0x40,0x0c
2009
2010# CHECK: st1 {v0.16b}, [x0]
2011# CHECK: st1 {v15.8h, v16.8h}, [x15]
2012# CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp]
2013# CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
20140x00,0x70,0x00,0x4c
20150xef,0xa5,0x00,0x4c
20160xff,0x6b,0x00,0x4c
20170x00,0x2c,0x00,0x4c
2018
2019# CHECK: st2 {v0.8b, v1.8b}, [x0]
2020# CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15]
2021# CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
20220x00,0x80,0x00,0x0c
20230xef,0x45,0x00,0x0c
20240xff,0x0b,0x00,0x0c
2025
2026#----------------------------------------------------------------------
2027# Vector load/store multiple N-element structure (post-index)
2028#----------------------------------------------------------------------
2029# CHECK: ld1 {v15.8h}, [x15], x2
2030# CHECK: ld1 {v31.4s, v0.4s}, [sp], #32
2031# CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2032# CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
20330xef,0x75,0xc2,0x4c
20340xff,0xab,0xdf,0x4c
20350x00,0x6c,0xdf,0x4c
20360x00,0x20,0xc3,0x0c
2037
2038# CHECK: ld2 {v0.16b, v1.16b}, [x0], x1
2039# CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2040# CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
20410x00,0x80,0xc1,0x4c
20420xef,0x45,0xc2,0x4c
20430xff,0x0b,0xdf,0x4c
2044
2045
2046# CHECK: st1 {v15.8h}, [x15], x2
2047# CHECK: st1 {v31.4s, v0.4s}, [sp], #32
2048# CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2049# CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
20500xef,0x75,0x82,0x4c
20510xff,0xab,0x9f,0x4c
20520x00,0x6c,0x9f,0x4c
20530x00,0x20,0x83,0x0c
2054
2055# CHECK: st2 {v0.16b, v1.16b}, [x0], x1
2056# CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2057# CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
20580x00,0x80,0x81,0x4c
20590xef,0x45,0x82,0x4c
20600xff,0x0b,0x9f,0x4c
2061
2062#----------------------------------------------------------------------
2063# Vector load single N-element structure to all lane of N
2064# consecutive registers (N = 1,2,3,4)
2065#----------------------------------------------------------------------
2066# CHECK: ld1r {v0.16b}, [x0]
2067# CHECK: ld1r {v15.8h}, [x15]
2068# CHECK: ld2r {v31.4s, v0.4s}, [sp]
2069# CHECK: ld2r {v0.2d, v1.2d}, [x0]
2070# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0]
2071# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15]
2072# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2073# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp]
20740x00,0xc0,0x40,0x4d
20750xef,0xc5,0x40,0x4d
20760xff,0xcb,0x60,0x4d
20770x00,0xcc,0x60,0x4d
20780x00,0xe0,0x40,0x0d
20790xef,0xe5,0x40,0x0d
20800xff,0xeb,0x60,0x0d
20810xff,0xef,0x60,0x0d
2082
2083#----------------------------------------------------------------------
2084# Vector load/store single N-element structure to/from one lane of N
2085# consecutive registers (N = 1,2,3,4)
2086#----------------------------------------------------------------------
2087# CHECK: ld1 {v0.b}[9], [x0]
2088# CHECK: ld2 {v15.h, v16.h}[7], [x15]
2089# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp]
2090# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0]
2091# CHECK: st1 {v0.d}[1], [x0]
2092# CHECK: st2 {v31.s, v0.s}[3], [sp]
2093# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15]
2094# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0]
20950x00,0x04,0x40,0x4d
20960xef,0x59,0x60,0x4d
20970xff,0xb3,0x40,0x4d
20980x00,0xa4,0x60,0x4d
20990x00,0x84,0x00,0x4d
21000xff,0x93,0x20,0x4d
21010xef,0x79,0x00,0x4d
21020x00,0x24,0x20,0x4d
2103
2104#----------------------------------------------------------------------
2105# Post-index of vector load single N-element structure to all lane of N
2106# consecutive registers (N = 1,2,3,4)
2107#----------------------------------------------------------------------
2108# CHECK: ld1r {v0.16b}, [x0], #1
2109# CHECK: ld1r {v15.8h}, [x15], #2
2110# CHECK: ld2r {v31.4s, v0.4s}, [sp], #8
2111# CHECK: ld2r {v0.2d, v1.2d}, [x0], #16
2112# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0], #3
2113# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #6
2114# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp], x30
2115# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], x7
21160x00,0xc0,0xdf,0x4d
21170xef,0xc5,0xdf,0x4d
21180xff,0xcb,0xff,0x4d
21190x00,0xcc,0xff,0x4d
21200x00,0xe0,0xdf,0x0d
21210xef,0xe5,0xdf,0x0d
21220xff,0xeb,0xfe,0x0d
21230xff,0xef,0xe7,0x0d
2124
2125#----------------------------------------------------------------------
2126# Post-index of vector load/store single N-element structure to/from
2127#  one lane of N consecutive registers (N = 1,2,3,4)
2128#----------------------------------------------------------------------
2129# CHECK: ld1 {v0.b}[9], [x0], #1
2130# CHECK: ld2 {v15.h, v16.h}[7], [x15], #4
2131# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp], x3
2132# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
2133# CHECK: st1 {v0.d}[1], [x0], #8
2134# CHECK: st2 {v31.s, v0.s}[3], [sp], #8
2135# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15], #6
2136# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0], x5
21370x00,0x04,0xdf,0x4d
21380xef,0x59,0xff,0x4d
21390xff,0xb3,0xc3,0x4d
21400x00,0xa4,0xff,0x4d
21410x00,0x84,0x9f,0x4d
21420xff,0x93,0xbf,0x4d
21430xef,0x79,0x9f,0x4d
21440x00,0x24,0xa5,0x4d
2145
2146#----------------------------------------------------------------------
2147# Bitwise extract
2148#----------------------------------------------------------------------
21490x20,0x18,0x02,0x2e
21500x20,0x18,0x02,0x6e
2151# CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
2152# CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
2153
2154#----------------------------------------------------------------------
2155# unzip with 3 same vectors to get primary result
2156#----------------------------------------------------------------------
2157# CHECK: uzp1	v1.8b, v1.8b, v2.8b
2158# CHECK: uzp1	v2.16b, v1.16b, v2.16b
2159# CHECK: uzp1	v3.4h, v1.4h, v2.4h
2160# CHECK: uzp1	v4.8h, v1.8h, v2.8h
2161# CHECK: uzp1	v5.2s, v1.2s, v2.2s
2162# CHECK: uzp1	v6.4s, v1.4s, v2.4s
2163# CHECK: uzp1	v7.2d, v1.2d, v2.2d
21640x21,0x18,0x02,0x0e
21650x22,0x18,0x02,0x4e
21660x23,0x18,0x42,0x0e
21670x24,0x18,0x42,0x4e
21680x25,0x18,0x82,0x0e
21690x26,0x18,0x82,0x4e
21700x27,0x18,0xc2,0x4e
2171
2172#----------------------------------------------------------------------
2173# transpose with 3 same vectors to get primary result
2174#----------------------------------------------------------------------
2175# CHECK: trn1	v8.8b, v1.8b, v2.8b
2176# CHECK: trn1	v9.16b, v1.16b, v2.16b
2177# CHECK: trn1	v10.4h, v1.4h, v2.4h
2178# CHECK: trn1	v27.8h, v7.8h, v2.8h
2179# CHECK: trn1	v12.2s, v7.2s, v2.2s
2180# CHECK: trn1	v29.4s, v6.4s, v2.4s
2181# CHECK: trn1	v14.2d, v6.2d, v2.2d
21820x28,0x28,0x02,0x0e
21830x29,0x28,0x02,0x4e
21840x2a,0x28,0x42,0x0e
21850xfb,0x28,0x42,0x4e
21860xec,0x28,0x82,0x0e
21870xdd,0x28,0x82,0x4e
21880xce,0x28,0xc2,0x4e
2189
2190#----------------------------------------------------------------------
2191# zip with 3 same vectors to get primary result
2192#----------------------------------------------------------------------
2193# CHECK: zip1	v31.8b, v5.8b, v2.8b
2194# CHECK: zip1	v0.16b, v5.16b, v2.16b
2195# CHECK: zip1	v17.4h, v4.4h, v2.4h
2196# CHECK: zip1	v2.8h, v4.8h, v2.8h
2197# CHECK: zip1	v19.2s, v3.2s, v2.2s
2198# CHECK: zip1	v4.4s, v3.4s, v2.4s
2199# CHECK: zip1	v21.2d, v2.2d, v2.2d
22000xbf,0x38,0x02,0x0e
22010xa0,0x38,0x02,0x4e
22020x91,0x38,0x42,0x0e
22030x82,0x38,0x42,0x4e
22040x73,0x38,0x82,0x0e
22050x64,0x38,0x82,0x4e
22060x55,0x38,0xc2,0x4e
2207
2208#----------------------------------------------------------------------
2209# unzip with 3 same vectors to get secondary result
2210#----------------------------------------------------------------------
2211# CHECK: uzp2	v6.8b, v2.8b, v2.8b
2212# CHECK: uzp2	v23.16b, v1.16b, v2.16b
2213# CHECK: uzp2	v8.4h, v1.4h, v2.4h
2214# CHECK: uzp2	v25.8h, v0.8h, v2.8h
2215# CHECK: uzp2	v10.2s, v0.2s, v2.2s
2216# CHECK: uzp2	v27.4s, v7.4s, v2.4s
2217# CHECK: uzp2	v12.2d, v7.2d, v2.2d
22180x46,0x58,0x02,0x0e
22190x37,0x58,0x02,0x4e
22200x28,0x58,0x42,0x0e
22210x19,0x58,0x42,0x4e
22220x0a,0x58,0x82,0x0e
22230xfb,0x58,0x82,0x4e
22240xec,0x58,0xc2,0x4e
2225
2226#----------------------------------------------------------------------
2227# transpose with 3 same vectors to get secondary result
2228#----------------------------------------------------------------------
2229# CHECK: trn2	v29.8b, v6.8b, v2.8b
2230# CHECK: trn2	v14.16b, v6.16b, v2.16b
2231# CHECK: trn2	v31.4h, v5.4h, v2.4h
2232# CHECK: trn2	v0.8h, v5.8h, v2.8h
2233# CHECK: trn2	v17.2s, v4.2s, v2.2s
2234# CHECK: trn2	v2.4s, v4.4s, v2.4s
2235# CHECK: trn2	v19.2d, v3.2d, v2.2d
22360xdd,0x68,0x02,0x0e
22370xce,0x68,0x02,0x4e
22380xbf,0x68,0x42,0x0e
22390xa0,0x68,0x42,0x4e
22400x91,0x68,0x82,0x0e
22410x82,0x68,0x82,0x4e
22420x73,0x68,0xc2,0x4e
2243
2244#----------------------------------------------------------------------
2245# zip with 3 same vectors to get secondary result
2246#----------------------------------------------------------------------
2247# CHECK: zip2	v4.8b, v3.8b, v2.8b
2248# CHECK: zip2	v21.16b, v2.16b, v2.16b
2249# CHECK: zip2	v6.4h, v2.4h, v2.4h
2250# CHECK: zip2	v23.8h, v1.8h, v2.8h
2251# CHECK: zip2	v8.2s, v1.2s, v2.2s
2252# CHECK: zip2	v25.4s, v0.4s, v2.4s
2253# CHECK: zip2	v10.2d, v0.2d, v2.2d
22540x64,0x78,0x02,0x0e
22550x55,0x78,0x02,0x4e
22560x46,0x78,0x42,0x0e
22570x37,0x78,0x42,0x4e
22580x28,0x78,0x82,0x0e
22590x19,0x78,0x82,0x4e
22600x0a,0x78,0xc2,0x4e
2261
2262#----------------------------------------------------------------------
2263# Scalar Floating Point  multiply (scalar, by element)
2264#----------------------------------------------------------------------
2265# CHECK: fmul s0, s1, v1.s[0]
2266# CHECK: fmul s0, s1, v1.s[3]
2267# CHECK: fmul d0, d1, v1.d[0]
2268# CHECK: fmul d0, d1, v1.d[1]
2269# CHECK: fmul d15, d15, v15.d[1]
22700x20 0x90 0x81 0x5f
22710x20 0x98 0xa1 0x5f
22720x20 0x90 0xc1 0x5f
22730x20 0x98 0xc1 0x5f
22740xef 0x99 0xcf 0x5f
2275
2276#----------------------------------------------------------------------
2277# Scalar Floating Point  multiply extended (scalar, by element)
2278#----------------------------------------------------------------------
2279# CHECK: fmulx s3, s5, v7.s[0]
2280# CHECK: fmulx s3, s5, v7.s[3]
2281# CHECK: fmulx s3, s5, v15.s[3]
2282# CHECK: fmulx d0, d4, v8.d[0]
2283# CHECK: fmulx d0, d4, v8.d[1]
22840xa3 0x90 0x87 0x7f
22850xa3 0x98 0xa7 0x7f
22860xa3 0x98 0xaf 0x7f
22870x80 0x90 0xc8 0x7f
22880x80 0x98 0xc8 0x7f
2289
2290#----------------------------------------------------------------------
2291# Scalar Floating Point fused multiply-add (scalar, by element)
2292#----------------------------------------------------------------------
2293# CHECK: fmla s0, s1, v1.s[0]
2294# CHECK: fmla s0, s1, v1.s[3]
2295# CHECK: fmla d0, d1, v1.d[0]
2296# CHECK: fmla d0, d1, v1.d[1]
2297# CHECK: fmla d15, d15, v15.d[1]
22980x20 0x10 0x81 0x5f
22990x20 0x18 0xa1 0x5f
23000x20 0x10 0xc1 0x5f
23010x20 0x18 0xc1 0x5f
23020xef 0x19 0xcf 0x5f
2303
2304#----------------------------------------------------------------------
2305# Scalar Floating Point fused multiply-sub (scalar, by element)
2306#----------------------------------------------------------------------
2307# CHECK: fmls s3, s5, v7.s[0]
2308# CHECK: fmls s3, s5, v7.s[3]
2309# CHECK: fmls s3, s5, v15.s[3]
2310# CHECK: fmls d0, d4, v8.d[0]
2311# CHECK: fmls d0, d4, v8.d[1]
23120xa3 0x50 0x87 0x5f
23130xa3 0x58 0xa7 0x5f
23140xa3 0x58 0xaf 0x5f
23150x80 0x50 0xc8 0x5f
23160x80 0x58 0xc8 0x5f
2317
2318#----------------------------------------------------------------------
2319# Scalar Signed saturating doubling
2320# multiply-add long (scalar, by element)
2321#----------------------------------------------------------------------
2322# CHECK: sqdmlal s0, h0, v0.h[0]
2323# CHECK: sqdmlal s0, h0, v0.h[1]
2324# CHECK: sqdmlal s0, h0, v0.h[2]
2325# CHECK: sqdmlal s0, h0, v0.h[3]
2326# CHECK: sqdmlal s0, h0, v0.h[4]
2327# CHECK: sqdmlal s0, h0, v0.h[5]
2328# CHECK: sqdmlal s0, h0, v0.h[6]
2329# CHECK: sqdmlal s0, h0, v0.h[7]
2330# CHECK: sqdmlal d8, s9, v15.s[0]
2331# CHECK: sqdmlal d8, s9, v15.s[1]
2332# CHECK: sqdmlal d8, s9, v15.s[2]
2333# CHECK: sqdmlal d8, s9, v15.s[3]
23340x00 0x30 0x40 0x5f
23350x00 0x30 0x50 0x5f
23360x00 0x30 0x60 0x5f
23370x00 0x30 0x70 0x5f
23380x00 0x38 0x40 0x5f
23390x00 0x38 0x50 0x5f
23400x00 0x38 0x60 0x5f
23410x00 0x38 0x70 0x5f
23420x28 0x31 0x8f 0x5f
23430x28 0x31 0xaf 0x5f
23440x28 0x39 0x8f 0x5f
23450x28 0x39 0xaf 0x5f
2346
2347#----------------------------------------------------------------------
2348# Scalar Signed saturating doubling
2349# multiply-sub long (scalar, by element)
2350#----------------------------------------------------------------------
2351# CHECK: sqdmlsl s0, h0, v0.h[0]
2352# CHECK: sqdmlsl s0, h0, v0.h[1]
2353# CHECK: sqdmlsl s0, h0, v0.h[2]
2354# CHECK: sqdmlsl s0, h0, v0.h[3]
2355# CHECK: sqdmlsl s0, h0, v0.h[4]
2356# CHECK: sqdmlsl s0, h0, v0.h[5]
2357# CHECK: sqdmlsl s0, h0, v0.h[6]
2358# CHECK: sqdmlsl s0, h0, v0.h[7]
2359# CHECK: sqdmlsl d8, s9, v15.s[0]
2360# CHECK: sqdmlsl d8, s9, v15.s[1]
2361# CHECK: sqdmlsl d8, s9, v15.s[2]
2362# CHECK: sqdmlsl d8, s9, v15.s[3]
23630x00 0x70 0x40 0x5f
23640x00 0x70 0x50 0x5f
23650x00 0x70 0x60 0x5f
23660x00 0x70 0x70 0x5f
23670x00 0x78 0x40 0x5f
23680x00 0x78 0x50 0x5f
23690x00 0x78 0x60 0x5f
23700x00 0x78 0x70 0x5f
23710x28 0x71 0x8f 0x5f
23720x28 0x71 0xaf 0x5f
23730x28 0x79 0x8f 0x5f
23740x28 0x79 0xaf 0x5f
2375
2376#----------------------------------------------------------------------
2377# Scalar Signed saturating doubling multiply long (scalar, by element)
2378#----------------------------------------------------------------------
2379# CHECK: sqdmull s1, h1, v1.h[0]
2380# CHECK: sqdmull s1, h1, v1.h[1]
2381# CHECK: sqdmull s1, h1, v1.h[2]
2382# CHECK: sqdmull s1, h1, v1.h[3]
2383# CHECK: sqdmull s1, h1, v1.h[4]
2384# CHECK: sqdmull s1, h1, v1.h[5]
2385# CHECK: sqdmull s1, h1, v1.h[6]
2386# CHECK: sqdmull s1, h1, v1.h[7]
2387# CHECK: sqdmull d1, s1, v4.s[0]
2388# CHECK: sqdmull d1, s1, v4.s[1]
2389# CHECK: sqdmull d1, s1, v4.s[2]
2390# CHECK: sqdmull d1, s1, v4.s[3]
23910x21 0xb0 0x41 0x5f
23920x21 0xb0 0x51 0x5f
23930x21 0xb0 0x61 0x5f
23940x21 0xb0 0x71 0x5f
23950x21 0xb8 0x41 0x5f
23960x21 0xb8 0x51 0x5f
23970x21 0xb8 0x61 0x5f
23980x21 0xb8 0x71 0x5f
23990x21 0xb0 0x84 0x5f
24000x21 0xb0 0xa4 0x5f
24010x21 0xb8 0x84 0x5f
24020x21 0xb8 0xa4 0x5f
2403
2404#----------------------------------------------------------------------
2405# Scalar Signed saturating doubling multiply returning
2406# high half (scalar, by element)
2407#----------------------------------------------------------------------
2408# CHECK: sqdmulh h7, h1, v14.h[0]
2409# CHECK: sqdmulh h7, h15, v8.h[1]
2410# CHECK: sqdmulh h7, h15, v8.h[2]
2411# CHECK: sqdmulh h7, h15, v8.h[3]
2412# CHECK: sqdmulh h7, h15, v8.h[4]
2413# CHECK: sqdmulh h7, h15, v8.h[5]
2414# CHECK: sqdmulh h7, h15, v8.h[6]
2415# CHECK: sqdmulh h7, h15, v8.h[7]
2416# CHECK: sqdmulh s15, s3, v4.s[0]
2417# CHECK: sqdmulh s15, s14, v16.s[1]
2418# CHECK: sqdmulh s15, s15, v16.s[2]
2419# CHECK: sqdmulh s15, s16, v17.s[3]
24200x27 0xc0 0x4e 0x5f
24210xe7 0xc1 0x58 0x5f
24220xe7 0xc1 0x68 0x5f
24230xe7 0xc1 0x78 0x5f
24240xe7 0xc9 0x48 0x5f
24250xe7 0xc9 0x58 0x5f
24260xe7 0xc9 0x68 0x5f
24270xe7 0xc9 0x78 0x5f
24280x6f 0xc0 0x84 0x5f
24290xcf 0xc1 0xb0 0x5f
24300xef 0xc9 0x90 0x5f
24310x0f 0xca 0xb1 0x5f
2432
2433#----------------------------------------------------------------------
2434# Scalar Signed saturating rounding doubling multiply
2435# returning high half (scalar, by element)
2436#----------------------------------------------------------------------
2437# CHECK: sqrdmulh h7, h1, v14.h[0]
2438# CHECK: sqrdmulh h7, h15, v8.h[1]
2439# CHECK: sqrdmulh h7, h15, v8.h[2]
2440# CHECK: sqrdmulh h7, h15, v8.h[3]
2441# CHECK: sqrdmulh h7, h15, v8.h[4]
2442# CHECK: sqrdmulh h7, h15, v8.h[5]
2443# CHECK: sqrdmulh h7, h15, v8.h[6]
2444# CHECK: sqrdmulh h7, h15, v8.h[7]
2445# CHECK: sqrdmulh s15, s3, v4.s[0]
2446# CHECK: sqrdmulh s15, s14, v16.s[1]
2447# CHECK: sqrdmulh s15, s15, v16.s[2]
2448# CHECK: sqrdmulh s15, s16, v17.s[3]
24490x27 0xd0 0x4e 0x5f
24500xe7 0xd1 0x58 0x5f
24510xe7 0xd1 0x68 0x5f
24520xe7 0xd1 0x78 0x5f
24530xe7 0xd9 0x48 0x5f
24540xe7 0xd9 0x58 0x5f
24550xe7 0xd9 0x68 0x5f
24560xe7 0xd9 0x78 0x5f
24570x6f 0xd0 0x84 0x5f
24580xcf 0xd1 0xb0 0x5f
24590xef 0xd9 0x90 0x5f
24600x0f 0xda 0xb1 0x5f
2461
2462#----------------------------------------------------------------------
2463#Duplicate element (scalar)
2464#----------------------------------------------------------------------
2465# CHECK: dup b0, v0.b[15]
2466# CHECK: dup h2, v31.h[5]
2467# CHECK: dup s17, v2.s[2]
2468# CHECK: dup d6, v12.d[1]
24690x00 0x04 0x1f 0x5e
24700xe2 0x07 0x16 0x5e
24710x51 0x04 0x14 0x5e
24720x86 0x05 0x18 0x5e
2473
2474#----------------------------------------------------------------------
2475# Table look up
2476#----------------------------------------------------------------------
24770x20,0x00,0x02,0x0e
24780xf0,0x23,0x02,0x0e
24790x20,0x40,0x02,0x0e
24800xf0,0x62,0x02,0x0e
2481# CHECK: tbl v0.8b, {v1.16b}, v2.8b
2482# CHECK: tbl v16.8b, {v31.16b, v0.16b}, v2.8b
2483# CHECK: tbl v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2484# CHECK: tbl v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2485
24860x20,0x00,0x02,0x4e
24870xf0,0x23,0x02,0x4e
24880x20,0x40,0x02,0x4e
24890xe0,0x63,0x02,0x4e
2490# CHECK: tbl v0.16b, {v1.16b}, v2.16b
2491# CHECK: tbl v16.16b, {v31.16b, v0.16b}, v2.16b
2492# CHECK: tbl v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2493# CHECK: tbl v0.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
2494
24950x20,0x10,0x02,0x0e
24960xf0,0x33,0x02,0x0e
24970x20,0x50,0x02,0x0e
24980xf0,0x72,0x02,0x0e
2499# CHECK: tbx v0.8b, {v1.16b}, v2.8b
2500# CHECK: tbx v16.8b, {v31.16b, v0.16b}, v2.8b
2501# CHECK: tbx v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2502# CHECK: tbx v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2503
25040x20,0x10,0x02,0x4e
25050xf0,0x33,0x02,0x4e
25060x20,0x50,0x02,0x4e
25070xf0,0x73,0x02,0x4e
2508# CHECK: tbx v0.16b, {v1.16b}, v2.16b
2509# CHECK: tbx v16.16b, {v31.16b, v0.16b}, v2.16b
2510# CHECK: tbx v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2511# CHECK: tbx v16.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
2512
2513