• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llvm-mc  -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
2# RUN: llvm-mc  -triple arm64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
3
4#------------------------------------------------------------------------------
5# Vector Integer Add/Sub
6#------------------------------------------------------------------------------
7# CHECK: add v31.8b, v31.8b, v31.8b
8# CHECK: sub v0.2d, v0.2d, v0.2d
90xff 0x87 0x3f 0x0e
100x00 0x84 0xe0 0x6e
11
12#------------------------------------------------------------------------------
13# Vector Floating-Point Add/Sub
14#------------------------------------------------------------------------------
15
16# CHECK: fadd v0.4s, v0.4s, v0.4s
17# CHECK: fsub v31.2s, v31.2s, v31.2s
180x00 0xd4 0x20 0x4e
190xff 0xd7 0xbf 0x0e
20
21#------------------------------------------------------------------------------
22# Vector Integer Mul
23#------------------------------------------------------------------------------
24# CHECK: mul v0.8b, v1.8b, v2.8b
250x20 0x9c 0x22 0x0e
26
27#------------------------------------------------------------------------------
28# Vector Floating-Point Mul/Div
29#------------------------------------------------------------------------------
30# CHECK: fmul v0.2s, v1.2s, v2.2s
31# CHECK: fdiv v31.2s, v31.2s, v31.2s
320x20 0xdc 0x22 0x2e
330xff 0xff 0x3f 0x2e
34
35#----------------------------------------------------------------------
36# Vector Polynomial Multiply
37#----------------------------------------------------------------------
38# CHECK: pmul v0.8b, v15.8b, v16.8b
39# CHECK: pmul v31.16b, v7.16b, v8.16b
400xe0 0x9d 0x30 0x2e
410xff 0x9c 0x28 0x6e
42
43#------------------------------------------------------------------------------
44# Vector And, Orr, Eor, Orn, Bic
45#------------------------------------------------------------------------------
46# CHECK: and v2.8b, v2.8b, v2.8b
47# CHECK: orr v31.16b, v31.16b, v30.16b
48# CHECK: eor v0.16b, v1.16b, v2.16b
49# CHECK: orn v9.16b, v10.16b, v11.16b
50# CHECK: bic v31.8b, v30.8b, v29.8b
510x42 0x1c 0x22 0x0e
520xff 0x1f 0xbe 0x4e
530x20 0x1c 0x22 0x6e
540x49 0x1d 0xeb 0x4e
550xdf 0x1f 0x7d 0x0e
56
57#------------------------------------------------------------------------------
58# Vector Bsl, Bit, Bif
59#------------------------------------------------------------------------------
60# CHECK: bsl v0.8b, v1.8b, v2.8b
61# CHECK: bit v31.16b, v31.16b, v31.16b
62# CHECK: bif v0.16b, v1.16b, v2.16b
630x20 0x1c 0x62 0x2e
640xff 0x1f 0xbf 0x6e
650x20 0x1c 0xe2 0x6e
66
67
68#------------------------------------------------------------------------------
69# Vector Integer Multiply-accumulate and Multiply-subtract
70#------------------------------------------------------------------------------
71# CHECK: mla v0.8b, v1.8b, v2.8b
72# CHECK: mls v31.4h, v31.4h, v31.4h
730x20 0x94 0x22 0x0e
740xff 0x97 0x7f 0x2e
75
76#------------------------------------------------------------------------------
77# Vector Floating-Point Multiply-accumulate and Multiply-subtract
78#------------------------------------------------------------------------------
79# CHECK: fmla v0.2s, v1.2s, v2.2s
80# CHECK: fmls v31.2s, v31.2s, v31.2s
810x20 0xcc 0x22 0x0e
820xff 0xcf 0xbf 0x0e
83
84#------------------------------------------------------------------------------
85# Vector Move Immediate Shifted
86# Vector Move Inverted Immediate Shifted
87# Vector Bitwise Bit Clear (AND NOT) - immediate
88# Vector Bitwise OR - immedidate
89#------------------------------------------------------------------------------
90# CHECK: movi v31.4s, #255, lsl #24
91# CHECK: mvni v0.2s, #{{0x0|0}}
92# CHECK: bic v15.4h, #15, lsl #8
93# CHECK: orr v16.8h, #31
940xff 0x67 0x07 0x4f
950x00 0x04 0x00 0x2f
960xef 0xb5 0x00 0x2f
970xf0 0x97 0x00 0x4f
98
99#------------------------------------------------------------------------------
100# Vector Move Immediate Masked
101# Vector Move Inverted Immediate Masked
102#------------------------------------------------------------------------------
103# CHECK: movi v8.2s, #8, msl #8
104# CHECK: mvni v16.4s, #16, msl #16
1050x08 0xc5 0x00 0x0f
1060x10 0xd6 0x00 0x6f
107
108#------------------------------------------------------------------------------
109# Vector Immediate - per byte
110# Vector Move Immediate - bytemask, per doubleword
111# Vector Move Immediate - bytemask, one doubleword
112#------------------------------------------------------------------------------
113# CHECK: movi v16.8b, #255
114# CHECK: movi v31.16b, #31
115# CHECK: movi d15, #0xff00ff00ff00ff
116# CHECK: movi v31.2d, #0xff0000ff0000ffff
1170xf0 0xe7 0x07 0x0f
1180xff 0xe7 0x00 0x4f
1190xaf 0xe6 0x02 0x2f
1200x7f 0xe6 0x04 0x6f
121
122#------------------------------------------------------------------------------
123# Vector Floating Point Move Immediate
124#------------------------------------------------------------------------------
125# CHECK: fmov v0.2s, #13.0
126# CHECK: fmov v15.4s, #1.0
127# CHECK: fmov v31.2d, #-1.25
1280x40 0xf5 0x01 0x0f
1290x0f 0xf6 0x03 0x4f
1300x9f 0xf6 0x07 0x6f
131
132#------------------------------------------------------------------------------
133# Vector Move - register
134#------------------------------------------------------------------------------
135
136# CHECK: mov v1.16b, v15.16b
137# CHECK: mov v25.8b, v4.8b
1380xe1 0x1d 0xaf 0x4e
1390x99 0x1c 0xa4 0x0e
140
141#----------------------------------------------------------------------
142# Vector Absolute Difference and Accumulate (Signed, Unsigned)
143# Vector Absolute Difference (Signed, Unsigned)
144# Vector Absolute Difference (Floating Point)
145#----------------------------------------------------------------------
146
147# CHECK: uaba v0.8b, v1.8b, v2.8b
148# CHECK: saba v31.16b, v30.16b, v29.16b
149# CHECK: uabd v15.4h, v16.4h, v17.4h
150# CHECK: sabd v5.4h, v4.4h, v6.4h
151# CHECK: fabd v1.4s, v31.4s, v16.4s
1520x20 0x7c 0x22 0x2e
1530xdf 0x7f 0x3d 0x4e
1540x0f 0x76 0x71 0x2e
1550x85 0x74 0x66 0x0e
1560xe1 0xd7 0xb0 0x6e
157
158#----------------------------------------------------------------------
159# Scalar Integer Add
160# Scalar Integer Sub
161#----------------------------------------------------------------------
162
163# CHECK: add d17, d31, d29
164# CHECK: sub d15, d5, d16
1650xf1 0x87 0xfd 0x5e
1660xaf 0x84 0xf0 0x7e
167
168#----------------------------------------------------------------------
169# Vector Reciprocal Square Root Step (Floating Point)
170#----------------------------------------------------------------------
171# CHECK: frsqrts v31.2d, v15.2d, v8.2d
1720xff 0xfd 0xe8 0x4e
173
174#----------------------------------------------------------------------
175# Vector Reciprocal Step (Floating Point)
176#----------------------------------------------------------------------
177# CHECK: frecps  v5.4s, v7.4s, v16.4s
1780xe5 0xfc 0x30 0x4e
179
180#----------------------------------------------------------------------
181# Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
182#----------------------------------------------------------------------
183# CHECK: facge v0.4s, v31.4s, v16.4s
1840xe0 0xef 0x30 0x6e
185
186#----------------------------------------------------------------------
187# Vector Absolute Compare Mask Less Than (Floating Point)
188#----------------------------------------------------------------------
189# CHECK: facgt v31.2d, v29.2d, v28.2d
1900xbf 0xef 0xfc 0x6e
191
192#----------------------------------------------------------------------
193# Vector Compare Mask Equal (Integer)
194#----------------------------------------------------------------------
195# CHECK: cmeq v5.16b, v15.16b, v31.16b
1960xe5 0x8d 0x3f 0x6e
197
198#----------------------------------------------------------------------
199# Vector Compare Mask Higher or Same (Unsigned Integer)
200#----------------------------------------------------------------------
201# CHECK: cmhs v1.8b, v16.8b, v30.8b
2020x01 0x3e 0x3e 0x2e
203
204#----------------------------------------------------------------------
205# Vector Compare Mask Greater Than or Equal (Integer)
206#----------------------------------------------------------------------
207# CHECK: cmge v20.4h, v11.4h, v23.4h
2080x74 0x3d 0x77 0x0e
209
210#----------------------------------------------------------------------
211# Vector Compare Mask Higher (Unsigned Integer)
212# CHECK: cmhi v13.8h, v3.8h, v27.8h
2130x6d 0x34 0x7b 0x6e
214
215#----------------------------------------------------------------------
216# Vector Compare Mask Greater Than (Integer)
217#----------------------------------------------------------------------
218# CHECK: cmgt v9.4s, v4.4s, v28.4s
2190x89 0x34 0xbc 0x4e
220
221#----------------------------------------------------------------------
222# Vector Compare Mask Bitwise Test (Integer)
223#----------------------------------------------------------------------
224# CHECK: cmtst v21.2s, v19.2s, v18.2s
2250x75 0x8e 0xb2 0x0e
226
227#----------------------------------------------------------------------
228# Vector Compare Mask Equal (Floating Point)
229#----------------------------------------------------------------------
230# CHECK: fcmeq v0.2s, v15.2s, v16.2s
2310xe0 0xe5 0x30 0x0e
232
233#----------------------------------------------------------------------
234# Vector Compare Mask Greater Than Or Equal (Floating Point)
235#----------------------------------------------------------------------
236# CHECK: fcmge v31.4s, v7.4s, v29.4s
2370xff 0xe4 0x3d 0x6e
238
239#----------------------------------------------------------------------
240# Vector Compare Mask Greater Than (Floating Point)
241#----------------------------------------------------------------------
242# CHECK: fcmgt v17.4s, v8.4s, v25.4s
2430x11 0xe5 0xb9 0x6e
244
245#----------------------------------------------------------------------
246# Vector Compare Mask Equal to Zero (Integer)
247#----------------------------------------------------------------------
248# CHECK: cmeq v31.16b, v15.16b, #{{0x0|0}}
2490xff 0x99 0x20 0x4e
250
251#----------------------------------------------------------------------
252# Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
253#----------------------------------------------------------------------
254# CHECK: cmge v3.8b, v15.8b, #{{0x0|0}}
2550xe3 0x89 0x20 0x2e
256
257#----------------------------------------------------------------------
258# Vector Compare Mask Greater Than Zero (Signed Integer)
259#----------------------------------------------------------------------
260# CHECK: cmgt v22.2s, v9.2s, #{{0x0|0}}
2610x36 0x89 0xa0 0x0e
262
263#----------------------------------------------------------------------
264# Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
265#----------------------------------------------------------------------
266# CHECK: cmle v5.2d, v14.2d, #{{0x0|0}}
2670xc5 0x99 0xe0 0x6e
268
269#----------------------------------------------------------------------
270# Vector Compare Mask Less Than Zero (Signed Integer)
271#----------------------------------------------------------------------
272# CHECK: cmlt v13.8h, v11.8h, #{{0x0|0}}
2730x6d 0xa9 0x60 0x4e
274
275#----------------------------------------------------------------------
276# Vector Compare Mask Equal to Zero (Floating Point)
277#----------------------------------------------------------------------
278# CHECK: fcmeq v15.2s, v21.2s, #0.0
2790xaf 0xda 0xa0 0x0e
280
281#----------------------------------------------------------------------
282# Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
283#----------------------------------------------------------------------
284# CHECK: fcmge v14.2d, v13.2d, #0.0
2850xae 0xc9 0xe0 0x6e
286
287#----------------------------------------------------------------------
288# Vector Compare Mask Greater Than Zero (Floating Point)
289#----------------------------------------------------------------------
290# CHECK: fcmgt v9.4s, v23.4s, #0.0
2910xe9 0xca 0xa0 0x4e
292
293#----------------------------------------------------------------------
294# Vector Compare Mask Less Than or Equal To Zero (Floating Point)
295#----------------------------------------------------------------------
296# CHECK: fcmle v11.2d, v6.2d, #0.0
2970xcb 0xd8 0xe0 0x6e
298
299#----------------------------------------------------------------------
300# Vector Compare Mask Less Than Zero (Floating Point)
301#----------------------------------------------------------------------
302# CHECK: fcmlt v12.4s, v25.4s, #0.0
3030x2c 0xeb 0xa0 0x4e
304
305
306#------------------------------------------------------------------------------
307# Vector Integer Halving Add (Signed)
308# Vector Integer Halving Add (Unsigned)
309# Vector Integer Halving Sub (Signed)
310# Vector Integer Halving Sub (Unsigned)
311#------------------------------------------------------------------------------
312# CHECK: shadd v0.8b, v31.8b, v29.8b
313# CHECK: uhadd v15.16b, v16.16b, v17.16b
314# CHECK: shsub v0.4h, v1.4h, v2.4h
315# CHECK: uhadd v5.8h, v7.8h, v8.8h
316# CHECK: shsub v9.2s, v11.2s, v21.2s
317# CHECK: uhsub v22.4s, v30.4s, v19.4s
3180xe0 0x07 0x3d 0x0e
3190x0f 0x06 0x31 0x6e
3200x20 0x24 0x62 0x0e
3210xe5 0x04 0x68 0x6e
3220x69 0x25 0xb5 0x0e
3230xd6 0x27 0xb3 0x6e
324
325#------------------------------------------------------------------------------
326# Vector Integer Rouding Halving Add (Signed)
327# Vector Integer Rouding Halving Add (Unsigned)
328#------------------------------------------------------------------------------
329# CHECK: srhadd v3.8b, v5.8b, v7.8b
330# CHECK: urhadd v7.16b, v17.16b, v27.16b
331# CHECK: srhadd v10.4h, v11.4h, v13.4h
332# CHECK: urhadd v1.8h, v2.8h, v3.8h
333# CHECK: srhadd v4.2s, v5.2s, v6.2s
334# CHECK: urhadd v7.4s, v7.4s, v7.4s
3350xa3 0x14 0x27 0x0e
3360x27 0x16 0x3b 0x6e
3370x6a 0x15 0x6d 0x0e
3380x41 0x14 0x63 0x6e
3390xa4 0x14 0xa6 0x0e
3400xe7 0x14 0xa7 0x6e
341
342#------------------------------------------------------------------------------
343# Vector Integer Saturating Add (Signed)
344# Vector Integer Saturating Add (Unsigned)
345# Vector Integer Saturating Sub (Signed)
346# Vector Integer Saturating Sub (Unsigned)
347#------------------------------------------------------------------------------
348# CHECK: sqsub v0.8b, v1.8b, v2.8b
349# CHECK: sqadd v0.16b, v1.16b, v2.16b
350# CHECK: uqsub v0.4h, v1.4h, v2.4h
351# CHECK: uqadd v0.8h, v1.8h, v2.8h
352# CHECK: sqadd v0.2s, v1.2s, v2.2s
353# CHECK: sqsub v0.4s, v1.4s, v2.4s
354# CHECK: sqsub v0.2d, v1.2d, v2.2d
3550x20 0x2c 0x22 0x0e
3560x20 0x0c 0x22 0x4e
3570x20 0x2c 0x62 0x2e
3580x20 0x0c 0x62 0x6e
3590x20 0x0c 0xa2 0x0e
3600x20 0x2c 0xa2 0x4e
3610x20 0x2c 0xe2 0x4e
362
363#------------------------------------------------------------------------------
364# Scalar Integer Saturating Add (Signed)
365# Scalar Integer Saturating Add (Unsigned)
366# Scalar Integer Saturating Sub (Signed)
367# Scalar Integer Saturating Add (Unsigned)
368#------------------------------------------------------------------------------
369# CHECK: sqadd b20, b11, b15
370# CHECK: uqadd h0, h1, h5
371# CHECK: sqsub s20, s10, s7
372# CHECK: uqsub d16, d16, d16
3730x74 0x0d 0x2f 0x5e
3740x20 0x0c 0x65 0x7e
3750x54 0x2d 0xa7 0x5e
3760x10 0x2e 0xf0 0x7e
377
378
379#----------------------------------------------------------------------
380# Vector Shift Left (Signed and Unsigned Integer)
381#----------------------------------------------------------------------
382# CHECK: sshl v10.8b, v15.8b, v22.8b
383# CHECK: ushl v10.16b, v5.16b, v2.16b
384# CHECK: sshl v10.4h, v15.4h, v22.4h
385# CHECK: ushl v10.8h, v5.8h, v2.8h
386# CHECK: sshl v10.2s, v15.2s, v22.2s
387# CHECK: ushl v10.4s, v5.4s, v2.4s
388# CHECK: sshl v0.2d, v1.2d, v2.2d
3890xea 0x45 0x36 0x0e
3900xaa 0x44 0x22 0x6e
3910xea 0x45 0x76 0x0e
3920xaa 0x44 0x62 0x6e
3930xea 0x45 0xb6 0x0e
3940xaa 0x44 0xa2 0x6e
3950x20 0x44 0xe2 0x4e
396
397#----------------------------------------------------------------------
398# Vector Saturating Shift Left (Signed and Unsigned Integer)
399#----------------------------------------------------------------------
400# CHECK: sqshl v1.8b, v15.8b, v22.8b
401# CHECK: uqshl v2.16b, v14.16b, v23.16b
402# CHECK: sqshl v3.4h, v13.4h, v24.4h
403# CHECK: uqshl v4.8h, v12.8h, v25.8h
404# CHECK: sqshl v5.2s, v11.2s, v26.2s
405# CHECK: uqshl v6.4s, v10.4s, v27.4s
406# CHECK: uqshl v0.2d, v1.2d, v2.2d
4070xe1 0x4d 0x36 0x0e
4080xc2 0x4d 0x37 0x6e
4090xa3 0x4d 0x78 0x0e
4100x84 0x4d 0x79 0x6e
4110x65 0x4d 0xba 0x0e
4120x46 0x4d 0xbb 0x6e
4130x20 0x4c 0xe2 0x6e
414
415#----------------------------------------------------------------------
416# Vector Rouding Shift Left (Signed and Unsigned Integer)
417#----------------------------------------------------------------------
418# CHECK: srshl v10.8b, v5.8b, v22.8b
419# CHECK: urshl v10.16b, v5.16b, v2.16b
420# CHECK: srshl v1.4h, v5.4h, v31.4h
421# CHECK: urshl v1.8h, v5.8h, v2.8h
422# CHECK: srshl v10.2s, v15.2s, v2.2s
423# CHECK: urshl v1.4s, v5.4s, v2.4s
424# CHECK: urshl v0.2d, v1.2d, v2.2d
4250xaa 0x54 0x36 0x0e
4260xaa 0x54 0x22 0x6e
4270xa1 0x54 0x7f 0x0e
4280xa1 0x54 0x62 0x6e
4290xea 0x55 0xa2 0x0e
4300xa1 0x54 0xa2 0x6e
4310x20 0x54 0xe2 0x6e
432
433#----------------------------------------------------------------------
434# Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
435#----------------------------------------------------------------------
436# CHECK: sqrshl v1.8b, v15.8b, v22.8b
437# CHECK: uqrshl v2.16b, v14.16b, v23.16b
438# CHECK: sqrshl v3.4h, v13.4h, v24.4h
439# CHECK: uqrshl v4.8h, v12.8h, v25.8h
440# CHECK: sqrshl v5.2s, v11.2s, v26.2s
441# CHECK: uqrshl v6.4s, v10.4s, v27.4s
442# CHECK: uqrshl v6.4s, v10.4s, v27.4s
4430xe1 0x5d 0x36 0x0e
4440xc2 0x5d 0x37 0x6e
4450xa3 0x5d 0x78 0x0e
4460x84 0x5d 0x79 0x6e
4470x65 0x5d 0xba 0x0e
4480x46 0x5d 0xbb 0x6e
4490x46 0x5d 0xbb 0x6e
450
451#----------------------------------------------------------------------
452# Scalar Integer Shift Left (Signed, Unsigned)
453#----------------------------------------------------------------------
454# CHECK: sshl d31, d31, d31
455# CHECK: ushl d0, d0, d0
4560xff 0x47 0xff 0x5e
4570x00 0x44 0xe0 0x7e
458
459#----------------------------------------------------------------------
460# Scalar Integer Saturating Shift Left (Signed, Unsigned)
461#----------------------------------------------------------------------
462# CHECK: sqshl d31, d31, d31
463# CHECK: uqshl s23, s20, s16
464# CHECK: sqshl h3, h4, h15
465# CHECK: uqshl b11, b20, b30
4660xff 0x4f 0xff 0x5e
4670x97 0x4e 0xb0 0x7e
4680x83 0x4c 0x6f 0x5e
4690x8b 0x4e 0x3e 0x7e
470
471#----------------------------------------------------------------------
472# Scalar Integer Rouding Shift Left (Signed, Unsigned)
473#----------------------------------------------------------------------
474# CHECK: srshl d16, d16, d16
475# CHECK: urshl d8, d7, d4
4760x10 0x56 0xf0 0x5e
4770xe8 0x54 0xe4 0x7e
478
479#----------------------------------------------------------------------
480# Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
481#----------------------------------------------------------------------
482# CHECK: sqrshl d31, d31, d31
483# CHECK: uqrshl s23, s20, s16
484# CHECK: sqrshl h3, h4, h15
485# CHECK: uqrshl b11, b20, b30
4860xff 0x5f 0xff 0x5e
4870x97 0x5e 0xb0 0x7e
4880x83 0x5c 0x6f 0x5e
4890x8b 0x5e 0x3e 0x7e
490
491#----------------------------------------------------------------------
492# Vector Maximum (Signed and Unsigned Integer)
493#----------------------------------------------------------------------
494# CHECK: smax v1.8b, v15.8b, v22.8b
495# CHECK: umax v2.16b, v14.16b, v23.16b
496# CHECK: smax v3.4h, v13.4h, v24.4h
497# CHECK: umax v4.8h, v12.8h, v25.8h
498# CHECK: smax v5.2s, v11.2s, v26.2s
499# CHECK: umax v6.4s, v10.4s, v27.4s
5000xe1 0x65 0x36 0x0e
5010xc2 0x65 0x37 0x6e
5020xa3 0x65 0x78 0x0e
5030x84 0x65 0x79 0x6e
5040x65 0x65 0xba 0x0e
5050x46 0x65 0xbb 0x6e
506
507#----------------------------------------------------------------------
508# Vector Minimum (Signed and Unsigned Integer)
509#----------------------------------------------------------------------
510# CHECK: umin v1.8b, v15.8b, v22.8b
511# CHECK: smin v2.16b, v14.16b, v23.16b
512# CHECK: umin v3.4h, v13.4h, v24.4h
513# CHECK: smin v4.8h, v12.8h, v25.8h
514# CHECK: umin v5.2s, v11.2s, v26.2s
515# CHECK: smin v6.4s, v10.4s, v27.4s
5160xe1 0x6d 0x36 0x2e
5170xc2 0x6d 0x37 0x4e
5180xa3 0x6d 0x78 0x2e
5190x84 0x6d 0x79 0x4e
5200x65 0x6d 0xba 0x2e
5210x46 0x6d 0xbb 0x4e
522
523#----------------------------------------------------------------------
524# Vector Maximum (Floating Point)
525#----------------------------------------------------------------------
526# CHECK: fmax v29.2s, v28.2s, v25.2s
527# CHECK: fmax v9.4s, v8.4s, v5.4s
528# CHECK: fmax v11.2d, v10.2d, v7.2d
5290x9d 0xf7 0x39 0x0e
5300x09 0xf5 0x25 0x4e
5310x4b 0xf5 0x67 0x4e
532
533#----------------------------------------------------------------------
534# Vector Minimum (Floating Point)
535#----------------------------------------------------------------------
536# CHECK: fmin v29.2s, v28.2s, v25.2s
537# CHECK: fmin v9.4s, v8.4s, v5.4s
538# CHECK: fmin v11.2d, v10.2d, v7.2d
5390x9d 0xf7 0xb9 0x0e
5400x09 0xf5 0xa5 0x4e
5410x4b 0xf5 0xe7 0x4e
542
543#----------------------------------------------------------------------
544# Vector maxNum (Floating Point)
545#----------------------------------------------------------------------
546# CHECK: fmaxnm v9.2s, v8.2s, v5.2s
547# CHECK: fmaxnm v9.4s, v8.4s, v5.4s
548# CHECK: fmaxnm v11.2d, v10.2d, v7.2d
5490x09 0xc5 0x25 0x0e
5500x09 0xc5 0x25 0x4e
5510x4b 0xc5 0x67 0x4e
552
553#----------------------------------------------------------------------
554# Vector minNum (Floating Point)
555#----------------------------------------------------------------------
556# CHECK: fminnm v2.2s, v8.2s, v25.2s
557# CHECK: fminnm v9.4s, v8.4s, v5.4s
558# CHECK: fminnm v11.2d, v10.2d, v7.2d
5590x02 0xc5 0xb9 0x0e
5600x09 0xc5 0xa5 0x4e
5610x4b 0xc5 0xe7 0x4e
562
563
564#----------------------------------------------------------------------
565# Vector Maximum Pairwise (Signed and Unsigned Integer)
566#----------------------------------------------------------------------
567# CHECK: smaxp v1.8b, v15.8b, v22.8b
568# CHECK: umaxp v2.16b, v14.16b, v23.16b
569# CHECK: smaxp v3.4h, v13.4h, v24.4h
570# CHECK: umaxp v4.8h, v12.8h, v25.8h
571# CHECK: smaxp v5.2s, v11.2s, v26.2s
572# CHECK: umaxp v6.4s, v10.4s, v27.4s
5730xe1 0xa5 0x36 0x0e
5740xc2 0xa5 0x37 0x6e
5750xa3 0xa5 0x78 0x0e
5760x84 0xa5 0x79 0x6e
5770x65 0xa5 0xba 0x0e
5780x46 0xa5 0xbb 0x6e
579
580#----------------------------------------------------------------------
581# Vector Minimum Pairwise (Signed and Unsigned Integer)
582#----------------------------------------------------------------------
583# CHECK: uminp v1.8b, v15.8b, v22.8b
584# CHECK: sminp v2.16b, v14.16b, v23.16b
585# CHECK: uminp v3.4h, v13.4h, v24.4h
586# CHECK: sminp v4.8h, v12.8h, v25.8h
587# CHECK: uminp v5.2s, v11.2s, v26.2s
588# CHECK: sminp v6.4s, v10.4s, v27.4s
5890xe1 0xad 0x36 0x2e
5900xc2 0xad 0x37 0x4e
5910xa3 0xad 0x78 0x2e
5920x84 0xad 0x79 0x4e
5930x65 0xad 0xba 0x2e
5940x46 0xad 0xbb 0x4e
595
596#----------------------------------------------------------------------
597# Vector Maximum Pairwise (Floating Point)
598#----------------------------------------------------------------------
599# CHECK: fmaxp v29.2s, v28.2s, v25.2s
600# CHECK: fmaxp v9.4s, v8.4s, v5.4s
601# CHECK: fmaxp v11.2d, v10.2d, v7.2d
6020x9d 0xf7 0x39 0x2e
6030x09 0xf5 0x25 0x6e
6040x4b 0xf5 0x67 0x6e
605
606#----------------------------------------------------------------------
607# Vector Minimum Pairwise (Floating Point)
608#----------------------------------------------------------------------
609# CHECK: fminp v29.2s, v28.2s, v25.2s
610# CHECK: fminp v9.4s, v8.4s, v5.4s
611# CHECK: fminp v11.2d, v10.2d, v7.2d
6120x9d 0xf7 0xb9 0x2e
6130x09 0xf5 0xa5 0x6e
6140x4b 0xf5 0xe7 0x6e
615
616#----------------------------------------------------------------------
617# Vector maxNum Pairwise (Floating Point)
618#----------------------------------------------------------------------
619# CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
620# CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
621# CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
6220x09 0xc5 0x25 0x2e
6230x09 0xc5 0x25 0x6e
6240x4b 0xc5 0x67 0x6e
625
626#----------------------------------------------------------------------
627# Vector minNum Pairwise (Floating Point)
628#----------------------------------------------------------------------
629# CHECK: fminnmp v2.2s, v8.2s, v25.2s
630# CHECK: fminnmp v9.4s, v8.4s, v5.4s
631# CHECK: fminnmp v11.2d, v10.2d, v7.2d
6320x02 0xc5 0xb9 0x2e
6330x09 0xc5 0xa5 0x6e
6340x4b 0xc5 0xe7 0x6e
635
636#------------------------------------------------------------------------------
637# Vector Add Pairwise (Integer)
638#------------------------------------------------------------------------------
639# CHECK: addp v31.8b, v31.8b, v31.8b
640# CHECK: addp v0.2d, v0.2d, v0.2d
6410xff 0xbf 0x3f 0x0e
6420x00 0xbc 0xe0 0x4e
643
644#------------------------------------------------------------------------------
645# Vector Add Pairwise (Floating Point)
646#------------------------------------------------------------------------------
647# CHECK: faddp v0.4s, v0.4s, v0.4s
648# CHECK: faddp v31.2s, v31.2s, v31.2s
6490x00 0xd4 0x20 0x6e
6500xff 0xd7 0x3f 0x2e
651
652
653#------------------------------------------------------------------------------
654# Vector Saturating Doubling Multiply High
655# Vector Saturating Rouding Doubling Multiply High
656#------------------------------------------------------------------------------
657# CHECK: sqdmulh v31.2s, v31.2s, v31.2s
658# CHECK: sqdmulh v5.4s, v7.4s, v9.4s
659# CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
660# CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
6610xff 0xb7 0xbf 0x0e
6620xe5 0xb4 0xa9 0x4e
6630x7f 0xb4 0x6d 0x2e
6640x40 0xb5 0x74 0x6e
665
666#------------------------------------------------------------------------------
667# Vector Multiply Extended
668#------------------------------------------------------------------------------
669# CHECK: fmulx v1.2s, v22.2s, v2.2s
670# CHECK: fmulx v21.4s, v15.4s, v3.4s
671# CHECK: fmulx v11.2d, v5.2d, v23.2d
6720xc1 0xde 0x22 0x0e
6730xf5 0xdd 0x23 0x4e
6740xab 0xdc 0x77 0x4e
675
676#----------------------------------------------------------------------
677# Vector Shift Left long
678#----------------------------------------------------------------------
679# CHECK: shll2	v2.8h, v4.16b, #8
680# CHECK: shll2	v6.4s, v8.8h, #16
681# CHECK: shll2	v6.2d, v8.4s, #32
682# CHECK: shll	v2.8h, v4.8b, #8
683# CHECK: shll	v6.4s, v8.4h, #16
684# CHECK: shll	v6.2d, v8.2s, #32
685
6860x82,0x38,0x21,0x6e
6870x06,0x39,0x61,0x6e
6880x06,0x39,0xa1,0x6e
6890x82,0x38,0x21,0x2e
6900x06,0x39,0x61,0x2e
6910x06,0x39,0xa1,0x2e
692
693#----------------------------------------------------------------------
694# Vector Shift Left by Immediate
695#----------------------------------------------------------------------
696# CHECK: shl v0.4h, v1.4h, #3
697# CHECK: shl v0.16b, v1.16b, #3
698# CHECK: shl v0.4s, v1.4s, #3
699# CHECK: shl v0.2d, v1.2d, #3
7000x20,0x54,0x13,0x0f
7010x20,0x54,0x0b,0x4f
7020x20,0x54,0x23,0x4f
7030x20,0x54,0x43,0x4f
704
705#----------------------------------------------------------------------
706# Vector Shift Left Long (Signed, Unsigned) by Immediate
707#----------------------------------------------------------------------
708# CHECK: sshll v0.2d, v1.2s, #3
709# CHECK: sshll2 v0.4s, v1.8h, #3
710# CHECK: ushll v0.4s, v1.4h, #3
711# CHECK: ushll2 v0.8h, v1.16b, #3
7120x20 0xa4 0x23 0x0f
7130x20 0xa4 0x13 0x4f
7140x20 0xa4 0x13 0x2f
7150x20 0xa4 0x0b 0x6f
716
717#-----------------------------------------------------------------------------
718#Integer shift right (Signed)
719#-----------------------------------------------------------------------------
720# CHECK: sshr v0.8b, v1.8b, #3
721# CHECK: sshr v0.4h, v1.4h, #3
722# CHECK: sshr v0.2s, v1.2s, #3
723# CHECK: sshr v0.16b, v1.16b, #3
724# CHECK: sshr v0.8h, v1.8h, #3
725# CHECK: sshr v0.4s, v1.4s, #3
726# CHECK: sshr v0.2d, v1.2d, #3
7270x20,0x04,0x0d,0x0f
7280x20,0x04,0x1d,0x0f
7290x20,0x04,0x3d,0x0f
7300x20,0x04,0x0d,0x4f
7310x20,0x04,0x1d,0x4f
7320x20,0x04,0x3d,0x4f
7330x20,0x04,0x7d,0x4f
734
735#-----------------------------------------------------------------------------
736#Integer shift right (Unsigned)
737#-----------------------------------------------------------------------------
738# CHECK: ushr v0.8b, v1.8b, #3
739# CHECK: ushr v0.4h, v1.4h, #3
740# CHECK: ushr v0.2s, v1.2s, #3
741# CHECK: ushr v0.16b, v1.16b, #3
742# CHECK: ushr v0.8h, v1.8h, #3
743# CHECK: ushr v0.4s, v1.4s, #3
744# CHECK: ushr v0.2d, v1.2d, #3
7450x20,0x04,0x0d,0x2f
7460x20,0x04,0x1d,0x2f
7470x20,0x04,0x3d,0x2f
7480x20,0x04,0x0d,0x6f
7490x20,0x04,0x1d,0x6f
7500x20,0x04,0x3d,0x6f
7510x20,0x04,0x7d,0x6f
752
753#-----------------------------------------------------------------------------
754#Integer shift right and accumulate (Signed)
755#-----------------------------------------------------------------------------
756# CHECK: ssra v0.8b, v1.8b, #3
757# CHECK: ssra v0.4h, v1.4h, #3
758# CHECK: ssra v0.2s, v1.2s, #3
759# CHECK: ssra v0.16b, v1.16b, #3
760# CHECK: ssra v0.8h, v1.8h, #3
761# CHECK: ssra v0.4s, v1.4s, #3
762# CHECK: ssra v0.2d, v1.2d, #3
7630x20,0x14,0x0d,0x0f
7640x20,0x14,0x1d,0x0f
7650x20,0x14,0x3d,0x0f
7660x20,0x14,0x0d,0x4f
7670x20,0x14,0x1d,0x4f
7680x20,0x14,0x3d,0x4f
7690x20,0x14,0x7d,0x4f
770
771#-----------------------------------------------------------------------------
772#Integer shift right and accumulate (Unsigned)
773#-----------------------------------------------------------------------------
774# CHECK: usra v0.8b, v1.8b, #3
775# CHECK: usra v0.4h, v1.4h, #3
776# CHECK: usra v0.2s, v1.2s, #3
777# CHECK: usra v0.16b, v1.16b, #3
778# CHECK: usra v0.8h, v1.8h, #3
779# CHECK: usra v0.4s, v1.4s, #3
780# CHECK: usra v0.2d, v1.2d, #3
7810x20,0x14,0x0d,0x2f
7820x20,0x14,0x1d,0x2f
7830x20,0x14,0x3d,0x2f
7840x20,0x14,0x0d,0x6f
7850x20,0x14,0x1d,0x6f
7860x20,0x14,0x3d,0x6f
7870x20,0x14,0x7d,0x6f
788
789#-----------------------------------------------------------------------------
790#Integer rounding shift right (Signed)
791#-----------------------------------------------------------------------------
792# CHECK: srshr v0.8b, v1.8b, #3
793# CHECK: srshr v0.4h, v1.4h, #3
794# CHECK: srshr v0.2s, v1.2s, #3
795# CHECK: srshr v0.16b, v1.16b, #3
796# CHECK: srshr v0.8h, v1.8h, #3
797# CHECK: srshr v0.4s, v1.4s, #3
798# CHECK: srshr v0.2d, v1.2d, #3
7990x20,0x24,0x0d,0x0f
8000x20,0x24,0x1d,0x0f
8010x20,0x24,0x3d,0x0f
8020x20,0x24,0x0d,0x4f
8030x20,0x24,0x1d,0x4f
8040x20,0x24,0x3d,0x4f
8050x20,0x24,0x7d,0x4f
806
807#-----------------------------------------------------------------------------
808#Integer rounding shift right (Unsigned)
809#-----------------------------------------------------------------------------
810# CHECK: urshr v0.8b, v1.8b, #3
811# CHECK: urshr v0.4h, v1.4h, #3
812# CHECK: urshr v0.2s, v1.2s, #3
813# CHECK: urshr v0.16b, v1.16b, #3
814# CHECK: urshr v0.8h, v1.8h, #3
815# CHECK: urshr v0.4s, v1.4s, #3
816# CHECK: urshr v0.2d, v1.2d, #3
8170x20,0x24,0x0d,0x2f
8180x20,0x24,0x1d,0x2f
8190x20,0x24,0x3d,0x2f
8200x20,0x24,0x0d,0x6f
8210x20,0x24,0x1d,0x6f
8220x20,0x24,0x3d,0x6f
8230x20,0x24,0x7d,0x6f
824
825#-----------------------------------------------------------------------------
826#Integer rounding shift right and accumulate (Signed)
827#-----------------------------------------------------------------------------
828# CHECK: srsra v0.8b, v1.8b, #3
829# CHECK: srsra v0.4h, v1.4h, #3
830# CHECK: srsra v0.2s, v1.2s, #3
831# CHECK: srsra v0.16b, v1.16b, #3
832# CHECK: srsra v0.8h, v1.8h, #3
833# CHECK: srsra v0.4s, v1.4s, #3
834# CHECK: srsra v0.2d, v1.2d, #3
8350x20,0x34,0x0d,0x0f
8360x20,0x34,0x1d,0x0f
8370x20,0x34,0x3d,0x0f
8380x20,0x34,0x0d,0x4f
8390x20,0x34,0x1d,0x4f
8400x20,0x34,0x3d,0x4f
8410x20,0x34,0x7d,0x4f
842
843#-----------------------------------------------------------------------------
844#Integer rounding shift right and accumulate (Unsigned)
845#-----------------------------------------------------------------------------
846# CHECK: ursra v0.8b, v1.8b, #3
847# CHECK: ursra v0.4h, v1.4h, #3
848# CHECK: ursra v0.2s, v1.2s, #3
849# CHECK: ursra v0.16b, v1.16b, #3
850# CHECK: ursra v0.8h, v1.8h, #3
851# CHECK: ursra v0.4s, v1.4s, #3
852# CHECK: ursra v0.2d, v1.2d, #3
8530x20,0x34,0x0d,0x2f
8540x20,0x34,0x1d,0x2f
8550x20,0x34,0x3d,0x2f
8560x20,0x34,0x0d,0x6f
8570x20,0x34,0x1d,0x6f
8580x20,0x34,0x3d,0x6f
8590x20,0x34,0x7d,0x6f
860
861#-----------------------------------------------------------------------------
862#Integer shift right and insert
863#-----------------------------------------------------------------------------
864# CHECK: sri v0.8b, v1.8b, #3
865# CHECK: sri v0.4h, v1.4h, #3
866# CHECK: sri v0.2s, v1.2s, #3
867# CHECK: sri v0.16b, v1.16b, #3
868# CHECK: sri v0.8h, v1.8h, #3
869# CHECK: sri v0.4s, v1.4s, #3
870# CHECK: sri v0.2d, v1.2d, #3
8710x20,0x44,0x0d,0x2f
8720x20,0x44,0x1d,0x2f
8730x20,0x44,0x3d,0x2f
8740x20,0x44,0x0d,0x6f
8750x20,0x44,0x1d,0x6f
8760x20,0x44,0x3d,0x6f
8770x20,0x44,0x7d,0x6f
878
879#-----------------------------------------------------------------------------
880#Integer shift left and insert
881#-----------------------------------------------------------------------------
882# CHECK: sli v0.8b, v1.8b, #3
883# CHECK: sli v0.4h, v1.4h, #3
884# CHECK: sli v0.2s, v1.2s, #3
885# CHECK: sli v0.16b, v1.16b, #3
886# CHECK: sli v0.8h, v1.8h, #3
887# CHECK: sli v0.4s, v1.4s, #3
888# CHECK: sli v0.2d, v1.2d, #3
8890x20,0x54,0x0b,0x2f
8900x20,0x54,0x13,0x2f
8910x20,0x54,0x23,0x2f
8920x20,0x54,0x0b,0x6f
8930x20,0x54,0x13,0x6f
8940x20,0x54,0x23,0x6f
8950x20,0x54,0x43,0x6f
896
897#-----------------------------------------------------------------------------
898#Integer saturating shift left unsigned
899#-----------------------------------------------------------------------------
900# CHECK: sqshlu v0.8b, v1.8b, #3
901# CHECK: sqshlu v0.4h, v1.4h, #3
902# CHECK: sqshlu v0.2s, v1.2s, #3
903# CHECK: sqshlu v0.16b, v1.16b, #3
904# CHECK: sqshlu v0.8h, v1.8h, #3
905# CHECK: sqshlu v0.4s, v1.4s, #3
906# CHECK: sqshlu v0.2d, v1.2d, #3
9070x20,0x64,0x0b,0x2f
9080x20,0x64,0x13,0x2f
9090x20,0x64,0x23,0x2f
9100x20,0x64,0x0b,0x6f
9110x20,0x64,0x13,0x6f
9120x20,0x64,0x23,0x6f
9130x20,0x64,0x43,0x6f
914
915#-----------------------------------------------------------------------------
916#Integer saturating shift left (Signed)
917#-----------------------------------------------------------------------------
918# CHECK: sqshl v0.8b, v1.8b, #3
919# CHECK: sqshl v0.4h, v1.4h, #3
920# CHECK: sqshl v0.2s, v1.2s, #3
921# CHECK: sqshl v0.16b, v1.16b, #3
922# CHECK: sqshl v0.8h, v1.8h, #3
923# CHECK: sqshl v0.4s, v1.4s, #3
924# CHECK: sqshl v0.2d, v1.2d, #3
9250x20,0x74,0x0b,0x0f
9260x20,0x74,0x13,0x0f
9270x20,0x74,0x23,0x0f
9280x20,0x74,0x0b,0x4f
9290x20,0x74,0x13,0x4f
9300x20,0x74,0x23,0x4f
9310x20,0x74,0x43,0x4f
932
933#-----------------------------------------------------------------------------
934#Integer saturating shift left (Unsigned)
935#-----------------------------------------------------------------------------
936# CHECK: uqshl v0.8b, v1.8b, #3
937# CHECK: uqshl v0.4h, v1.4h, #3
938# CHECK: uqshl v0.2s, v1.2s, #3
939# CHECK: uqshl v0.16b, v1.16b, #3
940# CHECK: uqshl v0.8h, v1.8h, #3
941# CHECK: uqshl v0.4s, v1.4s, #3
942# CHECK: uqshl v0.2d, v1.2d, #3
9430x20,0x74,0x0b,0x2f
9440x20,0x74,0x13,0x2f
9450x20,0x74,0x23,0x2f
9460x20,0x74,0x0b,0x6f
9470x20,0x74,0x13,0x6f
9480x20,0x74,0x23,0x6f
9490x20,0x74,0x43,0x6f
950
951#-----------------------------------------------------------------------------
952#Integer shift right narrow
953#-----------------------------------------------------------------------------
954# CHECK: shrn v0.8b, v1.8h, #3
955# CHECK: shrn v0.4h, v1.4s, #3
956# CHECK: shrn v0.2s, v1.2d, #3
957# CHECK: shrn2 v0.16b, v1.8h, #3
958# CHECK: shrn2 v0.8h, v1.4s, #3
959# CHECK: shrn2 v0.4s, v1.2d, #3
9600x20,0x84,0x0d,0x0f
9610x20,0x84,0x1d,0x0f
9620x20,0x84,0x3d,0x0f
9630x20,0x84,0x0d,0x4f
9640x20,0x84,0x1d,0x4f
9650x20,0x84,0x3d,0x4f
966
967#-----------------------------------------------------------------------------
968#Integer saturating shift right unsigned narrow (Signed)
969#-----------------------------------------------------------------------------
970# CHECK: sqshrun v0.8b, v1.8h, #3
971# CHECK: sqshrun v0.4h, v1.4s, #3
972# CHECK: sqshrun v0.2s, v1.2d, #3
973# CHECK: sqshrun2 v0.16b, v1.8h, #3
974# CHECK: sqshrun2 v0.8h, v1.4s, #3
975# CHECK: sqshrun2 v0.4s, v1.2d, #3
9760x20,0x84,0x0d,0x2f
9770x20,0x84,0x1d,0x2f
9780x20,0x84,0x3d,0x2f
9790x20,0x84,0x0d,0x6f
9800x20,0x84,0x1d,0x6f
9810x20,0x84,0x3d,0x6f
982
983#-----------------------------------------------------------------------------
984#Integer rounding shift right narrow
985#-----------------------------------------------------------------------------
986# CHECK: rshrn v0.8b, v1.8h, #3
987# CHECK: rshrn v0.4h, v1.4s, #3
988# CHECK: rshrn v0.2s, v1.2d, #3
989# CHECK: rshrn2 v0.16b, v1.8h, #3
990# CHECK: rshrn2 v0.8h, v1.4s, #3
991# CHECK: rshrn2 v0.4s, v1.2d, #3
9920x20,0x8c,0x0d,0x0f
9930x20,0x8c,0x1d,0x0f
9940x20,0x8c,0x3d,0x0f
9950x20,0x8c,0x0d,0x4f
9960x20,0x8c,0x1d,0x4f
9970x20,0x8c,0x3d,0x4f
998
999#-----------------------------------------------------------------------------
1000#Integer saturating shift right rounded unsigned narrow (Signed)
1001#-----------------------------------------------------------------------------
1002# CHECK: sqrshrun v0.8b, v1.8h, #3
1003# CHECK: sqrshrun v0.4h, v1.4s, #3
1004# CHECK: sqrshrun v0.2s, v1.2d, #3
1005# CHECK: sqrshrun2 v0.16b, v1.8h, #3
1006# CHECK: sqrshrun2 v0.8h, v1.4s, #3
1007# CHECK: sqrshrun2 v0.4s, v1.2d, #3
10080x20,0x8c,0x0d,0x2f
10090x20,0x8c,0x1d,0x2f
10100x20,0x8c,0x3d,0x2f
10110x20,0x8c,0x0d,0x6f
10120x20,0x8c,0x1d,0x6f
10130x20,0x8c,0x3d,0x6f
1014
1015#-----------------------------------------------------------------------------
1016#Integer saturating shift right narrow (Signed)
1017#-----------------------------------------------------------------------------
1018# CHECK: sqshrn v0.8b, v1.8h, #3
1019# CHECK: sqshrn v0.4h, v1.4s, #3
1020# CHECK: sqshrn v0.2s, v1.2d, #3
1021# CHECK: sqshrn2 v0.16b, v1.8h, #3
1022# CHECK: sqshrn2 v0.8h, v1.4s, #3
1023# CHECK: sqshrn2 v0.4s, v1.2d, #3
10240x20,0x94,0x0d,0x0f
10250x20,0x94,0x1d,0x0f
10260x20,0x94,0x3d,0x0f
10270x20,0x94,0x0d,0x4f
10280x20,0x94,0x1d,0x4f
10290x20,0x94,0x3d,0x4f
1030
1031#-----------------------------------------------------------------------------
1032#Integer saturating shift right narrow (Unsigned)
1033#-----------------------------------------------------------------------------
1034# CHECK: uqshrn v0.8b, v1.8h, #3
1035# CHECK: uqshrn v0.4h, v1.4s, #3
1036# CHECK: uqshrn v0.2s, v1.2d, #3
1037# CHECK: uqshrn2 v0.16b, v1.8h, #3
1038# CHECK: uqshrn2 v0.8h, v1.4s, #3
1039# CHECK: uqshrn2 v0.4s, v1.2d, #3
10400x20,0x94,0x0d,0x2f
10410x20,0x94,0x1d,0x2f
10420x20,0x94,0x3d,0x2f
10430x20,0x94,0x0d,0x6f
10440x20,0x94,0x1d,0x6f
10450x20,0x94,0x3d,0x6f
1046
1047#-----------------------------------------------------------------------------
1048#Integer saturating shift right rounded narrow (Signed)
1049#-----------------------------------------------------------------------------
1050# CHECK: sqrshrn v0.8b, v1.8h, #3
1051# CHECK: sqrshrn v0.4h, v1.4s, #3
1052# CHECK: sqrshrn v0.2s, v1.2d, #3
1053# CHECK: sqrshrn2 v0.16b, v1.8h, #3
1054# CHECK: sqrshrn2 v0.8h, v1.4s, #3
1055# CHECK: sqrshrn2 v0.4s, v1.2d, #3
10560x20,0x9c,0x0d,0x0f
10570x20,0x9c,0x1d,0x0f
10580x20,0x9c,0x3d,0x0f
10590x20,0x9c,0x0d,0x4f
10600x20,0x9c,0x1d,0x4f
10610x20,0x9c,0x3d,0x4f
1062
1063#-----------------------------------------------------------------------------
1064#Integer saturating shift right rounded narrow (Unsigned)
1065#-----------------------------------------------------------------------------
1066# CHECK: uqrshrn v0.8b, v1.8h, #3
1067# CHECK: uqrshrn v0.4h, v1.4s, #3
1068# CHECK: uqrshrn v0.2s, v1.2d, #3
1069# CHECK: uqrshrn2 v0.16b, v1.8h, #3
1070# CHECK: uqrshrn2 v0.8h, v1.4s, #3
1071# CHECK: uqrshrn2 v0.4s, v1.2d, #3
10720x20,0x9c,0x0d,0x2f
10730x20,0x9c,0x1d,0x2f
10740x20,0x9c,0x3d,0x2f
10750x20,0x9c,0x0d,0x6f
10760x20,0x9c,0x1d,0x6f
10770x20,0x9c,0x3d,0x6f
1078
1079#-----------------------------------------------------------------------------
1080#Fixed-point convert to floating-point
1081#-----------------------------------------------------------------------------
1082# CHECK: scvtf v0.2s, v1.2s, #3
1083# CHECK: scvtf v0.4s, v1.4s, #3
1084# CHECK: scvtf v0.2d, v1.2d, #3
1085# CHECK: ucvtf v0.2s, v1.2s, #3
1086# CHECK: ucvtf v0.4s, v1.4s, #3
1087# CHECK: ucvtf v0.2d, v1.2d, #3
1088
10890x20,0xe4,0x3d,0x0f
10900x20,0xe4,0x3d,0x4f
10910x20,0xe4,0x7d,0x4f
10920x20,0xe4,0x3d,0x2f
10930x20,0xe4,0x3d,0x6f
10940x20,0xe4,0x7d,0x6f
1095
1096#-----------------------------------------------------------------------------
1097#Floating-point convert to fixed-point
1098#-----------------------------------------------------------------------------
1099# CHECK: fcvtzs v0.2s, v1.2s, #3
1100# CHECK: fcvtzs v0.4s, v1.4s, #3
1101# CHECK: fcvtzs v0.2d, v1.2d, #3
1102# CHECK: fcvtzu v0.2s, v1.2s, #3
1103# CHECK: fcvtzu v0.4s, v1.4s, #3
1104# CHECK: fcvtzu v0.2d, v1.2d, #3
11050x20,0xfc,0x3d,0x0f
11060x20,0xfc,0x3d,0x4f
11070x20,0xfc,0x7d,0x4f
11080x20,0xfc,0x3d,0x2f
11090x20,0xfc,0x3d,0x6f
11100x20,0xfc,0x7d,0x6f
1111
1112
1113#------------------------------------------------------------------------------
1114# Vector with 3 operands having different data types
1115#------------------------------------------------------------------------------
1116
1117#------------------------------------------------------------------------------
1118# Long
1119#------------------------------------------------------------------------------
1120
1121#------------------------------------------------------------------------------
1122# Long - Variant 1
1123#------------------------------------------------------------------------------
1124
1125# CHECK: saddl v0.8h, v1.8b, v2.8b
1126# CHECK: saddl v0.4s, v1.4h, v2.4h
1127# CHECK: saddl v0.2d, v1.2s, v2.2s
11280x20 0x00 0x22 0x0e
11290x20 0x00 0x62 0x0e
11300x20 0x00 0xa2 0x0e
1131
1132# CHECK: saddl2 v0.4s, v1.8h, v2.8h
1133# CHECK: saddl2 v0.8h, v1.16b, v2.16b
1134# CHECK: saddl2 v0.2d, v1.4s, v2.4s
11350x20 0x00 0x62 0x4e
11360x20 0x00 0x22 0x4e
11370x20 0x00 0xa2 0x4e
1138
1139# CHECK: uaddl v0.8h, v1.8b, v2.8b
1140# CHECK: uaddl v0.4s, v1.4h, v2.4h
1141# CHECK: uaddl v0.2d, v1.2s, v2.2s
11420x20 0x00 0x22 0x2e
11430x20 0x00 0x62 0x2e
11440x20 0x00 0xa2 0x2e
1145
1146# CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1147# CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1148# CHECK: uaddl2 v0.2d, v1.4s, v2.4s
11490x20 0x00 0x22 0x6e
11500x20 0x00 0x62 0x6e
11510x20 0x00 0xa2 0x6e
1152
1153# CHECK: ssubl v0.8h, v1.8b, v2.8b
1154# CHECK: ssubl v0.4s, v1.4h, v2.4h
1155# CHECK: ssubl v0.2d, v1.2s, v2.2s
11560x20 0x20 0x22 0x0e
11570x20 0x20 0x62 0x0e
11580x20 0x20 0xa2 0x0e
1159
1160# CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1161# CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1162# CHECK: ssubl2 v0.2d, v1.4s, v2.4s
11630x20 0x20 0x22 0x4e
11640x20 0x20 0x62 0x4e
11650x20 0x20 0xa2 0x4e
1166
1167# CHECK: usubl v0.8h, v1.8b, v2.8b
1168# CHECK: usubl v0.4s, v1.4h, v2.4h
1169# CHECK: usubl v0.2d, v1.2s, v2.2s
11700x20 0x20 0x22 0x2e
11710x20 0x20 0x62 0x2e
11720x20 0x20 0xa2 0x2e
1173
1174# CHECK: usubl2 v0.8h, v1.16b, v2.16b
1175# CHECK: usubl2 v0.4s, v1.8h, v2.8h
1176# CHECK: usubl2 v0.2d, v1.4s, v2.4s
11770x20 0x20 0x22 0x6e
11780x20 0x20 0x62 0x6e
11790x20 0x20 0xa2 0x6e
1180
1181# CHECK: sabal v0.8h, v1.8b, v2.8b
1182# CHECK: sabal v0.4s, v1.4h, v2.4h
1183# CHECK: sabal v0.2d, v1.2s, v2.2s
11840x20 0x50 0x22 0x0e
11850x20 0x50 0x62 0x0e
11860x20 0x50 0xa2 0x0e
1187
1188# CHECK: sabal2 v0.8h, v1.16b, v2.16b
1189# CHECK: sabal2 v0.4s, v1.8h, v2.8h
1190# CHECK: sabal2 v0.2d, v1.4s, v2.4s
11910x20 0x50 0x22 0x4e
11920x20 0x50 0x62 0x4e
11930x20 0x50 0xa2 0x4e
1194
1195# CHECK: uabal v0.8h, v1.8b, v2.8b
1196# CHECK: uabal v0.4s, v1.4h, v2.4h
1197# CHECK: uabal v0.2d, v1.2s, v2.2s
11980x20 0x50 0x22 0x2e
11990x20 0x50 0x62 0x2e
12000x20 0x50 0xa2 0x2e
1201
1202# CHECK: uabal2 v0.8h, v1.16b, v2.16b
1203# CHECK: uabal2 v0.4s, v1.8h, v2.8h
1204# CHECK: uabal2 v0.2d, v1.4s, v2.4s
12050x20 0x50 0x22 0x6e
12060x20 0x50 0x62 0x6e
12070x20 0x50 0xa2 0x6e
1208
1209# CHECK: sabdl v0.8h, v1.8b, v2.8b
1210# CHECK: sabdl v0.4s, v1.4h, v2.4h
1211# CHECK: sabdl v0.2d, v1.2s, v2.2s
12120x20 0x70 0x22 0x0e
12130x20 0x70 0x62 0x0e
12140x20 0x70 0xa2 0x0e
1215
1216# CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1217# CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1218# CHECK: sabdl2 v0.2d, v1.4s, v2.4s
12190x20 0x70 0x22 0x4e
12200x20 0x70 0x62 0x4e
12210x20 0x70 0xa2 0x4e
1222
1223# CHECK: uabdl v0.8h, v1.8b, v2.8b
1224# CHECK: uabdl v0.4s, v1.4h, v2.4h
1225# CHECK: uabdl v0.2d, v1.2s, v2.2s
12260x20 0x70 0x22 0x2e
12270x20 0x70 0x62 0x2e
12280x20 0x70 0xa2 0x2e
1229
1230# CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1231# CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1232# CHECK: uabdl2 v0.2d, v1.4s, v2.4s
12330x20 0x70 0x22 0x6e
12340x20 0x70 0x62 0x6e
12350x20 0x70 0xa2 0x6e
1236
1237# CHECK: smlal v0.8h, v1.8b, v2.8b
1238# CHECK: smlal v0.4s, v1.4h, v2.4h
1239# CHECK: smlal v0.2d, v1.2s, v2.2s
12400x20 0x80 0x22 0x0e
12410x20 0x80 0x62 0x0e
12420x20 0x80 0xa2 0x0e
1243
1244# CHECK: smlal2 v0.8h, v1.16b, v2.16b
1245# CHECK: smlal2 v0.4s, v1.8h, v2.8h
1246# CHECK: smlal2 v0.2d, v1.4s, v2.4s
12470x20 0x80 0x22 0x4e
12480x20 0x80 0x62 0x4e
12490x20 0x80 0xa2 0x4e
1250
1251# CHECK: umlal v0.8h, v1.8b, v2.8b
1252# CHECK: umlal v0.4s, v1.4h, v2.4h
1253# CHECK: umlal v0.2d, v1.2s, v2.2s
1254
12550x20 0x80 0x22 0x2e
12560x20 0x80 0x62 0x2e
12570x20 0x80 0xa2 0x2e
1258
1259# CHECK: umlal2 v0.8h, v1.16b, v2.16b
1260# CHECK: umlal2 v0.4s, v1.8h, v2.8h
1261# CHECK: umlal2 v0.2d, v1.4s, v2.4s
12620x20 0x80 0x22 0x6e
12630x20 0x80 0x62 0x6e
12640x20 0x80 0xa2 0x6e
1265
1266# CHECK: smlsl v0.8h, v1.8b, v2.8b
1267# CHECK: smlsl v0.4s, v1.4h, v2.4h
1268# CHECK: smlsl v0.2d, v1.2s, v2.2s
12690x20 0xa0 0x22 0x0e
12700x20 0xa0 0x62 0x0e
12710x20 0xa0 0xa2 0x0e
1272
1273# CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1274# CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1275# CHECK: smlsl2 v0.2d, v1.4s, v2.4s
12760x20 0xa0 0x22 0x4e
12770x20 0xa0 0x62 0x4e
12780x20 0xa0 0xa2 0x4e
1279
1280# CHECK: umlsl v0.8h, v1.8b, v2.8b
1281# CHECK: umlsl v0.4s, v1.4h, v2.4h
1282# CHECK: umlsl v0.2d, v1.2s, v2.2s
12830x20 0xa0 0x22 0x2e
12840x20 0xa0 0x62 0x2e
12850x20 0xa0 0xa2 0x2e
1286
1287# CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1288# CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1289# CHECK: umlsl2 v0.2d, v1.4s, v2.4s
12900x20 0xa0 0x22 0x6e
12910x20 0xa0 0x62 0x6e
12920x20 0xa0 0xa2 0x6e
1293
1294# CHECK: smull v0.8h, v1.8b, v2.8b
1295# CHECK: smull v0.4s, v1.4h, v2.4h
1296# CHECK: smull v0.2d, v1.2s, v2.2s
12970x20 0xc0 0x22 0x0e
12980x20 0xc0 0x62 0x0e
12990x20 0xc0 0xa2 0x0e
1300
1301# CHECK: smull2 v0.8h, v1.16b, v2.16b
1302# CHECK: smull2 v0.4s, v1.8h, v2.8h
1303# CHECK: smull2 v0.2d, v1.4s, v2.4s
13040x20 0xc0 0x22 0x4e
13050x20 0xc0 0x62 0x4e
13060x20 0xc0 0xa2 0x4e
1307
1308# CHECK: umull v0.8h, v1.8b, v2.8b
1309# CHECK: umull v0.4s, v1.4h, v2.4h
1310# CHECK: umull v0.2d, v1.2s, v2.2s
13110x20 0xc0 0x22 0x2e
13120x20 0xc0 0x62 0x2e
13130x20 0xc0 0xa2 0x2e
1314
1315# CHECK: umull2 v0.8h, v1.16b, v2.16b
1316# CHECK: umull2 v0.4s, v1.8h, v2.8h
1317# CHECK: umull2 v0.2d, v1.4s, v2.4s
13180x20 0xc0 0x22 0x6e
13190x20 0xc0 0x62 0x6e
13200x20 0xc0 0xa2 0x6e
1321
1322#------------------------------------------------------------------------------
1323# Long - Variant 2
1324#------------------------------------------------------------------------------
1325
1326# CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1327# CHECK: sqdmlal v0.2d, v1.2s, v2.2s
13280x20 0x90 0x62 0x0e
13290x20 0x90 0xa2 0x0e
1330
1331# CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1332# CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
13330x20 0x90 0x62 0x4e
13340x20 0x90 0xa2 0x4e
1335
1336# CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1337# CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
13380x20 0xb0 0x62 0x0e
13390x20 0xb0 0xa2 0x0e
1340
1341# CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1342# CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
13430x20 0xb0 0x62 0x4e
13440x20 0xb0 0xa2 0x4e
1345
1346# CHECK: sqdmull v0.4s, v1.4h, v2.4h
1347# CHECK: sqdmull v0.2d, v1.2s, v2.2s
13480x20 0xd0 0x62 0x0e
13490x20 0xd0 0xa2 0x0e
1350
1351# CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1352# CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
13530x20 0xd0 0x62 0x4e
13540x20 0xd0 0xa2 0x4e
1355
1356#------------------------------------------------------------------------------
1357# Long - Variant 3
1358#------------------------------------------------------------------------------
1359
1360# CHECK: pmull v0.8h, v1.8b, v2.8b
13610x20 0xe0 0x22 0x0e
1362
1363# CHECK: pmull2 v0.8h, v1.16b, v2.16b
13640x20 0xe0 0x22 0x4e
1365
1366#------------------------------------------------------------------------------
1367# Widen
1368#------------------------------------------------------------------------------
1369
1370# CHECK: saddw v0.8h, v1.8h, v2.8b
1371# CHECK: saddw v0.4s, v1.4s, v2.4h
1372# CHECK: saddw v0.2d, v1.2d, v2.2s
13730x20 0x10 0x22 0x0e
13740x20 0x10 0x62 0x0e
13750x20 0x10 0xa2 0x0e
1376
1377# CHECK: saddw2 v0.8h, v1.8h, v2.16b
1378# CHECK: saddw2 v0.4s, v1.4s, v2.8h
1379# CHECK: saddw2 v0.2d, v1.2d, v2.4s
13800x20 0x10 0x22 0x4e
13810x20 0x10 0x62 0x4e
13820x20 0x10 0xa2 0x4e
1383
1384# CHECK: uaddw v0.8h, v1.8h, v2.8b
1385# CHECK: uaddw v0.4s, v1.4s, v2.4h
1386# CHECK: uaddw v0.2d, v1.2d, v2.2s
13870x20 0x10 0x22 0x2e
13880x20 0x10 0x62 0x2e
13890x20 0x10 0xa2 0x2e
1390
1391# CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1392# CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1393# CHECK: uaddw2 v0.2d, v1.2d, v2.4s
13940x20 0x10 0x22 0x6e
13950x20 0x10 0x62 0x6e
13960x20 0x10 0xa2 0x6e
1397
1398# CHECK: ssubw v0.8h, v1.8h, v2.8b
1399# CHECK: ssubw v0.4s, v1.4s, v2.4h
1400# CHECK: ssubw v0.2d, v1.2d, v2.2s
14010x20 0x30 0x22 0x0e
14020x20 0x30 0x62 0x0e
14030x20 0x30 0xa2 0x0e
1404
1405# CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1406# CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1407# CHECK: ssubw2 v0.2d, v1.2d, v2.4s
14080x20 0x30 0x22 0x4e
14090x20 0x30 0x62 0x4e
14100x20 0x30 0xa2 0x4e
1411
1412# CHECK: usubw v0.8h, v1.8h, v2.8b
1413# CHECK: usubw v0.4s, v1.4s, v2.4h
1414# CHECK: usubw v0.2d, v1.2d, v2.2s
14150x20 0x30 0x22 0x2e
14160x20 0x30 0x62 0x2e
14170x20 0x30 0xa2 0x2e
1418
1419# CHECK: usubw2 v0.8h, v1.8h, v2.16b
1420# CHECK: usubw2 v0.4s, v1.4s, v2.8h
1421# CHECK: usubw2 v0.2d, v1.2d, v2.4s
14220x20 0x30 0x22 0x6e
14230x20 0x30 0x62 0x6e
14240x20 0x30 0xa2 0x6e
1425
1426#------------------------------------------------------------------------------
1427# Narrow
1428#------------------------------------------------------------------------------
1429
1430# CHECK: addhn v0.8b, v1.8h, v2.8h
1431# CHECK: addhn v0.4h, v1.4s, v2.4s
1432# CHECK: addhn v0.2s, v1.2d, v2.2d
14330x20 0x40 0x22 0x0e
14340x20 0x40 0x62 0x0e
14350x20 0x40 0xa2 0x0e
1436
1437# CHECK: addhn2 v0.16b, v1.8h, v2.8h
1438# CHECK: addhn2 v0.8h, v1.4s, v2.4s
1439# CHECK: addhn2 v0.4s, v1.2d, v2.2d
14400x20 0x40 0x22 0x4e
14410x20 0x40 0x62 0x4e
14420x20 0x40 0xa2 0x4e
1443
1444# CHECK: raddhn v0.8b, v1.8h, v2.8h
1445# CHECK: raddhn v0.4h, v1.4s, v2.4s
1446# CHECK: raddhn v0.2s, v1.2d, v2.2d
14470x20 0x40 0x22 0x2e
14480x20 0x40 0x62 0x2e
14490x20 0x40 0xa2 0x2e
1450
1451# CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1452# CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1453# CHECK: raddhn2 v0.4s, v1.2d, v2.2d
14540x20 0x40 0x22 0x6e
14550x20 0x40 0x62 0x6e
14560x20 0x40 0xa2 0x6e
1457
1458# CHECK: rsubhn v0.8b, v1.8h, v2.8h
1459# CHECK: rsubhn v0.4h, v1.4s, v2.4s
1460# CHECK: rsubhn v0.2s, v1.2d, v2.2d
14610x20 0x60 0x22 0x2e
14620x20 0x60 0x62 0x2e
14630x20 0x60 0xa2 0x2e
1464
1465# CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1466# CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1467# CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
14680x20 0x60 0x22 0x6e
14690x20 0x60 0x62 0x6e
14700x20 0x60 0xa2 0x6e
1471
1472#----------------------------------------------------------------------
1473# Scalar Integer Saturating Doubling Multiply Half High
1474#----------------------------------------------------------------------
1475# CHECK: sqdmulh h10, h11, h12
1476# CHECK: sqdmulh s20, s21, s2
14770x6a,0xb5,0x6c,0x5e
14780xb4,0xb6,0xa2,0x5e
1479
1480#----------------------------------------------------------------------
1481# Scalar Integer Saturating Rounding Doubling Multiply Half High
1482#----------------------------------------------------------------------
1483# CHECK: sqrdmulh h10, h11, h12
1484# CHECK: sqrdmulh s20, s21, s2
14850x6a,0xb5,0x6c,0x7e
14860xb4,0xb6,0xa2,0x7e
1487
1488#----------------------------------------------------------------------
1489# Floating-point multiply extended
1490#----------------------------------------------------------------------
1491# CHECK: fmulx s20, s22, s15
1492# CHECK: fmulx d23, d11, d1
14930xd4,0xde,0x2f,0x5e
14940x77,0xdd,0x61,0x5e
1495
1496#----------------------------------------------------------------------
1497# Floating-point Reciprocal Step
1498#----------------------------------------------------------------------
1499# CHECK: frecps s21, s16, s13
1500# CHECK: frecps d22, d30, d21
15010x15,0xfe,0x2d,0x5e
15020xd6,0xff,0x75,0x5e
1503
1504#----------------------------------------------------------------------
1505# Floating-point Reciprocal Square Root Step
1506#----------------------------------------------------------------------
1507# CHECK: frsqrts s21, s5, s12
1508# CHECK: frsqrts d8, d22, d18
15090xb5,0xfc,0xac,0x5e
15100xc8,0xfe,0xf2,0x5e
1511
1512#----------------------------------------------------------------------
1513# Scalar Signed Integer Convert To Floating-point
1514#----------------------------------------------------------------------
1515# CHECK: scvtf s22, s13
1516# CHECK: scvtf d21, d12
15170xb6,0xd9,0x21,0x5e
15180x95,0xd9,0x61,0x5e
1519
1520#----------------------------------------------------------------------
1521# Scalar Unsigned Integer Convert To Floating-point
1522#----------------------------------------------------------------------
1523# CHECK: ucvtf s22, s13
1524# CHECK: ucvtf d21, d14
15250xb6,0xd9,0x21,0x7e
15260xd5,0xd9,0x61,0x7e
1527
1528#----------------------------------------------------------------------
1529# Scalar Floating-point Reciprocal Estimate
1530#----------------------------------------------------------------------
1531# CHECK: frecpe s19, s14
1532# CHECK: frecpe d13, d13
15330xd3,0xd9,0xa1,0x5e
15340xad,0xd9,0xe1,0x5e
1535
1536#----------------------------------------------------------------------
1537# Scalar Floating-point Reciprocal Exponent
1538#----------------------------------------------------------------------
1539# CHECK: frecpx s18, s10
1540# CHECK: frecpx d16, d19
15410x52,0xf9,0xa1,0x5e
15420x70,0xfa,0xe1,0x5e
1543
1544#----------------------------------------------------------------------
1545# Scalar Floating-point Reciprocal Square Root Estimate
1546#----------------------------------------------------------------------
1547# CHECK: frsqrte s22, s13
1548# CHECK: frsqrte d21, d12
15490xb6,0xd9,0xa1,0x7e
15500x95,0xd9,0xe1,0x7e
1551
1552#----------------------------------------------------------------------
1553# Scalar Compare Bitwise Equal
1554#----------------------------------------------------------------------
1555# CHECK: cmeq d20, d21, d22
15560xb4,0x8e,0xf6,0x7e
1557
1558#----------------------------------------------------------------------
1559# Scalar Compare Bitwise Equal To Zero
1560#----------------------------------------------------------------------
1561# CHECK: cmeq d20, d21, #{{0x0|0}}
15620xb4,0x9a,0xe0,0x5e
1563
1564#----------------------------------------------------------------------
1565# Scalar Compare Unsigned Higher Or Same
1566#----------------------------------------------------------------------
1567# CHECK: cmhs d20, d21, d22
15680xb4,0x3e,0xf6,0x7e
1569
1570
1571#----------------------------------------------------------------------
1572# Scalar Compare Signed Greather Than Or Equal
1573#----------------------------------------------------------------------
1574# CHECK: cmge d20, d21, d22
15750xb4,0x3e,0xf6,0x5e
1576
1577#----------------------------------------------------------------------
1578# Scalar Compare Signed Greather Than Or Equal To Zero
1579#----------------------------------------------------------------------
1580# CHECK: cmge d20, d21, #{{0x0|0}}
15810xb4,0x8a,0xe0,0x7e
1582
1583#----------------------------------------------------------------------
1584# Scalar Compare Unsigned Higher
1585#----------------------------------------------------------------------
1586# CHECK: cmhi d20, d21, d22
15870xb4,0x36,0xf6,0x7e
1588
1589#----------------------------------------------------------------------
1590# Scalar Compare Signed Greater Than
1591#----------------------------------------------------------------------
1592# CHECK: cmgt d20, d21, d22
15930xb4,0x36,0xf6,0x5e
1594
1595#----------------------------------------------------------------------
1596# Scalar Compare Signed Greater Than Zero
1597#----------------------------------------------------------------------
1598# CHECK: cmgt d20, d21, #{{0x0|0}}
15990xb4,0x8a,0xe0,0x5e
1600
1601#----------------------------------------------------------------------
1602# Scalar Compare Signed Less Than Or Equal To Zero
1603#----------------------------------------------------------------------
1604# CHECK: cmle d20, d21, #{{0x0|0}}
16050xb4,0x9a,0xe0,0x7e
1606
1607#----------------------------------------------------------------------
1608# Scalar Compare Less Than Zero
1609#----------------------------------------------------------------------
1610# CHECK: cmlt d20, d21, #{{0x0|0}}
16110xb4,0xaa,0xe0,0x5e
1612
1613#----------------------------------------------------------------------
1614# Scalar Compare Bitwise Test Bits
1615#----------------------------------------------------------------------
1616# CHECK: cmtst d20, d21, d22
16170xb4,0x8e,0xf6,0x5e
1618
1619#----------------------------------------------------------------------
1620# Scalar Floating-point Compare Mask Equal
1621#----------------------------------------------------------------------
1622# CHECK: fcmeq s10, s11, s12
1623# CHECK: fcmeq d20, d21, d22
16240x6a,0xe5,0x2c,0x5e
16250xb4,0xe6,0x76,0x5e
1626
1627#----------------------------------------------------------------------
1628# Scalar Floating-point Compare Mask Equal To Zero
1629#----------------------------------------------------------------------
1630# CHECK: fcmeq s10, s11, #0.0
1631# CHECK: fcmeq d20, d21, #0.0
16320x6a,0xd9,0xa0,0x5e
16330xb4,0xda,0xe0,0x5e
1634
1635#----------------------------------------------------------------------
1636# Scalar Floating-point Compare Mask Greater Than Or Equal
1637#----------------------------------------------------------------------
1638# CHECK: fcmge s10, s11, s12
1639# CHECK: fcmge d20, d21, d22
16400x6a,0xe5,0x2c,0x7e
16410xb4,0xe6,0x76,0x7e
1642
1643#----------------------------------------------------------------------
1644# Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1645#----------------------------------------------------------------------
1646# CHECK: fcmge s10, s11, #0.0
1647# CHECK: fcmge d20, d21, #0.0
16480x6a,0xc9,0xa0,0x7e
16490xb4,0xca,0xe0,0x7e
1650
1651#----------------------------------------------------------------------
1652# Scalar Floating-point Compare Mask Greather Than
1653#----------------------------------------------------------------------
1654# CHECK: fcmgt s10, s11, s12
1655# CHECK: fcmgt d20, d21, d22
16560x6a,0xe5,0xac,0x7e
16570xb4,0xe6,0xf6,0x7e
1658
1659#----------------------------------------------------------------------
1660# Scalar Floating-point Compare Mask Greather Than Zero
1661#----------------------------------------------------------------------
1662# CHECK: fcmgt s10, s11, #0.0
1663# CHECK: fcmgt d20, d21, #0.0
16640x6a,0xc9,0xa0,0x5e
16650xb4,0xca,0xe0,0x5e
1666
1667#----------------------------------------------------------------------
1668# Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1669#----------------------------------------------------------------------
1670# CHECK: fcmle s10, s11, #0.0
1671# CHECK: fcmle d20, d21, #0.0
16720x6a,0xd9,0xa0,0x7e
16730xb4,0xda,0xe0,0x7e
1674
1675#----------------------------------------------------------------------
1676# Scalar Floating-point Compare Mask Less Than
1677#----------------------------------------------------------------------
1678# CHECK: fcmlt s10, s11, #0.0
1679# CHECK: fcmlt d20, d21, #0.0
16800x6a,0xe9,0xa0,0x5e
16810xb4,0xea,0xe0,0x5e
1682
1683#----------------------------------------------------------------------
1684# Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1685#----------------------------------------------------------------------
1686# CHECK: facge s10, s11, s12
1687# CHECK: facge d20, d21, d22
16880x6a,0xed,0x2c,0x7e
16890xb4,0xee,0x76,0x7e
1690
1691#----------------------------------------------------------------------
1692# Scalar Floating-point Absolute Compare Mask Greater Than
1693#----------------------------------------------------------------------
1694# CHECK: facgt s10, s11, s12
1695# CHECK: facgt d20, d21, d22
16960x6a,0xed,0xac,0x7e
16970xb4,0xee,0xf6,0x7e
1698
1699#----------------------------------------------------------------------
1700# Scalar Absolute Value
1701#----------------------------------------------------------------------
1702# CHECK: abs d29, d24
17030x1d,0xbb,0xe0,0x5e
1704
1705#----------------------------------------------------------------------
1706# Scalar Signed Saturating Absolute Value
1707#----------------------------------------------------------------------
1708# CHECK: sqabs b19, b14
1709# CHECK: sqabs h21, h15
1710# CHECK: sqabs s20, s12
1711# CHECK: sqabs d18, d12
17120xd3,0x79,0x20,0x5e
17130xf5,0x79,0x60,0x5e
17140x94,0x79,0xa0,0x5e
17150x92,0x79,0xe0,0x5e
1716
1717#----------------------------------------------------------------------
1718# Scalar Negate
1719#----------------------------------------------------------------------
1720# CHECK: neg d29, d24
17210x1d,0xbb,0xe0,0x7e
1722
1723#----------------------------------------------------------------------
1724# Scalar Signed Saturating Negate
1725#----------------------------------------------------------------------
1726# CHECK: sqneg b19, b14
1727# CHECK: sqneg h21, h15
1728# CHECK: sqneg s20, s12
1729# CHECK: sqneg d18, d12
17300xd3,0x79,0x20,0x7e
17310xf5,0x79,0x60,0x7e
17320x94,0x79,0xa0,0x7e
17330x92,0x79,0xe0,0x7e
1734
1735#----------------------------------------------------------------------
1736# Signed Saturating Accumulated of Unsigned Value
1737#----------------------------------------------------------------------
1738# CHECK: suqadd b19, b14
1739# CHECK: suqadd h20, h15
1740# CHECK: suqadd s21, s12
1741# CHECK: suqadd d18, d22
17420xd3,0x39,0x20,0x5e
17430xf4,0x39,0x60,0x5e
17440x95,0x39,0xa0,0x5e
17450xd2,0x3a,0xe0,0x5e
1746
1747#----------------------------------------------------------------------
1748# Unsigned Saturating Accumulated of Signed Value
1749#----------------------------------------------------------------------
1750# CHECK: usqadd b19, b14
1751# CHECK: usqadd h20, h15
1752# CHECK: usqadd s21, s12
1753# CHECK: usqadd d18, d22
17540xd3,0x39,0x20,0x7e
17550xf4,0x39,0x60,0x7e
17560x95,0x39,0xa0,0x7e
17570xd2,0x3a,0xe0,0x7e
1758
1759#----------------------------------------------------------------------
1760# Signed Saturating Doubling Multiply-Add Long
1761#----------------------------------------------------------------------
1762# CHECK: sqdmlal s17, h27, h12
1763# CHECK: sqdmlal d19, s24, s12
17640x71,0x93,0x6c,0x5e
17650x13,0x93,0xac,0x5e
1766
1767#----------------------------------------------------------------------
1768# Signed Saturating Doubling Multiply-Subtract Long
1769#----------------------------------------------------------------------
1770# CHECK: sqdmlsl s14, h12, h25
1771# CHECK: sqdmlsl d12, s23, s13
17720x8e,0xb1,0x79,0x5e
17730xec,0xb2,0xad,0x5e
1774
1775#----------------------------------------------------------------------
1776# Signed Saturating Doubling Multiply Long
1777#----------------------------------------------------------------------
1778# CHECK: sqdmull s12, h22, h12
1779# CHECK: sqdmull d15, s22, s12
17800xcc,0xd2,0x6c,0x5e
17810xcf,0xd2,0xac,0x5e
1782
1783#----------------------------------------------------------------------
1784# Scalar Signed Saturating Extract Unsigned Narrow
1785#----------------------------------------------------------------------
1786# CHECK: sqxtun b19, h14
1787# CHECK: sqxtun h21, s15
1788# CHECK: sqxtun s20, d12
17890xd3,0x29,0x21,0x7e
17900xf5,0x29,0x61,0x7e
17910x94,0x29,0xa1,0x7e
1792
1793#----------------------------------------------------------------------
1794# Scalar Signed Saturating Extract Signed Narrow
1795#----------------------------------------------------------------------
1796# CHECK: sqxtn b18, h18
1797# CHECK: sqxtn h20, s17
1798# CHECK: sqxtn s19, d14
17990x52,0x4a,0x21,0x5e
18000x34,0x4a,0x61,0x5e
18010xd3,0x49,0xa1,0x5e
1802
1803#----------------------------------------------------------------------
1804# Scalar Unsigned Saturating Extract Narrow
1805#----------------------------------------------------------------------
1806# CHECK: uqxtn b18, h18
1807# CHECK: uqxtn h20, s17
1808# CHECK: uqxtn s19, d14
18090x52,0x4a,0x21,0x7e
18100x34,0x4a,0x61,0x7e
18110xd3,0x49,0xa1,0x7e
1812
1813#----------------------------------------------------------------------
1814# Scalar Signed Shift Right (Immediate)
1815#----------------------------------------------------------------------
1816# CHECK: sshr d15, d16, #12
18170x0f,0x06,0x74,0x5f
1818
1819#----------------------------------------------------------------------
1820# Scalar Unsigned Shift Right (Immediate)
1821#----------------------------------------------------------------------
1822# CHECK: ushr d10, d17, #18
18230x2a,0x06,0x6e,0x7f
1824
1825#----------------------------------------------------------------------
1826# Scalar Signed Rounding Shift Right (Immediate)
1827#----------------------------------------------------------------------
1828# CHECK: srshr d19, d18, #7
18290x53,0x26,0x79,0x5f
1830
1831#----------------------------------------------------------------------
1832# Scalar Unigned Rounding Shift Right (Immediate)
1833#----------------------------------------------------------------------
1834# CHECK: urshr d20, d23, #31
18350xf4,0x26,0x61,0x7f
1836
1837#----------------------------------------------------------------------
1838# Scalar Signed Shift Right and Accumulate (Immediate)
1839#----------------------------------------------------------------------
1840# CHECK: ssra d18, d12, #21
18410x92,0x15,0x6b,0x5f
1842
1843#----------------------------------------------------------------------
1844# Scalar Unsigned Shift Right and Accumulate (Immediate)
1845#----------------------------------------------------------------------
1846# CHECK: usra d20, d13, #61
18470xb4,0x15,0x43,0x7f
1848
1849#----------------------------------------------------------------------
1850# Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1851#----------------------------------------------------------------------
1852# CHECK: srsra d15, d11, #19
18530x6f,0x35,0x6d,0x5f
1854
1855#----------------------------------------------------------------------
1856# Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1857#----------------------------------------------------------------------
1858# CHECK: ursra d18, d10, #13
18590x52,0x35,0x73,0x7f
1860
1861#----------------------------------------------------------------------
1862# Scalar Shift Left (Immediate)
1863#----------------------------------------------------------------------
1864# CHECK: shl d7, d10, #12
18650x47,0x55,0x4c,0x5f
1866
1867#----------------------------------------------------------------------
1868# Signed Saturating Shift Left (Immediate)
1869#----------------------------------------------------------------------
1870# CHECK: sqshl b11, b19, #7
1871# CHECK: sqshl h13, h18, #11
1872# CHECK: sqshl s14, s17, #22
1873# CHECK: sqshl d15, d16, #51
18740x6b,0x76,0x0f,0x5f
18750x4d,0x76,0x1b,0x5f
18760x2e,0x76,0x36,0x5f
18770x0f,0x76,0x73,0x5f
1878
1879#----------------------------------------------------------------------
1880# Unsigned Saturating Shift Left (Immediate)
1881#----------------------------------------------------------------------
1882# CHECK: uqshl b18, b15, #6
1883# CHECK: uqshl h11, h18, #7
1884# CHECK: uqshl s14, s19, #18
1885# CHECK: uqshl d15, d12, #19
18860xf2,0x75,0x0e,0x7f
18870x4b,0x76,0x17,0x7f
18880x6e,0x76,0x32,0x7f
18890x8f,0x75,0x53,0x7f
1890
1891#----------------------------------------------------------------------
1892# Signed Saturating Shift Left Unsigned (Immediate)
1893#----------------------------------------------------------------------
1894# CHECK: sqshlu b15, b18, #6
1895# CHECK: sqshlu h19, h17, #6
1896# CHECK: sqshlu s16, s14, #25
1897# CHECK: sqshlu d11, d13, #32
18980x4f,0x66,0x0e,0x7f
18990x33,0x66,0x16,0x7f
19000xd0,0x65,0x39,0x7f
19010xab,0x65,0x60,0x7f
1902
1903#----------------------------------------------------------------------
1904# Shift Right And Insert (Immediate)
1905#----------------------------------------------------------------------
1906# CHECK: sri d10, d12, #14
19070x8a,0x45,0x72,0x7f
1908
1909#----------------------------------------------------------------------
1910# Shift Left And Insert (Immediate)
1911#----------------------------------------------------------------------
1912# CHECK: sli d10, d14, #12
19130xca,0x55,0x4c,0x7f
1914
1915#----------------------------------------------------------------------
1916# Signed Saturating Shift Right Narrow (Immediate)
1917#----------------------------------------------------------------------
1918# CHECK: sqshrn b10, h15, #5
1919# CHECK: sqshrn h17, s10, #4
1920# CHECK: sqshrn s18, d10, #31
19210xea,0x95,0x0b,0x5f
19220x51,0x95,0x1c,0x5f
19230x52,0x95,0x21,0x5f
1924
1925#----------------------------------------------------------------------
1926# Unsigned Saturating Shift Right Narrow (Immediate)
1927#----------------------------------------------------------------------
1928# CHECK: uqshrn b12, h10, #7
1929# CHECK: uqshrn h10, s14, #5
1930# CHECK: uqshrn s10, d12, #13
19310x4c,0x95,0x09,0x7f
19320xca,0x95,0x1b,0x7f
19330x8a,0x95,0x33,0x7f
1934
1935#----------------------------------------------------------------------
1936# Signed Saturating Rounded Shift Right Narrow (Immediate)
1937#----------------------------------------------------------------------
1938# CHECK: sqrshrn b10, h13, #2
1939# CHECK: sqrshrn h15, s10, #6
1940# CHECK: sqrshrn s15, d12, #9
19410xaa,0x9d,0x0e,0x5f
19420x4f,0x9d,0x1a,0x5f
19430x8f,0x9d,0x37,0x5f
1944
1945#----------------------------------------------------------------------
1946# Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1947#----------------------------------------------------------------------
1948# CHECK: uqrshrn b10, h12, #5
1949# CHECK: uqrshrn h12, s10, #14
1950# CHECK: uqrshrn s10, d10, #25
19510x8a,0x9d,0x0b,0x7f
19520x4c,0x9d,0x12,0x7f
19530x4a,0x9d,0x27,0x7f
1954
1955#----------------------------------------------------------------------
1956# Signed Saturating Shift Right Unsigned Narrow (Immediate)
1957#----------------------------------------------------------------------
1958# CHECK: sqshrun b15, h10, #7
1959# CHECK: sqshrun h20, s14, #3
1960# CHECK: sqshrun s10, d15, #15
19610x4f,0x85,0x09,0x7f
19620xd4,0x85,0x1d,0x7f
19630xea,0x85,0x31,0x7f
1964
1965#----------------------------------------------------------------------
1966# Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1967#----------------------------------------------------------------------
1968# CHECK: sqrshrun b17, h10, #6
1969# CHECK: sqrshrun h10, s13, #15
1970# CHECK: sqrshrun s22, d16, #31
19710x51,0x8d,0x0a,0x7f
19720xaa,0x8d,0x11,0x7f
19730x16,0x8e,0x21,0x7f
1974
1975#----------------------------------------------------------------------
1976# Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1977#----------------------------------------------------------------------
1978# CHECK: scvtf s22, s13, #32
1979# CHECK: scvtf d21, d12, #64
19800xb6,0xe5,0x20,0x5f
19810x95,0xe5,0x40,0x5f
1982
1983#----------------------------------------------------------------------
1984# Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1985#----------------------------------------------------------------------
1986# CHECK: ucvtf s22, s13, #32
1987# CHECK: ucvtf d21, d14, #64
19880xb6,0xe5,0x20,0x7f
19890xd5,0xe5,0x40,0x7f
1990
1991#----------------------------------------------------------------------
1992# Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1993#----------------------------------------------------------------------
1994# CHECK: fcvtzs s21, s12, #1
1995# CHECK: fcvtzs d21, d12, #1
19960x95,0xfd,0x3f,0x5f
19970x95,0xfd,0x7f,0x5f
1998
1999#----------------------------------------------------------------------
2000# Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
2001#----------------------------------------------------------------------
2002# CHECK: fcvtzu s21, s12, #1
2003# CHECK: fcvtzu d21, d12, #1
20040x95,0xfd,0x3f,0x7f
20050x95,0xfd,0x7f,0x7f
2006
2007#----------------------------------------------------------------------
2008# Vector load/store multiple N-element structure
2009#----------------------------------------------------------------------
2010# CHECK: ld1 { v0.16b }, [x0]
2011# CHECK: ld1 { v15.8h, v16.8h }, [x15]
2012# CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp]
2013# CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
20140x00,0x70,0x40,0x4c
20150xef,0xa5,0x40,0x4c
20160xff,0x6b,0x40,0x4c
20170x00,0x2c,0x40,0x4c
2018
2019# CHECK: ld2 { v0.8b, v1.8b }, [x0]
2020# CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15]
2021# CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
20220x00,0x80,0x40,0x0c
20230xef,0x45,0x40,0x0c
20240xff,0x0b,0x40,0x0c
2025
2026# CHECK: st1 { v0.16b }, [x0]
2027# CHECK: st1 { v15.8h, v16.8h }, [x15]
2028# CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp]
2029# CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
20300x00,0x70,0x00,0x4c
20310xef,0xa5,0x00,0x4c
20320xff,0x6b,0x00,0x4c
20330x00,0x2c,0x00,0x4c
2034
2035# CHECK: st2 { v0.8b, v1.8b }, [x0]
2036# CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15]
2037# CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
20380x00,0x80,0x00,0x0c
20390xef,0x45,0x00,0x0c
20400xff,0x0b,0x00,0x0c
2041
2042#----------------------------------------------------------------------
2043# Vector load/store multiple N-element structure (post-index)
2044#----------------------------------------------------------------------
2045# CHECK: ld1 { v15.8h }, [x15], x2
2046# CHECK: ld1 { v31.4s, v0.4s }, [sp], #32
2047# CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2048# CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
20490xef,0x75,0xc2,0x4c
20500xff,0xab,0xdf,0x4c
20510x00,0x6c,0xdf,0x4c
20520x00,0x20,0xc3,0x0c
2053
2054# CHECK: ld2 { v0.16b, v1.16b }, [x0], x1
2055# CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2056# CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
20570x00,0x80,0xc1,0x4c
20580xef,0x45,0xc2,0x4c
20590xff,0x0b,0xdf,0x4c
2060
2061
2062# CHECK: st1 { v15.8h }, [x15], x2
2063# CHECK: st1 { v31.4s, v0.4s }, [sp], #32
2064# CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2065# CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
20660xef,0x75,0x82,0x4c
20670xff,0xab,0x9f,0x4c
20680x00,0x6c,0x9f,0x4c
20690x00,0x20,0x83,0x0c
2070
2071# CHECK: st2 { v0.16b, v1.16b }, [x0], x1
2072# CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2073# CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
20740x00,0x80,0x81,0x4c
20750xef,0x45,0x82,0x4c
20760xff,0x0b,0x9f,0x4c
2077
2078#----------------------------------------------------------------------
2079# Vector load single N-element structure to all lane of N
2080# consecutive registers (N = 1,2,3,4)
2081#----------------------------------------------------------------------
2082# CHECK: ld1r { v0.16b }, [x0]
2083# CHECK: ld1r { v15.8h }, [x15]
2084# CHECK: ld2r { v31.4s, v0.4s }, [sp]
2085# CHECK: ld2r { v0.2d, v1.2d }, [x0]
2086# CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0]
2087# CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15]
2088# CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2089# CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp]
20900x00,0xc0,0x40,0x4d
20910xef,0xc5,0x40,0x4d
20920xff,0xcb,0x60,0x4d
20930x00,0xcc,0x60,0x4d
20940x00,0xe0,0x40,0x0d
20950xef,0xe5,0x40,0x0d
20960xff,0xeb,0x60,0x0d
20970xff,0xef,0x60,0x0d
2098
2099#----------------------------------------------------------------------
2100# Vector load/store single N-element structure to/from one lane of N
2101# consecutive registers (N = 1,2,3,4)
2102#----------------------------------------------------------------------
2103# CHECK: ld1 { v0.b }[9], [x0]
2104# CHECK: ld2 { v15.h, v16.h }[7], [x15]
2105# CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp]
2106# CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0]
2107# CHECK: st1 { v0.d }[1], [x0]
2108# CHECK: st2 { v31.s, v0.s }[3], [sp]
2109# CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15]
2110# CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0]
21110x00,0x04,0x40,0x4d
21120xef,0x59,0x60,0x4d
21130xff,0xb3,0x40,0x4d
21140x00,0xa4,0x60,0x4d
21150x00,0x84,0x00,0x4d
21160xff,0x93,0x20,0x4d
21170xef,0x79,0x00,0x4d
21180x00,0x24,0x20,0x4d
2119
2120#----------------------------------------------------------------------
2121# Post-index of vector load single N-element structure to all lane of N
2122# consecutive registers (N = 1,2,3,4)
2123#----------------------------------------------------------------------
2124# CHECK: ld1r { v0.16b }, [x0], #1
2125# CHECK: ld1r { v15.8h }, [x15], #2
2126# CHECK: ld2r { v31.4s, v0.4s }, [sp], #8
2127# CHECK: ld2r { v0.2d, v1.2d }, [x0], #16
2128# CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3
2129# CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15], #6
2130# CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], x30
2131# CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp], x7
21320x00,0xc0,0xdf,0x4d
21330xef,0xc5,0xdf,0x4d
21340xff,0xcb,0xff,0x4d
21350x00,0xcc,0xff,0x4d
21360x00,0xe0,0xdf,0x0d
21370xef,0xe5,0xdf,0x0d
21380xff,0xeb,0xfe,0x0d
21390xff,0xef,0xe7,0x0d
2140
2141#----------------------------------------------------------------------
2142# Post-index of vector load/store single N-element structure to/from
2143#  one lane of N consecutive registers (N = 1,2,3,4)
2144#----------------------------------------------------------------------
2145# CHECK: ld1 { v0.b }[9], [x0], #1
2146# CHECK: ld2 { v15.h, v16.h }[7], [x15], #4
2147# CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp], x3
2148# CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32
2149# CHECK: ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0
2150# CHECK: st1 { v0.d }[1], [x0], #8
2151# CHECK: st2 { v31.s, v0.s }[3], [sp], #8
2152# CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15], #6
2153# CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5
21540x00,0x04,0xdf,0x4d
21550xef,0x59,0xff,0x4d
21560xff,0xb3,0xc3,0x4d
21570x00,0xa4,0xff,0x4d
21580x00,0x78,0xe0,0x4d
21590x00,0x84,0x9f,0x4d
21600xff,0x93,0xbf,0x4d
21610xef,0x79,0x9f,0x4d
21620x00,0x24,0xa5,0x4d
2163
2164#----------------------------------------------------------------------
2165# Bitwise extract
2166#----------------------------------------------------------------------
21670x20,0x18,0x02,0x2e
21680x20,0x18,0x02,0x6e
2169# CHECK: ext v0.8b, v1.8b, v2.8b, #{{0x3|3}}
2170# CHECK: ext v0.16b, v1.16b, v2.16b, #{{0x3|3}}
2171
2172#----------------------------------------------------------------------
2173# unzip with 3 same vectors to get primary result
2174#----------------------------------------------------------------------
2175# CHECK: uzp1	v1.8b, v1.8b, v2.8b
2176# CHECK: uzp1	v2.16b, v1.16b, v2.16b
2177# CHECK: uzp1	v3.4h, v1.4h, v2.4h
2178# CHECK: uzp1	v4.8h, v1.8h, v2.8h
2179# CHECK: uzp1	v5.2s, v1.2s, v2.2s
2180# CHECK: uzp1	v6.4s, v1.4s, v2.4s
2181# CHECK: uzp1	v7.2d, v1.2d, v2.2d
21820x21,0x18,0x02,0x0e
21830x22,0x18,0x02,0x4e
21840x23,0x18,0x42,0x0e
21850x24,0x18,0x42,0x4e
21860x25,0x18,0x82,0x0e
21870x26,0x18,0x82,0x4e
21880x27,0x18,0xc2,0x4e
2189
2190#----------------------------------------------------------------------
2191# transpose with 3 same vectors to get primary result
2192#----------------------------------------------------------------------
2193# CHECK: trn1	v8.8b, v1.8b, v2.8b
2194# CHECK: trn1	v9.16b, v1.16b, v2.16b
2195# CHECK: trn1	v10.4h, v1.4h, v2.4h
2196# CHECK: trn1	v27.8h, v7.8h, v2.8h
2197# CHECK: trn1	v12.2s, v7.2s, v2.2s
2198# CHECK: trn1	v29.4s, v6.4s, v2.4s
2199# CHECK: trn1	v14.2d, v6.2d, v2.2d
22000x28,0x28,0x02,0x0e
22010x29,0x28,0x02,0x4e
22020x2a,0x28,0x42,0x0e
22030xfb,0x28,0x42,0x4e
22040xec,0x28,0x82,0x0e
22050xdd,0x28,0x82,0x4e
22060xce,0x28,0xc2,0x4e
2207
2208#----------------------------------------------------------------------
2209# zip with 3 same vectors to get primary result
2210#----------------------------------------------------------------------
2211# CHECK: zip1	v31.8b, v5.8b, v2.8b
2212# CHECK: zip1	v0.16b, v5.16b, v2.16b
2213# CHECK: zip1	v17.4h, v4.4h, v2.4h
2214# CHECK: zip1	v2.8h, v4.8h, v2.8h
2215# CHECK: zip1	v19.2s, v3.2s, v2.2s
2216# CHECK: zip1	v4.4s, v3.4s, v2.4s
2217# CHECK: zip1	v21.2d, v2.2d, v2.2d
22180xbf,0x38,0x02,0x0e
22190xa0,0x38,0x02,0x4e
22200x91,0x38,0x42,0x0e
22210x82,0x38,0x42,0x4e
22220x73,0x38,0x82,0x0e
22230x64,0x38,0x82,0x4e
22240x55,0x38,0xc2,0x4e
2225
2226#----------------------------------------------------------------------
2227# unzip with 3 same vectors to get secondary result
2228#----------------------------------------------------------------------
2229# CHECK: uzp2	v6.8b, v2.8b, v2.8b
2230# CHECK: uzp2	v23.16b, v1.16b, v2.16b
2231# CHECK: uzp2	v8.4h, v1.4h, v2.4h
2232# CHECK: uzp2	v25.8h, v0.8h, v2.8h
2233# CHECK: uzp2	v10.2s, v0.2s, v2.2s
2234# CHECK: uzp2	v27.4s, v7.4s, v2.4s
2235# CHECK: uzp2	v12.2d, v7.2d, v2.2d
22360x46,0x58,0x02,0x0e
22370x37,0x58,0x02,0x4e
22380x28,0x58,0x42,0x0e
22390x19,0x58,0x42,0x4e
22400x0a,0x58,0x82,0x0e
22410xfb,0x58,0x82,0x4e
22420xec,0x58,0xc2,0x4e
2243
2244#----------------------------------------------------------------------
2245# transpose with 3 same vectors to get secondary result
2246#----------------------------------------------------------------------
2247# CHECK: trn2	v29.8b, v6.8b, v2.8b
2248# CHECK: trn2	v14.16b, v6.16b, v2.16b
2249# CHECK: trn2	v31.4h, v5.4h, v2.4h
2250# CHECK: trn2	v0.8h, v5.8h, v2.8h
2251# CHECK: trn2	v17.2s, v4.2s, v2.2s
2252# CHECK: trn2	v2.4s, v4.4s, v2.4s
2253# CHECK: trn2	v19.2d, v3.2d, v2.2d
22540xdd,0x68,0x02,0x0e
22550xce,0x68,0x02,0x4e
22560xbf,0x68,0x42,0x0e
22570xa0,0x68,0x42,0x4e
22580x91,0x68,0x82,0x0e
22590x82,0x68,0x82,0x4e
22600x73,0x68,0xc2,0x4e
2261
2262#----------------------------------------------------------------------
2263# zip with 3 same vectors to get secondary result
2264#----------------------------------------------------------------------
2265# CHECK: zip2	v4.8b, v3.8b, v2.8b
2266# CHECK: zip2	v21.16b, v2.16b, v2.16b
2267# CHECK: zip2	v6.4h, v2.4h, v2.4h
2268# CHECK: zip2	v23.8h, v1.8h, v2.8h
2269# CHECK: zip2	v8.2s, v1.2s, v2.2s
2270# CHECK: zip2	v25.4s, v0.4s, v2.4s
2271# CHECK: zip2	v10.2d, v0.2d, v2.2d
22720x64,0x78,0x02,0x0e
22730x55,0x78,0x02,0x4e
22740x46,0x78,0x42,0x0e
22750x37,0x78,0x42,0x4e
22760x28,0x78,0x82,0x0e
22770x19,0x78,0x82,0x4e
22780x0a,0x78,0xc2,0x4e
2279
2280#----------------------------------------------------------------------
2281# Scalar Floating Point  multiply (scalar, by element)
2282#----------------------------------------------------------------------
2283# CHECK: fmul s0, s1, v1.s[0]
2284# CHECK: fmul s0, s1, v1.s[3]
2285# CHECK: fmul d0, d1, v1.d[0]
2286# CHECK: fmul d0, d1, v1.d[1]
2287# CHECK: fmul d15, d15, v15.d[1]
22880x20 0x90 0x81 0x5f
22890x20 0x98 0xa1 0x5f
22900x20 0x90 0xc1 0x5f
22910x20 0x98 0xc1 0x5f
22920xef 0x99 0xcf 0x5f
2293
2294#----------------------------------------------------------------------
2295# Scalar Floating Point  multiply extended (scalar, by element)
2296#----------------------------------------------------------------------
2297# CHECK: fmulx s3, s5, v7.s[0]
2298# CHECK: fmulx s3, s5, v7.s[3]
2299# CHECK: fmulx s3, s5, v15.s[3]
2300# CHECK: fmulx d0, d4, v8.d[0]
2301# CHECK: fmulx d0, d4, v8.d[1]
23020xa3 0x90 0x87 0x7f
23030xa3 0x98 0xa7 0x7f
23040xa3 0x98 0xaf 0x7f
23050x80 0x90 0xc8 0x7f
23060x80 0x98 0xc8 0x7f
2307
2308#----------------------------------------------------------------------
2309# Scalar Floating Point fused multiply-add (scalar, by element)
2310#----------------------------------------------------------------------
2311# CHECK: fmla s0, s1, v1.s[0]
2312# CHECK: fmla s0, s1, v1.s[3]
2313# CHECK: fmla d0, d1, v1.d[0]
2314# CHECK: fmla d0, d1, v1.d[1]
2315# CHECK: fmla d15, d15, v15.d[1]
23160x20 0x10 0x81 0x5f
23170x20 0x18 0xa1 0x5f
23180x20 0x10 0xc1 0x5f
23190x20 0x18 0xc1 0x5f
23200xef 0x19 0xcf 0x5f
2321
2322#----------------------------------------------------------------------
2323# Scalar Floating Point fused multiply-sub (scalar, by element)
2324#----------------------------------------------------------------------
2325# CHECK: fmls s3, s5, v7.s[0]
2326# CHECK: fmls s3, s5, v7.s[3]
2327# CHECK: fmls s3, s5, v15.s[3]
2328# CHECK: fmls d0, d4, v8.d[0]
2329# CHECK: fmls d0, d4, v8.d[1]
23300xa3 0x50 0x87 0x5f
23310xa3 0x58 0xa7 0x5f
23320xa3 0x58 0xaf 0x5f
23330x80 0x50 0xc8 0x5f
23340x80 0x58 0xc8 0x5f
2335
2336#----------------------------------------------------------------------
2337# Scalar Signed saturating doubling
2338# multiply-add long (scalar, by element)
2339#----------------------------------------------------------------------
2340# CHECK: sqdmlal s0, h0, v0.h[0]
2341# CHECK: sqdmlal s0, h0, v0.h[1]
2342# CHECK: sqdmlal s0, h0, v0.h[2]
2343# CHECK: sqdmlal s0, h0, v0.h[3]
2344# CHECK: sqdmlal s0, h0, v0.h[4]
2345# CHECK: sqdmlal s0, h0, v0.h[5]
2346# CHECK: sqdmlal s0, h0, v0.h[6]
2347# CHECK: sqdmlal s0, h0, v0.h[7]
2348# CHECK: sqdmlal d8, s9, v15.s[0]
2349# CHECK: sqdmlal d8, s9, v15.s[1]
2350# CHECK: sqdmlal d8, s9, v15.s[2]
2351# CHECK: sqdmlal d8, s9, v15.s[3]
23520x00 0x30 0x40 0x5f
23530x00 0x30 0x50 0x5f
23540x00 0x30 0x60 0x5f
23550x00 0x30 0x70 0x5f
23560x00 0x38 0x40 0x5f
23570x00 0x38 0x50 0x5f
23580x00 0x38 0x60 0x5f
23590x00 0x38 0x70 0x5f
23600x28 0x31 0x8f 0x5f
23610x28 0x31 0xaf 0x5f
23620x28 0x39 0x8f 0x5f
23630x28 0x39 0xaf 0x5f
2364
2365#----------------------------------------------------------------------
2366# Scalar Signed saturating doubling
2367# multiply-sub long (scalar, by element)
2368#----------------------------------------------------------------------
2369# CHECK: sqdmlsl s0, h0, v0.h[0]
2370# CHECK: sqdmlsl s0, h0, v0.h[1]
2371# CHECK: sqdmlsl s0, h0, v0.h[2]
2372# CHECK: sqdmlsl s0, h0, v0.h[3]
2373# CHECK: sqdmlsl s0, h0, v0.h[4]
2374# CHECK: sqdmlsl s0, h0, v0.h[5]
2375# CHECK: sqdmlsl s0, h0, v0.h[6]
2376# CHECK: sqdmlsl s0, h0, v0.h[7]
2377# CHECK: sqdmlsl d8, s9, v15.s[0]
2378# CHECK: sqdmlsl d8, s9, v15.s[1]
2379# CHECK: sqdmlsl d8, s9, v15.s[2]
2380# CHECK: sqdmlsl d8, s9, v15.s[3]
23810x00 0x70 0x40 0x5f
23820x00 0x70 0x50 0x5f
23830x00 0x70 0x60 0x5f
23840x00 0x70 0x70 0x5f
23850x00 0x78 0x40 0x5f
23860x00 0x78 0x50 0x5f
23870x00 0x78 0x60 0x5f
23880x00 0x78 0x70 0x5f
23890x28 0x71 0x8f 0x5f
23900x28 0x71 0xaf 0x5f
23910x28 0x79 0x8f 0x5f
23920x28 0x79 0xaf 0x5f
2393
2394#----------------------------------------------------------------------
2395# Scalar Signed saturating doubling multiply long (scalar, by element)
2396#----------------------------------------------------------------------
2397# CHECK: sqdmull s1, h1, v1.h[0]
2398# CHECK: sqdmull s1, h1, v1.h[1]
2399# CHECK: sqdmull s1, h1, v1.h[2]
2400# CHECK: sqdmull s1, h1, v1.h[3]
2401# CHECK: sqdmull s1, h1, v1.h[4]
2402# CHECK: sqdmull s1, h1, v1.h[5]
2403# CHECK: sqdmull s1, h1, v1.h[6]
2404# CHECK: sqdmull s1, h1, v1.h[7]
2405# CHECK: sqdmull d1, s1, v4.s[0]
2406# CHECK: sqdmull d1, s1, v4.s[1]
2407# CHECK: sqdmull d1, s1, v4.s[2]
2408# CHECK: sqdmull d1, s1, v4.s[3]
24090x21 0xb0 0x41 0x5f
24100x21 0xb0 0x51 0x5f
24110x21 0xb0 0x61 0x5f
24120x21 0xb0 0x71 0x5f
24130x21 0xb8 0x41 0x5f
24140x21 0xb8 0x51 0x5f
24150x21 0xb8 0x61 0x5f
24160x21 0xb8 0x71 0x5f
24170x21 0xb0 0x84 0x5f
24180x21 0xb0 0xa4 0x5f
24190x21 0xb8 0x84 0x5f
24200x21 0xb8 0xa4 0x5f
2421
2422#----------------------------------------------------------------------
2423# Scalar Signed saturating doubling multiply returning
2424# high half (scalar, by element)
2425#----------------------------------------------------------------------
2426# CHECK: sqdmulh h7, h1, v14.h[0]
2427# CHECK: sqdmulh h7, h15, v8.h[1]
2428# CHECK: sqdmulh h7, h15, v8.h[2]
2429# CHECK: sqdmulh h7, h15, v8.h[3]
2430# CHECK: sqdmulh h7, h15, v8.h[4]
2431# CHECK: sqdmulh h7, h15, v8.h[5]
2432# CHECK: sqdmulh h7, h15, v8.h[6]
2433# CHECK: sqdmulh h7, h15, v8.h[7]
2434# CHECK: sqdmulh s15, s3, v4.s[0]
2435# CHECK: sqdmulh s15, s14, v16.s[1]
2436# CHECK: sqdmulh s15, s15, v16.s[2]
2437# CHECK: sqdmulh s15, s16, v17.s[3]
24380x27 0xc0 0x4e 0x5f
24390xe7 0xc1 0x58 0x5f
24400xe7 0xc1 0x68 0x5f
24410xe7 0xc1 0x78 0x5f
24420xe7 0xc9 0x48 0x5f
24430xe7 0xc9 0x58 0x5f
24440xe7 0xc9 0x68 0x5f
24450xe7 0xc9 0x78 0x5f
24460x6f 0xc0 0x84 0x5f
24470xcf 0xc1 0xb0 0x5f
24480xef 0xc9 0x90 0x5f
24490x0f 0xca 0xb1 0x5f
2450
2451#----------------------------------------------------------------------
2452# Scalar Signed saturating rounding doubling multiply
2453# returning high half (scalar, by element)
2454#----------------------------------------------------------------------
2455# CHECK: sqrdmulh h7, h1, v14.h[0]
2456# CHECK: sqrdmulh h7, h15, v8.h[1]
2457# CHECK: sqrdmulh h7, h15, v8.h[2]
2458# CHECK: sqrdmulh h7, h15, v8.h[3]
2459# CHECK: sqrdmulh h7, h15, v8.h[4]
2460# CHECK: sqrdmulh h7, h15, v8.h[5]
2461# CHECK: sqrdmulh h7, h15, v8.h[6]
2462# CHECK: sqrdmulh h7, h15, v8.h[7]
2463# CHECK: sqrdmulh s15, s3, v4.s[0]
2464# CHECK: sqrdmulh s15, s14, v16.s[1]
2465# CHECK: sqrdmulh s15, s15, v16.s[2]
2466# CHECK: sqrdmulh s15, s16, v17.s[3]
24670x27 0xd0 0x4e 0x5f
24680xe7 0xd1 0x58 0x5f
24690xe7 0xd1 0x68 0x5f
24700xe7 0xd1 0x78 0x5f
24710xe7 0xd9 0x48 0x5f
24720xe7 0xd9 0x58 0x5f
24730xe7 0xd9 0x68 0x5f
24740xe7 0xd9 0x78 0x5f
24750x6f 0xd0 0x84 0x5f
24760xcf 0xd1 0xb0 0x5f
24770xef 0xd9 0x90 0x5f
24780x0f 0xda 0xb1 0x5f
2479
2480#----------------------------------------------------------------------
2481#Duplicate element (scalar)
2482#----------------------------------------------------------------------
2483# CHECK: {{dup|mov}} b0, v0.b[15]
2484# CHECK: {{dup|mov}} h2, v31.h[5]
2485# CHECK: {{dup|mov}} s17, v2.s[2]
2486# CHECK: {{dup|mov}} d6, v12.d[1]
24870x00 0x04 0x1f 0x5e
24880xe2 0x07 0x16 0x5e
24890x51 0x04 0x14 0x5e
24900x86 0x05 0x18 0x5e
2491
2492#----------------------------------------------------------------------
2493# Table look up
2494#----------------------------------------------------------------------
24950x20,0x00,0x02,0x0e
24960xf0,0x23,0x02,0x0e
24970x20,0x40,0x02,0x0e
24980xf0,0x62,0x02,0x0e
2499# CHECK: tbl v0.8b, { v1.16b }, v2.8b
2500# CHECK: tbl v16.8b, { v31.16b, v0.16b }, v2.8b
2501# CHECK: tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2502# CHECK: tbl v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2503
25040x20,0x00,0x02,0x4e
25050xf0,0x23,0x02,0x4e
25060x20,0x40,0x02,0x4e
25070xe0,0x63,0x02,0x4e
2508# CHECK: tbl v0.16b, { v1.16b }, v2.16b
2509# CHECK: tbl v16.16b, { v31.16b, v0.16b }, v2.16b
2510# CHECK: tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2511# CHECK: tbl v0.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2512
25130x20,0x10,0x02,0x0e
25140xf0,0x33,0x02,0x0e
25150x20,0x50,0x02,0x0e
25160xf0,0x72,0x02,0x0e
2517# CHECK: tbx v0.8b, { v1.16b }, v2.8b
2518# CHECK: tbx v16.8b, { v31.16b, v0.16b }, v2.8b
2519# CHECK: tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2520# CHECK: tbx v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2521
25220x20,0x10,0x02,0x4e
25230xf0,0x33,0x02,0x4e
25240x20,0x50,0x02,0x4e
25250xf0,0x73,0x02,0x4e
2526# CHECK: tbx v0.16b, { v1.16b }, v2.16b
2527# CHECK: tbx v16.16b, { v31.16b, v0.16b }, v2.16b
2528# CHECK: tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2529# CHECK: tbx v16.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2530
2531#----------------------------------------------------------------------
2532# Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
2533# Odd
2534#----------------------------------------------------------------------
2535# CHECK: fcvtxn s22, d13
25360xb6,0x69,0x61,0x7e
2537
2538#----------------------------------------------------------------------
2539# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2540# With Ties To Away
2541#----------------------------------------------------------------------
2542# CHECK: fcvtas s12, s13
2543# CHECK: fcvtas d21, d14
2544
25450xac,0xc9,0x21,0x5e
25460xd5,0xc9,0x61,0x5e
2547
2548#----------------------------------------------------------------------
2549# Scalar Floating-point Convert To Unsigned Integer, Rounding To
2550# Nearest With Ties To Away
2551#----------------------------------------------------------------------
2552# CHECK: fcvtau s12, s13
2553# CHECK: fcvtau d21, d14
25540xac,0xc9,0x21,0x7e
25550xd5,0xc9,0x61,0x7e
2556
2557#----------------------------------------------------------------------
2558# Scalar Floating-point Convert To Signed Integer, Rounding Toward
2559# Minus Infinity
2560#----------------------------------------------------------------------
2561# CHECK: fcvtms s22, s13
2562# CHECK: fcvtms d21, d14
25630xb6,0xb9,0x21,0x5e
25640xd5,0xb9,0x61,0x5e
2565
2566#----------------------------------------------------------------------
2567# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2568# Minus Infinity
2569#----------------------------------------------------------------------
2570# CHECK: fcvtmu s12, s13
2571# CHECK: fcvtmu d21, d14
25720xac,0xb9,0x21,0x7e
25730xd5,0xb9,0x61,0x7e
2574
2575#----------------------------------------------------------------------
2576# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2577# With Ties To Even
2578#----------------------------------------------------------------------
2579
2580# CHECK: fcvtns s22, s13
2581# CHECK: fcvtns d21, d14
2582
25830xb6,0xa9,0x21,0x5e
25840xd5,0xa9,0x61,0x5e
2585
2586#----------------------------------------------------------------------
2587# Scalar Floating-point Convert To Unsigned Integer, Rounding To
2588# Nearest With Ties To Even
2589#----------------------------------------------------------------------
2590
2591# CHECK: fcvtnu s12, s13
2592# CHECK: fcvtnu d21, d14
25930xac,0xa9,0x21,0x7e
25940xd5,0xa9,0x61,0x7e
2595
2596#----------------------------------------------------------------------
2597# Scalar Floating-point Convert To Signed Integer, Rounding Toward
2598# Positive Infinity
2599#----------------------------------------------------------------------
2600# CHECK: fcvtps s22, s13
2601# CHECK: fcvtps d21, d14
26020xb6,0xa9,0xa1,0x5e
26030xd5,0xa9,0xe1,0x5e
2604
2605#----------------------------------------------------------------------
2606# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2607# Positive Infinity
2608#----------------------------------------------------------------------
2609# CHECK: fcvtpu s12, s13
2610# CHECK: fcvtpu d21, d14
26110xac,0xa9,0xa1,0x7e
26120xd5,0xa9,0xe1,0x7e
2613
2614#----------------------------------------------------------------------
2615# Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
2616#----------------------------------------------------------------------
2617# CHECK: fcvtzs s12, s13
2618# CHECK: fcvtzs d21, d14
26190xac,0xb9,0xa1,0x5e
26200xd5,0xb9,0xe1,0x5e
2621
2622#----------------------------------------------------------------------
2623# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2624# Zero
2625#----------------------------------------------------------------------
2626# CHECK: fcvtzu s12, s13
2627# CHECK: fcvtzu d21, d14
26280xac,0xb9,0xa1,0x7e
26290xd5,0xb9,0xe1,0x7e
2630
2631#----------------------------------------------------------------------
2632# Scalar Floating-point Absolute Difference
2633#----------------------------------------------------------------------
2634# CHECK: fabd s29, s24, s20
2635# CHECK: fabd d29, d24, d20
26360x1d,0xd7,0xb4,0x7e
26370x1d,0xd7,0xf4,0x7e
2638