[AArch64] Add support for NEON scalar floating-point convert to fixed-point instructions.
[oota-llvm.git] / test / MC / AArch64 / neon-diagnostics.s
1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t
2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
3
4 //------------------------------------------------------------------------------
5 // Vector Integer Add/sub
6 //------------------------------------------------------------------------------
7
8         // Mismatched vector types
9         add v0.16b, v1.8b, v2.8b
10         sub v0.2d, v1.2d, v2.2s
11
12 // CHECK-ERROR: error: invalid operand for instruction
13 // CHECK-ERROR:         add v0.16b, v1.8b, v2.8b
14 // CHECK-ERROR:                        ^
15 // CHECK-ERROR: error: invalid operand for instruction
16 // CHECK-ERROR:         sub v0.2d, v1.2d, v2.2s
17 // CHECK-ERROR:                              ^
18
19 //------------------------------------------------------------------------------
20 // Vector Floating-Point Add/sub
21 //------------------------------------------------------------------------------
22
23         // Mismatched and invalid vector types
24         fadd v0.2d, v1.2s, v2.2s
25         fsub v0.4s, v1.2s, v2.4s
26         fsub v0.8b, v1.8b, v2.8b
27
28 // CHECK-ERROR: error: invalid operand for instruction
29 // CHECK-ERROR:         fadd v0.2d, v1.2s, v2.2s
30 // CHECK-ERROR:                        ^
31 // CHECK-ERROR: error: invalid operand for instruction
32 // CHECK-ERROR:         fsub v0.4s, v1.2s, v2.4s
33 // CHECK-ERROR:                        ^
34 // CHECK-ERROR: error: invalid operand for instruction
35 // CHECK-ERROR:         fsub v0.8b, v1.8b, v2.8b
36 // CHECK-ERROR:                  ^
37
38 //----------------------------------------------------------------------
39 // Vector Integer Mul
40 //----------------------------------------------------------------------
41
42         // Mismatched and invalid vector types
43         mul v0.16b, v1.8b, v2.8b
44         mul v0.2d, v1.2d, v2.2d
45
46 // CHECK-ERROR: error: invalid operand for instruction
47 // CHECK-ERROR:         mul v0.16b, v1.8b, v2.8b
48 // CHECK-ERROR:                        ^
49 // CHECK-ERROR: error: invalid operand for instruction
50 // CHECK-ERROR:         mul v0.2d, v1.2d, v2.2d
51 // CHECK-ERROR:                ^
52
53 //----------------------------------------------------------------------
54 // Vector Floating-Point Mul/Div
55 //----------------------------------------------------------------------
56         // Mismatched vector types
57         fmul v0.16b, v1.8b, v2.8b
58         fdiv v0.2s, v1.2d, v2.2d
59
60 // CHECK-ERROR: error: invalid operand for instruction
61 // CHECK-ERROR:         fmul v0.16b, v1.8b, v2.8b
62 // CHECK-ERROR:                         ^
63 // CHECK-ERROR: error: invalid operand for instruction
64 // CHECK-ERROR:         fdiv v0.2s, v1.2d, v2.2d
65 // CHECK-ERROR:                        ^
66
67 //----------------------------------------------------------------------
68 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
69 //----------------------------------------------------------------------
70         // Mismatched and invalid vector types
71         and v0.8b, v1.16b, v2.8b
72         orr v0.4h, v1.4h, v2.4h
73         eor v0.2s, v1.2s, v2.2s
74         bsl v0.8b, v1.16b, v2.8b
75         bsl v0.2s, v1.2s, v2.2s
76         bit v0.2d, v1.2d, v2.2d
77         bif v0.4h, v1.4h, v2.4h
78         orn v0.8b, v1.16b, v2.16b
79         bic v0.2d, v1.2d, v2.2d
80
81 // CHECK-ERROR: error: invalid operand for instruction
82 // CHECK-ERROR:         and v0.8b, v1.16b, v2.8b
83 // CHECK-ERROR:                       ^
84 // CHECK-ERROR: error: invalid operand for instruction
85 // CHECK-ERROR:         orr v0.4h, v1.4h, v2.4h
86 // CHECK-ERROR:                ^
87 // CHECK-ERROR: error: invalid operand for instruction
88 // CHECK-ERROR:         eor v0.2s, v1.2s, v2.2s
89 // CHECK-ERROR:                ^
90 // CHECK-ERROR: error: invalid operand for instruction
91 // CHECK-ERROR:         bsl v0.8b, v1.16b, v2.8b
92 // CHECK-ERROR:                       ^
93 // CHECK-ERROR: error: invalid operand for instruction
94 // CHECK-ERROR:         bsl v0.2s, v1.2s, v2.2s
95 // CHECK-ERROR:                ^
96 // CHECK-ERROR: error: invalid operand for instruction
97 // CHECK-ERROR:         bit v0.2d, v1.2d, v2.2d
98 // CHECK-ERROR:                ^
99 // CHECK-ERROR: error: invalid operand for instruction
100 // CHECK-ERROR:         bif v0.4h, v1.4h, v2.4h
101 // CHECK-ERROR:                ^
102 // CHECK-ERROR: error: invalid operand for instruction
103 // CHECK-ERROR:         orn v0.8b, v1.16b, v2.16b
104 // CHECK-ERROR:                        ^
105 // CHECK-ERROR: error: invalid operand for instruction
106 // CHECK-ERROR:         bic v0.2d, v1.2d, v2.2d
107 // CHECK-ERROR:                ^
108
109 //----------------------------------------------------------------------
110 // Vector Integer Multiply-accumulate and Multiply-subtract
111 //----------------------------------------------------------------------
112
113         // Mismatched and invalid vector types
114         mla v0.16b, v1.8b, v2.8b
115         mls v0.2d, v1.2d, v2.2d
116
117 // CHECK-ERROR: error: invalid operand for instruction
118 // CHECK-ERROR:         mla v0.16b, v1.8b, v2.8b
119 // CHECK-ERROR:                        ^
120 // CHECK-ERROR: error: invalid operand for instruction
121 // CHECK-ERROR:         mls v0.2d, v1.2d, v2.2d
122 // CHECK-ERROR:                ^
123
124 //----------------------------------------------------------------------
125 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
126 //----------------------------------------------------------------------
127         // Mismatched vector types
128         fmla v0.2s, v1.2d, v2.2d
129         fmls v0.16b, v1.8b, v2.8b
130
131 // CHECK-ERROR: error: invalid operand for instruction
132 // CHECK-ERROR:         fmla v0.2s, v1.2d, v2.2d
133 // CHECK-ERROR:                        ^
134 // CHECK-ERROR: error: invalid operand for instruction
135 // CHECK-ERROR:         fmls v0.16b, v1.8b, v2.8b
136 // CHECK-ERROR:                         ^
137
138
139 //----------------------------------------------------------------------
140 // Vector Move Immediate Shifted
141 // Vector Move Inverted Immediate Shifted
142 // Vector Bitwise Bit Clear (AND NOT) - immediate
143 // Vector Bitwise OR - immedidate
144 //----------------------------------------------------------------------
145       // out of range immediate (0 to 0xff)
146       movi v0.2s, #-1
147       mvni v1.4s, #256
148       // out of range shift (0, 8, 16, 24 and 0, 8)
149       bic v15.4h, #1, lsl #7
150       orr v31.2s, #1, lsl #25
151       movi v5.4h, #10, lsl #16
152       // invalid vector type (2s, 4s, 4h, 8h)
153       movi v5.8b, #1, lsl #8
154
155 // CHECK-ERROR: error: invalid operand for instruction
156 // CHECK-ERROR:          movi v0.2s, #-1
157 // CHECK-ERROR:                      ^
158 // CHECK-ERROR: error: invalid operand for instruction
159 // CHECK-ERROR:         mvni v1.4s, #256
160 // CHECK-ERROR:                     ^
161 // CHECK-ERROR: error: invalid operand for instruction
162 // CHECK-ERROR:         bic v15.4h, #1, lsl #7
163 // CHECK-ERROR:                         ^
164 // CHECK-ERROR: error: invalid operand for instruction
165 // CHECK-ERROR:         orr v31.2s, #1, lsl #25
166 // CHECK-ERROR:                         ^
167 // CHECK-ERROR: error: invalid operand for instruction
168 // CHECK-ERROR:         movi v5.4h, #10, lsl #16
169 // CHECK-ERROR:                          ^
170 // CHECK-ERROR: error: invalid operand for instruction
171 // CHECK-ERROR:         movi v5.8b, #1, lsl #8
172 // CHECK-ERROR:                         ^
173 //----------------------------------------------------------------------
174 // Vector Move Immediate Masked
175 // Vector Move Inverted Immediate Masked
176 //----------------------------------------------------------------------
177       // out of range immediate (0 to 0xff)
178       movi v0.2s, #-1, msl #8
179       mvni v7.4s, #256, msl #16
180       // out of range shift (8, 16)
181       movi v3.2s, #1, msl #0
182       mvni v17.4s, #255, msl #32
183       // invalid vector type (2s, 4s)
184       movi v5.4h, #31, msl #8
185
186 // CHECK-ERROR: error: invalid operand for instruction
187 // CHECK-ERROR:         movi v0.2s, #-1, msl #8
188 // CHECK-ERROR:                     ^
189 // CHECK-ERROR: error: invalid operand for instruction
190 // CHECK-ERROR:         mvni v7.4s, #256, msl #16
191 // CHECK-ERROR:                     ^
192 // CHECK-ERROR: error: invalid operand for instruction
193 // CHECK-ERROR:         movi v3.2s, #1, msl #0
194 // CHECK-ERROR:                         ^
195 // CHECK-ERROR: error: invalid operand for instruction
196 // CHECK-ERROR:         mvni v17.4s, #255, msl #32
197 // CHECK-ERROR:                            ^
198 // CHECK-ERROR: error: invalid operand for instruction
199 // CHECK-ERROR:         movi v5.4h, #31, msl #8
200 // CHECK-ERROR:                          ^
201
202 //----------------------------------------------------------------------
203 // Vector Immediate - per byte
204 //----------------------------------------------------------------------
205         // out of range immediate (0 to 0xff)
206         movi v0.8b, #-1
207         movi v1.16b, #256
208
209 // CHECK-ERROR: error: invalid operand for instruction
210 // CHECK-ERROR:         movi v0.8b, #-1
211 // CHECK-ERROR:                     ^
212 // CHECK-ERROR: error: invalid operand for instruction
213 // CHECK-ERROR:         movi v1.16b, #256
214 // CHECK-ERROR:                      ^
215
216 //----------------------------------------------------------------------
217 // Scalar Floating-point Reciprocal Estimate
218 //----------------------------------------------------------------------
219
220     frecpe s19, h14
221     frecpe d13, s13
222
223 // CHECK-ERROR: error: invalid operand for instruction
224 // CHECK-ERROR:        frecpe s19, h14
225 // CHECK-ERROR:                    ^
226 // CHECK-ERROR: error: invalid operand for instruction
227 // CHECK-ERROR:        frecpe d13, s13
228 // CHECK-ERROR:                    ^
229
230 //----------------------------------------------------------------------
231 // Scalar Floating-point Reciprocal Exponent
232 //----------------------------------------------------------------------
233
234     frecpx s18, h10
235     frecpx d16, s19
236
237 // CHECK-ERROR: error: invalid operand for instruction
238 // CHECK-ERROR:        frecpx s18, h10
239 // CHECK-ERROR:                    ^
240 // CHECK-ERROR: error: invalid operand for instruction
241 // CHECK-ERROR:        frecpx d16, s19
242 // CHECK-ERROR:                    ^
243
244 //----------------------------------------------------------------------
245 // Scalar Floating-point Reciprocal Square Root Estimate
246 //----------------------------------------------------------------------
247
248     frsqrte s22, h13
249     frsqrte d21, s12
250
251 // CHECK-ERROR: error: invalid operand for instruction
252 // CHECK-ERROR:        frsqrte s22, h13
253 // CHECK-ERROR:                     ^
254 // CHECK-ERROR: error: invalid operand for instruction
255 // CHECK-ERROR:        frsqrte d21, s12
256 // CHECK-ERROR:                     ^
257
258 //----------------------------------------------------------------------
259 // Vector Move Immediate - bytemask, per doubleword
260 //---------------------------------------------------------------------
261         // invalid bytemask (0x00 or 0xff)
262         movi v0.2d, #0x10ff00ff00ff00ff
263
264 // CHECK:ERROR: error: invalid operand for instruction
265 // CHECK:ERROR:         movi v0.2d, #0x10ff00ff00ff00ff
266 // CHECK:ERROR:                     ^
267
268 //----------------------------------------------------------------------
269 // Vector Move Immediate - bytemask, one doubleword
270 //----------------------------------------------------------------------
271         // invalid bytemask (0x00 or 0xff)
272         movi v0.2d, #0xffff00ff001f00ff
273
274 // CHECK:ERROR: error: invalid operand for instruction
275 // CHECK:ERROR:         movi v0.2d, #0xffff00ff001f00ff
276 // CHECK:ERROR:                     ^
277 //----------------------------------------------------------------------
278 // Vector Floating Point Move Immediate
279 //----------------------------------------------------------------------
280         // invalid vector type (2s, 4s, 2d)
281          fmov v0.4h, #1.0
282
283 // CHECK:ERROR: error: invalid operand for instruction
284 // CHECK:ERROR:         fmov v0.4h, #1.0
285 // CHECK:ERROR:              ^
286
287 //----------------------------------------------------------------------
288 // Vector Move -  register
289 //----------------------------------------------------------------------
290       // invalid vector type (8b, 16b)
291       mov v0.2s, v31.8b
292 // CHECK:ERROR: error: invalid operand for instruction
293 // CHECK:ERROR:         mov v0.2s, v31.8b
294 // CHECK:ERROR:                ^
295
296 //----------------------------------------------------------------------
297 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
298 //----------------------------------------------------------------------
299
300         // Mismatched and invalid vector types (2d)
301         saba v0.16b, v1.8b, v2.8b
302         uaba v0.2d, v1.2d, v2.2d
303
304 // CHECK-ERROR: error: invalid operand for instruction
305 // CHECK-ERROR:         saba v0.16b, v1.8b, v2.8b
306 // CHECK-ERROR:                        ^
307 // CHECK-ERROR: error: invalid operand for instruction
308 // CHECK-ERROR:         uaba v0.2d, v1.2d, v2.2d
309 // CHECK-ERROR:                ^
310
311 //----------------------------------------------------------------------
312 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
313 // Vector Absolute Difference (Signed, Unsigned)
314
315         // Mismatched and invalid vector types (2d)
316         uaba v0.16b, v1.8b, v2.8b
317         saba v0.2d, v1.2d, v2.2d
318         uabd v0.4s, v1.2s, v2.2s
319         sabd v0.4h, v1.8h, v8.8h
320
321 // CHECK-ERROR: error: invalid operand for instruction
322 // CHECK-ERROR:         uaba v0.16b, v1.8b, v2.8b
323 // CHECK-ERROR:                        ^
324 // CHECK-ERROR: error: invalid operand for instruction
325 // CHECK-ERROR:         saba v0.2d, v1.2d, v2.2d
326 // CHECK-ERROR:                ^
327 // CHECK-ERROR: error: invalid operand for instruction
328 // CHECK-ERROR:         uabd v0.4s, v1.2s, v2.2s
329 // CHECK-ERROR:                        ^
330 // CHECK-ERROR: error: invalid operand for instruction
331 // CHECK-ERROR:         sabd v0.4h, v1.8h, v8.8h
332 // CHECK-ERROR:                        ^
333
334 //----------------------------------------------------------------------
335 // Vector Absolute Difference (Floating Point)
336 //----------------------------------------------------------------------
337         // Mismatched and invalid vector types
338         fabd v0.2s, v1.4s, v2.2d
339         fabd v0.4h, v1.4h, v2.4h
340
341 // CHECK-ERROR: error: invalid operand for instruction
342 // CHECK-ERROR:         fabd v0.2s, v1.4s, v2.2d
343 // CHECK-ERROR:                        ^
344 // CHECK-ERROR: error: invalid operand for instruction
345 // CHECK-ERROR:         fabd v0.4h, v1.4h, v2.4h
346 // CHECK-ERROR:                 ^
347 //----------------------------------------------------------------------
348 // Vector Multiply (Polynomial)
349 //----------------------------------------------------------------------
350
351         // Mismatched and invalid vector types
352          pmul v0.8b, v1.8b, v2.16b
353          pmul v0.2s, v1.2s, v2.2s
354
355 // CHECK-ERROR: error: invalid operand for instruction
356 // CHECK-ERROR:         pmul v0.8b, v1.8b, v2.16b
357 // CHECK-ERROR:                               ^
358 // CHECK-ERROR: error: invalid operand for instruction
359 // CHECK-ERROR:         pmul v0.2s, v1.2s, v2.2s
360 // CHECK-ERROR:                 ^
361
362 //----------------------------------------------------------------------
363 // Scalar Integer Add and Sub
364 //----------------------------------------------------------------------
365
366       // Mismatched registers
367          add d0, s1, d2
368          sub s1, d1, d2
369
370 // CHECK-ERROR: error: invalid operand for instruction
371 // CHECK-ERROR:         add d0, s1, d2
372 // CHECK-ERROR:                 ^
373 // CHECK-ERROR: error: invalid operand for instruction
374 // CHECK-ERROR:         sub s1, d1, d2
375 // CHECK-ERROR:             ^
376
377 //----------------------------------------------------------------------
378 // Vector Reciprocal Step (Floating Point)
379 //----------------------------------------------------------------------
380
381         // Mismatched and invalid vector types
382          frecps v0.4s, v1.2d, v2.4s
383          frecps v0.8h, v1.8h, v2.8h
384
385 // CHECK-ERROR: error: invalid operand for instruction
386 // CHECK-ERROR:        frecps v0.4s, v1.2d, v2.4s
387 // CHECK-ERROR:                         ^
388 // CHECK-ERROR: error: invalid operand for instruction
389 // CHECK-ERROR:        frecps v0.8h, v1.8h, v2.8h
390 // CHECK-ERROR:                  ^
391
392 //----------------------------------------------------------------------
393 // Vector Reciprocal Square Root Step (Floating Point)
394 //----------------------------------------------------------------------
395
396         // Mismatched and invalid vector types
397          frsqrts v0.2d, v1.2d, v2.2s
398          frsqrts v0.4h, v1.4h, v2.4h
399
400 // CHECK-ERROR: error: invalid operand for instruction
401 // CHECK-ERROR:        frsqrts v0.2d, v1.2d, v2.2s
402 // CHECK-ERROR:                                 ^
403 // CHECK-ERROR: error: invalid operand for instruction
404 // CHECK-ERROR:        frsqrts v0.4h, v1.4h, v2.4h
405 // CHECK-ERROR:                   ^
406
407
408 //----------------------------------------------------------------------
409 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
410 //----------------------------------------------------------------------
411
412         // Mismatched and invalid vector types
413         facge v0.2d, v1.2s, v2.2d
414         facge v0.4h, v1.4h, v2.4h
415         facle v0.8h, v1.4h, v2.4h
416
417 // CHECK-ERROR: error: invalid operand for instruction
418 // CHECK-ERROR:        facge v0.2d, v1.2s, v2.2d
419 // CHECK-ERROR:                        ^
420 // CHECK-ERROR: error: invalid operand for instruction
421 // CHECK-ERROR:        facge v0.4h, v1.4h, v2.4h
422 // CHECK-ERROR:                 ^
423 // CHECK-ERROR: error: invalid operand for instruction
424 // CHECK-ERROR:        facle v0.8h, v1.4h, v2.4h
425 // CHECK-ERROR:                 ^
426 //----------------------------------------------------------------------
427 // Vector Absolute Compare Mask Less Than (Floating Point)
428 //----------------------------------------------------------------------
429
430         // Mismatched and invalid vector types
431         facgt v0.2d, v1.2d, v2.4s
432         facgt v0.8h, v1.8h, v2.8h
433         faclt v0.8b, v1.8b, v2.8b
434
435 // CHECK-ERROR: error: invalid operand for instruction
436 // CHECK-ERROR:        facgt v0.2d, v1.2d, v2.4s
437 // CHECK-ERROR:                               ^
438 // CHECK-ERROR: error: invalid operand for instruction
439 // CHECK-ERROR:        facgt v0.8h, v1.8h, v2.8h
440 // CHECK-ERROR:                 ^
441 // CHECK-ERROR: error: invalid operand for instruction
442 // CHECK-ERROR:        faclt v0.8b, v1.8b, v2.8b
443 // CHECK-ERROR:                 ^
444
445
446 //----------------------------------------------------------------------
447 // Vector Compare Mask Equal (Integer)
448 //----------------------------------------------------------------------
449
450          // Mismatched vector types
451          cmeq c0.2d, v1.2d, v2.2s
452
453 // CHECK-ERROR: error: invalid operand for instruction
454 // CHECK-ERROR:        cmeq c0.2d, v1.2d, v2.2s
455 // CHECK-ERROR:                              ^
456
457 //----------------------------------------------------------------------
458 // Vector Compare Mask Higher or Same (Unsigned Integer)
459 // Vector Compare Mask Less or Same (Unsigned Integer)
460 // CMLS is alias for CMHS with operands reversed.
461 //----------------------------------------------------------------------
462
463          // Mismatched vector types
464          cmhs c0.4h, v1.8b, v2.8b
465          cmls c0.16b, v1.16b, v2.2d
466
467 // CHECK-ERROR: error: invalid operand for instruction
468 // CHECK-ERROR:        cmhs c0.4h, v1.8b, v2.8b
469 // CHECK-ERROR:                       ^
470 // CHECK-ERROR: error: invalid operand for instruction
471 // CHECK-ERROR:        cmls c0.16b, v1.16b, v2.2d
472 // CHECK-ERROR:                                ^
473
474 //----------------------------------------------------------------------
475 // Vector Compare Mask Greater Than or Equal (Integer)
476 // Vector Compare Mask Less Than or Equal (Integer)
477 // CMLE is alias for CMGE with operands reversed.
478 //----------------------------------------------------------------------
479
480          // Mismatched vector types
481          cmge c0.8h, v1.8b, v2.8b
482          cmle c0.4h, v1.2s, v2.2s
483
484 // CHECK-ERROR: error: invalid operand for instruction
485 // CHECK-ERROR:        cmge c0.8h, v1.8b, v2.8b
486 // CHECK-ERROR:                       ^
487 // CHECK-ERROR: error: invalid operand for instruction
488 // CHECK-ERROR:         cmle c0.4h, v1.2s, v2.2s
489 // CHECK-ERROR:                        ^
490
491 //----------------------------------------------------------------------
492 // Vector Compare Mask Higher (Unsigned Integer)
493 // Vector Compare Mask Lower (Unsigned Integer)
494 // CMLO is alias for CMHI with operands reversed.
495 //----------------------------------------------------------------------
496
497          // Mismatched vector types
498          cmhi c0.4s, v1.4s, v2.16b
499          cmlo c0.8b, v1.8b, v2.2s
500
501 // CHECK-ERROR: error: invalid operand for instruction
502 // CHECK-ERROR:        cmhi c0.4s, v1.4s, v2.16b
503 // CHECK-ERROR:                              ^
504 // CHECK-ERROR: error: invalid operand for instruction
505 // CHECK-ERROR:         cmlo c0.8b, v1.8b, v2.2s
506 // CHECK-ERROR:                               ^
507
508 //----------------------------------------------------------------------
509 // Vector Compare Mask Greater Than (Integer)
510 // Vector Compare Mask Less Than (Integer)
511 // CMLT is alias for CMGT with operands reversed.
512 //----------------------------------------------------------------------
513
514          // Mismatched vector types
515          cmgt c0.8b, v1.4s, v2.16b
516          cmlt c0.8h, v1.16b, v2.4s
517
518 // CHECK-ERROR: error: invalid operand for instruction
519 // CHECK-ERROR:         cmgt c0.8b, v1.4s, v2.16b
520 // CHECK-ERROR:                        ^
521 // CHECK-ERROR: error: invalid operand for instruction
522 // CHECK-ERROR:         cmlt c0.8h, v1.16b, v2.4s
523 // CHECK-ERROR:                        ^
524
525 //----------------------------------------------------------------------
526 // Vector Compare Mask Bitwise Test (Integer)
527 //----------------------------------------------------------------------
528
529          // Mismatched vector types
530          cmtst c0.16b, v1.16b, v2.4s
531
532 // CHECK-ERROR: error: invalid operand for instruction
533 // CHECK-ERROR:         cmtst c0.16b, v1.16b, v2.4s
534 // CHECK-ERROR:                                  ^
535
536 //----------------------------------------------------------------------
537 // Vector Compare Mask Equal (Floating Point)
538 //----------------------------------------------------------------------
539
540         // Mismatched and invalid vector types
541         fcmeq v0.2d, v1.2s, v2.2d
542         fcmeq v0.16b, v1.16b, v2.16b
543         fcmeq v0.8b, v1.4h, v2.4h
544
545 // CHECK-ERROR: error: invalid operand for instruction
546 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, v2.2d
547 // CHECK-ERROR:                        ^
548 // CHECK-ERROR: error: invalid operand for instruction
549 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, v2.16b
550 // CHECK-ERROR:                 ^
551 // CHECK-ERROR: error: invalid operand for instruction
552 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, v2.4h
553 // CHECK-ERROR:                 ^
554
555 //----------------------------------------------------------------------
556 // Vector Compare Mask Greater Than Or Equal (Floating Point)
557 // Vector Compare Mask Less Than Or Equal (Floating Point)
558 // FCMLE is alias for FCMGE with operands reversed.
559 //----------------------------------------------------------------------
560
561         // Mismatched and invalid vector types
562          fcmge v31.4s, v29.2s, v28.4s
563          fcmge v3.8b, v8.2s, v12.2s
564          fcmle v17.8h, v15.2d, v13.2d
565
566 // CHECK-ERROR: error: invalid operand for instruction
567 // CHECK-ERROR:        fcmge v31.4s, v29.2s, v28.4s
568 // CHECK-ERROR:                          ^
569 // CHECK-ERROR: error: invalid operand for instruction
570 // CHECK-ERROR:        fcmge v3.8b, v8.2s, v12.2s
571 // CHECK-ERROR:                 ^
572 // CHECK-ERROR: error: invalid operand for instruction
573 // CHECK-ERROR:        fcmle v17.8h, v15.2d, v13.2d
574 // CHECK-ERROR:                 ^
575
576 //----------------------------------------------------------------------
577 // Vector Compare Mask Greater Than (Floating Point)
578 // Vector Compare Mask Less Than (Floating Point)
579 // FCMLT is alias for FCMGT with operands reversed.
580 //----------------------------------------------------------------------
581
582         // Mismatched and invalid vector types
583          fcmgt v0.2d, v31.2s, v16.2s
584          fcmgt v4.4s, v7.4s, v15.4h
585          fcmlt v29.2d, v5.2d, v2.16b
586
587 // CHECK-ERROR: error: invalid operand for instruction
588 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, v16.2s
589 // CHECK-ERROR:                         ^
590 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
591 // CHECK-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
592 // CHECK-ERROR:                                ^
593 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
594 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
595 // CHECK-ERROR:                                ^
596
597 //----------------------------------------------------------------------
598 // Vector Compare Mask Equal to Zero (Integer)
599 //----------------------------------------------------------------------
600         // Mismatched vector types and invalid imm
601          // Mismatched vector types
602          cmeq c0.2d, v1.2s, #0
603          cmeq c0.2d, v1.2d, #1
604
605 // CHECK-ERROR: error: invalid operand for instruction
606 // CHECK-ERROR:        cmeq c0.2d, v1.2s, #0
607 // CHECK-ERROR:                       ^
608 // CHECK-ERROR: error: invalid operand for instruction
609 // CHECK-ERROR:        cmeq c0.2d, v1.2d, #1
610 // CHECK-ERROR:                            ^
611
612 //----------------------------------------------------------------------
613 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
614 //----------------------------------------------------------------------
615         // Mismatched vector types and invalid imm
616          cmge c0.8h, v1.8b, #0
617          cmge c0.4s, v1.4s, #-1
618
619 // CHECK-ERROR: error: invalid operand for instruction
620 // CHECK-ERROR:        cmge c0.8h, v1.8b, #0
621 // CHECK-ERROR:                       ^
622 // CHECK-ERROR: error: invalid operand for instruction
623 // CHECK-ERROR:         cmge c0.4s, v1.4s, #-1
624 // CHECK-ERROR:                             ^
625
626 //----------------------------------------------------------------------
627 // Vector Compare Mask Greater Than Zero (Signed Integer)
628 //----------------------------------------------------------------------
629         // Mismatched vector types and invalid imm
630          cmgt c0.8b, v1.4s, #0
631          cmgt c0.8b, v1.8b, #-255
632
633 // CHECK-ERROR: error: invalid operand for instruction
634 // CHECK-ERROR:         cmgt c0.8b, v1.4s, #0
635 // CHECK-ERROR:                        ^
636 // CHECK-ERROR: error: invalid operand for instruction
637 // CHECK-ERROR:         cmgt c0.8b, v1.8b, #-255
638 // CHECK-ERROR:                             ^
639
640 //----------------------------------------------------------------------
641 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
642 //----------------------------------------------------------------------
643         // Mismatched vector types and invalid imm
644          cmle c0.4h, v1.2s, #0
645          cmle c0.16b, v1.16b, #16
646
647 // CHECK-ERROR: error: invalid operand for instruction
648 // CHECK-ERROR:        cmle c0.4h, v1.2s, #0
649 // CHECK-ERROR:                       ^
650 // CHECK-ERROR: error: invalid operand for instruction
651 // CHECK-ERROR:         cmle c0.16b, v1.16b, #16
652 // CHECK-ERROR:                               ^
653 //----------------------------------------------------------------------
654 // Vector Compare Mask Less Than Zero (Signed Integer)
655 //----------------------------------------------------------------------
656         // Mismatched vector types and invalid imm
657          cmlt c0.8h, v1.16b, #0
658          cmlt c0.8h, v1.8h, #-15
659
660 // CHECK-ERROR: error: invalid operand for instruction
661 // CHECK-ERROR:         cmlt c0.8h, v1.16b, #0
662 // CHECK-ERROR:                        ^
663 // CHECK-ERROR: error: invalid operand for instruction
664 // CHECK-ERROR:         cmlt c0.8h, v1.8h, #-15
665 // CHECK-ERROR:                             ^
666
667 //----------------------------------------------------------------------
668 // Vector Compare Mask Equal to Zero (Floating Point)
669 //----------------------------------------------------------------------
670
671         // Mismatched and invalid vector types, invalid imm
672         fcmeq v0.2d, v1.2s, #0.0
673         fcmeq v0.16b, v1.16b, #0.0
674         fcmeq v0.8b, v1.4h, #1.0
675         fcmeq v0.8b, v1.4h, #1
676
677 // CHECK-ERROR: error: invalid operand for instruction
678 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, #0.0
679 // CHECK-ERROR:                        ^
680 // CHECK-ERROR: error: invalid operand for instruction
681 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, #0.0
682 // CHECK-ERROR:                 ^
683 // CHECK-ERROR: error: invalid operand for instruction
684 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1.0
685 // CHECK-ERROR:                             ^
686 // CHECK-ERROR: error:  Expected floating-point immediate
687 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1
688 // CHECK-ERROR:                             ^
689 //----------------------------------------------------------------------
690 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
691 //----------------------------------------------------------------------
692
693         // Mismatched and invalid vector types, invalid imm
694          fcmge v31.4s, v29.2s, #0.0
695          fcmge v3.8b, v8.2s, #0.0
696          fcmle v17.8h, v15.2d, #-1.0
697          fcmle v17.8h, v15.2d, #0
698
699 // CHECK-ERROR: error: invalid operand for instruction
700 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
701 // CHECK-ERROR:                          ^
702 // CHECK-ERROR: error: invalid operand for instruction
703 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
704 // CHECK-ERROR:                 ^
705 // CHECK-ERROR: error: invalid operand for instruction
706 // CHECK-ERROR:        fcmle v17.8h, v15.2d, #-1.0
707 // CHECK-ERROR:                               ^
708 // CHECK-ERROR: error:  Expected floating-point immediate
709 // CHECK-ERROR:        fcmle v17.8h, v15.2d, #0
710 // CHECK-ERROR:                               ^
711 //----------------------------------------------------------------------
712 // Vector Compare Mask Greater Than Zero (Floating Point)
713 //----------------------------------------------------------------------
714         // Mismatched and invalid vector types, invalid imm
715          fcmgt v0.2d, v31.2s, #0.0
716          fcmgt v4.4s, v7.4h, #0.0
717          fcmlt v29.2d, v5.2d, #255.0
718          fcmlt v29.2d, v5.2d, #255
719
720 // CHECK-ERROR: error: invalid operand for instruction
721 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
722 // CHECK-ERROR:                         ^
723 // CHECK-ERROR: error: invalid operand for instruction
724 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
725 // CHECK-ERROR:                        ^
726 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
727 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255.0
728 // CHECK-ERROR:                              ^
729 // CHECK-ERROR: error:  Expected floating-point immediate
730 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255
731 // CHECK-ERROR:                              ^
732
733 //----------------------------------------------------------------------
734 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
735 //----------------------------------------------------------------------
736         // Mismatched and invalid vector types, invalid imm
737          fcmge v31.4s, v29.2s, #0.0
738          fcmge v3.8b, v8.2s, #0.0
739          fcmle v17.2d, v15.2d, #15.0
740          fcmle v17.2d, v15.2d, #15
741
742 // CHECK-ERROR: error: invalid operand for instruction
743 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
744 // CHECK-ERROR:                          ^
745 // CHECK-ERROR: error: invalid operand for instruction
746 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
747 // CHECK-ERROR:                 ^
748 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
749 // CHECK-ERROR:        fcmle v17.2d, v15.2d, #15.0
750 // CHECK-ERROR:                               ^
751 // CHECK-ERROR: error:  Expected floating-point immediate
752 // CHECK-ERROR:        fcmle v17.2d, v15.2d, #15
753 // CHECK-ERROR:                              ^
754
755 //----------------------------------------------------------------------
756 // Vector Compare Mask Less Than Zero (Floating Point)
757 //----------------------------------------------------------------------
758         // Mismatched and invalid vector types, invalid imm
759          fcmgt v0.2d, v31.2s, #0.0
760          fcmgt v4.4s, v7.4h, #0.0
761          fcmlt v29.2d, v5.2d, #16.0
762          fcmlt v29.2d, v5.2d, #2
763
764 // CHECK-ERROR: error: invalid operand for instruction
765 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
766 // CHECK-ERROR:                         ^
767 // CHECK-ERROR: error: invalid operand for instruction
768 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
769 // CHECK-ERROR:                        ^
770 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
771 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #16.0
772 // CHECK-ERROR:                              ^
773 // CHECK-ERROR: error:  Expected floating-point immediate
774 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #2
775 // CHECK-ERROR:                              ^
776
777 /-----------------------------------------------------------------------
778 // Vector Integer Halving Add (Signed)
779 // Vector Integer Halving Add (Unsigned)
780 // Vector Integer Halving Sub (Signed)
781 // Vector Integer Halving Sub (Unsigned)
782 //----------------------------------------------------------------------
783         // Mismatched and invalid vector types (2d)
784         shadd v0.2d, v1.2d, v2.2d
785         uhadd v4.2s, v5.2s, v5.4h
786         shsub v11.4h, v12.8h, v13.4h
787         uhsub v31.16b, v29.8b, v28.8b
788
789 // CHECK-ERROR: error: invalid operand for instruction
790 // CHECK-ERROR:        shadd v0.2d, v1.2d, v2.2d
791 // CHECK-ERROR:                 ^
792 // CHECK-ERROR: error: invalid operand for instruction
793 // CHECK-ERROR:        uhadd v4.2s, v5.2s, v5.4h
794 // CHECK-ERROR:                               ^
795 // CHECK-ERROR: error: invalid operand for instruction
796 // CHECK-ERROR:        shsub v11.4h, v12.8h, v13.4h
797 // CHECK-ERROR:                          ^
798 // CHECK-ERROR: error: invalid operand for instruction
799 // CHECK-ERROR:        uhsub v31.16b, v29.8b, v28.8b
800 // CHECK-ERROR:                          ^
801
802 //----------------------------------------------------------------------
803 // Vector Integer Rouding Halving Add (Signed)
804 // Vector Integer Rouding Halving Add (Unsigned)
805 //----------------------------------------------------------------------
806
807         // Mismatched and invalid vector types (2d)
808         srhadd v0.2s, v1.2s, v2.2d
809         urhadd v0.16b, v1.16b, v2.8h
810
811 // CHECK-ERROR: error: invalid operand for instruction
812 // CHECK-ERROR:        srhadd v0.2s, v1.2s, v2.2d
813 // CHECK-ERROR:                                ^
814 // CHECK-ERROR: error: invalid operand for instruction
815 // CHECK-ERROR:        urhadd v0.16b, v1.16b, v2.8h
816 // CHECK-ERROR:                                  ^
817
818 //----------------------------------------------------------------------
819 // Vector Integer Saturating Add (Signed)
820 // Vector Integer Saturating Add (Unsigned)
821 // Vector Integer Saturating Sub (Signed)
822 // Vector Integer Saturating Sub (Unsigned)
823 //----------------------------------------------------------------------
824
825         // Mismatched vector types
826         sqadd v0.2s, v1.2s, v2.2d
827         uqadd v31.8h, v1.4h, v2.4h
828         sqsub v10.8h, v1.16b, v2.16b
829         uqsub v31.8b, v1.8b, v2.4s
830
831 // CHECK-ERROR: error: invalid operand for instruction
832 // CHECK-ERROR:        sqadd v0.2s, v1.2s, v2.2d
833 // CHECK-ERROR:                               ^
834 // CHECK-ERROR: error: invalid operand for instruction
835 // CHECK-ERROR:        uqadd v31.8h, v1.4h, v2.4h
836 // CHECK-ERROR:                         ^
837 // CHECK-ERROR: error: invalid operand for instruction
838 // CHECK-ERROR:        sqsub v10.8h, v1.16b, v2.16b
839 // CHECK-ERROR:                         ^
840 // CHECK-ERROR: error: invalid operand for instruction
841 // CHECK-ERROR:        uqsub v31.8b, v1.8b, v2.4s
842 // CHECK-ERROR:                                ^
843
844 //----------------------------------------------------------------------
845 // Scalar Integer Saturating Add (Signed)
846 // Scalar Integer Saturating Add (Unsigned)
847 // Scalar Integer Saturating Sub (Signed)
848 // Scalar Integer Saturating Sub (Unsigned)
849 //----------------------------------------------------------------------
850
851       // Mismatched registers
852          sqadd d0, s31, d2
853          uqadd s0, s1, d2
854          sqsub b0, b2, s18
855          uqsub h1, h2, d2
856
857 // CHECK-ERROR: error: invalid operand for instruction
858 // CHECK-ERROR:        sqadd d0, s31, d2
859 // CHECK-ERROR:                  ^
860 // CHECK-ERROR: error: invalid operand for instruction
861 // CHECK-ERROR:        uqadd s0, s1, d2
862 // CHECK-ERROR:                      ^
863 // CHECK-ERROR: error: invalid operand for instruction
864 // CHECK-ERROR:        sqsub b0, b2, s18
865 // CHECK-ERROR:                      ^
866 // CHECK-ERROR: error: invalid operand for instruction
867 // CHECK-ERROR:        uqsub h1, h2, d2
868 // CHECK-ERROR:                      ^
869
870 //----------------------------------------------------------------------
871 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
872 //----------------------------------------------------------------------
873
874     sqdmulh h10, s11, h12
875     sqdmulh s20, h21, s2
876
877 // CHECK-ERROR: error: invalid operand for instruction
878 // CHECK-ERROR:        sqdmulh h10, s11, h12
879 // CHECK-ERROR:                     ^
880 // CHECK-ERROR: error: invalid operand for instruction
881 // CHECK-ERROR:        sqdmulh s20, h21, s2
882 // CHECK-ERROR:                     ^
883
884 //------------------------------------------------------------------------
885 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
886 //------------------------------------------------------------------------
887
888     sqrdmulh h10, s11, h12
889     sqrdmulh s20, h21, s2
890
891 // CHECK-ERROR: error: invalid operand for instruction
892 // CHECK-ERROR:        sqrdmulh h10, s11, h12
893 // CHECK-ERROR:                      ^
894 // CHECK-ERROR: error: invalid operand for instruction
895 // CHECK-ERROR:        sqrdmulh s20, h21, s2
896 // CHECK-ERROR:                      ^
897
898 //----------------------------------------------------------------------
899 // Vector Shift Left (Signed and Unsigned Integer)
900 //----------------------------------------------------------------------
901         // Mismatched vector types
902         sshl v0.4s, v15.2s, v16.2s
903         ushl v1.16b, v25.16b, v6.8h
904
905 // CHECK-ERROR: error: invalid operand for instruction
906 // CHECK-ERROR:        sshl v0.4s, v15.2s, v16.2s
907 // CHECK-ERROR:                        ^
908 // CHECK-ERROR: error: invalid operand for instruction
909 // CHECK-ERROR:        ushl v1.16b, v25.16b, v6.8h
910 // CHECK-ERROR:                                 ^
911
912 //----------------------------------------------------------------------
913 // Vector Saturating Shift Left (Signed and Unsigned Integer)
914 //----------------------------------------------------------------------
915         // Mismatched vector types
916         sqshl v0.2s, v15.4s, v16.2d
917         uqshl v1.8b, v25.4h, v6.8h
918
919 // CHECK-ERROR: error: invalid operand for instruction
920 // CHECK-ERROR:        sqshl v0.2s, v15.4s, v16.2d 
921 // CHECK-ERROR:                         ^
922 // CHECK-ERROR: error: invalid operand for instruction
923 // CHECK-ERROR:        uqshl v1.8b, v25.4h, v6.8h
924 // CHECK-ERROR:                         ^
925
926 //----------------------------------------------------------------------
927 // Vector Rouding Shift Left (Signed and Unsigned Integer)
928 //----------------------------------------------------------------------
929         // Mismatched vector types
930         srshl v0.8h, v15.8h, v16.16b
931         urshl v1.2d, v25.2d, v6.4s
932
933 // CHECK-ERROR: error: invalid operand for instruction
934 // CHECK-ERROR:        srshl v0.8h, v15.8h, v16.16b
935 // CHECK-ERROR:                                 ^
936 // CHECK-ERROR: error: invalid operand for instruction
937 // CHECK-ERROR:        urshl v1.2d, v25.2d, v6.4s
938 // CHECK-ERROR:                                ^
939
940 //----------------------------------------------------------------------
941 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
942 //----------------------------------------------------------------------
943         // Mismatched vector types
944         sqrshl v0.2s, v15.8h, v16.16b
945         uqrshl v1.4h, v25.4h,  v6.2d
946
947 // CHECK-ERROR: error: invalid operand for instruction
948 // CHECK-ERROR:        sqrshl v0.2s, v15.8h, v16.16b
949 // CHECK-ERROR:                          ^
950 // CHECK-ERROR: error: invalid operand for instruction
951 // CHECK-ERROR:        uqrshl v1.4h, v25.4h,  v6.2d
952 // CHECK-ERROR:                                  ^
953
954 //----------------------------------------------------------------------
955 // Scalar Integer Shift Left (Signed, Unsigned)
956 //----------------------------------------------------------------------
957         // Mismatched and invalid vector types
958         sshl d0, d1, s2
959         ushl b2, b0, b1
960
961 // CHECK-ERROR: error: invalid operand for instruction
962 // CHECK-ERROR:        sshl d0, d1, s2
963 // CHECK-ERROR:                     ^
964 // CHECK-ERROR: error: invalid operand for instruction
965 // CHECK-ERROR:        ushl b2, b0, b1
966 // CHECK-ERROR:             ^
967
968 //----------------------------------------------------------------------
969 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
970 //----------------------------------------------------------------------
971
972         // Mismatched vector types
973         sqshl b0, s1, b0
974         uqshl h0, b1, h0
975         sqshl s0, h1, s0
976         uqshl d0, b1, d0
977
978 // CHECK-ERROR: error: invalid operand for instruction
979 // CHECK-ERROR:        sqshl b0, s1, b0
980 // CHECK-ERROR:                  ^
981 // CHECK-ERROR: error: invalid operand for instruction
982 // CHECK-ERROR:        uqshl h0, b1, h0
983 // CHECK-ERROR:                  ^
984 // CHECK-ERROR: error: invalid operand for instruction
985 // CHECK-ERROR:        sqshl s0, h1, s0
986 // CHECK-ERROR:                  ^
987 // CHECK-ERROR: error: invalid operand for instruction
988 // CHECK-ERROR:        uqshl d0, b1, d0
989 // CHECK-ERROR:                  ^
990
991 //----------------------------------------------------------------------
992 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
993 //----------------------------------------------------------------------
994         // Mismatched and invalid vector types
995         srshl h0, h1, h2
996         urshl s0, s1, s2
997
998 // CHECK-ERROR: error: invalid operand for instruction
999 // CHECK-ERROR:        srshl h0, h1, h2
1000 // CHECK-ERROR:              ^
1001 // CHECK-ERROR: error: invalid operand for instruction
1002 // CHECK-ERROR:        urshl s0, s1, s2
1003 // CHECK-ERROR:              ^
1004
1005
1006 //----------------------------------------------------------------------
1007 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1008 //----------------------------------------------------------------------
1009
1010         // Mismatched vector types
1011         sqrshl b0, b1, s0
1012         uqrshl h0, h1, b0
1013         sqrshl s0, s1, h0
1014         uqrshl d0, d1, b0
1015
1016 // CHECK-ERROR: error: invalid operand for instruction
1017 // CHECK-ERROR:        sqrshl b0, b1, s0
1018 // CHECK-ERROR:                       ^
1019 // CHECK-ERROR: error: invalid operand for instruction
1020 // CHECK-ERROR:        uqrshl h0, h1, b0
1021 // CHECK-ERROR:                       ^
1022 // CHECK-ERROR: error: invalid operand for instruction
1023 // CHECK-ERROR:        sqrshl s0, s1, h0
1024 // CHECK-ERROR:                       ^
1025 // CHECK-ERROR: error: invalid operand for instruction
1026 // CHECK-ERROR:        uqrshl d0, d1, b0
1027 // CHECK-ERROR:                       ^
1028
1029
1030 //----------------------------------------------------------------------
1031 // Vector Maximum (Signed, Unsigned)
1032 //----------------------------------------------------------------------
1033         // Mismatched and invalid vector types
1034         smax v0.2d, v1.2d, v2.2d
1035         umax v0.4h, v1.4h, v2.2s
1036
1037 // CHECK-ERROR: error: invalid operand for instruction
1038 // CHECK-ERROR:        smax v0.2d, v1.2d, v2.2d
1039 // CHECK-ERROR:                ^
1040 // CHECK-ERROR: error: invalid operand for instruction
1041 // CHECK-ERROR:        umax v0.4h, v1.4h, v2.2s
1042 // CHECK-ERROR:                              ^
1043
1044 //----------------------------------------------------------------------
1045 // Vector Minimum (Signed, Unsigned)
1046 //----------------------------------------------------------------------
1047         // Mismatched and invalid vector types
1048         smin v0.2d, v1.2d, v2.2d
1049         umin v0.2s, v1.2s, v2.8b
1050
1051 // CHECK-ERROR: error: invalid operand for instruction
1052 // CHECK-ERROR:        smin v0.2d, v1.2d, v2.2d
1053 // CHECK-ERROR:                ^
1054 // CHECK-ERROR: error: invalid operand for instruction
1055 // CHECK-ERROR:        umin v0.2s, v1.2s, v2.8b
1056 // CHECK-ERROR:                             ^
1057
1058
1059 //----------------------------------------------------------------------
1060 // Vector Maximum (Floating Point)
1061 //----------------------------------------------------------------------
1062         // Mismatched and invalid vector types
1063         fmax v0.2s, v1.2s, v2.4s
1064         fmax v0.8b, v1.8b, v2.8b
1065
1066 // CHECK-ERROR: error: invalid operand for instruction
1067 // CHECK-ERROR:        fmax v0.2s, v1.2s, v2.4s
1068 // CHECK-ERROR:                              ^
1069 // CHECK-ERROR: error: invalid operand for instruction
1070 // CHECK-ERROR:        fmax v0.8b, v1.8b, v2.8b
1071 // CHECK-ERROR:                ^
1072 //----------------------------------------------------------------------
1073 // Vector Minimum (Floating Point)
1074 //----------------------------------------------------------------------
1075         // Mismatched and invalid vector types
1076         fmin v0.4s, v1.4s, v2.2d
1077         fmin v0.8h, v1.8h, v2.8h
1078
1079 // CHECK-ERROR: error: invalid operand for instruction
1080 // CHECK-ERROR:        fmin v0.4s, v1.4s, v2.2d
1081 // CHECK-ERROR:                              ^
1082 // CHECK-ERROR: error: invalid operand for instruction
1083 // CHECK-ERROR:        fmin v0.8h, v1.8h, v2.8h
1084 // CHECK-ERROR:                ^
1085
1086 //----------------------------------------------------------------------
1087 // Vector maxNum (Floating Point)
1088 //----------------------------------------------------------------------
1089         // Mismatched and invalid vector types
1090         fmaxnm v0.2s, v1.2s, v2.2d
1091         fmaxnm v0.4h, v1.8h, v2.4h
1092
1093 // CHECK-ERROR: error: invalid operand for instruction
1094 // CHECK-ERROR:        fmaxnm v0.2s, v1.2s, v2.2d
1095 // CHECK-ERROR:                                ^
1096 // CHECK-ERROR: error: invalid operand for instruction
1097 // CHECK-ERROR:        fmaxnm v0.4h, v1.8h, v2.4h
1098 // CHECK-ERROR:                  ^
1099
1100 //----------------------------------------------------------------------
1101 // Vector minNum (Floating Point)
1102 //----------------------------------------------------------------------
1103         // Mismatched and invalid vector types
1104         fminnm v0.4s, v1.2s, v2.4s
1105         fminnm v0.16b, v0.16b, v0.16b
1106
1107 // CHECK-ERROR: error: invalid operand for instruction
1108 // CHECK-ERROR:        fminnm v0.4s, v1.2s, v2.4s
1109 // CHECK-ERROR:                         ^
1110 // CHECK-ERROR: error: invalid operand for instruction
1111 // CHECK-ERROR:        fminnm v0.16b, v0.16b, v0.16b
1112 // CHECK-ERROR:                  ^
1113
1114
1115 //----------------------------------------------------------------------
1116 // Vector Maximum Pairwise (Signed, Unsigned)
1117 //----------------------------------------------------------------------
1118         // Mismatched and invalid vector types
1119         smaxp v0.2d, v1.2d, v2.2d
1120         umaxp v0.4h, v1.4h, v2.2s
1121
1122 // CHECK-ERROR: error: invalid operand for instruction
1123 // CHECK-ERROR:        smaxp v0.2d, v1.2d, v2.2d
1124 // CHECK-ERROR:                 ^
1125 // CHECK-ERROR: error: invalid operand for instruction
1126 // CHECK-ERROR:        umaxp v0.4h, v1.4h, v2.2s
1127 // CHECK-ERROR:                               ^
1128
1129 //----------------------------------------------------------------------
1130 // Vector Minimum Pairwise (Signed, Unsigned)
1131 //----------------------------------------------------------------------
1132         // Mismatched and invalid vector types
1133         sminp v0.2d, v1.2d, v2.2d
1134         uminp v0.2s, v1.2s, v2.8b
1135
1136 // CHECK-ERROR: error: invalid operand for instruction
1137 // CHECK-ERROR:        sminp v0.2d, v1.2d, v2.2d
1138 // CHECK-ERROR:                 ^
1139 // CHECK-ERROR: error: invalid operand for instruction
1140 // CHECK-ERROR:        uminp v0.2s, v1.2s, v2.8b
1141 // CHECK-ERROR:                               ^
1142
1143
1144 //----------------------------------------------------------------------
1145 // Vector Maximum Pairwise (Floating Point)
1146 //----------------------------------------------------------------------
1147         // Mismatched and invalid vector types
1148         fmaxp v0.2s, v1.2s, v2.4s
1149         fmaxp v0.8b, v1.8b, v2.8b
1150
1151 // CHECK-ERROR: error: invalid operand for instruction
1152 // CHECK-ERROR:        fmaxp v0.2s, v1.2s, v2.4s
1153 // CHECK-ERROR:                               ^
1154 // CHECK-ERROR: error: invalid operand for instruction
1155 // CHECK-ERROR:        fmaxp v0.8b, v1.8b, v2.8b
1156 // CHECK-ERROR:                 ^
1157 //----------------------------------------------------------------------
1158 // Vector Minimum Pairwise (Floating Point)
1159 //----------------------------------------------------------------------
1160         // Mismatched and invalid vector types
1161         fminp v0.4s, v1.4s, v2.2d
1162         fminp v0.8h, v1.8h, v2.8h
1163
1164 // CHECK-ERROR: error: invalid operand for instruction
1165 // CHECK-ERROR:        fminp v0.4s, v1.4s, v2.2d
1166 // CHECK-ERROR:                               ^
1167 // CHECK-ERROR: error: invalid operand for instruction
1168 // CHECK-ERROR:        fminp v0.8h, v1.8h, v2.8h
1169 // CHECK-ERROR:                 ^
1170
1171 //----------------------------------------------------------------------
1172 // Vector maxNum Pairwise (Floating Point)
1173 //----------------------------------------------------------------------
1174         // Mismatched and invalid vector types
1175         fmaxnmp v0.2s, v1.2s, v2.2d
1176         fmaxnmp v0.4h, v1.8h, v2.4h
1177
1178 // CHECK-ERROR: error: invalid operand for instruction
1179 // CHECK-ERROR:        fmaxnmp v0.2s, v1.2s, v2.2d
1180 // CHECK-ERROR:                                 ^
1181 // CHECK-ERROR: error: invalid operand for instruction
1182 // CHECK-ERROR:        fmaxnmp v0.4h, v1.8h, v2.4h
1183 // CHECK-ERROR:                   ^
1184
1185 //----------------------------------------------------------------------
1186 // Vector minNum Pairwise (Floating Point)
1187 //----------------------------------------------------------------------
1188         // Mismatched and invalid vector types
1189         fminnmp v0.4s, v1.2s, v2.4s
1190         fminnmp v0.16b, v0.16b, v0.16b
1191
1192 // CHECK-ERROR: error: invalid operand for instruction
1193 // CHECK-ERROR:        fminnmp v0.4s, v1.2s, v2.4s
1194 // CHECK-ERROR:                          ^
1195 // CHECK-ERROR: error: invalid operand for instruction
1196 // CHECK-ERROR:        fminnmp v0.16b, v0.16b, v0.16b
1197 // CHECK-ERROR:                   ^
1198
1199
1200 //----------------------------------------------------------------------
1201 // Vector Add Pairwise (Integer)
1202 //----------------------------------------------------------------------
1203
1204         // Mismatched vector types
1205         addp v0.16b, v1.8b, v2.8b
1206
1207 // CHECK-ERROR: error: invalid operand for instruction
1208 // CHECK-ERROR:         addp v0.16b, v1.8b, v2.8b
1209 // CHECK-ERROR:                         ^
1210
1211 //----------------------------------------------------------------------
1212 // Vector Add Pairwise (Floating Point)
1213 //----------------------------------------------------------------------
1214         // Mismatched and invalid vector types
1215         faddp v0.16b, v1.8b, v2.8b
1216         faddp v0.2d, v1.2d, v2.8h
1217
1218 // CHECK-ERROR: error: invalid operand for instruction
1219 // CHECK-ERROR:         faddp v0.16b, v1.8b, v2.8b
1220 // CHECK-ERROR:                  ^
1221 // CHECK-ERROR: error: invalid operand for instruction
1222 // CHECK-ERROR:         faddp v0.2d, v1.2d, v2.8h
1223 // CHECK-ERROR:                                ^
1224
1225
1226 //----------------------------------------------------------------------
1227 // Vector Saturating Doubling Multiply High
1228 //----------------------------------------------------------------------
1229          // Mismatched and invalid vector types
1230          sqdmulh v2.4h, v25.8h, v3.4h
1231          sqdmulh v12.2d, v5.2d, v13.2d
1232          sqdmulh v3.8b, v1.8b, v30.8b
1233
1234 // CHECK-ERROR: error: invalid operand for instruction
1235 // CHECK-ERROR:         sqdmulh v2.4h, v25.8h, v3.4h
1236 // CHECK-ERROR:                            ^
1237 // CHECK-ERROR: error: invalid operand for instruction
1238 // CHECK-ERROR:         sqdmulh v12.2d, v5.2d, v13.2d
1239 // CHECK-ERROR:                     ^
1240 // CHECK-ERROR: error: invalid operand for instruction
1241 // CHECK-ERROR:         sqdmulh v3.8b, v1.8b, v30.8b
1242 // CHECK-ERROR:                    ^
1243
1244 //----------------------------------------------------------------------
1245 // Vector Saturating Rouding Doubling Multiply High
1246 //----------------------------------------------------------------------
1247          // Mismatched and invalid vector types
1248          sqrdmulh v2.2s, v25.4s, v3.4s
1249          sqrdmulh v12.16b, v5.16b, v13.16b
1250          sqrdmulh v3.4h, v1.4h, v30.2d
1251
1252
1253 // CHECK-ERROR: error: invalid operand for instruction
1254 // CHECK-ERROR:         sqrdmulh v2.2s, v25.4s, v3.4s
1255 // CHECK-ERROR:                             ^
1256 // CHECK-ERROR: error: invalid operand for instruction
1257 // CHECK-ERROR:         sqrdmulh v12.16b, v5.16b, v13.16b
1258 // CHECK-ERROR:                       ^
1259 // CHECK-ERROR: error: invalid operand for instruction
1260 // CHECK-ERROR:         sqrdmulh v3.4h, v1.4h, v30.2d
1261 // CHECK-ERROR:                                    ^
1262
1263 //----------------------------------------------------------------------
1264 // Vector Multiply Extended
1265 //----------------------------------------------------------------------
1266          // Mismatched and invalid vector types
1267       fmulx v21.2s, v5.2s, v13.2d
1268       fmulx v1.4h, v25.4h, v3.4h
1269
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR:         fmulx v21.2s, v5.2s, v13.2d
1272 // CHECK-ERROR:                                  ^
1273 // CHECK-ERROR: error: invalid operand for instruction
1274 // CHECK-ERROR:         fmulx v1.4h, v25.4h, v3.4h
1275 // CHECK-ERROR:                  ^
1276
1277 //------------------------------------------------------------------------------
1278 // Vector Shift Left by Immediate
1279 //------------------------------------------------------------------------------
1280          // Mismatched vector types and out of range
1281          shl v0.4s, v15,2s, #3
1282          shl v0.2d, v17.4s, #3
1283          shl v0.8b, v31.8b, #-1
1284          shl v0.8b, v31.8b, #8
1285          shl v0.4s, v21.4s, #32
1286          shl v0.2d, v1.2d, #64
1287
1288 // CHECK-ERROR: error: expected comma before next operand
1289 // CHECK-ERROR:         shl v0.4s, v15,2s, #3
1290 // CHECK-ERROR:                         ^
1291 // CHECK-ERROR: error: invalid operand for instruction
1292 // CHECK-ERROR:         shl v0.2d, v17.4s, #3
1293 // CHECK-ERROR:                        ^
1294 // CHECK-ERROR: error: expected integer in range [0, 7]
1295 // CHECK-ERROR:         shl v0.8b, v31.8b, #-1
1296 // CHECK-ERROR:                            ^
1297 // CHECK-ERROR: error: expected integer in range [0, 7]
1298 // CHECK-ERROR:         shl v0.8b, v31.8b, #8
1299 // CHECK-ERROR:                            ^
1300 // CHECK-ERROR: error: expected integer in range [0, 31]
1301 // CHECK-ERROR:         shl v0.4s, v21.4s, #32
1302 // CHECK-ERROR:                            ^
1303 // CHECK-ERROR: error: expected integer in range [0, 63]
1304 // CHECK-ERROR:         shl v0.2d, v1.2d, #64
1305 // CHECK-ERROR:                           ^
1306
1307 //----------------------------------------------------------------------
1308 // Vector Shift Left Long by Immediate
1309 //----------------------------------------------------------------------
1310         // Mismatched vector types
1311         sshll v0.4s, v15.2s, #3
1312         ushll v1.16b, v25.16b, #6
1313         sshll2 v0.2d, v3.8s, #15
1314         ushll2 v1.4s, v25.4s, #7
1315
1316         // Out of range 
1317         sshll v0.8h, v1.8b, #-1
1318         sshll v0.8h, v1.8b, #9
1319         ushll v0.4s, v1.4h, #17
1320         ushll v0.2d, v1.2s, #33
1321         sshll2 v0.8h, v1.16b, #9
1322         sshll2 v0.4s, v1.8h, #17
1323         ushll2 v0.2d, v1.4s, #33
1324
1325 // CHECK-ERROR: error: invalid operand for instruction
1326 // CHECK-ERROR:        sshll v0.4s, v15.2s, #3
1327 // CHECK-ERROR:                         ^
1328 // CHECK-ERROR: error: invalid operand for instruction
1329 // CHECK-ERROR:        ushll v1.16b, v25.16b, #6
1330 // CHECK-ERROR:                 ^
1331 // CHECK-ERROR: error: invalid operand for instruction
1332 // CHECK-ERROR:        sshll2 v0.2d, v3.8s, #15
1333 // CHECK-ERROR:                      ^
1334 // CHECK-ERROR: error: invalid operand for instruction
1335 // CHECK-ERROR:        ushll2 v1.4s, v25.4s, #7
1336 // CHECK-ERROR:                          ^
1337 // CHECK-ERROR: error: expected integer in range [0, 7]
1338 // CHECK-ERROR:        sshll v0.8h, v1.8b, #-1
1339 // CHECK-ERROR:                            ^
1340 // CHECK-ERROR: error: expected integer in range [0, 7]
1341 // CHECK-ERROR:        sshll v0.8h, v1.8b, #9
1342 // CHECK-ERROR:                            ^
1343 // CHECK-ERROR: error: expected integer in range [0, 15]
1344 // CHECK-ERROR:        ushll v0.4s, v1.4h, #17
1345 // CHECK-ERROR:                            ^
1346 // CHECK-ERROR: error: expected integer in range [0, 31]
1347 // CHECK-ERROR:        ushll v0.2d, v1.2s, #33
1348 // CHECK-ERROR:                            ^
1349 // CHECK-ERROR: error: expected integer in range [0, 7]
1350 // CHECK-ERROR:        sshll2 v0.8h, v1.16b, #9
1351 // CHECK-ERROR:                              ^
1352 // CHECK-ERROR: error: expected integer in range [0, 15]
1353 // CHECK-ERROR:        sshll2 v0.4s, v1.8h, #17
1354 // CHECK-ERROR:                             ^
1355 // CHECK-ERROR: error: expected integer in range [0, 31]
1356 // CHECK-ERROR:        ushll2 v0.2d, v1.4s, #33
1357 // CHECK-ERROR:                             ^
1358
1359
1360 //------------------------------------------------------------------------------
1361 // Vector shift right by immediate
1362 //------------------------------------------------------------------------------
1363          sshr v0.8b, v1.8h, #3
1364          sshr v0.4h, v1.4s, #3
1365          sshr v0.2s, v1.2d, #3
1366          sshr v0.16b, v1.16b, #9
1367          sshr v0.8h, v1.8h, #17
1368          sshr v0.4s, v1.4s, #33
1369          sshr v0.2d, v1.2d, #65
1370
1371 // CHECK-ERROR: error: invalid operand for instruction
1372 // CHECK-ERROR:         sshr v0.8b, v1.8h, #3
1373 // CHECK-ERROR:                        ^
1374 // CHECK-ERROR: error: invalid operand for instruction
1375 // CHECK-ERROR:         sshr v0.4h, v1.4s, #3
1376 // CHECK-ERROR:                        ^
1377 // CHECK-ERROR: error: invalid operand for instruction
1378 // CHECK-ERROR:         sshr v0.2s, v1.2d, #3
1379 // CHECK-ERROR:                        ^
1380 // CHECK-ERROR: error: expected integer in range [1, 8]
1381 // CHECK-ERROR:         sshr v0.16b, v1.16b, #9
1382 // CHECK-ERROR:                              ^
1383 // CHECK-ERROR: error: expected integer in range [1, 16]
1384 // CHECK-ERROR:         sshr v0.8h, v1.8h, #17
1385 // CHECK-ERROR:                            ^
1386 // CHECK-ERROR: error: expected integer in range [1, 32]
1387 // CHECK-ERROR:         sshr v0.4s, v1.4s, #33
1388 // CHECK-ERROR:                            ^
1389 // CHECK-ERROR: error: expected integer in range [1, 64]
1390 // CHECK-ERROR:         sshr v0.2d, v1.2d, #65
1391 // CHECK-ERROR:                            ^
1392
1393 //------------------------------------------------------------------------------
1394 // Vector  shift right by immediate
1395 //------------------------------------------------------------------------------
1396          ushr v0.8b, v1.8h, #3
1397          ushr v0.4h, v1.4s, #3
1398          ushr v0.2s, v1.2d, #3
1399          ushr v0.16b, v1.16b, #9
1400          ushr v0.8h, v1.8h, #17
1401          ushr v0.4s, v1.4s, #33
1402          ushr v0.2d, v1.2d, #65
1403
1404 // CHECK-ERROR: error: invalid operand for instruction
1405 // CHECK-ERROR:         ushr v0.8b, v1.8h, #3
1406 // CHECK-ERROR:                        ^
1407 // CHECK-ERROR: error: invalid operand for instruction
1408 // CHECK-ERROR:         ushr v0.4h, v1.4s, #3
1409 // CHECK-ERROR:                        ^
1410 // CHECK-ERROR: error: invalid operand for instruction
1411 // CHECK-ERROR:         ushr v0.2s, v1.2d, #3
1412 // CHECK-ERROR:                        ^
1413 // CHECK-ERROR: error: expected integer in range [1, 8]
1414 // CHECK-ERROR:         ushr v0.16b, v1.16b, #9
1415 // CHECK-ERROR:                              ^
1416 // CHECK-ERROR: error: expected integer in range [1, 16]
1417 // CHECK-ERROR:         ushr v0.8h, v1.8h, #17
1418 // CHECK-ERROR:                            ^
1419 // CHECK-ERROR: error: expected integer in range [1, 32]
1420 // CHECK-ERROR:         ushr v0.4s, v1.4s, #33
1421 // CHECK-ERROR:                            ^
1422 // CHECK-ERROR: error: expected integer in range [1, 64]
1423 // CHECK-ERROR:         ushr v0.2d, v1.2d, #65
1424 // CHECK-ERROR:                            ^
1425
1426 //------------------------------------------------------------------------------
1427 // Vector shift right and accumulate by immediate
1428 //------------------------------------------------------------------------------
1429          ssra v0.8b, v1.8h, #3
1430          ssra v0.4h, v1.4s, #3
1431          ssra v0.2s, v1.2d, #3
1432          ssra v0.16b, v1.16b, #9
1433          ssra v0.8h, v1.8h, #17
1434          ssra v0.4s, v1.4s, #33
1435          ssra v0.2d, v1.2d, #65
1436
1437 // CHECK-ERROR: error: invalid operand for instruction
1438 // CHECK-ERROR:         ssra v0.8b, v1.8h, #3
1439 // CHECK-ERROR:                        ^
1440 // CHECK-ERROR: error: invalid operand for instruction
1441 // CHECK-ERROR:         ssra v0.4h, v1.4s, #3
1442 // CHECK-ERROR:                        ^
1443 // CHECK-ERROR: error: invalid operand for instruction
1444 // CHECK-ERROR:         ssra v0.2s, v1.2d, #3
1445 // CHECK-ERROR:                        ^
1446 // CHECK-ERROR: error: expected integer in range [1, 8]
1447 // CHECK-ERROR:         ssra v0.16b, v1.16b, #9
1448 // CHECK-ERROR:                              ^
1449 // CHECK-ERROR: error: expected integer in range [1, 16]
1450 // CHECK-ERROR:         ssra v0.8h, v1.8h, #17
1451 // CHECK-ERROR:                            ^
1452 // CHECK-ERROR: error: expected integer in range [1, 32]
1453 // CHECK-ERROR:         ssra v0.4s, v1.4s, #33
1454 // CHECK-ERROR:                            ^
1455 // CHECK-ERROR: error: expected integer in range [1, 64]
1456 // CHECK-ERROR:         ssra v0.2d, v1.2d, #65
1457 // CHECK-ERROR:                            ^
1458
1459 //------------------------------------------------------------------------------
1460 // Vector  shift right and accumulate by immediate
1461 //------------------------------------------------------------------------------
1462          usra v0.8b, v1.8h, #3
1463          usra v0.4h, v1.4s, #3
1464          usra v0.2s, v1.2d, #3
1465          usra v0.16b, v1.16b, #9
1466          usra v0.8h, v1.8h, #17
1467          usra v0.4s, v1.4s, #33
1468          usra v0.2d, v1.2d, #65
1469
1470 // CHECK-ERROR: error: invalid operand for instruction
1471 // CHECK-ERROR:         usra v0.8b, v1.8h, #3
1472 // CHECK-ERROR:                        ^
1473 // CHECK-ERROR: error: invalid operand for instruction
1474 // CHECK-ERROR:         usra v0.4h, v1.4s, #3
1475 // CHECK-ERROR:                        ^
1476 // CHECK-ERROR: error: invalid operand for instruction
1477 // CHECK-ERROR:         usra v0.2s, v1.2d, #3
1478 // CHECK-ERROR:                        ^
1479 // CHECK-ERROR: error: expected integer in range [1, 8]
1480 // CHECK-ERROR:         usra v0.16b, v1.16b, #9
1481 // CHECK-ERROR:                              ^
1482 // CHECK-ERROR: error: expected integer in range [1, 16]
1483 // CHECK-ERROR:         usra v0.8h, v1.8h, #17
1484 // CHECK-ERROR:                            ^
1485 // CHECK-ERROR: error: expected integer in range [1, 32]
1486 // CHECK-ERROR:         usra v0.4s, v1.4s, #33
1487 // CHECK-ERROR:                            ^
1488 // CHECK-ERROR: error: expected integer in range [1, 64]
1489 // CHECK-ERROR:         usra v0.2d, v1.2d, #65
1490 // CHECK-ERROR:                            ^
1491
1492 //------------------------------------------------------------------------------
1493 // Vector rounding shift right by immediate
1494 //------------------------------------------------------------------------------
1495          srshr v0.8b, v1.8h, #3
1496          srshr v0.4h, v1.4s, #3
1497          srshr v0.2s, v1.2d, #3
1498          srshr v0.16b, v1.16b, #9
1499          srshr v0.8h, v1.8h, #17
1500          srshr v0.4s, v1.4s, #33
1501          srshr v0.2d, v1.2d, #65
1502
1503 // CHECK-ERROR: error: invalid operand for instruction
1504 // CHECK-ERROR:         srshr v0.8b, v1.8h, #3
1505 // CHECK-ERROR:                         ^
1506 // CHECK-ERROR: error: invalid operand for instruction
1507 // CHECK-ERROR:         srshr v0.4h, v1.4s, #3
1508 // CHECK-ERROR:                         ^
1509 // CHECK-ERROR: error: invalid operand for instruction
1510 // CHECK-ERROR:         srshr v0.2s, v1.2d, #3
1511 // CHECK-ERROR:                         ^
1512 // CHECK-ERROR: error: expected integer in range [1, 8]
1513 // CHECK-ERROR:         srshr v0.16b, v1.16b, #9
1514 // CHECK-ERROR:                               ^
1515 // CHECK-ERROR: error: expected integer in range [1, 16]
1516 // CHECK-ERROR:         srshr v0.8h, v1.8h, #17
1517 // CHECK-ERROR:                             ^
1518 // CHECK-ERROR: error: expected integer in range [1, 32]
1519 // CHECK-ERROR:         srshr v0.4s, v1.4s, #33
1520 // CHECK-ERROR:                             ^
1521 // CHECK-ERROR: error: expected integer in range [1, 64]
1522 // CHECK-ERROR:         srshr v0.2d, v1.2d, #65
1523 // CHECK-ERROR:                             ^
1524
1525 //------------------------------------------------------------------------------
1526 // Vecotr rounding shift right by immediate
1527 //------------------------------------------------------------------------------
1528          urshr v0.8b, v1.8h, #3
1529          urshr v0.4h, v1.4s, #3
1530          urshr v0.2s, v1.2d, #3
1531          urshr v0.16b, v1.16b, #9
1532          urshr v0.8h, v1.8h, #17
1533          urshr v0.4s, v1.4s, #33
1534          urshr v0.2d, v1.2d, #65
1535
1536 // CHECK-ERROR: error: invalid operand for instruction
1537 // CHECK-ERROR:         urshr v0.8b, v1.8h, #3
1538 // CHECK-ERROR:                         ^
1539 // CHECK-ERROR: error: invalid operand for instruction
1540 // CHECK-ERROR:         urshr v0.4h, v1.4s, #3
1541 // CHECK-ERROR:                         ^
1542 // CHECK-ERROR: error: invalid operand for instruction
1543 // CHECK-ERROR:         urshr v0.2s, v1.2d, #3
1544 // CHECK-ERROR:                         ^
1545 // CHECK-ERROR: error: expected integer in range [1, 8]
1546 // CHECK-ERROR:         urshr v0.16b, v1.16b, #9
1547 // CHECK-ERROR:                               ^
1548 // CHECK-ERROR: error: expected integer in range [1, 16]
1549 // CHECK-ERROR:         urshr v0.8h, v1.8h, #17
1550 // CHECK-ERROR:                             ^
1551 // CHECK-ERROR: error: expected integer in range [1, 32]
1552 // CHECK-ERROR:         urshr v0.4s, v1.4s, #33
1553 // CHECK-ERROR:                             ^
1554 // CHECK-ERROR: error: expected integer in range [1, 64]
1555 // CHECK-ERROR:         urshr v0.2d, v1.2d, #65
1556 // CHECK-ERROR:                             ^
1557
1558 //------------------------------------------------------------------------------
1559 // Vector rounding shift right and accumulate by immediate
1560 //------------------------------------------------------------------------------
1561          srsra v0.8b, v1.8h, #3
1562          srsra v0.4h, v1.4s, #3
1563          srsra v0.2s, v1.2d, #3
1564          srsra v0.16b, v1.16b, #9
1565          srsra v0.8h, v1.8h, #17
1566          srsra v0.4s, v1.4s, #33
1567          srsra v0.2d, v1.2d, #65
1568
1569 // CHECK-ERROR: error: invalid operand for instruction
1570 // CHECK-ERROR:         srsra v0.8b, v1.8h, #3
1571 // CHECK-ERROR:                         ^
1572 // CHECK-ERROR: error: invalid operand for instruction
1573 // CHECK-ERROR:         srsra v0.4h, v1.4s, #3
1574 // CHECK-ERROR:                         ^
1575 // CHECK-ERROR: error: invalid operand for instruction
1576 // CHECK-ERROR:         srsra v0.2s, v1.2d, #3
1577 // CHECK-ERROR:                         ^
1578 // CHECK-ERROR: error: expected integer in range [1, 8]
1579 // CHECK-ERROR:         srsra v0.16b, v1.16b, #9
1580 // CHECK-ERROR:                               ^
1581 // CHECK-ERROR: error: expected integer in range [1, 16]
1582 // CHECK-ERROR:         srsra v0.8h, v1.8h, #17
1583 // CHECK-ERROR:                             ^
1584 // CHECK-ERROR: error: expected integer in range [1, 32]
1585 // CHECK-ERROR:         srsra v0.4s, v1.4s, #33
1586 // CHECK-ERROR:                             ^
1587 // CHECK-ERROR: error: expected integer in range [1, 64]
1588 // CHECK-ERROR:         srsra v0.2d, v1.2d, #65
1589 // CHECK-ERROR:                             ^
1590
1591 //------------------------------------------------------------------------------
1592 // Vector rounding shift right and accumulate by immediate
1593 //------------------------------------------------------------------------------
1594          ursra v0.8b, v1.8h, #3
1595          ursra v0.4h, v1.4s, #3
1596          ursra v0.2s, v1.2d, #3
1597          ursra v0.16b, v1.16b, #9
1598          ursra v0.8h, v1.8h, #17
1599          ursra v0.4s, v1.4s, #33
1600          ursra v0.2d, v1.2d, #65
1601
1602 // CHECK-ERROR: error: invalid operand for instruction
1603 // CHECK-ERROR:         ursra v0.8b, v1.8h, #3
1604 // CHECK-ERROR:                         ^
1605 // CHECK-ERROR: error: invalid operand for instruction
1606 // CHECK-ERROR:         ursra v0.4h, v1.4s, #3
1607 // CHECK-ERROR:                         ^
1608 // CHECK-ERROR: error: invalid operand for instruction
1609 // CHECK-ERROR:         ursra v0.2s, v1.2d, #3
1610 // CHECK-ERROR:                         ^
1611 // CHECK-ERROR: error: expected integer in range [1, 8]
1612 // CHECK-ERROR:         ursra v0.16b, v1.16b, #9
1613 // CHECK-ERROR:                               ^
1614 // CHECK-ERROR: error: expected integer in range [1, 16]
1615 // CHECK-ERROR:         ursra v0.8h, v1.8h, #17
1616 // CHECK-ERROR:                             ^
1617 // CHECK-ERROR: error: expected integer in range [1, 32]
1618 // CHECK-ERROR:         ursra v0.4s, v1.4s, #33
1619 // CHECK-ERROR:                             ^
1620 // CHECK-ERROR: error: expected integer in range [1, 64]
1621 // CHECK-ERROR:         ursra v0.2d, v1.2d, #65
1622 // CHECK-ERROR:                             ^
1623
1624 //------------------------------------------------------------------------------
1625 // Vector shift right and insert by immediate
1626 //------------------------------------------------------------------------------
1627          sri v0.8b, v1.8h, #3
1628          sri v0.4h, v1.4s, #3
1629          sri v0.2s, v1.2d, #3
1630          sri v0.16b, v1.16b, #9
1631          sri v0.8h, v1.8h, #17
1632          sri v0.4s, v1.4s, #33
1633          sri v0.2d, v1.2d, #65
1634
1635 // CHECK-ERROR: error: invalid operand for instruction
1636 // CHECK-ERROR:         sri v0.8b, v1.8h, #3
1637 // CHECK-ERROR:                       ^
1638 // CHECK-ERROR: error: invalid operand for instruction
1639 // CHECK-ERROR:         sri v0.4h, v1.4s, #3
1640 // CHECK-ERROR:                       ^
1641 // CHECK-ERROR: error: invalid operand for instruction
1642 // CHECK-ERROR:         sri v0.2s, v1.2d, #3
1643 // CHECK-ERROR:                       ^
1644 // CHECK-ERROR: error: expected integer in range [1, 8]
1645 // CHECK-ERROR:         sri v0.16b, v1.16b, #9
1646 // CHECK-ERROR:                             ^
1647 // CHECK-ERROR: error: expected integer in range [1, 16]
1648 // CHECK-ERROR:         sri v0.8h, v1.8h, #17
1649 // CHECK-ERROR:                           ^
1650 // CHECK-ERROR: error: expected integer in range [1, 32]
1651 // CHECK-ERROR:         sri v0.4s, v1.4s, #33
1652 // CHECK-ERROR:                           ^
1653 // CHECK-ERROR: error: expected integer in range [1, 64]
1654 // CHECK-ERROR:         sri v0.2d, v1.2d, #65
1655 // CHECK-ERROR:                           ^
1656
1657 //------------------------------------------------------------------------------
1658 // Vector shift left and insert by immediate
1659 //------------------------------------------------------------------------------
1660          sli v0.8b, v1.8h, #3
1661          sli v0.4h, v1.4s, #3
1662          sli v0.2s, v1.2d, #3
1663          sli v0.16b, v1.16b, #8
1664          sli v0.8h, v1.8h, #16
1665          sli v0.4s, v1.4s, #32
1666          sli v0.2d, v1.2d, #64
1667
1668 // CHECK-ERROR: error: invalid operand for instruction
1669 // CHECK-ERROR:         sli v0.8b, v1.8h, #3
1670 // CHECK-ERROR:                       ^
1671 // CHECK-ERROR: error: invalid operand for instruction
1672 // CHECK-ERROR:         sli v0.4h, v1.4s, #3
1673 // CHECK-ERROR:                       ^
1674 // CHECK-ERROR: error: invalid operand for instruction
1675 // CHECK-ERROR:         sli v0.2s, v1.2d, #3
1676 // CHECK-ERROR:                       ^
1677 // CHECK-ERROR: error: expected integer in range [0, 7]
1678 // CHECK-ERROR:         sli v0.16b, v1.16b, #8
1679 // CHECK-ERROR:                             ^
1680 // CHECK-ERROR: error: expected integer in range [0, 15]
1681 // CHECK-ERROR:         sli v0.8h, v1.8h, #16
1682 // CHECK-ERROR:                           ^
1683 // CHECK-ERROR: error: expected integer in range [0, 31]
1684 // CHECK-ERROR:         sli v0.4s, v1.4s, #32
1685 // CHECK-ERROR:                           ^
1686 // CHECK-ERROR: error: expected integer in range [0, 63]
1687 // CHECK-ERROR:         sli v0.2d, v1.2d, #64
1688 // CHECK-ERROR:                           ^
1689
1690 //------------------------------------------------------------------------------
1691 // Vector saturating shift left unsigned by immediate
1692 //------------------------------------------------------------------------------
1693          sqshlu v0.8b, v1.8h, #3
1694          sqshlu v0.4h, v1.4s, #3
1695          sqshlu v0.2s, v1.2d, #3
1696          sqshlu v0.16b, v1.16b, #8
1697          sqshlu v0.8h, v1.8h, #16
1698          sqshlu v0.4s, v1.4s, #32
1699          sqshlu v0.2d, v1.2d, #64
1700
1701 // CHECK-ERROR: error: invalid operand for instruction
1702 // CHECK-ERROR:         sqshlu v0.8b, v1.8h, #3
1703 // CHECK-ERROR:                          ^
1704 // CHECK-ERROR: error: invalid operand for instruction
1705 // CHECK-ERROR:         sqshlu v0.4h, v1.4s, #3
1706 // CHECK-ERROR:                          ^
1707 // CHECK-ERROR: error: invalid operand for instruction
1708 // CHECK-ERROR:         sqshlu v0.2s, v1.2d, #3
1709 // CHECK-ERROR:                          ^
1710 // CHECK-ERROR: error: expected integer in range [0, 7]
1711 // CHECK-ERROR:         sqshlu v0.16b, v1.16b, #8
1712 // CHECK-ERROR:                                ^
1713 // CHECK-ERROR: error: expected integer in range [0, 15]
1714 // CHECK-ERROR:         sqshlu v0.8h, v1.8h, #16
1715 // CHECK-ERROR:                              ^
1716 // CHECK-ERROR: error: expected integer in range [0, 31]
1717 // CHECK-ERROR:         sqshlu v0.4s, v1.4s, #32
1718 // CHECK-ERROR:                              ^
1719 // CHECK-ERROR: error: expected integer in range [0, 63]
1720 // CHECK-ERROR:         sqshlu v0.2d, v1.2d, #64
1721 // CHECK-ERROR:                              ^
1722
1723 //------------------------------------------------------------------------------
1724 // Vector saturating shift left by immediate
1725 //------------------------------------------------------------------------------
1726          sqshl v0.8b, v1.8h, #3
1727          sqshl v0.4h, v1.4s, #3
1728          sqshl v0.2s, v1.2d, #3
1729          sqshl v0.16b, v1.16b, #8
1730          sqshl v0.8h, v1.8h, #16
1731          sqshl v0.4s, v1.4s, #32
1732          sqshl v0.2d, v1.2d, #64
1733
1734 // CHECK-ERROR: error: invalid operand for instruction
1735 // CHECK-ERROR:         sqshl v0.8b, v1.8h, #3
1736 // CHECK-ERROR:                         ^
1737 // CHECK-ERROR: error: invalid operand for instruction
1738 // CHECK-ERROR:         sqshl v0.4h, v1.4s, #3
1739 // CHECK-ERROR:                         ^
1740 // CHECK-ERROR: error: invalid operand for instruction
1741 // CHECK-ERROR:         sqshl v0.2s, v1.2d, #3
1742 // CHECK-ERROR:                         ^
1743 // CHECK-ERROR: error: expected integer in range [0, 7]
1744 // CHECK-ERROR:         sqshl v0.16b, v1.16b, #8
1745 // CHECK-ERROR:                               ^
1746 // CHECK-ERROR: error: expected integer in range [0, 15]
1747 // CHECK-ERROR:         sqshl v0.8h, v1.8h, #16
1748 // CHECK-ERROR:                             ^
1749 // CHECK-ERROR: error: expected integer in range [0, 31]
1750 // CHECK-ERROR:         sqshl v0.4s, v1.4s, #32
1751 // CHECK-ERROR:                             ^
1752 // CHECK-ERROR: error: expected integer in range [0, 63]
1753 // CHECK-ERROR:         sqshl v0.2d, v1.2d, #64
1754 // CHECK-ERROR:                             ^
1755
1756 //------------------------------------------------------------------------------
1757 // Vector saturating shift left by immediate
1758 //------------------------------------------------------------------------------
1759          uqshl v0.8b, v1.8h, #3
1760          uqshl v0.4h, v1.4s, #3
1761          uqshl v0.2s, v1.2d, #3
1762          uqshl v0.16b, v1.16b, #8
1763          uqshl v0.8h, v1.8h, #16
1764          uqshl v0.4s, v1.4s, #32
1765          uqshl v0.2d, v1.2d, #64
1766
1767 // CHECK-ERROR: error: invalid operand for instruction
1768 // CHECK-ERROR:         uqshl v0.8b, v1.8h, #3
1769 // CHECK-ERROR:                         ^
1770 // CHECK-ERROR: error: invalid operand for instruction
1771 // CHECK-ERROR:         uqshl v0.4h, v1.4s, #3
1772 // CHECK-ERROR:                         ^
1773 // CHECK-ERROR: error: invalid operand for instruction
1774 // CHECK-ERROR:         uqshl v0.2s, v1.2d, #3
1775 // CHECK-ERROR:                         ^
1776 // CHECK-ERROR: error: expected integer in range [0, 7]
1777 // CHECK-ERROR:         uqshl v0.16b, v1.16b, #8
1778 // CHECK-ERROR:                               ^
1779 // CHECK-ERROR: error: expected integer in range [0, 15]
1780 // CHECK-ERROR:         uqshl v0.8h, v1.8h, #16
1781 // CHECK-ERROR:                             ^
1782 // CHECK-ERROR: error: expected integer in range [0, 31]
1783 // CHECK-ERROR:         uqshl v0.4s, v1.4s, #32
1784 // CHECK-ERROR:                             ^
1785 // CHECK-ERROR: error: expected integer in range [0, 63]
1786 // CHECK-ERROR:         uqshl v0.2d, v1.2d, #64
1787 // CHECK-ERROR:                             ^
1788
1789 //------------------------------------------------------------------------------
1790 // Vector shift right narrow by immediate
1791 //------------------------------------------------------------------------------
1792          shrn v0.8b, v1.8b, #3
1793          shrn v0.4h, v1.4h, #3
1794          shrn v0.2s, v1.2s, #3
1795          shrn2 v0.16b, v1.8h, #17
1796          shrn2 v0.8h, v1.4s, #33
1797          shrn2 v0.4s, v1.2d, #65
1798
1799 // CHECK-ERROR: error: invalid operand for instruction
1800 // CHECK-ERROR:         shrn v0.8b, v1.8b, #3
1801 // CHECK-ERROR:                        ^
1802 // CHECK-ERROR: error: invalid operand for instruction
1803 // CHECK-ERROR:         shrn v0.4h, v1.4h, #3
1804 // CHECK-ERROR:                        ^
1805 // CHECK-ERROR: error: invalid operand for instruction
1806 // CHECK-ERROR:         shrn v0.2s, v1.2s, #3
1807 // CHECK-ERROR:                        ^
1808 // CHECK-ERROR: error: expected integer in range [1, 8]
1809 // CHECK-ERROR:         shrn2 v0.16b, v1.8h, #17
1810 // CHECK-ERROR:                              ^
1811 // CHECK-ERROR: error: expected integer in range [1, 16]
1812 // CHECK-ERROR:         shrn2 v0.8h, v1.4s, #33
1813 // CHECK-ERROR:                             ^
1814 // CHECK-ERROR: error: expected integer in range [1, 32]
1815 // CHECK-ERROR:         shrn2 v0.4s, v1.2d, #65
1816 // CHECK-ERROR:                             ^
1817
1818 //------------------------------------------------------------------------------
1819 // Vector saturating shift right unsigned narrow by immediate
1820 //------------------------------------------------------------------------------
1821          sqshrun v0.8b, v1.8b, #3
1822          sqshrun v0.4h, v1.4h, #3
1823          sqshrun v0.2s, v1.2s, #3
1824          sqshrun2 v0.16b, v1.8h, #17
1825          sqshrun2 v0.8h, v1.4s, #33
1826          sqshrun2 v0.4s, v1.2d, #65
1827
1828 // CHECK-ERROR: error: invalid operand for instruction
1829 // CHECK-ERROR:         sqshrun v0.8b, v1.8b, #3
1830 // CHECK-ERROR:                           ^
1831 // CHECK-ERROR: error: invalid operand for instruction
1832 // CHECK-ERROR:         sqshrun v0.4h, v1.4h, #3
1833 // CHECK-ERROR:                           ^
1834 // CHECK-ERROR: error: invalid operand for instruction
1835 // CHECK-ERROR:         sqshrun v0.2s, v1.2s, #3
1836 // CHECK-ERROR:                           ^
1837 // CHECK-ERROR: error: expected integer in range [1, 8]
1838 // CHECK-ERROR:         sqshrun2 v0.16b, v1.8h, #17
1839 // CHECK-ERROR:                                 ^
1840 // CHECK-ERROR: error: expected integer in range [1, 16]
1841 // CHECK-ERROR:         sqshrun2 v0.8h, v1.4s, #33
1842 // CHECK-ERROR:                                ^
1843 // CHECK-ERROR: error: expected integer in range [1, 32]
1844 // CHECK-ERROR:         sqshrun2 v0.4s, v1.2d, #65
1845 // CHECK-ERROR:                                ^
1846
1847 //------------------------------------------------------------------------------
1848 // Vector rounding shift right narrow by immediate
1849 //------------------------------------------------------------------------------
1850          rshrn v0.8b, v1.8b, #3
1851          rshrn v0.4h, v1.4h, #3
1852          rshrn v0.2s, v1.2s, #3
1853          rshrn2 v0.16b, v1.8h, #17
1854          rshrn2 v0.8h, v1.4s, #33
1855          rshrn2 v0.4s, v1.2d, #65
1856
1857 // CHECK-ERROR: error: invalid operand for instruction
1858 // CHECK-ERROR:         rshrn v0.8b, v1.8b, #3
1859 // CHECK-ERROR:                         ^
1860 // CHECK-ERROR: error: invalid operand for instruction
1861 // CHECK-ERROR:         rshrn v0.4h, v1.4h, #3
1862 // CHECK-ERROR:                         ^
1863 // CHECK-ERROR: error: invalid operand for instruction
1864 // CHECK-ERROR:         rshrn v0.2s, v1.2s, #3
1865 // CHECK-ERROR:                         ^
1866 // CHECK-ERROR: error: expected integer in range [1, 8]
1867 // CHECK-ERROR:         rshrn2 v0.16b, v1.8h, #17
1868 // CHECK-ERROR:                               ^
1869 // CHECK-ERROR: error: expected integer in range [1, 16]
1870 // CHECK-ERROR:         rshrn2 v0.8h, v1.4s, #33
1871 // CHECK-ERROR:                              ^
1872 // CHECK-ERROR: error: expected integer in range [1, 32]
1873 // CHECK-ERROR:         rshrn2 v0.4s, v1.2d, #65
1874 // CHECK-ERROR:                              ^
1875
1876 //------------------------------------------------------------------------------
1877 // Vector saturating shift right rounded unsigned narrow by immediate
1878 //------------------------------------------------------------------------------
1879          sqrshrun v0.8b, v1.8b, #3
1880          sqrshrun v0.4h, v1.4h, #3
1881          sqrshrun v0.2s, v1.2s, #3
1882          sqrshrun2 v0.16b, v1.8h, #17
1883          sqrshrun2 v0.8h, v1.4s, #33
1884          sqrshrun2 v0.4s, v1.2d, #65
1885
1886 // CHECK-ERROR: error: invalid operand for instruction
1887 // CHECK-ERROR:         sqrshrun v0.8b, v1.8b, #3
1888 // CHECK-ERROR:                            ^
1889 // CHECK-ERROR: error: invalid operand for instruction
1890 // CHECK-ERROR:         sqrshrun v0.4h, v1.4h, #3
1891 // CHECK-ERROR:                            ^
1892 // CHECK-ERROR: error: invalid operand for instruction
1893 // CHECK-ERROR:         sqrshrun v0.2s, v1.2s, #3
1894 // CHECK-ERROR:                            ^
1895 // CHECK-ERROR: error: expected integer in range [1, 8]
1896 // CHECK-ERROR:         sqrshrun2 v0.16b, v1.8h, #17
1897 // CHECK-ERROR:                                  ^
1898 // CHECK-ERROR: error: expected integer in range [1, 16]
1899 // CHECK-ERROR:         sqrshrun2 v0.8h, v1.4s, #33
1900 // CHECK-ERROR:                                 ^
1901 // CHECK-ERROR: error: expected integer in range [1, 32]
1902 // CHECK-ERROR:         sqrshrun2 v0.4s, v1.2d, #65
1903 // CHECK-ERROR:                                 ^
1904
1905 //------------------------------------------------------------------------------
1906 // Vector saturating shift right narrow by immediate
1907 //------------------------------------------------------------------------------
1908          sqshrn v0.8b, v1.8b, #3
1909          sqshrn v0.4h, v1.4h, #3
1910          sqshrn v0.2s, v1.2s, #3
1911          sqshrn2 v0.16b, v1.8h, #17
1912          sqshrn2 v0.8h, v1.4s, #33
1913          sqshrn2 v0.4s, v1.2d, #65
1914
1915 // CHECK-ERROR: error: invalid operand for instruction
1916 // CHECK-ERROR:         sqshrn v0.8b, v1.8b, #3
1917 // CHECK-ERROR:                          ^
1918 // CHECK-ERROR: error: invalid operand for instruction
1919 // CHECK-ERROR:         sqshrn v0.4h, v1.4h, #3
1920 // CHECK-ERROR:                          ^
1921 // CHECK-ERROR: error: invalid operand for instruction
1922 // CHECK-ERROR:         sqshrn v0.2s, v1.2s, #3
1923 // CHECK-ERROR:                          ^
1924 // CHECK-ERROR: error: expected integer in range [1, 8]
1925 // CHECK-ERROR:         sqshrn2 v0.16b, v1.8h, #17
1926 // CHECK-ERROR:                                ^
1927 // CHECK-ERROR: error: expected integer in range [1, 16]
1928 // CHECK-ERROR:         sqshrn2 v0.8h, v1.4s, #33
1929 // CHECK-ERROR:                               ^
1930 // CHECK-ERROR: error: expected integer in range [1, 32]
1931 // CHECK-ERROR:         sqshrn2 v0.4s, v1.2d, #65
1932 // CHECK-ERROR:                               ^
1933
1934 //------------------------------------------------------------------------------
1935 // Vector saturating shift right narrow by immediate
1936 //------------------------------------------------------------------------------
1937          uqshrn v0.8b, v1.8b, #3
1938          uqshrn v0.4h, v1.4h, #3
1939          uqshrn v0.2s, v1.2s, #3
1940          uqshrn2 v0.16b, v1.8h, #17
1941          uqshrn2 v0.8h, v1.4s, #33
1942          uqshrn2 v0.4s, v1.2d, #65
1943
1944 // CHECK-ERROR: error: invalid operand for instruction
1945 // CHECK-ERROR:         uqshrn v0.8b, v1.8b, #3
1946 // CHECK-ERROR:                          ^
1947 // CHECK-ERROR: error: invalid operand for instruction
1948 // CHECK-ERROR:         uqshrn v0.4h, v1.4h, #3
1949 // CHECK-ERROR:                          ^
1950 // CHECK-ERROR: error: invalid operand for instruction
1951 // CHECK-ERROR:         uqshrn v0.2s, v1.2s, #3
1952 // CHECK-ERROR:                          ^
1953 // CHECK-ERROR: error: expected integer in range [1, 8]
1954 // CHECK-ERROR:         uqshrn2 v0.16b, v1.8h, #17
1955 // CHECK-ERROR:                                ^
1956 // CHECK-ERROR: error: expected integer in range [1, 16]
1957 // CHECK-ERROR:         uqshrn2 v0.8h, v1.4s, #33
1958 // CHECK-ERROR:                               ^
1959 // CHECK-ERROR: error: expected integer in range [1, 32]
1960 // CHECK-ERROR:         uqshrn2 v0.4s, v1.2d, #65
1961 // CHECK-ERROR:                               ^
1962
1963 //------------------------------------------------------------------------------
1964 // Vector saturating shift right rounded narrow by immediate
1965 //------------------------------------------------------------------------------
1966          sqrshrn v0.8b, v1.8b, #3
1967          sqrshrn v0.4h, v1.4h, #3
1968          sqrshrn v0.2s, v1.2s, #3
1969          sqrshrn2 v0.16b, v1.8h, #17
1970          sqrshrn2 v0.8h, v1.4s, #33
1971          sqrshrn2 v0.4s, v1.2d, #65
1972
1973 // CHECK-ERROR: error: invalid operand for instruction
1974 // CHECK-ERROR:         sqrshrn v0.8b, v1.8b, #3
1975 // CHECK-ERROR:                           ^
1976 // CHECK-ERROR: error: invalid operand for instruction
1977 // CHECK-ERROR:         sqrshrn v0.4h, v1.4h, #3
1978 // CHECK-ERROR:                           ^
1979 // CHECK-ERROR: error: invalid operand for instruction
1980 // CHECK-ERROR:         sqrshrn v0.2s, v1.2s, #3
1981 // CHECK-ERROR:                           ^
1982 // CHECK-ERROR: error: expected integer in range [1, 8]
1983 // CHECK-ERROR:         sqrshrn2 v0.16b, v1.8h, #17
1984 // CHECK-ERROR:                                 ^
1985 // CHECK-ERROR: error: expected integer in range [1, 16]
1986 // CHECK-ERROR:         sqrshrn2 v0.8h, v1.4s, #33
1987 // CHECK-ERROR:                                ^
1988 // CHECK-ERROR: error: expected integer in range [1, 32]
1989 // CHECK-ERROR:         sqrshrn2 v0.4s, v1.2d, #65
1990 // CHECK-ERROR:                                ^
1991
1992 //------------------------------------------------------------------------------
1993 // Vector saturating shift right rounded narrow by immediate
1994 //------------------------------------------------------------------------------
1995          uqrshrn v0.8b, v1.8b, #3
1996          uqrshrn v0.4h, v1.4h, #3
1997          uqrshrn v0.2s, v1.2s, #3
1998          uqrshrn2 v0.16b, v1.8h, #17
1999          uqrshrn2 v0.8h, v1.4s, #33
2000          uqrshrn2 v0.4s, v1.2d, #65
2001
2002 // CHECK-ERROR: error: invalid operand for instruction
2003 // CHECK-ERROR:         uqrshrn v0.8b, v1.8b, #3
2004 // CHECK-ERROR:                           ^
2005 // CHECK-ERROR: error: invalid operand for instruction
2006 // CHECK-ERROR:         uqrshrn v0.4h, v1.4h, #3
2007 // CHECK-ERROR:                           ^
2008 // CHECK-ERROR: error: invalid operand for instruction
2009 // CHECK-ERROR:         uqrshrn v0.2s, v1.2s, #3
2010 // CHECK-ERROR:                           ^
2011 // CHECK-ERROR: error: expected integer in range [1, 8]
2012 // CHECK-ERROR:         uqrshrn2 v0.16b, v1.8h, #17
2013 // CHECK-ERROR:                                 ^
2014 // CHECK-ERROR: error: expected integer in range [1, 16]
2015 // CHECK-ERROR:         uqrshrn2 v0.8h, v1.4s, #33
2016 // CHECK-ERROR:                                ^
2017 // CHECK-ERROR: error: expected integer in range [1, 32]
2018 // CHECK-ERROR:         uqrshrn2 v0.4s, v1.2d, #65
2019 // CHECK-ERROR:                                ^
2020
2021 //------------------------------------------------------------------------------
2022 // Fixed-point convert to floating-point
2023 //------------------------------------------------------------------------------
2024          scvtf v0.2s, v1.2d, #3
2025          scvtf v0.4s, v1.4h, #3
2026          scvtf v0.2d, v1.2s, #3
2027          ucvtf v0.2s, v1.2s, #33
2028          ucvtf v0.4s, v1.4s, #33
2029          ucvtf v0.2d, v1.2d, #65
2030
2031 // CHECK-ERROR: error: invalid operand for instruction
2032 // CHECK-ERROR:         scvtf v0.2s, v1.2d, #3
2033 // CHECK-ERROR:                         ^
2034 // CHECK-ERROR: error: invalid operand for instruction
2035 // CHECK-ERROR:         scvtf v0.4s, v1.4h, #3
2036 // CHECK-ERROR:                         ^
2037 // CHECK-ERROR: error: invalid operand for instruction
2038 // CHECK-ERROR:         scvtf v0.2d, v1.2s, #3
2039 // CHECK-ERROR:                         ^
2040 // CHECK-ERROR: error: expected integer in range [1, 32]
2041 // CHECK-ERROR:         ucvtf v0.2s, v1.2s, #33
2042 // CHECK-ERROR:                             ^
2043 // CHECK-ERROR: error: expected integer in range [1, 32]
2044 // CHECK-ERROR:         ucvtf v0.4s, v1.4s, #33
2045 // CHECK-ERROR:                             ^
2046 // CHECK-ERROR: error: expected integer in range [1, 64]
2047 // CHECK-ERROR:         ucvtf v0.2d, v1.2d, #65
2048 // CHECK-ERROR:                             ^
2049
2050 //------------------------------------------------------------------------------
2051 // Floating-point convert to fixed-point
2052 //------------------------------------------------------------------------------
2053          fcvtzs v0.2s, v1.2d, #3
2054          fcvtzs v0.4s, v1.4h, #3
2055          fcvtzs v0.2d, v1.2s, #3
2056          fcvtzu v0.2s, v1.2s, #33
2057          fcvtzu v0.4s, v1.4s, #33
2058          fcvtzu v0.2d, v1.2d, #65
2059
2060 // CHECK-ERROR: error: invalid operand for instruction
2061 // CHECK-ERROR:         fcvtzs v0.2s, v1.2d, #3
2062 // CHECK-ERROR:                          ^
2063 // CHECK-ERROR: error: invalid operand for instruction
2064 // CHECK-ERROR:         fcvtzs v0.4s, v1.4h, #3
2065 // CHECK-ERROR:                          ^
2066 // CHECK-ERROR: error: invalid operand for instruction
2067 // CHECK-ERROR:         fcvtzs v0.2d, v1.2s, #3
2068 // CHECK-ERROR:                          ^
2069 // CHECK-ERROR: error: expected integer in range [1, 32]
2070 // CHECK-ERROR:         fcvtzu v0.2s, v1.2s, #33
2071 // CHECK-ERROR:                              ^
2072 // CHECK-ERROR: error: expected integer in range [1, 32]
2073 // CHECK-ERROR:         fcvtzu v0.4s, v1.4s, #33
2074 // CHECK-ERROR:                              ^
2075 // CHECK-ERROR: error: expected integer in range [1, 64]
2076 // CHECK-ERROR:         fcvtzu v0.2d, v1.2d, #65
2077 // CHECK-ERROR:                              ^
2078
2079 //----------------------------------------------------------------------
2080 // Vector operation on 3 operands with different types
2081 //----------------------------------------------------------------------
2082
2083         // Mismatched and invalid vector types
2084         saddl v0.8h, v1.8h, v2.8b
2085         saddl v0.4s, v1.4s, v2.4h
2086         saddl v0.2d, v1.2d, v2.2s
2087
2088 // CHECK-ERROR: error: invalid operand for instruction
2089 // CHECK-ERROR:        saddl v0.8h, v1.8h, v2.8b
2090 // CHECK-ERROR:                        ^
2091 // CHECK-ERROR: error: invalid operand for instruction
2092 // CHECK-ERROR:        saddl v0.4s, v1.4s, v2.4h
2093 // CHECK-ERROR:                        ^
2094 // CHECK-ERROR: error: invalid operand for instruction
2095 // CHECK-ERROR:        saddl v0.2d, v1.2d, v2.2s
2096 // CHECK-ERROR:                        ^
2097
2098         saddl2 v0.4s, v1.8s, v2.8h
2099         saddl2 v0.8h, v1.16h, v2.16b
2100         saddl2 v0.2d, v1.4d, v2.4s
2101
2102 // CHECK-ERROR: error: invalid operand for instruction
2103 // CHECK-ERROR:        saddl2 v0.4s, v1.8s, v2.8h
2104 // CHECK-ERROR:                      ^
2105 // CHECK-ERROR: error: invalid operand for instruction
2106 // CHECK-ERROR:        saddl2 v0.8h, v1.16h, v2.16b
2107 // CHECK-ERROR:                      ^
2108 // CHECK-ERROR: error: invalid operand for instruction
2109 // CHECK-ERROR:        saddl2 v0.2d, v1.4d, v2.4s
2110 // CHECK-ERROR:                      ^
2111
2112         uaddl v0.8h, v1.8h, v2.8b
2113         uaddl v0.4s, v1.4s, v2.4h
2114         uaddl v0.2d, v1.2d, v2.2s
2115
2116 // CHECK-ERROR: error: invalid operand for instruction
2117 // CHECK-ERROR:        uaddl v0.8h, v1.8h, v2.8b
2118 // CHECK-ERROR:                        ^
2119 // CHECK-ERROR: error: invalid operand for instruction
2120 // CHECK-ERROR:        uaddl v0.4s, v1.4s, v2.4h
2121 // CHECK-ERROR:                        ^
2122 // CHECK-ERROR: error: invalid operand for instruction
2123 // CHECK-ERROR:        uaddl v0.2d, v1.2d, v2.2s
2124 // CHECK-ERROR:                        ^
2125
2126         uaddl2 v0.8h, v1.16h, v2.16b
2127         uaddl2 v0.4s, v1.8s, v2.8h
2128         uaddl2 v0.2d, v1.4d, v2.4s
2129
2130 // CHECK-ERROR: error: invalid operand for instruction
2131 // CHECK-ERROR:        uaddl2 v0.8h, v1.16h, v2.16b
2132 // CHECK-ERROR:                      ^
2133 // CHECK-ERROR: error: invalid operand for instruction
2134 // CHECK-ERROR:        uaddl2 v0.4s, v1.8s, v2.8h
2135 // CHECK-ERROR:                      ^
2136 // CHECK-ERROR: error: invalid operand for instruction
2137 // CHECK-ERROR:        uaddl2 v0.2d, v1.4d, v2.4s
2138 // CHECK-ERROR:                      ^
2139
2140         ssubl v0.8h, v1.8h, v2.8b
2141         ssubl v0.4s, v1.4s, v2.4h
2142         ssubl v0.2d, v1.2d, v2.2s
2143
2144 // CHECK-ERROR: error: invalid operand for instruction
2145 // CHECK-ERROR:        ssubl v0.8h, v1.8h, v2.8b
2146 // CHECK-ERROR:                        ^
2147 // CHECK-ERROR: error: invalid operand for instruction
2148 // CHECK-ERROR:        ssubl v0.4s, v1.4s, v2.4h
2149 // CHECK-ERROR:                        ^
2150 // CHECK-ERROR: error: invalid operand for instruction
2151 // CHECK-ERROR:        ssubl v0.2d, v1.2d, v2.2s
2152 // CHECK-ERROR:                        ^
2153
2154         ssubl2 v0.8h, v1.16h, v2.16b
2155         ssubl2 v0.4s, v1.8s, v2.8h
2156         ssubl2 v0.2d, v1.4d, v2.4s
2157
2158 // CHECK-ERROR: error: invalid operand for instruction
2159 // CHECK-ERROR:        ssubl2 v0.8h, v1.16h, v2.16b
2160 // CHECK-ERROR:                      ^
2161 // CHECK-ERROR: error: invalid operand for instruction
2162 // CHECK-ERROR:        ssubl2 v0.4s, v1.8s, v2.8h
2163 // CHECK-ERROR:                      ^
2164 // CHECK-ERROR: error: invalid operand for instruction
2165 // CHECK-ERROR:        ssubl2 v0.2d, v1.4d, v2.4s
2166 // CHECK-ERROR:                      ^
2167
2168         usubl v0.8h, v1.8h, v2.8b
2169         usubl v0.4s, v1.4s, v2.4h
2170         usubl v0.2d, v1.2d, v2.2s
2171
2172 // CHECK-ERROR: error: invalid operand for instruction
2173 // CHECK-ERROR:        usubl v0.8h, v1.8h, v2.8b
2174 // CHECK-ERROR:                        ^
2175 // CHECK-ERROR: error: invalid operand for instruction
2176 // CHECK-ERROR:        usubl v0.4s, v1.4s, v2.4h
2177 // CHECK-ERROR:                        ^
2178 // CHECK-ERROR: error: invalid operand for instruction
2179 // CHECK-ERROR:        usubl v0.2d, v1.2d, v2.2s
2180 // CHECK-ERROR:                        ^
2181
2182         usubl2 v0.8h, v1.16h, v2.16b
2183         usubl2 v0.4s, v1.8s, v2.8h
2184         usubl2 v0.2d, v1.4d, v2.4s
2185
2186 // CHECK-ERROR: error: invalid operand for instruction
2187 // CHECK-ERROR:        usubl2 v0.8h, v1.16h, v2.16b
2188 // CHECK-ERROR:                      ^
2189 // CHECK-ERROR: error: invalid operand for instruction
2190 // CHECK-ERROR:        usubl2 v0.4s, v1.8s, v2.8h
2191 // CHECK-ERROR:                      ^
2192 // CHECK-ERROR: error: invalid operand for instruction
2193 // CHECK-ERROR:        usubl2 v0.2d, v1.4d, v2.4s
2194 // CHECK-ERROR:                      ^
2195
2196         sabal v0.8h, v1.8h, v2.8b
2197         sabal v0.4s, v1.4s, v2.4h
2198         sabal v0.2d, v1.2d, v2.2s
2199
2200 // CHECK-ERROR: error: invalid operand for instruction
2201 // CHECK-ERROR:        sabal v0.8h, v1.8h, v2.8b
2202 // CHECK-ERROR:                        ^
2203 // CHECK-ERROR: error: invalid operand for instruction
2204 // CHECK-ERROR:        sabal v0.4s, v1.4s, v2.4h
2205 // CHECK-ERROR:                        ^
2206 // CHECK-ERROR: error: invalid operand for instruction
2207 // CHECK-ERROR:        sabal v0.2d, v1.2d, v2.2s
2208 // CHECK-ERROR:                        ^
2209
2210         sabal2 v0.8h, v1.16h, v2.16b
2211         sabal2 v0.4s, v1.8s, v2.8h
2212         sabal2 v0.2d, v1.4d, v2.4s
2213
2214 // CHECK-ERROR: error: invalid operand for instruction
2215 // CHECK-ERROR:        sabal2 v0.8h, v1.16h, v2.16b
2216 // CHECK-ERROR:                      ^
2217 // CHECK-ERROR: error: invalid operand for instruction
2218 // CHECK-ERROR:        sabal2 v0.4s, v1.8s, v2.8h
2219 // CHECK-ERROR:                      ^
2220 // CHECK-ERROR: error: invalid operand for instruction
2221 // CHECK-ERROR:        sabal2 v0.2d, v1.4d, v2.4s
2222 // CHECK-ERROR:                      ^
2223
2224         uabal v0.8h, v1.8h, v2.8b
2225         uabal v0.4s, v1.4s, v2.4h
2226         uabal v0.2d, v1.2d, v2.2s
2227
2228 // CHECK-ERROR: error: invalid operand for instruction
2229 // CHECK-ERROR:        uabal v0.8h, v1.8h, v2.8b
2230 // CHECK-ERROR:                        ^
2231 // CHECK-ERROR: error: invalid operand for instruction
2232 // CHECK-ERROR:        uabal v0.4s, v1.4s, v2.4h
2233 // CHECK-ERROR:                        ^
2234 // CHECK-ERROR: error: invalid operand for instruction
2235 // CHECK-ERROR:        uabal v0.2d, v1.2d, v2.2s
2236 // CHECK-ERROR:                        ^
2237
2238         uabal2 v0.8h, v1.16h, v2.16b
2239         uabal2 v0.4s, v1.8s, v2.8h
2240         uabal2 v0.2d, v1.4d, v2.4s
2241
2242 // CHECK-ERROR: error: invalid operand for instruction
2243 // CHECK-ERROR:        uabal2 v0.8h, v1.16h, v2.16b
2244 // CHECK-ERROR:                      ^
2245 // CHECK-ERROR: error: invalid operand for instruction
2246 // CHECK-ERROR:        uabal2 v0.4s, v1.8s, v2.8h
2247 // CHECK-ERROR:                      ^
2248 // CHECK-ERROR: error: invalid operand for instruction
2249 // CHECK-ERROR:        uabal2 v0.2d, v1.4d, v2.4s
2250 // CHECK-ERROR:                      ^
2251
2252         sabdl v0.8h, v1.8h, v2.8b
2253         sabdl v0.4s, v1.4s, v2.4h
2254         sabdl v0.2d, v1.2d, v2.2s
2255
2256 // CHECK-ERROR: error: invalid operand for instruction
2257 // CHECK-ERROR:        sabdl v0.8h, v1.8h, v2.8b
2258 // CHECK-ERROR:                        ^
2259 // CHECK-ERROR: error: invalid operand for instruction
2260 // CHECK-ERROR:        sabdl v0.4s, v1.4s, v2.4h
2261 // CHECK-ERROR:                        ^
2262 // CHECK-ERROR: error: invalid operand for instruction
2263 // CHECK-ERROR:        sabdl v0.2d, v1.2d, v2.2s
2264 // CHECK-ERROR:                        ^
2265
2266         sabdl2 v0.8h, v1.16h, v2.16b
2267         sabdl2 v0.4s, v1.8s, v2.8h
2268         sabdl2 v0.2d, v1.4d, v2.4s
2269
2270 // CHECK-ERROR: error: invalid operand for instruction
2271 // CHECK-ERROR:        sabdl2 v0.8h, v1.16h, v2.16b
2272 // CHECK-ERROR:                      ^
2273 // CHECK-ERROR: error: invalid operand for instruction
2274 // CHECK-ERROR:        sabdl2 v0.4s, v1.8s, v2.8h
2275 // CHECK-ERROR:                      ^
2276 // CHECK-ERROR: error: invalid operand for instruction
2277 // CHECK-ERROR:        sabdl2 v0.2d, v1.4d, v2.4s
2278 // CHECK-ERROR:                      ^
2279
2280         uabdl v0.8h, v1.8h, v2.8b
2281         uabdl v0.4s, v1.4s, v2.4h
2282         uabdl v0.2d, v1.2d, v2.2s
2283
2284 // CHECK-ERROR: error: invalid operand for instruction
2285 // CHECK-ERROR:        uabdl v0.8h, v1.8h, v2.8b
2286 // CHECK-ERROR:                        ^
2287 // CHECK-ERROR: error: invalid operand for instruction
2288 // CHECK-ERROR:        uabdl v0.4s, v1.4s, v2.4h
2289 // CHECK-ERROR:                        ^
2290 // CHECK-ERROR: error: invalid operand for instruction
2291 // CHECK-ERROR:        uabdl v0.2d, v1.2d, v2.2s
2292 // CHECK-ERROR:                        ^
2293
2294         uabdl2 v0.8h, v1.16h, v2.16b
2295         uabdl2 v0.4s, v1.8s, v2.8h
2296         uabdl2 v0.2d, v1.4d, v2.4s
2297
2298 // CHECK-ERROR: error: invalid operand for instruction
2299 // CHECK-ERROR:        uabdl2 v0.8h, v1.16h, v2.16b
2300 // CHECK-ERROR:                      ^
2301 // CHECK-ERROR: error: invalid operand for instruction
2302 // CHECK-ERROR:        uabdl2 v0.4s, v1.8s, v2.8h
2303 // CHECK-ERROR:                      ^
2304 // CHECK-ERROR: error: invalid operand for instruction
2305 // CHECK-ERROR:        uabdl2 v0.2d, v1.4d, v2.4s
2306 // CHECK-ERROR:                      ^
2307
2308         smlal v0.8h, v1.8h, v2.8b
2309         smlal v0.4s, v1.4s, v2.4h
2310         smlal v0.2d, v1.2d, v2.2s
2311
2312 // CHECK-ERROR: error: invalid operand for instruction
2313 // CHECK-ERROR:        smlal v0.8h, v1.8h, v2.8b
2314 // CHECK-ERROR:                        ^
2315 // CHECK-ERROR: error: invalid operand for instruction
2316 // CHECK-ERROR:        smlal v0.4s, v1.4s, v2.4h
2317 // CHECK-ERROR:                        ^
2318 // CHECK-ERROR: error: invalid operand for instruction
2319 // CHECK-ERROR:        smlal v0.2d, v1.2d, v2.2s
2320 // CHECK-ERROR:                        ^
2321
2322         smlal2 v0.8h, v1.16h, v2.16b
2323         smlal2 v0.4s, v1.8s, v2.8h
2324         smlal2 v0.2d, v1.4d, v2.4s
2325
2326 // CHECK-ERROR: error: invalid operand for instruction
2327 // CHECK-ERROR:        smlal2 v0.8h, v1.16h, v2.16b
2328 // CHECK-ERROR:                      ^
2329 // CHECK-ERROR: error: invalid operand for instruction
2330 // CHECK-ERROR:        smlal2 v0.4s, v1.8s, v2.8h
2331 // CHECK-ERROR:                      ^
2332 // CHECK-ERROR: error: invalid operand for instruction
2333 // CHECK-ERROR:        smlal2 v0.2d, v1.4d, v2.4s
2334 // CHECK-ERROR:                      ^
2335
2336         umlal v0.8h, v1.8h, v2.8b
2337         umlal v0.4s, v1.4s, v2.4h
2338         umlal v0.2d, v1.2d, v2.2s
2339
2340 // CHECK-ERROR: error: invalid operand for instruction
2341 // CHECK-ERROR:        umlal v0.8h, v1.8h, v2.8b
2342 // CHECK-ERROR:                        ^
2343 // CHECK-ERROR: error: invalid operand for instruction
2344 // CHECK-ERROR:        umlal v0.4s, v1.4s, v2.4h
2345 // CHECK-ERROR:                        ^
2346 // CHECK-ERROR: error: invalid operand for instruction
2347 // CHECK-ERROR:        umlal v0.2d, v1.2d, v2.2s
2348 // CHECK-ERROR:                        ^
2349
2350         umlal2 v0.8h, v1.16h, v2.16b
2351         umlal2 v0.4s, v1.8s, v2.8h
2352         umlal2 v0.2d, v1.4d, v2.4s
2353
2354 // CHECK-ERROR: error: invalid operand for instruction
2355 // CHECK-ERROR:        umlal2 v0.8h, v1.16h, v2.16b
2356 // CHECK-ERROR:                      ^
2357 // CHECK-ERROR: error: invalid operand for instruction
2358 // CHECK-ERROR:        umlal2 v0.4s, v1.8s, v2.8h
2359 // CHECK-ERROR:                      ^
2360 // CHECK-ERROR: error: invalid operand for instruction
2361 // CHECK-ERROR:        umlal2 v0.2d, v1.4d, v2.4s
2362 // CHECK-ERROR:                      ^
2363
2364         smlsl v0.8h, v1.8h, v2.8b
2365         smlsl v0.4s, v1.4s, v2.4h
2366         smlsl v0.2d, v1.2d, v2.2s
2367
2368 // CHECK-ERROR: error: invalid operand for instruction
2369 // CHECK-ERROR:        smlsl v0.8h, v1.8h, v2.8b
2370 // CHECK-ERROR:                        ^
2371 // CHECK-ERROR: error: invalid operand for instruction
2372 // CHECK-ERROR:        smlsl v0.4s, v1.4s, v2.4h
2373 // CHECK-ERROR:                        ^
2374 // CHECK-ERROR: error: invalid operand for instruction
2375 // CHECK-ERROR:        smlsl v0.2d, v1.2d, v2.2s
2376 // CHECK-ERROR:                        ^
2377
2378         smlsl2 v0.8h, v1.16h, v2.16b
2379         smlsl2 v0.4s, v1.8s, v2.8h
2380         smlsl2 v0.2d, v1.4d, v2.4s
2381
2382 // CHECK-ERROR: error: invalid operand for instruction
2383 // CHECK-ERROR:        smlsl2 v0.8h, v1.16h, v2.16b
2384 // CHECK-ERROR:                      ^
2385 // CHECK-ERROR: error: invalid operand for instruction
2386 // CHECK-ERROR:        smlsl2 v0.4s, v1.8s, v2.8h
2387 // CHECK-ERROR:                      ^
2388 // CHECK-ERROR: error: invalid operand for instruction
2389 // CHECK-ERROR:        smlsl2 v0.2d, v1.4d, v2.4s
2390 // CHECK-ERROR:                      ^
2391
2392         umlsl v0.8h, v1.8h, v2.8b
2393         umlsl v0.4s, v1.4s, v2.4h
2394         umlsl v0.2d, v1.2d, v2.2s
2395
2396 // CHECK-ERROR: error: invalid operand for instruction
2397 // CHECK-ERROR:        umlsl v0.8h, v1.8h, v2.8b
2398 // CHECK-ERROR:                        ^
2399 // CHECK-ERROR: error: invalid operand for instruction
2400 // CHECK-ERROR:        umlsl v0.4s, v1.4s, v2.4h
2401 // CHECK-ERROR:                        ^
2402 // CHECK-ERROR: error: invalid operand for instruction
2403 // CHECK-ERROR:        umlsl v0.2d, v1.2d, v2.2s
2404 // CHECK-ERROR:                        ^
2405
2406         umlsl2 v0.8h, v1.16h, v2.16b
2407         umlsl2 v0.4s, v1.8s, v2.8h
2408         umlsl2 v0.2d, v1.4d, v2.4s
2409
2410 // CHECK-ERROR: error: invalid operand for instruction
2411 // CHECK-ERROR:        umlsl2 v0.8h, v1.16h, v2.16b
2412 // CHECK-ERROR:                      ^
2413 // CHECK-ERROR: error: invalid operand for instruction
2414 // CHECK-ERROR:        umlsl2 v0.4s, v1.8s, v2.8h
2415 // CHECK-ERROR:                      ^
2416 // CHECK-ERROR: error: invalid operand for instruction
2417 // CHECK-ERROR:        umlsl2 v0.2d, v1.4d, v2.4s
2418 // CHECK-ERROR:                      ^
2419
2420         smull v0.8h, v1.8h, v2.8b
2421         smull v0.4s, v1.4s, v2.4h
2422         smull v0.2d, v1.2d, v2.2s
2423
2424 // CHECK-ERROR: error: invalid operand for instruction
2425 // CHECK-ERROR:        smull v0.8h, v1.8h, v2.8b
2426 // CHECK-ERROR:                        ^
2427 // CHECK-ERROR: error: invalid operand for instruction
2428 // CHECK-ERROR:        smull v0.4s, v1.4s, v2.4h
2429 // CHECK-ERROR:                        ^
2430 // CHECK-ERROR: error: invalid operand for instruction
2431 // CHECK-ERROR:        smull v0.2d, v1.2d, v2.2s
2432 // CHECK-ERROR:                        ^
2433
2434         smull2 v0.8h, v1.16h, v2.16b
2435         smull2 v0.4s, v1.8s, v2.8h
2436         smull2 v0.2d, v1.4d, v2.4s
2437
2438 // CHECK-ERROR: error: invalid operand for instruction
2439 // CHECK-ERROR:        smull2 v0.8h, v1.16h, v2.16b
2440 // CHECK-ERROR:                      ^
2441 // CHECK-ERROR: error: invalid operand for instruction
2442 // CHECK-ERROR:        smull2 v0.4s, v1.8s, v2.8h
2443 // CHECK-ERROR:                      ^
2444 // CHECK-ERROR: error: invalid operand for instruction
2445 // CHECK-ERROR:        smull2 v0.2d, v1.4d, v2.4s
2446 // CHECK-ERROR:                      ^
2447
2448         umull v0.8h, v1.8h, v2.8b
2449         umull v0.4s, v1.4s, v2.4h
2450         umull v0.2d, v1.2d, v2.2s
2451
2452 // CHECK-ERROR: error: invalid operand for instruction
2453 // CHECK-ERROR:        umull v0.8h, v1.8h, v2.8b
2454 // CHECK-ERROR:                        ^
2455 // CHECK-ERROR: error: invalid operand for instruction
2456 // CHECK-ERROR:        umull v0.4s, v1.4s, v2.4h
2457 // CHECK-ERROR:                        ^
2458 // CHECK-ERROR: error: invalid operand for instruction
2459 // CHECK-ERROR:        umull v0.2d, v1.2d, v2.2s
2460 // CHECK-ERROR:                        ^
2461
2462         umull2 v0.8h, v1.16h, v2.16b
2463         umull2 v0.4s, v1.8s, v2.8h
2464         umull2 v0.2d, v1.4d, v2.4s
2465
2466 // CHECK-ERROR: error: invalid operand for instruction
2467 // CHECK-ERROR:        umull2 v0.8h, v1.16h, v2.16b
2468 // CHECK-ERROR:                      ^
2469 // CHECK-ERROR: error: invalid operand for instruction
2470 // CHECK-ERROR:        umull2 v0.4s, v1.8s, v2.8h
2471 // CHECK-ERROR:                      ^
2472 // CHECK-ERROR: error: invalid operand for instruction
2473 // CHECK-ERROR:        umull2 v0.2d, v1.4d, v2.4s
2474 // CHECK-ERROR:                      ^
2475
2476 //------------------------------------------------------------------------------
2477 // Long - Variant 2
2478 //------------------------------------------------------------------------------
2479
2480         sqdmlal v0.4s, v1.4s, v2.4h
2481         sqdmlal v0.2d, v1.2d, v2.2s
2482
2483 // CHECK-ERROR: error: invalid operand for instruction
2484 // CHECK-ERROR:        sqdmlal v0.4s, v1.4s, v2.4h
2485 // CHECK-ERROR:                          ^
2486 // CHECK-ERROR: error: invalid operand for instruction
2487 // CHECK-ERROR:        sqdmlal v0.2d, v1.2d, v2.2s
2488 // CHECK-ERROR:                          ^
2489
2490         sqdmlal2 v0.4s, v1.8s, v2.8h
2491         sqdmlal2 v0.2d, v1.4d, v2.4s
2492
2493 // CHECK-ERROR: error: invalid operand for instruction
2494 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8s, v2.8h
2495 // CHECK-ERROR:                        ^
2496 // CHECK-ERROR: error: invalid operand for instruction
2497 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4d, v2.4s
2498 // CHECK-ERROR:                        ^
2499
2500         // Mismatched vector types
2501         sqdmlal v0.8h, v1.8b, v2.8b
2502         sqdmlal2 v0.8h, v1.16b, v2.16b
2503
2504 // CHECK-ERROR: error: invalid operand for instruction
2505 // CHECK-ERROR:        sqdmlal v0.8h, v1.8b, v2.8b
2506 // CHECK-ERROR:                   ^
2507 // CHECK-ERROR: error: invalid operand for instruction
2508 // CHECK-ERROR:        sqdmlal2 v0.8h, v1.16b, v2.16b
2509 // CHECK-ERROR:                    ^
2510
2511         sqdmlsl v0.4s, v1.4s, v2.4h
2512         sqdmlsl v0.2d, v1.2d, v2.2s
2513
2514 // CHECK-ERROR: error: invalid operand for instruction
2515 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4s, v2.4h
2516 // CHECK-ERROR:                          ^
2517 // CHECK-ERROR: error: invalid operand for instruction
2518 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2d, v2.2s
2519 // CHECK-ERROR:                          ^
2520
2521         sqdmlsl2 v0.4s, v1.8s, v2.8h
2522         sqdmlsl2 v0.2d, v1.4d, v2.4s
2523
2524 // CHECK-ERROR: error: invalid operand for instruction
2525 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8s, v2.8h
2526 // CHECK-ERROR:                        ^
2527 // CHECK-ERROR: error: invalid operand for instruction
2528 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4d, v2.4s
2529 // CHECK-ERROR:                        ^
2530
2531         // Mismatched vector types
2532         sqdmlsl v0.8h, v1.8b, v2.8b
2533         sqdmlsl2 v0.8h, v1.16b, v2.16b
2534
2535 // CHECK-ERROR: error: invalid operand for instruction
2536 // CHECK-ERROR:        sqdmlsl v0.8h, v1.8b, v2.8b
2537 // CHECK-ERROR:                   ^
2538 // CHECK-ERROR: error: invalid operand for instruction
2539 // CHECK-ERROR:        sqdmlsl2 v0.8h, v1.16b, v2.16b
2540 // CHECK-ERROR:                    ^
2541
2542
2543         sqdmull v0.4s, v1.4s, v2.4h
2544         sqdmull v0.2d, v1.2d, v2.2s
2545
2546 // CHECK-ERROR: error: invalid operand for instruction
2547 // CHECK-ERROR:        sqdmull v0.4s, v1.4s, v2.4h
2548 // CHECK-ERROR:                          ^
2549 // CHECK-ERROR: error: invalid operand for instruction
2550 // CHECK-ERROR:        sqdmull v0.2d, v1.2d, v2.2s
2551 // CHECK-ERROR:                          ^
2552
2553         sqdmull2 v0.4s, v1.8s, v2.8h
2554         sqdmull2 v0.2d, v1.4d, v2.4s
2555
2556 // CHECK-ERROR: error: invalid operand for instruction
2557 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8s, v2.8h
2558 // CHECK-ERROR:                        ^
2559 // CHECK-ERROR: error: invalid operand for instruction
2560 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4d, v2.4s
2561 // CHECK-ERROR:                        ^
2562
2563         // Mismatched vector types
2564         sqdmull v0.8h, v1.8b, v2.8b
2565         sqdmull2 v0.8h, v1.16b, v2.16b
2566
2567 // CHECK-ERROR: error: invalid operand for instruction
2568 // CHECK-ERROR:        sqdmull v0.8h, v1.8b, v2.8b
2569 // CHECK-ERROR:                   ^
2570 // CHECK-ERROR: error: invalid operand for instruction
2571 // CHECK-ERROR:        sqdmull2 v0.8h, v1.16b, v2.16b
2572 // CHECK-ERROR:                    ^
2573
2574
2575 //------------------------------------------------------------------------------
2576 // Long - Variant 3
2577 //------------------------------------------------------------------------------
2578
2579         pmull v0.8h, v1.8h, v2.8b
2580
2581 // CHECK-ERROR: error: invalid operand for instruction
2582 // CHECK-ERROR:        pmull v0.8h, v1.8h, v2.8b
2583 // CHECK-ERROR:                        ^
2584
2585         // Mismatched vector types
2586         pmull v0.4s, v1.4h, v2.4h
2587         pmull v0.2d, v1.2s, v2.2s
2588
2589 // CHECK-ERROR: error: invalid operand for instruction
2590 // CHECK-ERROR:        pmull v0.4s, v1.4h, v2.4h
2591 // CHECK-ERROR:                 ^
2592 // CHECK-ERROR: error: invalid operand for instruction
2593 // CHECK-ERROR:        pmull v0.2d, v1.2s, v2.2s
2594 // CHECK-ERROR:                 ^
2595
2596
2597         pmull2 v0.8h, v1.16h, v2.16b
2598
2599 // CHECK-ERROR: error: invalid operand for instruction
2600 // CHECK-ERROR:        pmull2 v0.8h, v1.16h, v2.16b
2601 // CHECK-ERROR:                      ^
2602
2603         // Mismatched vector types
2604         pmull2 v0.4s, v1.8h v2.8h
2605         pmull2 v0.2d, v1.4s, v2.4s
2606
2607 // CHECK-ERROR: error: expected comma before next operand
2608 // CHECK-ERROR:        pmull2 v0.4s, v1.8h v2.8h
2609 // CHECK-ERROR:                            ^
2610 // CHECK-ERROR: error: invalid operand for instruction
2611 // CHECK-ERROR:        pmull2 v0.2d, v1.4s, v2.4s
2612 // CHECK-ERROR:                  ^
2613
2614 //------------------------------------------------------------------------------
2615 // Widen
2616 //------------------------------------------------------------------------------
2617
2618         saddw v0.8h, v1.8h, v2.8h
2619         saddw v0.4s, v1.4s, v2.4s
2620         saddw v0.2d, v1.2d, v2.2d
2621
2622 // CHECK-ERROR: error: invalid operand for instruction
2623 // CHECK-ERROR:        saddw v0.8h, v1.8h, v2.8h
2624 // CHECK-ERROR:                               ^
2625 // CHECK-ERROR: error: invalid operand for instruction
2626 // CHECK-ERROR:        saddw v0.4s, v1.4s, v2.4s
2627 // CHECK-ERROR:                               ^
2628 // CHECK-ERROR: error: invalid operand for instruction
2629 // CHECK-ERROR:        saddw v0.2d, v1.2d, v2.2d
2630 // CHECK-ERROR:                               ^
2631
2632         saddw2 v0.8h, v1.8h, v2.16h
2633         saddw2 v0.4s, v1.4s, v2.8s
2634         saddw2 v0.2d, v1.2d, v2.4d
2635
2636 // CHECK-ERROR: error: invalid operand for instruction
2637 // CHECK-ERROR:        saddw2 v0.8h, v1.8h, v2.16h
2638 // CHECK-ERROR:                             ^
2639 // CHECK-ERROR: error: invalid operand for instruction
2640 // CHECK-ERROR:        saddw2 v0.4s, v1.4s, v2.8s
2641 // CHECK-ERROR:                             ^
2642 // CHECK-ERROR: error: invalid operand for instruction
2643 // CHECK-ERROR:        saddw2 v0.2d, v1.2d, v2.4d
2644 // CHECK-ERROR:                             ^
2645
2646         uaddw v0.8h, v1.8h, v2.8h
2647         uaddw v0.4s, v1.4s, v2.4s
2648         uaddw v0.2d, v1.2d, v2.2d
2649
2650 // CHECK-ERROR: error: invalid operand for instruction
2651 // CHECK-ERROR:        uaddw v0.8h, v1.8h, v2.8h
2652 // CHECK-ERROR:                               ^
2653 // CHECK-ERROR: error: invalid operand for instruction
2654 // CHECK-ERROR:        uaddw v0.4s, v1.4s, v2.4s
2655 // CHECK-ERROR:                               ^
2656 // CHECK-ERROR: error: invalid operand for instruction
2657 // CHECK-ERROR:        uaddw v0.2d, v1.2d, v2.2d
2658 // CHECK-ERROR:                               ^
2659
2660         uaddw2 v0.8h, v1.8h, v2.16h
2661         uaddw2 v0.4s, v1.4s, v2.8s
2662         uaddw2 v0.2d, v1.2d, v2.4d
2663
2664 // CHECK-ERROR: error: invalid operand for instruction
2665 // CHECK-ERROR:        uaddw2 v0.8h, v1.8h, v2.16h
2666 // CHECK-ERROR:                             ^
2667 // CHECK-ERROR: error: invalid operand for instruction
2668 // CHECK-ERROR:        uaddw2 v0.4s, v1.4s, v2.8s
2669 // CHECK-ERROR:                             ^
2670 // CHECK-ERROR: error: invalid operand for instruction
2671 // CHECK-ERROR:        uaddw2 v0.2d, v1.2d, v2.4d
2672 // CHECK-ERROR:                             ^
2673
2674         ssubw v0.8h, v1.8h, v2.8h
2675         ssubw v0.4s, v1.4s, v2.4s
2676         ssubw v0.2d, v1.2d, v2.2d
2677
2678 // CHECK-ERROR: error: invalid operand for instruction
2679 // CHECK-ERROR:        ssubw v0.8h, v1.8h, v2.8h
2680 // CHECK-ERROR:                               ^
2681 // CHECK-ERROR: error: invalid operand for instruction
2682 // CHECK-ERROR:        ssubw v0.4s, v1.4s, v2.4s
2683 // CHECK-ERROR:                               ^
2684 // CHECK-ERROR: error: invalid operand for instruction
2685 // CHECK-ERROR:        ssubw v0.2d, v1.2d, v2.2d
2686 // CHECK-ERROR:                               ^
2687
2688         ssubw2 v0.8h, v1.8h, v2.16h
2689         ssubw2 v0.4s, v1.4s, v2.8s
2690         ssubw2 v0.2d, v1.2d, v2.4d
2691
2692 // CHECK-ERROR: error: invalid operand for instruction
2693 // CHECK-ERROR:        ssubw2 v0.8h, v1.8h, v2.16h
2694 // CHECK-ERROR:                             ^
2695 // CHECK-ERROR: error: invalid operand for instruction
2696 // CHECK-ERROR:        ssubw2 v0.4s, v1.4s, v2.8s
2697 // CHECK-ERROR:                             ^
2698 // CHECK-ERROR: error: invalid operand for instruction
2699 // CHECK-ERROR:        ssubw2 v0.2d, v1.2d, v2.4d
2700 // CHECK-ERROR:                             ^
2701
2702         usubw v0.8h, v1.8h, v2.8h
2703         usubw v0.4s, v1.4s, v2.4s
2704         usubw v0.2d, v1.2d, v2.2d
2705
2706 // CHECK-ERROR: error: invalid operand for instruction
2707 // CHECK-ERROR:        usubw v0.8h, v1.8h, v2.8h
2708 // CHECK-ERROR:                               ^
2709 // CHECK-ERROR: error: invalid operand for instruction
2710 // CHECK-ERROR:        usubw v0.4s, v1.4s, v2.4s
2711 // CHECK-ERROR:                               ^
2712 // CHECK-ERROR: error: invalid operand for instruction
2713 // CHECK-ERROR:        usubw v0.2d, v1.2d, v2.2d
2714 // CHECK-ERROR:                               ^
2715
2716         usubw2 v0.8h, v1.8h, v2.16h
2717         usubw2 v0.4s, v1.4s, v2.8s
2718         usubw2 v0.2d, v1.2d, v2.4d
2719
2720 // CHECK-ERROR: error: invalid operand for instruction
2721 // CHECK-ERROR:        usubw2 v0.8h, v1.8h, v2.16h
2722 // CHECK-ERROR:                             ^
2723 // CHECK-ERROR: error: invalid operand for instruction
2724 // CHECK-ERROR:        usubw2 v0.4s, v1.4s, v2.8s
2725 // CHECK-ERROR:                             ^
2726 // CHECK-ERROR: error: invalid operand for instruction
2727 // CHECK-ERROR:        usubw2 v0.2d, v1.2d, v2.4d
2728 // CHECK-ERROR:                             ^
2729
2730 //------------------------------------------------------------------------------
2731 // Narrow
2732 //------------------------------------------------------------------------------
2733
2734         addhn v0.8b, v1.8h, v2.8d
2735         addhn v0.4h, v1.4s, v2.4h
2736         addhn v0.2s, v1.2d, v2.2s
2737
2738 // CHECK-ERROR: error: invalid operand for instruction
2739 // CHECK-ERROR:        addhn v0.8b, v1.8h, v2.8d
2740 // CHECK-ERROR:                            ^
2741 // CHECK-ERROR: error: invalid operand for instruction
2742 // CHECK-ERROR:        addhn v0.4h, v1.4s, v2.4h
2743 // CHECK-ERROR:                               ^
2744 // CHECK-ERROR: error: invalid operand for instruction
2745 // CHECK-ERROR:        addhn v0.2s, v1.2d, v2.2s
2746 // CHECK-ERROR:                               ^
2747
2748         addhn2 v0.16b, v1.8h, v2.8b
2749         addhn2 v0.8h, v1.4s, v2.4h
2750         addhn2 v0.4s, v1.2d, v2.2s
2751
2752 // CHECK-ERROR: error: invalid operand for instruction
2753 // CHECK-ERROR:        addhn2 v0.16b, v1.8h, v2.8b
2754 // CHECK-ERROR:                                 ^
2755 // CHECK-ERROR: error: invalid operand for instruction
2756 // CHECK-ERROR:        addhn2 v0.8h, v1.4s, v2.4h
2757 // CHECK-ERROR:                                ^
2758 // CHECK-ERROR: error: invalid operand for instruction
2759 // CHECK-ERROR:        addhn2 v0.4s, v1.2d, v2.2s
2760 // CHECK-ERROR:                                ^
2761
2762         raddhn v0.8b, v1.8h, v2.8b
2763         raddhn v0.4h, v1.4s, v2.4h
2764         raddhn v0.2s, v1.2d, v2.2s
2765
2766 // CHECK-ERROR: error: invalid operand for instruction
2767 // CHECK-ERROR:        raddhn v0.8b, v1.8h, v2.8b
2768 // CHECK-ERROR:                                ^
2769 // CHECK-ERROR: error: invalid operand for instruction
2770 // CHECK-ERROR:        raddhn v0.4h, v1.4s, v2.4h
2771 // CHECK-ERROR:                                ^
2772 // CHECK-ERROR: error: invalid operand for instruction
2773 // CHECK-ERROR:        raddhn v0.2s, v1.2d, v2.2s
2774 // CHECK-ERROR:                                ^
2775
2776         raddhn2 v0.16b, v1.8h, v2.8b
2777         raddhn2 v0.8h, v1.4s, v2.4h
2778         raddhn2 v0.4s, v1.2d, v2.2s
2779
2780 // CHECK-ERROR: error: invalid operand for instruction
2781 // CHECK-ERROR:        raddhn2 v0.16b, v1.8h, v2.8b
2782 // CHECK-ERROR:                                  ^
2783 // CHECK-ERROR: error: invalid operand for instruction
2784 // CHECK-ERROR:        raddhn2 v0.8h, v1.4s, v2.4h
2785 // CHECK-ERROR:                                 ^
2786 // CHECK-ERROR: error: invalid operand for instruction
2787 // CHECK-ERROR:        raddhn2 v0.4s, v1.2d, v2.2s
2788 // CHECK-ERROR:                                 ^
2789
2790         rsubhn v0.8b, v1.8h, v2.8b
2791         rsubhn v0.4h, v1.4s, v2.4h
2792         rsubhn v0.2s, v1.2d, v2.2s
2793
2794 // CHECK-ERROR: error: invalid operand for instruction
2795 // CHECK-ERROR:        rsubhn v0.8b, v1.8h, v2.8b
2796 // CHECK-ERROR:                                ^
2797 // CHECK-ERROR: error: invalid operand for instruction
2798 // CHECK-ERROR:        rsubhn v0.4h, v1.4s, v2.4h
2799 // CHECK-ERROR:                                ^
2800 // CHECK-ERROR: error: invalid operand for instruction
2801 // CHECK-ERROR:        rsubhn v0.2s, v1.2d, v2.2s
2802 // CHECK-ERROR:                                ^
2803
2804         rsubhn2 v0.16b, v1.8h, v2.8b
2805         rsubhn2 v0.8h, v1.4s, v2.4h
2806         rsubhn2 v0.4s, v1.2d, v2.2s
2807
2808 // CHECK-ERROR: error: invalid operand for instruction
2809 // CHECK-ERROR:        rsubhn2 v0.16b, v1.8h, v2.8b
2810 // CHECK-ERROR:                                  ^
2811 // CHECK-ERROR: error: invalid operand for instruction
2812 // CHECK-ERROR:        rsubhn2 v0.8h, v1.4s, v2.4h
2813 // CHECK-ERROR:                                 ^
2814 // CHECK-ERROR: error: invalid operand for instruction
2815 // CHECK-ERROR:        rsubhn2 v0.4s, v1.2d, v2.2s
2816 // CHECK-ERROR:                                 ^
2817
2818 //----------------------------------------------------------------------
2819 // Scalar Reduce Add Pairwise (Integer)
2820 //----------------------------------------------------------------------
2821          // invalid vector types
2822       addp s0, d1.2d
2823       addp d0, d1.2s
2824
2825 // CHECK-ERROR: error: invalid operand for instruction
2826 // CHECK-ERROR:          addp s0, d1.2d
2827 // CHECK-ERROR:               ^
2828 // CHECK-ERROR: error: invalid operand for instruction
2829 // CHECK-ERROR:          addp d0, d1.2s
2830 // CHECK-ERROR:                      ^
2831
2832 //----------------------------------------------------------------------
2833 // Scalar Reduce Add Pairwise (Floating Point)
2834 //----------------------------------------------------------------------
2835          // invalid vector types
2836       faddp s0, d1.2d
2837       faddp d0, d1.2s
2838
2839 // CHECK-ERROR: error: invalid operand for instruction
2840 // CHECK-ERROR:          faddp s0, d1.2d
2841 // CHECK-ERROR:                    ^
2842 // CHECK-ERROR: error: invalid operand for instruction
2843 // CHECK-ERROR:          faddp d0, d1.2s
2844 // CHECK-ERROR:                    ^
2845
2846 //----------------------------------------------------------------------
2847 // Scalar Reduce Maximum Pairwise (Floating Point)
2848 //----------------------------------------------------------------------
2849          // mismatched and invalid vector types
2850       fmaxp s0, v1.2d
2851       fmaxp d31, v2.2s
2852       fmaxp h3, v2.2s
2853
2854 // CHECK-ERROR: error: invalid operand for instruction
2855 // CHECK-ERROR:          fmaxp s0, v1.2d
2856 // CHECK-ERROR:                       ^
2857 // CHECK-ERROR: error: invalid operand for instruction
2858 // CHECK-ERROR:          fmaxp d31, v2.2s
2859 // CHECK-ERROR:                        ^
2860 // CHECK-ERROR: error: invalid operand for instruction
2861 // CHECK-ERROR:          fmaxp h3, v2.2s
2862 // CHECK-ERROR:                ^
2863
2864
2865 //----------------------------------------------------------------------
2866 // Scalar Reduce Minimum Pairwise (Floating Point)
2867 //----------------------------------------------------------------------
2868          // mismatched and invalid vector types
2869       fminp s0, v1.4h
2870       fminp d31, v2.8h
2871       fminp b3, v2.2s
2872
2873 // CHECK-ERROR: error: invalid operand for instruction
2874 // CHECK-ERROR:          fminp s0, v1.4h
2875 // CHECK-ERROR:                       ^
2876 // CHECK-ERROR: error: invalid operand for instruction
2877 // CHECK-ERROR:          fminp d31, v2.8h
2878 // CHECK-ERROR:                        ^
2879 // CHECK-ERROR: error: invalid operand for instruction
2880 // CHECK-ERROR:          fminp b3, v2.2s
2881 // CHECK-ERROR:                ^
2882
2883
2884 //----------------------------------------------------------------------
2885 // Scalar Reduce maxNum Pairwise (Floating Point)
2886 //----------------------------------------------------------------------
2887          // mismatched and invalid vector types
2888       fmaxnmp s0, v1.8b
2889       fmaxnmp d31, v2.16b
2890       fmaxnmp v1.2s, v2.2s
2891
2892 // CHECK-ERROR: error: invalid operand for instruction
2893 // CHECK-ERROR:          fmaxnmp s0, v1.8b
2894 // CHECK-ERROR:                         ^
2895 // CHECK-ERROR: error: invalid operand for instruction
2896 // CHECK-ERROR:          fmaxnmp d31, v2.16b
2897 // CHECK-ERROR:                          ^
2898 // CHECK-ERROR: error: too few operands for instruction
2899 // CHECK-ERROR:          fmaxnmp v1.2s, v2.2s
2900 // CHECK-ERROR:          ^
2901
2902 //----------------------------------------------------------------------
2903 // Scalar Reduce minNum Pairwise (Floating Point)
2904 //----------------------------------------------------------------------
2905          // mismatched and invalid vector types
2906       fminnmp s0, v1.2d
2907       fminnmp d31, v2.4s
2908       fminnmp v1.4s, v2.2d
2909
2910 // CHECK-ERROR: error: invalid operand for instruction
2911 // CHECK-ERROR:          fminnmp s0, v1.2d
2912 // CHECK-ERROR:                         ^
2913 // CHECK-ERROR: error: invalid operand for instruction
2914 // CHECK-ERROR:          fminnmp d31, v2.4s
2915 // CHECK-ERROR:                          ^
2916 // CHECK-ERROR: error: invalid operand for instruction
2917 // CHECK-ERROR:          fminnmp v1.4s, v2.2d
2918 // CHECK-ERROR:          ^
2919
2920       mla v0.2d, v1.2d, v16.d[1]
2921       mla v0.2s, v1.2s, v2.s[4]
2922       mla v0.4s, v1.4s, v2.s[4]
2923       mla v0.2h, v1.2h, v2.h[1]
2924       mla v0.4h, v1.4h, v2.h[8]
2925       mla v0.8h, v1.8h, v2.h[8]
2926       mla v0.4h, v1.4h, v16.h[2]
2927       mla v0.8h, v1.8h, v16.h[2]
2928
2929 // CHECK-ERROR: error: invalid operand for instruction
2930 // CHECK-ERROR:        mla v0.2d, v1.2d, v16.d[1]
2931 // CHECK-ERROR:               ^
2932 // CHECK-ERROR: error: lane number incompatible with layout
2933 // CHECK-ERROR:        mla v0.2s, v1.2s, v2.s[4]
2934 // CHECK-ERROR:                               ^
2935 // CHECK-ERROR: error: lane number incompatible with layout
2936 // CHECK-ERROR:        mla v0.4s, v1.4s, v2.s[4]
2937 // CHECK-ERROR:                               ^
2938 // CHECK-ERROR: error: invalid operand for instruction
2939 // CHECK-ERROR:        mla v0.2h, v1.2h, v2.h[1]
2940 // CHECK-ERROR:            ^
2941 // CHECK-ERROR: error: lane number incompatible with layout
2942 // CHECK-ERROR:        mla v0.4h, v1.4h, v2.h[8]
2943 // CHECK-ERROR:                               ^
2944 // CHECK-ERROR: error: lane number incompatible with layout
2945 // CHECK-ERROR:        mla v0.8h, v1.8h, v2.h[8]
2946 // CHECK-ERROR:                               ^
2947 // CHECK-ERROR: error: invalid operand for instruction
2948 // CHECK-ERROR:        mla v0.4h, v1.4h, v16.h[2]
2949 // CHECK-ERROR:                          ^
2950 // CHECK-ERROR: error: invalid operand for instruction
2951 // CHECK-ERROR:        mla v0.8h, v1.8h, v16.h[2]
2952 // CHECK-ERROR:                              ^
2953
2954       mls v0.2d, v1.2d, v16.d[1]
2955       mls v0.2s, v1.2s, v2.s[4]
2956       mls v0.4s, v1.4s, v2.s[4]
2957       mls v0.2h, v1.2h, v2.h[1]
2958       mls v0.4h, v1.4h, v2.h[8]
2959       mls v0.8h, v1.8h, v2.h[8]
2960       mls v0.4h, v1.4h, v16.h[2]
2961       mls v0.8h, v1.8h, v16.h[2]
2962
2963 // CHECK-ERROR: error: invalid operand for instruction
2964 // CHECK-ERROR:        mls v0.2d, v1.2d, v16.d[1]
2965 // CHECK-ERROR:               ^
2966 // CHECK-ERROR: error: lane number incompatible with layout
2967 // CHECK-ERROR:        mls v0.2s, v1.2s, v2.s[4]
2968 // CHECK-ERROR:                               ^
2969 // CHECK-ERROR: error: lane number incompatible with layout
2970 // CHECK-ERROR:        mls v0.4s, v1.4s, v2.s[4]
2971 // CHECK-ERROR:                               ^
2972 // CHECK-ERROR: error: invalid operand for instruction
2973 // CHECK-ERROR:        mls v0.2h, v1.2h, v2.h[1]
2974 // CHECK-ERROR:            ^
2975 // CHECK-ERROR: error: lane number incompatible with layout
2976 // CHECK-ERROR:        mls v0.4h, v1.4h, v2.h[8]
2977 // CHECK-ERROR:                               ^
2978 // CHECK-ERROR: error: lane number incompatible with layout
2979 // CHECK-ERROR:        mls v0.8h, v1.8h, v2.h[8]
2980 // CHECK-ERROR:                               ^
2981 // CHECK-ERROR: error: invalid operand for instruction
2982 // CHECK-ERROR:        mls v0.4h, v1.4h, v16.h[2]
2983 // CHECK-ERROR:                          ^
2984 // CHECK-ERROR: error: invalid operand for instruction
2985 // CHECK-ERROR:        mls v0.8h, v1.8h, v16.h[2]
2986 // CHECK-ERROR:                              ^
2987
2988       fmla v0.4h, v1.4h, v2.h[2]
2989       fmla v0.8h, v1.8h, v2.h[2]
2990       fmla v0.2s, v1.2s, v2.s[4]
2991       fmla v0.2s, v1.2s, v22.s[4]
2992       fmla v3.4s, v8.4s, v2.s[4]
2993       fmla v3.4s, v8.4s, v22.s[4]
2994       fmla v0.2d, v1.2d, v2.d[2]
2995       fmla v0.2d, v1.2d, v22.d[2]
2996
2997 // CHECK-ERROR: error: invalid operand for instruction
2998 // CHECK-ERROR:        fmla v0.4h, v1.4h, v2.h[2]
2999 // CHECK-ERROR:                ^
3000 // CHECK-ERROR: error: invalid operand for instruction
3001 // CHECK-ERROR:        fmla v0.8h, v1.8h, v2.h[2]
3002 // CHECK-ERROR:                ^
3003 // CHECK-ERROR: error: lane number incompatible with layout
3004 // CHECK-ERROR:        fmla v0.2s, v1.2s, v2.s[4]
3005 // CHECK-ERROR:                                ^
3006 // CHECK-ERROR: error: lane number incompatible with layout
3007 // CHECK-ERROR:        fmla v0.2s, v1.2s, v22.s[4]
3008 // CHECK-ERROR:                                 ^
3009 // CHECK-ERROR: error: lane number incompatible with layout
3010 // CHECK-ERROR:        fmla v3.4s, v8.4s, v2.s[4]
3011 // CHECK-ERROR:                                ^
3012 // CHECK-ERROR: error: lane number incompatible with layout
3013 // CHECK-ERROR:        fmla v3.4s, v8.4s, v22.s[4]
3014 // CHECK-ERROR:                                 ^
3015 // CHECK-ERROR: error: lane number incompatible with layout
3016 // CHECK-ERROR:        fmla v0.2d, v1.2d, v2.d[2]
3017 // CHECK-ERROR:                                ^
3018 // CHECK-ERROR: error: lane number incompatible with layout
3019 // CHECK-ERROR:        fmla v0.2d, v1.2d, v22.d[2]
3020 // CHECK-ERROR:                                 ^
3021
3022       fmls v0.4h, v1.4h, v2.h[2]
3023       fmls v0.8h, v1.8h, v2.h[2]
3024       fmls v0.2s, v1.2s, v2.s[4]
3025       fmls v0.2s, v1.2s, v22.s[4]
3026       fmls v3.4s, v8.4s, v2.s[4]
3027       fmls v3.4s, v8.4s, v22.s[4]
3028       fmls v0.2d, v1.2d, v2.d[2]
3029       fmls v0.2d, v1.2d, v22.d[2]
3030
3031 // CHECK-ERROR: error: invalid operand for instruction
3032 // CHECK-ERROR:        fmls v0.4h, v1.4h, v2.h[2]
3033 // CHECK-ERROR:                ^
3034 // CHECK-ERROR: error: invalid operand for instruction
3035 // CHECK-ERROR:        fmls v0.8h, v1.8h, v2.h[2]
3036 // CHECK-ERROR:                ^
3037 // CHECK-ERROR: error: lane number incompatible with layout
3038 // CHECK-ERROR:        fmls v0.2s, v1.2s, v2.s[4]
3039 // CHECK-ERROR:                                ^
3040 // CHECK-ERROR: error: lane number incompatible with layout
3041 // CHECK-ERROR:        fmls v0.2s, v1.2s, v22.s[4]
3042 // CHECK-ERROR:                                 ^
3043 // CHECK-ERROR: error: lane number incompatible with layout
3044 // CHECK-ERROR:        fmls v3.4s, v8.4s, v2.s[4]
3045 // CHECK-ERROR:                                ^
3046 // CHECK-ERROR: error: lane number incompatible with layout
3047 // CHECK-ERROR:        fmls v3.4s, v8.4s, v22.s[4]
3048 // CHECK-ERROR:                                 ^
3049 // CHECK-ERROR: error: lane number incompatible with layout
3050 // CHECK-ERROR:        fmls v0.2d, v1.2d, v2.d[2]
3051 // CHECK-ERROR:                                ^
3052 // CHECK-ERROR: error: lane number incompatible with layout
3053 // CHECK-ERROR:        fmls v0.2d, v1.2d, v22.d[2]
3054 // CHECK-ERROR:                                 ^
3055
3056       smlal v0.4h, v1.4h, v2.h[2]
3057       smlal v0.4s, v1.4h, v2.h[8]
3058       smlal v0.4s, v1.4h, v16.h[2]
3059       smlal v0.2s, v1.2s, v2.s[4]
3060       smlal v0.2d, v1.2s, v2.s[4]
3061       smlal v0.2d, v1.2s, v22.s[4]
3062       smlal2 v0.4h, v1.8h, v1.h[2]
3063       smlal2 v0.4s, v1.8h, v1.h[8]
3064       smlal2 v0.4s, v1.8h, v16.h[2]
3065       smlal2 v0.2s, v1.4s, v1.s[2]
3066       smlal2 v0.2d, v1.4s, v1.s[4]
3067       smlal2 v0.2d, v1.4s, v22.s[4]
3068
3069 // CHECK-ERROR: error: invalid operand for instruction
3070 // CHECK-ERROR:        smlal v0.4h, v1.4h, v2.h[2]
3071 // CHECK-ERROR:              ^
3072 // CHECK-ERROR: error: lane number incompatible with layout
3073 // CHECK-ERROR:        smlal v0.4s, v1.4h, v2.h[8]
3074 // CHECK-ERROR:                                 ^
3075 // CHECK-ERROR: error: invalid operand for instruction
3076 // CHECK-ERROR:        smlal v0.4s, v1.4h, v16.h[2]
3077 // CHECK-ERROR:                            ^
3078 // CHECK-ERROR: error: lane number incompatible with layout
3079 // CHECK-ERROR:        smlal v0.2s, v1.2s, v2.s[4]
3080 // CHECK-ERROR:                                 ^
3081 // CHECK-ERROR: error: lane number incompatible with layout
3082 // CHECK-ERROR:        smlal v0.2d, v1.2s, v2.s[4]
3083 // CHECK-ERROR:                                 ^
3084 // CHECK-ERROR: error: lane number incompatible with layout
3085 // CHECK-ERROR:        smlal v0.2d, v1.2s, v22.s[4]
3086 // CHECK-ERROR:                                  ^
3087 // CHECK-ERROR: error: invalid operand for instruction
3088 // CHECK-ERROR:        smlal2 v0.4h, v1.8h, v1.h[2]
3089 // CHECK-ERROR:               ^
3090 // CHECK-ERROR: error: lane number incompatible with layout
3091 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v1.h[8]
3092 // CHECK-ERROR:                                  ^
3093 // CHECK-ERROR: error: invalid operand for instruction
3094 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v16.h[2]
3095 // CHECK-ERROR:                                 ^
3096 // CHECK-ERROR: error: invalid operand for instruction
3097 // CHECK-ERROR:        smlal2 v0.2s, v1.4s, v1.s[2]
3098 // CHECK-ERROR:               ^
3099 // CHECK-ERROR: error: lane number incompatible with layout
3100 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v1.s[4]
3101 // CHECK-ERROR:                                  ^
3102 // CHECK-ERROR: error: lane number incompatible with layout
3103 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v22.s[4]
3104 // CHECK-ERROR:                                   ^
3105
3106       smlsl v0.4h, v1.4h, v2.h[2]
3107       smlsl v0.4s, v1.4h, v2.h[8]
3108       smlsl v0.4s, v1.4h, v16.h[2]
3109       smlsl v0.2s, v1.2s, v2.s[4]
3110       smlsl v0.2d, v1.2s, v2.s[4]
3111       smlsl v0.2d, v1.2s, v22.s[4]
3112       smlsl2 v0.4h, v1.8h, v1.h[2]
3113       smlsl2 v0.4s, v1.8h, v1.h[8]
3114       smlsl2 v0.4s, v1.8h, v16.h[2]
3115       smlsl2 v0.2s, v1.4s, v1.s[2]
3116       smlsl2 v0.2d, v1.4s, v1.s[4]
3117       smlsl2 v0.2d, v1.4s, v22.s[4]
3118
3119 // CHECK-ERROR: error: invalid operand for instruction
3120 // CHECK-ERROR:        smlsl v0.4h, v1.4h, v2.h[2]
3121 // CHECK-ERROR:              ^
3122 // CHECK-ERROR: error: lane number incompatible with layout
3123 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v2.h[8]
3124 // CHECK-ERROR:                                 ^
3125 // CHECK-ERROR: error: invalid operand for instruction
3126 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v16.h[2]
3127 // CHECK-ERROR:                            ^
3128 // CHECK-ERROR: error: lane number incompatible with layout
3129 // CHECK-ERROR:        smlsl v0.2s, v1.2s, v2.s[4]
3130 // CHECK-ERROR:                                 ^
3131 // CHECK-ERROR: error: lane number incompatible with layout
3132 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v2.s[4]
3133 // CHECK-ERROR:                                 ^
3134 // CHECK-ERROR: error: lane number incompatible with layout
3135 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v22.s[4]
3136 // CHECK-ERROR:                                  ^
3137 // CHECK-ERROR: error: invalid operand for instruction
3138 // CHECK-ERROR:        smlsl2 v0.4h, v1.8h, v1.h[2]
3139 // CHECK-ERROR:               ^
3140 // CHECK-ERROR: error: lane number incompatible with layout
3141 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v1.h[8]
3142 // CHECK-ERROR:                                  ^
3143 // CHECK-ERROR: error: invalid operand for instruction
3144 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v16.h[2]
3145 // CHECK-ERROR:                                 ^
3146 // CHECK-ERROR: error: invalid operand for instruction
3147 // CHECK-ERROR:        smlsl2 v0.2s, v1.4s, v1.s[2]
3148 // CHECK-ERROR:               ^
3149 // CHECK-ERROR: error: lane number incompatible with layout
3150 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v1.s[4]
3151 // CHECK-ERROR:                                  ^
3152 // CHECK-ERROR: error: lane number incompatible with layout
3153 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v22.s[4]
3154 // CHECK-ERROR:                                   ^
3155
3156       umlal v0.4h, v1.4h, v2.h[2]
3157       umlal v0.4s, v1.4h, v2.h[8]
3158       umlal v0.4s, v1.4h, v16.h[2]
3159       umlal v0.2s, v1.2s, v2.s[4]
3160       umlal v0.2d, v1.2s, v2.s[4]
3161       umlal v0.2d, v1.2s, v22.s[4]
3162       umlal2 v0.4h, v1.8h, v1.h[2]
3163       umlal2 v0.4s, v1.8h, v1.h[8]
3164       umlal2 v0.4s, v1.8h, v16.h[2]
3165       umlal2 v0.2s, v1.4s, v1.s[2]
3166       umlal2 v0.2d, v1.4s, v1.s[4]
3167       umlal2 v0.2d, v1.4s, v22.s[4]
3168
3169 // CHECK-ERROR: error: invalid operand for instruction
3170 // CHECK-ERROR:        umlal v0.4h, v1.4h, v2.h[2]
3171 // CHECK-ERROR:              ^
3172 // CHECK-ERROR: error: lane number incompatible with layout
3173 // CHECK-ERROR:        umlal v0.4s, v1.4h, v2.h[8]
3174 // CHECK-ERROR:                                 ^
3175 // CHECK-ERROR: error: invalid operand for instruction
3176 // CHECK-ERROR:        umlal v0.4s, v1.4h, v16.h[2]
3177 // CHECK-ERROR:                            ^
3178 // CHECK-ERROR: error: lane number incompatible with layout
3179 // CHECK-ERROR:        umlal v0.2s, v1.2s, v2.s[4]
3180 // CHECK-ERROR:                                 ^
3181 // CHECK-ERROR: error: lane number incompatible with layout
3182 // CHECK-ERROR:        umlal v0.2d, v1.2s, v2.s[4]
3183 // CHECK-ERROR:                                 ^
3184 // CHECK-ERROR: error: lane number incompatible with layout
3185 // CHECK-ERROR:        umlal v0.2d, v1.2s, v22.s[4]
3186 // CHECK-ERROR:                                  ^
3187 // CHECK-ERROR: error: invalid operand for instruction
3188 // CHECK-ERROR:        umlal2 v0.4h, v1.8h, v1.h[2]
3189 // CHECK-ERROR:               ^
3190 // CHECK-ERROR: error: lane number incompatible with layout
3191 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v1.h[8]
3192 // CHECK-ERROR:                                  ^
3193 // CHECK-ERROR: error: invalid operand for instruction
3194 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v16.h[2]
3195 // CHECK-ERROR:                                 ^
3196 // CHECK-ERROR: error: invalid operand for instruction
3197 // CHECK-ERROR:        umlal2 v0.2s, v1.4s, v1.s[2]
3198 // CHECK-ERROR:               ^
3199 // CHECK-ERROR: error: lane number incompatible with layout
3200 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v1.s[4]
3201 // CHECK-ERROR:                                  ^
3202 // CHECK-ERROR: error: lane number incompatible with layout
3203 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v22.s[4]
3204 // CHECK-ERROR:                                   ^
3205
3206       umlsl v0.4h, v1.4h, v2.h[2]
3207       umlsl v0.4s, v1.4h, v2.h[8]
3208       umlsl v0.4s, v1.4h, v16.h[2]
3209       umlsl v0.2s, v1.2s, v2.s[4]
3210       umlsl v0.2d, v1.2s, v2.s[4]
3211       umlsl v0.2d, v1.2s, v22.s[4]
3212       umlsl2 v0.4h, v1.8h, v1.h[2]
3213       umlsl2 v0.4s, v1.8h, v1.h[8]
3214       umlsl2 v0.4s, v1.8h, v16.h[2]
3215       umlsl2 v0.2s, v1.4s, v1.s[2]
3216       umlsl2 v0.2d, v1.4s, v1.s[4]
3217       umlsl2 v0.2d, v1.4s, v22.s[4]
3218
3219 // CHECK-ERROR: error: invalid operand for instruction
3220 // CHECK-ERROR:        umlsl v0.4h, v1.4h, v2.h[2]
3221 // CHECK-ERROR:              ^
3222 // CHECK-ERROR: error: lane number incompatible with layout
3223 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v2.h[8]
3224 // CHECK-ERROR:                                 ^
3225 // CHECK-ERROR: error: invalid operand for instruction
3226 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v16.h[2]
3227 // CHECK-ERROR:                            ^
3228 // CHECK-ERROR: error: lane number incompatible with layout
3229 // CHECK-ERROR:        umlsl v0.2s, v1.2s, v2.s[4]
3230 // CHECK-ERROR:                                 ^
3231 // CHECK-ERROR: error: lane number incompatible with layout
3232 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v2.s[4]
3233 // CHECK-ERROR:                                 ^
3234 // CHECK-ERROR: error: lane number incompatible with layout
3235 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v22.s[4]
3236 // CHECK-ERROR:                                  ^
3237 // CHECK-ERROR: error: invalid operand for instruction
3238 // CHECK-ERROR:        umlsl2 v0.4h, v1.8h, v1.h[2]
3239 // CHECK-ERROR:               ^
3240 // CHECK-ERROR: error: lane number incompatible with layout
3241 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v1.h[8]
3242 // CHECK-ERROR:                                  ^
3243 // CHECK-ERROR: error: invalid operand for instruction
3244 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v16.h[2]
3245 // CHECK-ERROR:                                 ^
3246 // CHECK-ERROR: error: invalid operand for instruction
3247 // CHECK-ERROR:        umlsl2 v0.2s, v1.4s, v1.s[2]
3248 // CHECK-ERROR:               ^
3249 // CHECK-ERROR: error: lane number incompatible with layout
3250 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v1.s[4]
3251 // CHECK-ERROR:                                  ^
3252 // CHECK-ERROR: error: lane number incompatible with layout
3253 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v22.s[4]
3254 // CHECK-ERROR:                                   ^
3255
3256       sqdmlal v0.4h, v1.4h, v2.h[2]
3257       sqdmlal v0.4s, v1.4h, v2.h[8]
3258       sqdmlal v0.4s, v1.4h, v16.h[2]
3259       sqdmlal v0.2s, v1.2s, v2.s[4]
3260       sqdmlal v0.2d, v1.2s, v2.s[4]
3261       sqdmlal v0.2d, v1.2s, v22.s[4]
3262       sqdmlal2 v0.4h, v1.8h, v1.h[2]
3263       sqdmlal2 v0.4s, v1.8h, v1.h[8]
3264       sqdmlal2 v0.4s, v1.8h, v16.h[2]
3265       sqdmlal2 v0.2s, v1.4s, v1.s[2]
3266       sqdmlal2 v0.2d, v1.4s, v1.s[4]
3267       sqdmlal2 v0.2d, v1.4s, v22.s[4]
3268
3269 // CHECK-ERROR: error: invalid operand for instruction
3270 // CHECK-ERROR:        sqdmlal v0.4h, v1.4h, v2.h[2]
3271 // CHECK-ERROR:                ^
3272 // CHECK-ERROR: error: lane number incompatible with layout
3273 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v2.h[8]
3274 // CHECK-ERROR:                                   ^
3275 // CHECK-ERROR: error: invalid operand for instruction
3276 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v16.h[2]
3277 // CHECK-ERROR:                              ^
3278 // CHECK-ERROR: error: lane number incompatible with layout
3279 // CHECK-ERROR:        sqdmlal v0.2s, v1.2s, v2.s[4]
3280 // CHECK-ERROR:                                   ^
3281 // CHECK-ERROR: error: lane number incompatible with layout
3282 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v2.s[4]
3283 // CHECK-ERROR:                                   ^
3284 // CHECK-ERROR: error: lane number incompatible with layout
3285 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v22.s[4]
3286 // CHECK-ERROR:                                    ^
3287 // CHECK-ERROR: error: invalid operand for instruction
3288 // CHECK-ERROR:        sqdmlal2 v0.4h, v1.8h, v1.h[2]
3289 // CHECK-ERROR:                 ^
3290 // CHECK-ERROR: error: lane number incompatible with layout
3291 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v1.h[8]
3292 // CHECK-ERROR:                                    ^
3293 // CHECK-ERROR: error: invalid operand for instruction
3294 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v16.h[2]
3295 // CHECK-ERROR:                                   ^
3296 // CHECK-ERROR: error: invalid operand for instruction
3297 // CHECK-ERROR:        sqdmlal2 v0.2s, v1.4s, v1.s[2]
3298 // CHECK-ERROR:                 ^
3299 // CHECK-ERROR: error: lane number incompatible with layout
3300 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v1.s[4]
3301 // CHECK-ERROR:                                    ^
3302 // CHECK-ERROR: error: lane number incompatible with layout
3303 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v22.s[4]
3304 // CHECK-ERROR:                                     ^
3305
3306       sqdmlsl v0.4h, v1.4h, v2.h[2]
3307       sqdmlsl v0.4s, v1.4h, v2.h[8]
3308       sqdmlsl v0.4s, v1.4h, v16.h[2]
3309       sqdmlsl v0.2s, v1.2s, v2.s[4]
3310       sqdmlsl v0.2d, v1.2s, v2.s[4]
3311       sqdmlsl v0.2d, v1.2s, v22.s[4]
3312       sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3313       sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3314       sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3315       sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3316       sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3317       sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3318
3319 // CHECK-ERROR: error: invalid operand for instruction
3320 // CHECK-ERROR:        sqdmlsl v0.4h, v1.4h, v2.h[2]
3321 // CHECK-ERROR:                ^
3322 // CHECK-ERROR: error: lane number incompatible with layout
3323 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v2.h[8]
3324 // CHECK-ERROR:                                   ^
3325 // CHECK-ERROR: error: invalid operand for instruction
3326 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v16.h[2]
3327 // CHECK-ERROR:                              ^
3328 // CHECK-ERROR: error: lane number incompatible with layout
3329 // CHECK-ERROR:        sqdmlsl v0.2s, v1.2s, v2.s[4]
3330 // CHECK-ERROR:                                   ^
3331 // CHECK-ERROR: error: lane number incompatible with layout
3332 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v2.s[4]
3333 // CHECK-ERROR:                                   ^
3334 // CHECK-ERROR: error: lane number incompatible with layout
3335 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v22.s[4]
3336 // CHECK-ERROR:                                    ^
3337 // CHECK-ERROR: error: invalid operand for instruction
3338 // CHECK-ERROR:        sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3339 // CHECK-ERROR:                 ^
3340 // CHECK-ERROR: error: lane number incompatible with layout
3341 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3342 // CHECK-ERROR:                                    ^
3343 // CHECK-ERROR: error: invalid operand for instruction
3344 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3345 // CHECK-ERROR:                                   ^
3346 // CHECK-ERROR: error: invalid operand for instruction
3347 // CHECK-ERROR:        sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3348 // CHECK-ERROR:                 ^
3349 // CHECK-ERROR: error: lane number incompatible with layout
3350 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3351 // CHECK-ERROR:                                    ^
3352 // CHECK-ERROR: error: lane number incompatible with layout
3353 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3354 // CHECK-ERROR:                                     ^
3355
3356       mul v0.4h, v1.4h, v2.h[8]
3357       mul v0.4h, v1.4h, v16.h[8]
3358       mul v0.8h, v1.8h, v2.h[8]
3359       mul v0.8h, v1.8h, v16.h[8]
3360       mul v0.2s, v1.2s, v2.s[4]
3361       mul v0.2s, v1.2s, v22.s[4]
3362       mul v0.4s, v1.4s, v2.s[4]
3363       mul v0.4s, v1.4s, v22.s[4]
3364       mul v0.2d, v1.2d, v2.d[1]
3365
3366 // CHECK-ERROR: error: lane number incompatible with layout
3367 // CHECK-ERROR:        mul v0.4h, v1.4h, v2.h[8]
3368 // CHECK-ERROR:                               ^
3369 // CHECK-ERROR: error: lane number incompatible with layout
3370 // CHECK-ERROR:        mul v0.4h, v1.4h, v16.h[8]
3371 // CHECK-ERROR:                                ^
3372 // CHECK-ERROR: error: lane number incompatible with layout
3373 // CHECK-ERROR:        mul v0.8h, v1.8h, v2.h[8]
3374 // CHECK-ERROR:                               ^
3375 // CHECK-ERROR: error: lane number incompatible with layout
3376 // CHECK-ERROR:        mul v0.8h, v1.8h, v16.h[8]
3377 // CHECK-ERROR:                                ^
3378 // CHECK-ERROR: error: lane number incompatible with layout
3379 // CHECK-ERROR:        mul v0.2s, v1.2s, v2.s[4]
3380 // CHECK-ERROR:                               ^
3381 // CHECK-ERROR: error: lane number incompatible with layout
3382 // CHECK-ERROR:        mul v0.2s, v1.2s, v22.s[4]
3383 // CHECK-ERROR:                                ^
3384 // CHECK-ERROR: error: lane number incompatible with layout
3385 // CHECK-ERROR:        mul v0.4s, v1.4s, v2.s[4]
3386 // CHECK-ERROR:                               ^
3387 // CHECK-ERROR: error: lane number incompatible with layout
3388 // CHECK-ERROR:        mul v0.4s, v1.4s, v22.s[4]
3389 // CHECK-ERROR:                                ^
3390
3391       fmul v0.4h, v1.4h, v2.h[4]
3392       fmul v0.2s, v1.2s, v2.s[4]
3393       fmul v0.2s, v1.2s, v22.s[4]
3394       fmul v0.4s, v1.4s, v2.s[4]
3395       fmul v0.4s, v1.4s, v22.s[4]
3396       fmul v0.2d, v1.2d, v2.d[2]
3397       fmul v0.2d, v1.2d, v22.d[2]
3398
3399 // CHECK-ERROR: error: invalid operand for instruction
3400 // CHECK-ERROR:        mul v0.2d, v1.2d, v2.d[1]
3401 // CHECK-ERROR:               ^
3402 // CHECK-ERROR: error: invalid operand for instruction
3403 // CHECK-ERROR:        fmul v0.4h, v1.4h, v2.h[4]
3404 // CHECK-ERROR:                ^
3405 // CHECK-ERROR: error: lane number incompatible with layout
3406 // CHECK-ERROR:        fmul v0.2s, v1.2s, v2.s[4]
3407 // CHECK-ERROR:                                ^
3408 // CHECK-ERROR: error: lane number incompatible with layout
3409 // CHECK-ERROR:        fmul v0.2s, v1.2s, v22.s[4]
3410 // CHECK-ERROR:                                 ^
3411 // CHECK-ERROR: error: lane number incompatible with layout
3412 // CHECK-ERROR:        fmul v0.4s, v1.4s, v2.s[4]
3413 // CHECK-ERROR:                                ^
3414 // CHECK-ERROR: error: lane number incompatible with layout
3415 // CHECK-ERROR:        fmul v0.4s, v1.4s, v22.s[4]
3416 // CHECK-ERROR:                                 ^
3417 // CHECK-ERROR: error: lane number incompatible with layout
3418 // CHECK-ERROR:        fmul v0.2d, v1.2d, v2.d[2]
3419 // CHECK-ERROR:                                ^
3420 // CHECK-ERROR: error: lane number incompatible with layout
3421 // CHECK-ERROR:        fmul v0.2d, v1.2d, v22.d[2]
3422 // CHECK-ERROR:                                 ^
3423
3424       fmulx v0.4h, v1.4h, v2.h[4]
3425       fmulx v0.2s, v1.2s, v2.s[4]
3426       fmulx v0.2s, v1.2s, v22.s[4]
3427       fmulx v0.4s, v1.4s, v2.s[4]
3428       fmulx v0.4s, v1.4s, v22.s[4]
3429       fmulx v0.2d, v1.2d, v2.d[2]
3430       fmulx v0.2d, v1.2d, v22.d[2]
3431
3432 // CHECK-ERROR: error: invalid operand for instruction
3433 // CHECK-ERROR:        fmulx v0.4h, v1.4h, v2.h[4]
3434 // CHECK-ERROR:                 ^
3435 // CHECK-ERROR: error: lane number incompatible with layout
3436 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v2.s[4]
3437 // CHECK-ERROR:                                 ^
3438 // CHECK-ERROR: error: lane number incompatible with layout
3439 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v22.s[4]
3440 // CHECK-ERROR:                                  ^
3441 // CHECK-ERROR: error: lane number incompatible with layout
3442 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v2.s[4]
3443 // CHECK-ERROR:                                 ^
3444 // CHECK-ERROR: error: lane number incompatible with layout
3445 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v22.s[4]
3446 // CHECK-ERROR:                                  ^
3447 // CHECK-ERROR: error: lane number incompatible with layout
3448 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v2.d[2]
3449 // CHECK-ERROR:                                 ^
3450 // CHECK-ERROR: error: lane number incompatible with layout
3451 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v22.d[2]
3452 // CHECK-ERROR:                                  ^
3453
3454       smull v0.4h, v1.4h, v2.h[2]
3455       smull v0.4s, v1.4h, v2.h[8]
3456       smull v0.4s, v1.4h, v16.h[4]
3457       smull v0.2s, v1.2s, v2.s[2]
3458       smull v0.2d, v1.2s, v2.s[4]
3459       smull v0.2d, v1.2s, v22.s[4]
3460       smull2 v0.4h, v1.8h, v2.h[2]
3461       smull2 v0.4s, v1.8h, v2.h[8]
3462       smull2 v0.4s, v1.8h, v16.h[4]
3463       smull2 v0.2s, v1.4s, v2.s[2]
3464       smull2 v0.2d, v1.4s, v2.s[4]
3465       smull2 v0.2d, v1.4s, v22.s[4]
3466
3467 // CHECK-ERROR: error: invalid operand for instruction
3468 // CHECK-ERROR:        smull v0.4h, v1.4h, v2.h[2]
3469 // CHECK-ERROR:              ^
3470 // CHECK-ERROR: error: lane number incompatible with layout
3471 // CHECK-ERROR:        smull v0.4s, v1.4h, v2.h[8]
3472 // CHECK-ERROR:                                 ^
3473 // CHECK-ERROR: error: invalid operand for instruction
3474 // CHECK-ERROR:        smull v0.4s, v1.4h, v16.h[4]
3475 // CHECK-ERROR:                            ^
3476 // CHECK-ERROR: error: invalid operand for instruction
3477 // CHECK-ERROR:        smull v0.2s, v1.2s, v2.s[2]
3478 // CHECK-ERROR:              ^
3479 // CHECK-ERROR: error: lane number incompatible with layout
3480 // CHECK-ERROR:        smull v0.2d, v1.2s, v2.s[4]
3481 // CHECK-ERROR:                                 ^
3482 // CHECK-ERROR: error: lane number incompatible with layout
3483 // CHECK-ERROR:        smull v0.2d, v1.2s, v22.s[4]
3484 // CHECK-ERROR:                                  ^
3485 // CHECK-ERROR: error: invalid operand for instruction
3486 // CHECK-ERROR:        smull2 v0.4h, v1.8h, v2.h[2]
3487 // CHECK-ERROR:               ^
3488 // CHECK-ERROR: error: lane number incompatible with layout
3489 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v2.h[8]
3490 // CHECK-ERROR:                                  ^
3491 // CHECK-ERROR: error: invalid operand for instruction
3492 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v16.h[4]
3493 // CHECK-ERROR:                                 ^
3494 // CHECK-ERROR: error: invalid operand for instruction
3495 // CHECK-ERROR:        smull2 v0.2s, v1.4s, v2.s[2]
3496 // CHECK-ERROR:               ^
3497 // CHECK-ERROR: error: lane number incompatible with layout
3498 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v2.s[4]
3499 // CHECK-ERROR:                                  ^
3500 // CHECK-ERROR: error: lane number incompatible with layout
3501 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v22.s[4]
3502 // CHECK-ERROR:                                   ^
3503
3504       umull v0.4h, v1.4h, v2.h[2]
3505       umull v0.4s, v1.4h, v2.h[8]
3506       umull v0.4s, v1.4h, v16.h[4]
3507       umull v0.2s, v1.2s, v2.s[2]
3508       umull v0.2d, v1.2s, v2.s[4]
3509       umull v0.2d, v1.2s, v22.s[4]
3510       umull2 v0.4h, v1.8h, v2.h[2]
3511       umull2 v0.4s, v1.8h, v2.h[8]
3512       umull2 v0.4s, v1.8h, v16.h[4]
3513       umull2 v0.2s, v1.4s, v2.s[2]
3514       umull2 v0.2d, v1.4s, v2.s[4]
3515       umull2 v0.2d, v1.4s, v22.s[4]
3516
3517 // CHECK-ERROR: error: invalid operand for instruction
3518 // CHECK-ERROR:        umull v0.4h, v1.4h, v2.h[2]
3519 // CHECK-ERROR:              ^
3520 // CHECK-ERROR: error: lane number incompatible with layout
3521 // CHECK-ERROR:        umull v0.4s, v1.4h, v2.h[8]
3522 // CHECK-ERROR:                                 ^
3523 // CHECK-ERROR: error: invalid operand for instruction
3524 // CHECK-ERROR:        umull v0.4s, v1.4h, v16.h[4]
3525 // CHECK-ERROR:                            ^
3526 // CHECK-ERROR: error: invalid operand for instruction
3527 // CHECK-ERROR:        umull v0.2s, v1.2s, v2.s[2]
3528 // CHECK-ERROR:              ^
3529 // CHECK-ERROR: error: lane number incompatible with layout
3530 // CHECK-ERROR:        umull v0.2d, v1.2s, v2.s[4]
3531 // CHECK-ERROR:                                 ^
3532 // CHECK-ERROR: error: lane number incompatible with layout
3533 // CHECK-ERROR:        umull v0.2d, v1.2s, v22.s[4]
3534 // CHECK-ERROR:                                  ^
3535 // CHECK-ERROR: error: invalid operand for instruction
3536 // CHECK-ERROR:        umull2 v0.4h, v1.8h, v2.h[2]
3537 // CHECK-ERROR:               ^
3538 // CHECK-ERROR: error: lane number incompatible with layout
3539 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v2.h[8]
3540 // CHECK-ERROR:                                  ^
3541 // CHECK-ERROR: error: invalid operand for instruction
3542 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v16.h[4]
3543 // CHECK-ERROR:                                 ^
3544 // CHECK-ERROR: error: invalid operand for instruction
3545 // CHECK-ERROR:        umull2 v0.2s, v1.4s, v2.s[2]
3546 // CHECK-ERROR:               ^
3547 // CHECK-ERROR: error: lane number incompatible with layout
3548 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v2.s[4]
3549 // CHECK-ERROR:                                  ^
3550 // CHECK-ERROR: error: lane number incompatible with layout
3551 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v22.s[4]
3552 // CHECK-ERROR:                                   ^
3553
3554       sqdmull v0.4h, v1.4h, v2.h[2]
3555       sqdmull v0.4s, v1.4h, v2.h[8]
3556       sqdmull v0.4s, v1.4h, v16.h[4]
3557       sqdmull v0.2s, v1.2s, v2.s[2]
3558       sqdmull v0.2d, v1.2s, v2.s[4]
3559       sqdmull v0.2d, v1.2s, v22.s[4]
3560       sqdmull2 v0.4h, v1.8h, v2.h[2]
3561       sqdmull2 v0.4s, v1.8h, v2.h[8]
3562       sqdmull2 v0.4s, v1.8h, v16.h[4]
3563       sqdmull2 v0.2s, v1.4s, v2.s[2]
3564       sqdmull2 v0.2d, v1.4s, v2.s[4]
3565       sqdmull2 v0.2d, v1.4s, v22.s[4]
3566
3567 // CHECK-ERROR: error: invalid operand for instruction
3568 // CHECK-ERROR:        sqdmull v0.4h, v1.4h, v2.h[2]
3569 // CHECK-ERROR:                ^
3570 // CHECK-ERROR: error: lane number incompatible with layout
3571 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v2.h[8]
3572 // CHECK-ERROR:                                   ^
3573 // CHECK-ERROR: error: invalid operand for instruction
3574 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v16.h[4]
3575 // CHECK-ERROR:                              ^
3576 // CHECK-ERROR: error: invalid operand for instruction
3577 // CHECK-ERROR:        sqdmull v0.2s, v1.2s, v2.s[2]
3578 // CHECK-ERROR:                ^
3579 // CHECK-ERROR: error: lane number incompatible with layout
3580 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v2.s[4]
3581 // CHECK-ERROR:                                   ^
3582 // CHECK-ERROR: error: lane number incompatible with layout
3583 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v22.s[4]
3584 // CHECK-ERROR:                                    ^
3585 // CHECK-ERROR: error: invalid operand for instruction
3586 // CHECK-ERROR:        sqdmull2 v0.4h, v1.8h, v2.h[2]
3587 // CHECK-ERROR:                 ^
3588 // CHECK-ERROR: error: lane number incompatible with layout
3589 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v2.h[8]
3590 // CHECK-ERROR:                                    ^
3591 // CHECK-ERROR: error: invalid operand for instruction
3592 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v16.h[4]
3593 // CHECK-ERROR:                                   ^
3594 // CHECK-ERROR: error: invalid operand for instruction
3595 // CHECK-ERROR:        sqdmull2 v0.2s, v1.4s, v2.s[2]
3596 // CHECK-ERROR:                 ^
3597 // CHECK-ERROR: error: lane number incompatible with layout
3598 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v2.s[4]
3599 // CHECK-ERROR:                                    ^
3600 // CHECK-ERROR: error: lane number incompatible with layout
3601 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v22.s[4]
3602 // CHECK-ERROR:                                     ^
3603
3604       sqdmulh v0.4h, v1.4h, v2.h[8]
3605       sqdmulh v0.4h, v1.4h, v16.h[2]
3606       sqdmulh v0.8h, v1.8h, v2.h[8]
3607       sqdmulh v0.8h, v1.8h, v16.h[2]
3608       sqdmulh v0.2s, v1.2s, v2.s[4]
3609       sqdmulh v0.2s, v1.2s, v22.s[4]
3610       sqdmulh v0.4s, v1.4s, v2.s[4]
3611       sqdmulh v0.4s, v1.4s, v22.s[4]
3612       sqdmulh v0.2d, v1.2d, v22.d[1]
3613
3614 // CHECK-ERROR: error: lane number incompatible with layout
3615 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v2.h[8]
3616 // CHECK-ERROR:                                   ^
3617 // CHECK-ERROR: error: invalid operand for instruction
3618 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v16.h[2]
3619 // CHECK-ERROR:                              ^
3620 // CHECK-ERROR: error: lane number incompatible with layout
3621 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v2.h[8]
3622 // CHECK-ERROR:                                   ^
3623 // CHECK-ERROR: error: invalid operand for instruction
3624 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v16.h[2]
3625 // CHECK-ERROR:                                  ^
3626 // CHECK-ERROR: error: lane number incompatible with layout
3627 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v2.s[4]
3628 // CHECK-ERROR:                                   ^
3629 // CHECK-ERROR: error: lane number incompatible with layout
3630 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v22.s[4]
3631 // CHECK-ERROR:                                    ^
3632 // CHECK-ERROR: error: lane number incompatible with layout
3633 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v2.s[4]
3634 // CHECK-ERROR:                                   ^
3635 // CHECK-ERROR: error: lane number incompatible with layout
3636 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v22.s[4]
3637 // CHECK-ERROR:                                    ^
3638 // CHECK-ERROR: error: invalid operand for instruction
3639 // CHECK-ERROR:        sqdmulh v0.2d, v1.2d, v22.d[1]
3640 // CHECK-ERROR:                   ^
3641
3642       sqrdmulh v0.4h, v1.4h, v2.h[8]
3643       sqrdmulh v0.4h, v1.4h, v16.h[2]
3644       sqrdmulh v0.8h, v1.8h, v2.h[8]
3645       sqrdmulh v0.8h, v1.8h, v16.h[2]
3646       sqrdmulh v0.2s, v1.2s, v2.s[4]
3647       sqrdmulh v0.2s, v1.2s, v22.s[4]
3648       sqrdmulh v0.4s, v1.4s, v2.s[4]
3649       sqrdmulh v0.4s, v1.4s, v22.s[4]
3650       sqrdmulh v0.2d, v1.2d, v22.d[1]
3651
3652 // CHECK-ERROR: error: lane number incompatible with layout
3653 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v2.h[8]
3654 // CHECK-ERROR:                                    ^
3655 // CHECK-ERROR: error: invalid operand for instruction
3656 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v16.h[2]
3657 // CHECK-ERROR:                               ^
3658 // CHECK-ERROR: error: lane number incompatible with layout
3659 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v2.h[8]
3660 // CHECK-ERROR:                                    ^
3661 // CHECK-ERROR: error: invalid operand for instruction
3662 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v16.h[2]
3663 // CHECK-ERROR:                                   ^
3664 // CHECK-ERROR: error: lane number incompatible with layout
3665 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v2.s[4]
3666 // CHECK-ERROR:                                    ^
3667 // CHECK-ERROR: error: lane number incompatible with layout
3668 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v22.s[4]
3669 // CHECK-ERROR:                                     ^
3670 // CHECK-ERROR: error: lane number incompatible with layout
3671 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v2.s[4]
3672 // CHECK-ERROR:                                    ^
3673 // CHECK-ERROR: error: lane number incompatible with layout
3674 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v22.s[4]
3675 // CHECK-ERROR:                                     ^
3676 // CHECK-ERROR: error: invalid operand for instruction
3677 // CHECK-ERROR:        sqrdmulh v0.2d, v1.2d, v22.d[1]
3678 // CHECK-ERROR:                    ^
3679
3680 //----------------------------------------------------------------------
3681 // Across vectors
3682 //----------------------------------------------------------------------
3683
3684         saddlv b0, v1.8b
3685         saddlv b0, v1.16b
3686         saddlv h0, v1.4h
3687         saddlv h0, v1.8h
3688         saddlv s0, v1.2s
3689         saddlv s0, v1.4s
3690         saddlv d0, v1.2s
3691
3692 // CHECK-ERROR: error: invalid operand for instruction
3693 // CHECK-ERROR:        saddlv b0, v1.8b
3694 // CHECK-ERROR:               ^
3695 // CHECK-ERROR: error: invalid operand for instruction
3696 // CHECK-ERROR:        saddlv b0, v1.16b
3697 // CHECK-ERROR:               ^
3698 // CHECK-ERROR: error: invalid operand for instruction
3699 // CHECK-ERROR:        saddlv h0, v1.4h
3700 // CHECK-ERROR:                      ^
3701 // CHECK-ERROR: error: invalid operand for instruction
3702 // CHECK-ERROR:        saddlv h0, v1.8h
3703 // CHECK-ERROR:                      ^
3704 // CHECK-ERROR: error: invalid operand for instruction
3705 // CHECK-ERROR:        saddlv s0, v1.2s
3706 // CHECK-ERROR:                      ^
3707 // CHECK-ERROR: error: invalid operand for instruction
3708 // CHECK-ERROR:        saddlv s0, v1.4s
3709 // CHECK-ERROR:                      ^
3710 // CHECK-ERROR: error: invalid operand for instruction
3711 // CHECK-ERROR:        saddlv d0, v1.2s
3712 // CHECK-ERROR:                   ^
3713
3714         uaddlv b0, v1.8b
3715         uaddlv b0, v1.16b
3716         uaddlv h0, v1.4h
3717         uaddlv h0, v1.8h
3718         uaddlv s0, v1.2s
3719         uaddlv s0, v1.4s
3720         uaddlv d0, v1.2s
3721
3722 // CHECK-ERROR: error: invalid operand for instruction
3723 // CHECK-ERROR:        uaddlv b0, v1.8b
3724 // CHECK-ERROR:               ^
3725 // CHECK-ERROR: error: invalid operand for instruction
3726 // CHECK-ERROR:        uaddlv b0, v1.16b
3727 // CHECK-ERROR:               ^
3728 // CHECK-ERROR: error: invalid operand for instruction
3729 // CHECK-ERROR:        uaddlv h0, v1.4h
3730 // CHECK-ERROR:                      ^
3731 // CHECK-ERROR: error: invalid operand for instruction
3732 // CHECK-ERROR:        uaddlv h0, v1.8h
3733 // CHECK-ERROR:                      ^
3734 // CHECK-ERROR: error: invalid operand for instruction
3735 // CHECK-ERROR:        uaddlv s0, v1.2s
3736 // CHECK-ERROR:                      ^
3737 // CHECK-ERROR: error: invalid operand for instruction
3738 // CHECK-ERROR:        uaddlv s0, v1.4s
3739 // CHECK-ERROR:                      ^
3740 // CHECK-ERROR: error: invalid operand for instruction
3741 // CHECK-ERROR:        uaddlv d0, v1.2s
3742 // CHECK-ERROR:                   ^
3743
3744         smaxv s0, v1.2s
3745         sminv s0, v1.2s
3746         umaxv s0, v1.2s
3747         uminv s0, v1.2s
3748         addv s0, v1.2s
3749
3750 // CHECK-ERROR: error: invalid operand for instruction
3751 // CHECK-ERROR:        smaxv s0, v1.2s
3752 // CHECK-ERROR:                  ^
3753 // CHECK-ERROR: error: invalid operand for instruction
3754 // CHECK-ERROR:        sminv s0, v1.2s
3755 // CHECK-ERROR:                  ^
3756 // CHECK-ERROR: error: invalid operand for instruction
3757 // CHECK-ERROR:        umaxv s0, v1.2s
3758 // CHECK-ERROR:                  ^
3759 // CHECK-ERROR: error: invalid operand for instruction
3760 // CHECK-ERROR:        uminv s0, v1.2s
3761 // CHECK-ERROR:                  ^
3762 // CHECK-ERROR: error: invalid operand for instruction
3763 // CHECK-ERROR:        addv s0, v1.2s
3764 // CHECK-ERROR:                 ^
3765
3766         smaxv d0, v1.2d
3767         sminv d0, v1.2d
3768         umaxv d0, v1.2d
3769         uminv d0, v1.2d
3770         addv d0, v1.2d
3771
3772 // CHECK-ERROR: error: invalid operand for instruction
3773 // CHECK-ERROR:        smaxv d0, v1.2d
3774 // CHECK-ERROR:              ^
3775 // CHECK-ERROR: error: invalid operand for instruction
3776 // CHECK-ERROR:        sminv d0, v1.2d
3777 // CHECK-ERROR:              ^
3778 // CHECK-ERROR: error: invalid operand for instruction
3779 // CHECK-ERROR:        umaxv d0, v1.2d
3780 // CHECK-ERROR:              ^
3781 // CHECK-ERROR: error: invalid operand for instruction
3782 // CHECK-ERROR:        uminv d0, v1.2d
3783 // CHECK-ERROR:              ^
3784 // CHECK-ERROR: error: invalid operand for instruction
3785 // CHECK-ERROR:        addv d0, v1.2d
3786 // CHECK-ERROR:             ^
3787
3788         fmaxnmv b0, v1.16b
3789         fminnmv b0, v1.16b
3790         fmaxv b0, v1.16b
3791         fminv b0, v1.16b
3792
3793 // CHECK-ERROR: error: invalid operand for instruction
3794 // CHECK-ERROR:        fmaxnmv b0, v1.16b
3795 // CHECK-ERROR:                ^
3796 // CHECK-ERROR: error: invalid operand for instruction
3797 // CHECK-ERROR:        fminnmv b0, v1.16b
3798 // CHECK-ERROR:                ^
3799 // CHECK-ERROR: error: invalid operand for instruction
3800 // CHECK-ERROR:        fmaxv b0, v1.16b
3801 // CHECK-ERROR:              ^
3802 // CHECK-ERROR: error: invalid operand for instruction
3803 // CHECK-ERROR:        fminv b0, v1.16b
3804 // CHECK-ERROR:              ^
3805
3806         fmaxnmv h0, v1.8h
3807         fminnmv h0, v1.8h
3808         fmaxv h0, v1.8h
3809         fminv h0, v1.8h
3810
3811 // CHECK-ERROR: error: invalid operand for instruction
3812 // CHECK-ERROR:        fmaxnmv h0, v1.8h
3813 // CHECK-ERROR:                ^
3814 // CHECK-ERROR: error: invalid operand for instruction
3815 // CHECK-ERROR:        fminnmv h0, v1.8h
3816 // CHECK-ERROR:                ^
3817 // CHECK-ERROR: error: invalid operand for instruction
3818 // CHECK-ERROR:        fmaxv h0, v1.8h
3819 // CHECK-ERROR:              ^
3820 // CHECK-ERROR: error: invalid operand for instruction
3821 // CHECK-ERROR:        fminv h0, v1.8h
3822 // CHECK-ERROR:              ^
3823
3824         fmaxnmv d0, v1.2d
3825         fminnmv d0, v1.2d
3826         fmaxv d0, v1.2d
3827         fminv d0, v1.2d
3828
3829 // CHECK-ERROR: error: invalid operand for instruction
3830 // CHECK-ERROR:        fmaxnmv d0, v1.2d
3831 // CHECK-ERROR:                ^
3832 // CHECK-ERROR: error: invalid operand for instruction
3833 // CHECK-ERROR:        fminnmv d0, v1.2d
3834 // CHECK-ERROR:                ^
3835 // CHECK-ERROR: error: invalid operand for instruction
3836 // CHECK-ERROR:        fmaxv d0, v1.2d
3837 // CHECK-ERROR:              ^
3838 // CHECK-ERROR: error: invalid operand for instruction
3839 // CHECK-ERROR:        fminv d0, v1.2d
3840 // CHECK-ERROR:              ^
3841
3842 //----------------------------------------------------------------------
3843 // Floating-point Multiply Extended
3844 //----------------------------------------------------------------------
3845
3846     fmulx s20, h22, s15
3847     fmulx d23, d11, s1
3848
3849 // CHECK-ERROR: error: invalid operand for instruction
3850 // CHECK-ERROR:          fmulx s20, h22, s15
3851 // CHECK-ERROR:                     ^
3852 // CHECK-ERROR: error: invalid operand for instruction
3853 // CHECK-ERROR:          fmulx d23, d11, s1
3854 // CHECK-ERROR:                          ^
3855
3856 //----------------------------------------------------------------------
3857 // Floating-point Reciprocal Step
3858 //----------------------------------------------------------------------
3859
3860     frecps s21, s16, h13
3861     frecps d22, s30, d21
3862
3863 // CHECK-ERROR: error: invalid operand for instruction
3864 // CHECK-ERROR:          frecps s21, s16, h13
3865 // CHECK-ERROR:                           ^
3866 // CHECK-ERROR: error: invalid operand for instruction
3867 // CHECK-ERROR:          frecps d22, s30, d21
3868 // CHECK-ERROR:                      ^
3869
3870 //----------------------------------------------------------------------
3871 // Floating-point Reciprocal Square Root Step
3872 //----------------------------------------------------------------------
3873
3874     frsqrts s21, h5, s12
3875     frsqrts d8, s22, d18
3876
3877 // CHECK-ERROR: error: invalid operand for instruction
3878 // CHECK-ERROR:          frsqrts s21, h5, s12
3879 // CHECK-ERROR:                       ^
3880 // CHECK-ERROR: error: invalid operand for instruction
3881 // CHECK-ERROR:          frsqrts d8, s22, d18
3882 // CHECK-ERROR:                      ^
3883
3884 //----------------------------------------------------------------------
3885 // Vector load/store multiple N-element structure (class SIMD lselem)
3886 //----------------------------------------------------------------------
3887          ld1 {x3}, [x2]
3888          ld1 {v4}, [x0]
3889          ld1 {v32.16b}, [x0]
3890          ld1 {v15.8h}, [x32]
3891 // CHECK-ERROR: error: expected vector type register
3892 // CHECK-ERROR:        ld1 {x3}, [x2]
3893 // CHECK-ERROR:             ^
3894 // CHECK-ERROR: error: expected vector type register
3895 // CHECK-ERROR:        ld1 {v4}, [x0]
3896 // CHECK-ERROR:             ^
3897 // CHECK-ERROR: error: expected vector type register
3898 // CHECK-ERROR:        ld1 {v32.16b}, [x0]
3899 // CHECK-ERROR:             ^
3900 // CHECK-ERROR: error: invalid operand for instruction
3901 // CHECK-ERROR:        ld1 {v15.8h}, [x32]
3902 // CHECK-ERROR:                       ^
3903
3904          ld1 {v0.16b, v2.16b}, [x0]
3905          ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3906          ld1 v0.8b, v1.8b}, [x0]
3907          ld1 {v0.8h-v4.8h}, [x0]
3908          ld1 {v1.8h-v1.8h}, [x0]
3909          ld1 {v15.8h-v17.4h}, [x15]
3910          ld1 {v0.8b-v2.8b, [x0]
3911 // CHECK-ERROR: error: invalid space between two vectors
3912 // CHECK-ERROR:        ld1 {v0.16b, v2.16b}, [x0]
3913 // CHECK-ERROR:                     ^
3914 // CHECK-ERROR: error: invalid number of vectors
3915 // CHECK-ERROR:        ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3916 // CHECK-ERROR:                                         ^
3917 // CHECK-ERROR: error: '{' expected
3918 // CHECK-ERROR:        ld1 v0.8b, v1.8b}, [x0]
3919 // CHECK-ERROR:            ^
3920 // CHECK-ERROR: error: invalid number of vectors
3921 // CHECK-ERROR:        ld1 {v0.8h-v4.8h}, [x0]
3922 // CHECK-ERROR:                   ^
3923 // CHECK-ERROR: error: invalid number of vectors
3924 // CHECK-ERROR:        ld1 {v1.8h-v1.8h}, [x0]
3925 // CHECK-ERROR:                   ^
3926 // CHECK-ERROR: error: expected the same vector layout
3927 // CHECK-ERROR:        ld1 {v15.8h-v17.4h}, [x15]
3928 // CHECK-ERROR:                        ^
3929 // CHECK-ERROR: error: '}' expected
3930 // CHECK-ERROR:        ld1 {v0.8b-v2.8b, [x0]
3931 // CHECK-ERROR:                        ^
3932
3933          ld2 {v15.8h, v16.4h}, [x15]
3934          ld2 {v0.8b, v2.8b}, [x0]
3935          ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3936          ld2 {v15.8h-v16.4h}, [x15]
3937          ld2 {v0.2d-v2.2d}, [x0]
3938 // CHECK-ERROR: error: invalid space between two vectors
3939 // CHECK-ERROR:        ld2 {v15.8h, v16.4h}, [x15]
3940 // CHECK-ERROR:                     ^
3941 // CHECK-ERROR: error: invalid space between two vectors
3942 // CHECK-ERROR:        ld2 {v0.8b, v2.8b}, [x0]
3943 // CHECK-ERROR:                    ^
3944 // CHECK-ERROR: error: invalid operand for instruction
3945 // CHECK-ERROR:        ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3946 // CHECK-ERROR:            ^
3947 // CHECK-ERROR: error: expected the same vector layout
3948 // CHECK-ERROR:        ld2 {v15.8h-v16.4h}, [x15]
3949 // CHECK-ERROR:                        ^
3950 // CHECK-ERROR: error: invalid operand for instruction
3951 // CHECK-ERROR:        ld2 {v0.2d-v2.2d}, [x0]
3952 // CHECK-ERROR:            ^
3953
3954          ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3955          ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3956          ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3957          ld3 {v15.8h-v17.4h}, [x15]
3958          ld3 {v31.4s-v2.4s}, [sp]
3959 // CHECK-ERROR: error: invalid space between two vectors
3960 // CHECK-ERROR:        ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3961 // CHECK-ERROR:                             ^
3962 // CHECK-ERROR: error: expected vector type register
3963 // CHECK-ERROR:        ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3964 // CHECK-ERROR:                    ^
3965 // CHECK-ERROR: error: invalid space between two vectors
3966 // CHECK-ERROR:        ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3967 // CHECK-ERROR:                    ^
3968 // CHECK-ERROR: error: expected the same vector layout
3969 // CHECK-ERROR:        ld3 {v15.8h-v17.4h}, [x15]
3970 // CHECK-ERROR:                        ^
3971 // CHECK-ERROR: error: invalid operand for instruction
3972 // CHECK-ERROR:        ld3 {v31.4s-v2.4s}, [sp]
3973 // CHECK-ERROR:            ^
3974
3975          ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
3976          ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
3977          ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
3978          ld4 {v15.8h-v18.4h}, [x15]
3979          ld4 {v31.2s-v1.2s}, [x31]
3980 // CHECK-ERROR: error: invalid space between two vectors
3981 // CHECK-ERROR:        ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
3982 // CHECK-ERROR:                             ^
3983 // CHECK-ERROR: error: invalid space between two vectors
3984 // CHECK-ERROR:        ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
3985 // CHECK-ERROR:                    ^
3986 // CHECK-ERROR: error: invalid number of vectors
3987 // CHECK-ERROR:        ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
3988 // CHECK-ERROR:                                             ^
3989 // CHECK-ERROR: error: expected the same vector layout
3990 // CHECK-ERROR:        ld4 {v15.8h-v18.4h}, [x15]
3991 // CHECK-ERROR:                        ^
3992 // CHECK-ERROR: error: invalid operand for instruction
3993 // CHECK-ERROR:        ld4 {v31.2s-v1.2s}, [x31]
3994 // CHECK-ERROR:            ^
3995
3996          st1 {x3}, [x2]
3997          st1 {v4}, [x0]
3998          st1 {v32.16b}, [x0]
3999          st1 {v15.8h}, [x32]
4000 // CHECK-ERROR: error: expected vector type register
4001 // CHECK-ERROR:        st1 {x3}, [x2]
4002 // CHECK-ERROR:             ^
4003 // CHECK-ERROR: error: expected vector type register
4004 // CHECK-ERROR:        st1 {v4}, [x0]
4005 // CHECK-ERROR:             ^
4006 // CHECK-ERROR: error: expected vector type register
4007 // CHECK-ERROR:        st1 {v32.16b}, [x0]
4008 // CHECK-ERROR:             ^
4009 // CHECK-ERROR: error: invalid operand for instruction
4010 // CHECK-ERROR:        st1 {v15.8h}, [x32]
4011 // CHECK-ERROR:                       ^
4012
4013          st1 {v0.16b, v2.16b}, [x0]
4014          st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4015          st1 v0.8b, v1.8b}, [x0]
4016          st1 {v0.8h-v4.8h}, [x0]
4017          st1 {v1.8h-v1.8h}, [x0]
4018          st1 {v15.8h-v17.4h}, [x15]
4019          st1 {v0.8b-v2.8b, [x0]
4020 // CHECK-ERROR: error: invalid space between two vectors
4021 // CHECK-ERROR:        st1 {v0.16b, v2.16b}, [x0]
4022 // CHECK-ERROR:                     ^
4023 // CHECK-ERROR: error: invalid number of vectors
4024 // CHECK-ERROR:        st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4025 // CHECK-ERROR:                                         ^
4026 // CHECK-ERROR: error: '{' expected
4027 // CHECK-ERROR:        st1 v0.8b, v1.8b}, [x0]
4028 // CHECK-ERROR:            ^
4029 // CHECK-ERROR: error: invalid number of vectors
4030 // CHECK-ERROR:        st1 {v0.8h-v4.8h}, [x0]
4031 // CHECK-ERROR:                   ^
4032 // CHECK-ERROR: error: invalid number of vectors
4033 // CHECK-ERROR:        st1 {v1.8h-v1.8h}, [x0]
4034 // CHECK-ERROR:                   ^
4035 // CHECK-ERROR: error: expected the same vector layout
4036 // CHECK-ERROR:        st1 {v15.8h-v17.4h}, [x15]
4037 // CHECK-ERROR:                        ^
4038 // CHECK-ERROR: error: '}' expected
4039 // CHECK-ERROR:        st1 {v0.8b-v2.8b, [x0]
4040 // CHECK-ERROR:                        ^
4041
4042          st2 {v15.8h, v16.4h}, [x15]
4043          st2 {v0.8b, v2.8b}, [x0]
4044          st2 {v15.4h, v16.4h, v17.4h}, [x30]
4045          st2 {v15.8h-v16.4h}, [x15]
4046          st2 {v0.2d-v2.2d}, [x0]
4047 // CHECK-ERROR: error: invalid space between two vectors
4048 // CHECK-ERROR:        st2 {v15.8h, v16.4h}, [x15]
4049 // CHECK-ERROR:                     ^
4050 // CHECK-ERROR: error: invalid space between two vectors
4051 // CHECK-ERROR:        st2 {v0.8b, v2.8b}, [x0]
4052 // CHECK-ERROR:                    ^
4053 // CHECK-ERROR: error: invalid operand for instruction
4054 // CHECK-ERROR:        st2 {v15.4h, v16.4h, v17.4h}, [x30]
4055 // CHECK-ERROR:            ^
4056 // CHECK-ERROR: error: expected the same vector layout
4057 // CHECK-ERROR:        st2 {v15.8h-v16.4h}, [x15]
4058 // CHECK-ERROR:                        ^
4059 // CHECK-ERROR: error: invalid operand for instruction
4060 // CHECK-ERROR:        st2 {v0.2d-v2.2d}, [x0]
4061 // CHECK-ERROR:            ^
4062
4063          st3 {v15.8h, v16.8h, v17.4h}, [x15]
4064          st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4065          st3 {v0.8b, v2.8b, v3.8b}, [x0]
4066          st3 {v15.8h-v17.4h}, [x15]
4067          st3 {v31.4s-v2.4s}, [sp]
4068 // CHECK-ERROR: error: invalid space between two vectors
4069 // CHECK-ERROR:        st3 {v15.8h, v16.8h, v17.4h}, [x15]
4070 // CHECK-ERROR:                             ^
4071 // CHECK-ERROR: error: expected vector type register
4072 // CHECK-ERROR:        st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4073 // CHECK-ERROR:                    ^
4074 // CHECK-ERROR: error: invalid space between two vectors
4075 // CHECK-ERROR:        st3 {v0.8b, v2.8b, v3.8b}, [x0]
4076 // CHECK-ERROR:                    ^
4077 // CHECK-ERROR: error: expected the same vector layout
4078 // CHECK-ERROR:        st3 {v15.8h-v17.4h}, [x15]
4079 // CHECK-ERROR:                        ^
4080 // CHECK-ERROR: error: invalid operand for instruction
4081 // CHECK-ERROR:        st3 {v31.4s-v2.4s}, [sp]
4082 // CHECK-ERROR:            ^
4083
4084          st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4085          st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4086          st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4087          st4 {v15.8h-v18.4h}, [x15]
4088          st4 {v31.2s-v1.2s}, [x31]
4089 // CHECK-ERROR: error: invalid space between two vectors
4090 // CHECK-ERROR:        st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4091 // CHECK-ERROR:                             ^
4092 // CHECK-ERROR: error: invalid space between two vectors
4093 // CHECK-ERROR:        st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4094 // CHECK-ERROR:                    ^
4095 // CHECK-ERROR: error: invalid number of vectors
4096 // CHECK-ERROR:        st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4097 // CHECK-ERROR:                                             ^
4098 // CHECK-ERROR: error: expected the same vector layout
4099 // CHECK-ERROR:        st4 {v15.8h-v18.4h}, [x15]
4100 // CHECK-ERROR:                        ^
4101 // CHECK-ERROR: error: invalid operand for instruction
4102 // CHECK-ERROR:        st4 {v31.2s-v1.2s}, [x31]
4103 // CHECK-ERROR:            ^
4104
4105 //----------------------------------------------------------------------
4106 // Vector post-index load/store multiple N-element structure
4107 // (class SIMD lselem-post)
4108 //----------------------------------------------------------------------
4109          ld1 {v0.16b}, [x0], #8
4110          ld1 {v0.8h, v1.16h}, [x0], x1
4111          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4112 // CHECK-ERROR: error: invalid operand for instruction
4113 // CHECK-ERROR:          ld1 {v0.16b}, [x0], #8
4114 // CHECK-ERROR:                              ^
4115 // CHECK-ERROR:  error: expected vector type register
4116 // CHECK-ERROR:          ld1 {v0.8h, v1.16h}, [x0], x1
4117 // CHECK-ERROR:                      ^
4118 // CHECK-ERROR:  error: invalid operand for instruction
4119 // CHECK-ERROR:          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4120 // CHECK-ERROR:                                                  ^
4121
4122          ld2 {v0.16b, v1.16b}, [x0], #16
4123          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4124          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4125 // CHECK-ERROR:  error: invalid operand for instruction
4126 // CHECK-ERROR:          ld2 {v0.16b, v1.16b}, [x0], #16
4127 // CHECK-ERROR:                                      ^
4128 // CHECK-ERROR:  error: invalid operand for instruction
4129 // CHECK-ERROR:          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4130 // CHECK-ERROR:                                           ^
4131 // CHECK-ERROR:  error: invalid space between two vectors
4132 // CHECK-ERROR:          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4133 // CHECK-ERROR:                                     ^
4134
4135          st1 {v0.16b}, [x0], #8
4136          st1 {v0.8h, v1.16h}, [x0], x1
4137          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4138 // CHECK-ERROR:  error: invalid operand for instruction
4139 // CHECK-ERROR:          st1 {v0.16b}, [x0], #8
4140 // CHECK-ERROR:                              ^
4141 // CHECK-ERROR:  error: expected vector type register
4142 // CHECK-ERROR:          st1 {v0.8h, v1.16h}, [x0], x1
4143 // CHECK-ERROR:                      ^
4144 // CHECK-ERROR:  error: invalid operand for instruction
4145 // CHECK-ERROR:          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4146                                                  ^
4147
4148          st2 {v0.16b, v1.16b}, [x0], #16
4149          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4150          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4151 // CHECK-ERROR:  error: invalid operand for instruction
4152 // CHECK-ERROR:          st2 {v0.16b, v1.16b}, [x0], #16
4153 // CHECK-ERROR:                                      ^
4154 // CHECK-ERROR:  error: invalid operand for instruction
4155 // CHECK-ERROR:          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4156 // CHECK-ERROR:                                           ^
4157 // CHECK-ERROR:  error: invalid space between two vectors
4158 // CHECK-ERROR:          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4159 // CHECK-ERROR:                                     ^
4160
4161          ins v2.b[16], w1
4162          ins v7.h[8], w14
4163          ins v20.s[5], w30
4164          ins v1.d[2], x7
4165          ins v2.b[3], b1
4166          ins v7.h[2], h14
4167          ins v20.s[1], s30
4168          ins v1.d[0], d7
4169
4170 // CHECK-ERROR: error: lane number incompatible with layout
4171 // CHECK-ERROR:         ins v2.b[16], w1
4172 // CHECK-ERROR:                  ^
4173 // CHECK-ERROR: error: lane number incompatible with layout
4174 // CHECK-ERROR:         ins v7.h[8], w14
4175 // CHECK-ERROR:                  ^
4176 // CHECK-ERROR: error: lane number incompatible with layout
4177 // CHECK-ERROR:         ins v20.s[5], w30
4178 // CHECK-ERROR:                   ^
4179 // CHECK-ERROR: error: lane number incompatible with layout
4180 // CHECK-ERROR:         ins v1.d[2], x7
4181 // CHECK-ERROR:                  ^
4182 // CHECK-ERROR: error: invalid operand for instruction
4183 // CHECK-ERROR:         ins v2.b[3], b1
4184 // CHECK-ERROR:                      ^
4185 // CHECK-ERROR: error: invalid operand for instruction
4186 // CHECK-ERROR:         ins v7.h[2], h14
4187 // CHECK-ERROR:                      ^
4188 // CHECK-ERROR: error: invalid operand for instruction
4189 // CHECK-ERROR:         ins v20.s[1], s30
4190 // CHECK-ERROR:                       ^
4191 // CHECK-ERROR: error: invalid operand for instruction
4192 // CHECK-ERROR:         ins v1.d[0], d7
4193 // CHECK-ERROR:                      ^
4194
4195          smov w1, v0.b[16]
4196          smov w14, v6.h[8]
4197          smov x1, v0.b[16]
4198          smov x14, v6.h[8]
4199          smov x20, v9.s[5]
4200          smov w1, v0.d[0]
4201          smov w14, v6.d[1]
4202          smov x1, v0.d[0]
4203          smov x14, v6.d[1]
4204          smov x20, v9.d[0]
4205
4206 // CHECK-ERROR error: lane number incompatible with layout
4207 // CHECK-ERROR         smov w1, v0.b[16]
4208 // CHECK-ERROR                       ^
4209 // CHECK-ERROR error: lane number incompatible with layout
4210 // CHECK-ERROR         smov w14, v6.h[8]
4211 // CHECK-ERROR                        ^
4212 // CHECK-ERROR error: lane number incompatible with layout
4213 // CHECK-ERROR         smov x1, v0.b[16]
4214 // CHECK-ERROR                       ^
4215 // CHECK-ERROR error: lane number incompatible with layout
4216 // CHECK-ERROR         smov x14, v6.h[8]
4217 // CHECK-ERROR                        ^
4218 // CHECK-ERROR error: lane number incompatible with layout
4219 // CHECK-ERROR         smov x20, v9.s[5]
4220 // CHECK-ERROR                        ^
4221 // CHECK-ERROR error: invalid operand for instruction
4222 // CHECK-ERROR         smov w1, v0.d[0]
4223 // CHECK-ERROR                     ^
4224 // CHECK-ERROR error: invalid operand for instruction
4225 // CHECK-ERROR         smov w14, v6.d[1]
4226 // CHECK-ERROR                      ^
4227 // CHECK-ERROR error: invalid operand for instruction
4228 // CHECK-ERROR         smov x1, v0.d[0]
4229 // CHECK-ERROR                     ^
4230 // CHECK-ERROR error: invalid operand for instruction
4231 // CHECK-ERROR         smov x14, v6.d[1]
4232 // CHECK-ERROR                      ^
4233 // CHECK-ERROR error: invalid operand for instruction
4234 // CHECK-ERROR         smov x20, v9.d[0]
4235 // CHECK-ERROR                      ^
4236
4237          umov w1, v0.b[16]
4238          umov w14, v6.h[8]
4239          umov w20, v9.s[5]
4240          umov x7, v18.d[3]
4241          umov w1, v0.d[0]
4242          umov s20, v9.s[2]
4243          umov d7, v18.d[1]
4244
4245 // CHECK-ERROR error: lane number incompatible with layout
4246 // CHECK-ERROR         umov w1, v0.b[16]
4247 // CHECK-ERROR                       ^
4248 // CHECK-ERROR error: lane number incompatible with layout
4249 // CHECK-ERROR         umov w14, v6.h[8]
4250 // CHECK-ERROR                        ^
4251 // CHECK-ERROR error: lane number incompatible with layout
4252 // CHECK-ERROR         umov w20, v9.s[5]
4253 // CHECK-ERROR                        ^
4254 // CHECK-ERROR error: lane number incompatible with layout
4255 // CHECK-ERROR         umov x7, v18.d[3]
4256 // CHECK-ERROR                        ^
4257 // CHECK-ERROR error: invalid operand for instruction
4258 // CHECK-ERROR         umov w1, v0.d[0]
4259 // CHECK-ERROR                     ^
4260 // CHECK-ERROR error: invalid operand for instruction
4261 // CHECK-ERROR         umov s20, v9.s[2]
4262 // CHECK-ERROR              ^
4263 // CHECK-ERROR error: invalid operand for instruction
4264 // CHECK-ERROR         umov d7, v18.d[1]
4265 // CHECK-ERROR              ^
4266
4267          Ins v1.h[2], v3.b[6]
4268          Ins v6.h[7], v7.s[2]
4269          Ins v15.d[0], v22.s[2]
4270          Ins v0.d[0], v4.b[1]
4271
4272 // CHECK-ERROR error: invalid operand for instruction
4273 // CHECK-ERROR         Ins v1.h[2], v3.b[6]
4274 // CHECK-ERROR                         ^
4275 // CHECK-ERROR error: invalid operand for instruction
4276 // CHECK-ERROR         Ins v6.h[7], v7.s[2]
4277 // CHECK-ERROR                         ^
4278 // CHECK-ERROR error: invalid operand for instruction
4279 // CHECK-ERROR         Ins v15.d[0], v22.s[2]
4280 // CHECK-ERROR                           ^
4281 // CHECK-ERROR error: invalid operand for instruction
4282 // CHECK-ERROR         Ins v0.d[0], v4.b[1]
4283 // CHECK-ERROR                         ^
4284
4285          dup v1.8h, v2.b[2]
4286          dup v11.4s, v7.h[7]
4287          dup v17.2d, v20.s[0]
4288          dup v1.16b, v2.h[2]
4289          dup v11.8h, v7.s[3]
4290          dup v17.4s, v20.d[0]
4291          dup v5.2d, v1.b[1]
4292
4293 // CHECK-ERROR error: invalid operand for instruction
4294 // CHECK-ERROR         dup v1.8h, v2.b[2]
4295 // CHECK-ERROR                       ^
4296 // CHECK-ERROR error: invalid operand for instruction
4297 // CHECK-ERROR         dup v11.4s, v7.h[7]
4298 // CHECK-ERROR                        ^
4299 // CHECK-ERROR error: invalid operand for instruction
4300 // CHECK-ERROR         dup v17.2d, v20.s[0]
4301 // CHECK-ERROR                         ^
4302 // CHECK-ERROR error: invalid operand for instruction
4303 // CHECK-ERROR         dup v1.16b, v2.h[2]
4304 // CHECK-ERROR                        ^
4305 // CHECK-ERROR invalid operand for instruction
4306 // CHECK-ERROR         dup v11.8h, v7.s[3]
4307 // CHECK-ERROR                        ^
4308 // CHECK-ERROR invalid operand for instruction
4309 // CHECK-ERROR         dup v17.4s, v20.d[0]
4310 // CHECK-ERROR                         ^
4311 // CHECK-ERROR invalid operand for instruction
4312 // CHECK-ERROR         dup v5.2d, v1.b[1]
4313 // CHECK-ERROR                       ^
4314
4315          dup v1.8b, b1
4316          dup v11.4h, h14
4317          dup v17.2s, s30
4318          dup v1.16b, d2
4319          dup v11.8s, w16
4320          dup v17.4d, w28
4321          dup v5.2d, w0
4322
4323 // CHECK-ERROR error: invalid operand for instruction
4324 // CHECK-ERROR         dup v1.8b, b1
4325 // CHECK-ERROR                    ^
4326 // CHECK-ERROR error: invalid operand for instruction
4327 // CHECK-ERROR         dup v11.4h, h14
4328 // CHECK-ERROR                     ^
4329 // CHECK-ERROR error: invalid operand for instruction
4330 // CHECK-ERROR         dup v17.2s, s30
4331 // CHECK-ERROR                     ^
4332 // CHECK-ERROR error: invalid operand for instruction
4333 // CHECK-ERROR         dup v1.16b, d2
4334 // CHECK-ERROR                     ^
4335 // CHECK-ERROR error: invalid operand for instruction
4336 // CHECK-ERROR         dup v11.8s, w16
4337 // CHECK-ERROR             ^
4338 // CHECK-ERROR error: invalid operand for instruction
4339 // CHECK-ERROR         dup v17.4d, w28
4340 // CHECK-ERROR             ^
4341 // CHECK-ERROR error: invalid operand for instruction
4342 // CHECK-ERROR         dup v5.2d, w0
4343 // CHECK-ERROR                    ^
4344
4345 //----------------------------------------------------------------------
4346 // Scalar Compare Bitwise Equal
4347 //----------------------------------------------------------------------
4348
4349          cmeq b20, d21, d22
4350
4351 // CHECK-ERROR: error: invalid operand for instruction
4352 // CHECK-ERROR:          cmeq b20, d21, d22
4353 // CHECK-ERROR:               ^
4354
4355 //----------------------------------------------------------------------
4356 // Scalar Compare Bitwise Equal To Zero
4357 //----------------------------------------------------------------------
4358
4359          cmeq d20, b21, #0
4360
4361 // CHECK-ERROR: error: invalid operand for instruction
4362 // CHECK-ERROR:          cmeq d20, b21, #0
4363 // CHECK-ERROR:                    ^
4364
4365 //----------------------------------------------------------------------
4366 // Scalar Compare Unsigned Higher Or Same
4367 //----------------------------------------------------------------------
4368
4369          cmhs b20, d21, d22
4370
4371 // CHECK-ERROR: error: invalid operand for instruction
4372 // CHECK-ERROR:          cmhs b20, d21, d22
4373 // CHECK-ERROR:               ^
4374
4375         
4376 //----------------------------------------------------------------------
4377 // Scalar Compare Signed Greather Than Or Equal
4378 //----------------------------------------------------------------------
4379
4380          cmge b20, d21, d22
4381
4382 // CHECK-ERROR: error: invalid operand for instruction
4383 // CHECK-ERROR:          cmge b20, d21, d22
4384 // CHECK-ERROR:               ^
4385
4386 //----------------------------------------------------------------------
4387 // Scalar Compare Signed Greather Than Or Equal To Zero
4388 //----------------------------------------------------------------------
4389
4390          cmge d20, b21, #0
4391
4392 // CHECK-ERROR: error: invalid operand for instruction
4393 // CHECK-ERROR:          cmge d20, b21, #0
4394 // CHECK-ERROR:                    ^
4395
4396 //----------------------------------------------------------------------
4397 // Scalar Compare Unsigned Higher
4398 //----------------------------------------------------------------------
4399
4400          cmhi b20, d21, d22
4401
4402 // CHECK-ERROR: error: invalid operand for instruction
4403 // CHECK-ERROR:          cmhi b20, d21, d22
4404 // CHECK-ERROR:               ^
4405
4406 //----------------------------------------------------------------------
4407 // Scalar Compare Signed Greater Than
4408 //----------------------------------------------------------------------
4409
4410          cmgt b20, d21, d22
4411
4412 // CHECK-ERROR: error: invalid operand for instruction
4413 // CHECK-ERROR:          cmgt b20, d21, d22
4414 // CHECK-ERROR:               ^
4415
4416 //----------------------------------------------------------------------
4417 // Scalar Compare Signed Greater Than Zero
4418 //----------------------------------------------------------------------
4419
4420          cmgt d20, b21, #0
4421
4422 // CHECK-ERROR: error: invalid operand for instruction
4423 // CHECK-ERROR:          cmgt d20, b21, #0
4424 // CHECK-ERROR:                    ^
4425
4426 //----------------------------------------------------------------------
4427 // Scalar Compare Signed Less Than Or Equal To Zero
4428 //----------------------------------------------------------------------
4429
4430          cmle d20, b21, #0
4431
4432 // CHECK-ERROR: error: invalid operand for instruction
4433 // CHECK-ERROR:          cmle d20, b21, #0
4434 // CHECK-ERROR:                    ^
4435
4436 //----------------------------------------------------------------------
4437 // Scalar Compare Less Than Zero
4438 //----------------------------------------------------------------------
4439
4440          cmlt d20, b21, #0
4441
4442 // CHECK-ERROR: error: invalid operand for instruction
4443 // CHECK-ERROR:          cmlt d20, b21, #0
4444 // CHECK-ERROR:                    ^
4445
4446 //----------------------------------------------------------------------
4447 // Scalar Compare Bitwise Test Bits
4448 //----------------------------------------------------------------------
4449
4450          cmtst b20, d21, d22
4451
4452 // CHECK-ERROR: error: invalid operand for instruction
4453 // CHECK-ERROR:          cmtst b20, d21, d22
4454 // CHECK-ERROR:                ^
4455
4456 //----------------------------------------------------------------------
4457 // Scalar Floating-point Compare Mask Equal
4458 //----------------------------------------------------------------------
4459
4460          fcmeq s10, h11, s12
4461          fcmeq d20, s21, d22
4462
4463 // CHECK-ERROR: error: invalid operand for instruction
4464 // CHECK-ERROR:          fcmeq s10, h11, s12
4465 // CHECK-ERROR:                     ^
4466 // CHECK-ERROR: error: invalid operand for instruction
4467 // CHECK-ERROR:          fcmeq d20, s21, d22
4468 // CHECK-ERROR:                     ^
4469
4470 //----------------------------------------------------------------------
4471 // Scalar Floating-point Compare Mask Equal To Zero
4472 //----------------------------------------------------------------------
4473
4474          fcmeq h10, s11, #0.0
4475          fcmeq d20, s21, #0.0
4476
4477 // CHECK-ERROR: error: invalid operand for instruction
4478 // CHECK-ERROR:          fcmeq h10, s11, #0.0
4479 // CHECK-ERROR:                ^
4480 // CHECK-ERROR: error: invalid operand for instruction
4481 // CHECK-ERROR:          fcmeq d20, s21, #0.0
4482 // CHECK-ERROR:                     ^
4483
4484 //----------------------------------------------------------------------
4485 // Scalar Floating-point Compare Mask Greater Than Or Equal
4486 //----------------------------------------------------------------------
4487
4488          fcmge s10, h11, s12
4489          fcmge d20, s21, d22
4490
4491 // CHECK-ERROR: error: invalid operand for instruction
4492 // CHECK-ERROR:          fcmge s10, h11, s12
4493 // CHECK-ERROR:                     ^
4494 // CHECK-ERROR: error: invalid operand for instruction
4495 // CHECK-ERROR:          fcmge d20, s21, d22
4496 // CHECK-ERROR:                     ^
4497
4498 //----------------------------------------------------------------------
4499 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4500 //----------------------------------------------------------------------
4501
4502          fcmge h10, s11, #0.0
4503          fcmge d20, s21, #0.0
4504
4505 // CHECK-ERROR: error: invalid operand for instruction
4506 // CHECK-ERROR:          fcmge h10, s11, #0.0
4507 // CHECK-ERROR:                ^
4508 // CHECK-ERROR: error: invalid operand for instruction
4509 // CHECK-ERROR:          fcmge d20, s21, #0.0
4510 // CHECK-ERROR:                     ^
4511
4512 //----------------------------------------------------------------------
4513 // Scalar Floating-point Compare Mask Greather Than
4514 //----------------------------------------------------------------------
4515
4516          fcmgt s10, h11, s12
4517          fcmgt d20, s21, d22
4518
4519 // CHECK-ERROR: error: invalid operand for instruction
4520 // CHECK-ERROR:          fcmgt s10, h11, s12
4521 // CHECK-ERROR:                     ^
4522 // CHECK-ERROR: error: invalid operand for instruction
4523 // CHECK-ERROR:          fcmgt d20, s21, d22
4524 // CHECK-ERROR:                     ^
4525
4526 //----------------------------------------------------------------------
4527 // Scalar Floating-point Compare Mask Greather Than Zero
4528 //----------------------------------------------------------------------
4529
4530          fcmgt h10, s11, #0.0
4531          fcmgt d20, s21, #0.0
4532
4533 // CHECK-ERROR: error: invalid operand for instruction
4534 // CHECK-ERROR:          fcmgt h10, s11, #0.0
4535 // CHECK-ERROR:                ^
4536 // CHECK-ERROR: error: invalid operand for instruction
4537 // CHECK-ERROR:          fcmgt d20, s21, #0.0
4538 // CHECK-ERROR:                     ^
4539
4540 //----------------------------------------------------------------------
4541 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4542 //----------------------------------------------------------------------
4543
4544          fcmle h10, s11, #0.0
4545          fcmle d20, s21, #0.0
4546
4547 // CHECK-ERROR: error: invalid operand for instruction
4548 // CHECK-ERROR:          fcmle h10, s11, #0.0
4549 // CHECK-ERROR:                ^
4550 // CHECK-ERROR: error: invalid operand for instruction
4551 // CHECK-ERROR:          fcmle d20, s21, #0.0
4552 // CHECK-ERROR:                     ^
4553
4554 //----------------------------------------------------------------------
4555 // Scalar Floating-point Compare Mask Less Than
4556 //----------------------------------------------------------------------
4557
4558          fcmlt h10, s11, #0.0
4559          fcmlt d20, s21, #0.0
4560
4561 // CHECK-ERROR: error: invalid operand for instruction
4562 // CHECK-ERROR:          fcmlt h10, s11, #0.0
4563 // CHECK-ERROR:                     ^
4564 // CHECK-ERROR: error: invalid operand for instruction
4565 // CHECK-ERROR:          fcmlt d20, s21, #0.0
4566 // CHECK-ERROR:                     ^
4567
4568 //----------------------------------------------------------------------
4569 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4570 //----------------------------------------------------------------------
4571
4572          facge s10, h11, s12
4573          facge d20, s21, d22
4574
4575 // CHECK-ERROR: error: invalid operand for instruction
4576 // CHECK-ERROR:          facge s10, h11, s12
4577 // CHECK-ERROR:                     ^
4578 // CHECK-ERROR: error: invalid operand for instruction
4579 // CHECK-ERROR:          facge d20, s21, d22
4580 // CHECK-ERROR:                     ^
4581
4582 //----------------------------------------------------------------------
4583 // Scalar Floating-point Absolute Compare Mask Greater Than
4584 //----------------------------------------------------------------------
4585
4586          facgt s10, h11, s12
4587          facgt d20, d21, s22
4588
4589 // CHECK-ERROR: error: invalid operand for instruction
4590 // CHECK-ERROR:          facgt s10, h11, s12
4591 // CHECK-ERROR:                     ^
4592 // CHECK-ERROR: error: invalid operand for instruction
4593 // CHECK-ERROR:          facgt d20, d21, s22
4594 // CHECK-ERROR:                          ^
4595         
4596 //----------------------------------------------------------------------
4597 // Scalar Signed Saturating Accumulated of Unsigned Value
4598 //----------------------------------------------------------------------
4599
4600         suqadd b0, h1
4601         suqadd h0, s1
4602         suqadd s0, d1
4603         suqadd d0, b0
4604
4605 // CHECK-ERROR: error: invalid operand for instruction
4606 // CHECK-ERROR:        suqadd b0, h1
4607 // CHECK-ERROR:                   ^
4608 // CHECK-ERROR: error: invalid operand for instruction
4609 // CHECK-ERROR:        suqadd h0, s1
4610 // CHECK-ERROR:                   ^
4611 // CHECK-ERROR: error: invalid operand for instruction
4612 // CHECK-ERROR:        suqadd s0, d1
4613 // CHECK-ERROR:                   ^
4614 // CHECK-ERROR: error: invalid operand for instruction
4615 // CHECK-ERROR:        suqadd d0, b0
4616 // CHECK-ERROR:                   ^
4617
4618 //----------------------------------------------------------------------
4619 // Scalar Unsigned Saturating Accumulated of Signed Value
4620 //----------------------------------------------------------------------
4621
4622         usqadd b0, h1
4623         usqadd h0, s1
4624         usqadd s0, d1
4625         usqadd d0, b1
4626
4627 // CHECK-ERROR: error: invalid operand for instruction
4628 // CHECK-ERROR:        usqadd b0, h1
4629 // CHECK-ERROR:                   ^
4630 // CHECK-ERROR: error: invalid operand for instruction
4631 // CHECK-ERROR:        usqadd h0, s1
4632 // CHECK-ERROR:                   ^
4633 // CHECK-ERROR: error: invalid operand for instruction
4634 // CHECK-ERROR:        usqadd s0, d1
4635 // CHECK-ERROR:                   ^
4636 // CHECK-ERROR: error: invalid operand for instruction
4637 // CHECK-ERROR:        usqadd d0, b1
4638 // CHECK-ERROR:                   ^
4639
4640 //----------------------------------------------------------------------
4641 // Scalar Absolute Value
4642 //----------------------------------------------------------------------
4643
4644     abs d29, s24
4645
4646 // CHECK-ERROR: error: invalid operand for instruction
4647 // CHECK-ERROR:        abs d29, s24
4648 // CHECK-ERROR:                 ^
4649
4650 //----------------------------------------------------------------------
4651 // Scalar Negate
4652 //----------------------------------------------------------------------
4653
4654     neg d29, s24
4655
4656 // CHECK-ERROR: error: invalid operand for instruction
4657 // CHECK-ERROR:        neg d29, s24
4658 // CHECK-ERROR:                 ^
4659
4660 //----------------------------------------------------------------------
4661 // Signed Saturating Doubling Multiply-Add Long
4662 //----------------------------------------------------------------------
4663
4664     sqdmlal s17, h27, s12
4665     sqdmlal d19, s24, d12
4666
4667 // CHECK-ERROR: error: invalid operand for instruction
4668 // CHECK-ERROR:        sqdmlal s17, h27, s12
4669 // CHECK-ERROR:                          ^
4670 // CHECK-ERROR: error: invalid operand for instruction
4671 // CHECK-ERROR:        sqdmlal d19, s24, d12
4672 // CHECK-ERROR:                          ^
4673
4674 //----------------------------------------------------------------------
4675 // Signed Saturating Doubling Multiply-Subtract Long
4676 //----------------------------------------------------------------------
4677
4678     sqdmlsl s14, h12, s25
4679     sqdmlsl d12, s23, d13
4680
4681 // CHECK-ERROR: error: invalid operand for instruction
4682 // CHECK-ERROR:        sqdmlsl s14, h12, s25
4683 // CHECK-ERROR:                          ^
4684 // CHECK-ERROR: error: invalid operand for instruction
4685 // CHECK-ERROR:        sqdmlsl d12, s23, d13
4686 // CHECK-ERROR:                          ^
4687
4688 //----------------------------------------------------------------------
4689 // Signed Saturating Doubling Multiply Long
4690 //----------------------------------------------------------------------
4691
4692     sqdmull s12, h22, s12
4693     sqdmull d15, s22, d12
4694
4695 // CHECK-ERROR: error: invalid operand for instruction
4696 // CHECK-ERROR:        sqdmull s12, h22, s12
4697 // CHECK-ERROR:                          ^
4698 // CHECK-ERROR: error: invalid operand for instruction
4699 // CHECK-ERROR:        sqdmull d15, s22, d12
4700 // CHECK-ERROR:                          ^
4701
4702 //----------------------------------------------------------------------
4703 // Scalar Signed Saturating Extract Unsigned Narrow
4704 //----------------------------------------------------------------------
4705
4706     sqxtun b19, b14
4707     sqxtun h21, h15
4708     sqxtun s20, s12
4709
4710 // CHECK-ERROR: error: invalid operand for instruction
4711 // CHECK-ERROR:        sqxtun b19, b14
4712 // CHECK-ERROR:                    ^
4713 // CHECK-ERROR: error: invalid operand for instruction
4714 // CHECK-ERROR:        sqxtun h21, h15
4715 // CHECK-ERROR:                    ^
4716 // CHECK-ERROR: error: invalid operand for instruction
4717 // CHECK-ERROR:        sqxtun s20, s12
4718 // CHECK-ERROR:                    ^
4719
4720 //----------------------------------------------------------------------
4721 // Scalar Signed Saturating Extract Signed Narrow
4722 //----------------------------------------------------------------------
4723
4724     sqxtn b18, b18
4725     sqxtn h20, h17
4726     sqxtn s19, s14
4727
4728 // CHECK-ERROR: error: invalid operand for instruction
4729 // CHECK-ERROR:        sqxtn b18, b18
4730 // CHECK-ERROR:                   ^
4731 // CHECK-ERROR: error: invalid operand for instruction
4732 // CHECK-ERROR:        sqxtn h20, h17
4733 // CHECK-ERROR:                   ^
4734 // CHECK-ERROR: error: invalid operand for instruction
4735 // CHECK-ERROR:        sqxtn s19, s14
4736 // CHECK-ERROR:                   ^
4737
4738
4739 //----------------------------------------------------------------------
4740 // Scalar Unsigned Saturating Extract Narrow
4741 //----------------------------------------------------------------------
4742
4743     uqxtn b18, b18
4744     uqxtn h20, h17
4745     uqxtn s19, s14
4746
4747 // CHECK-ERROR: error: invalid operand for instruction
4748 // CHECK-ERROR:        uqxtn b18, b18
4749 // CHECK-ERROR:                   ^
4750 // CHECK-ERROR: error: invalid operand for instruction
4751 // CHECK-ERROR:        uqxtn h20, h17
4752 // CHECK-ERROR:                   ^
4753 // CHECK-ERROR: error: invalid operand for instruction
4754 // CHECK-ERROR:        uqxtn s19, s14
4755 // CHECK-ERROR:                   ^
4756
4757 //----------------------------------------------------------------------
4758 // Scalar Signed Shift Right (Immediate)
4759 //----------------------------------------------------------------------
4760         sshr d15, d16, #99
4761
4762 // CHECK-ERROR: error: expected integer in range [1, 64]
4763 // CHECK-ERROR:        sshr d15, d16, #99
4764 // CHECK-ERROR:                       ^
4765
4766         sshr d15, s16, #31
4767
4768 // CHECK-ERROR: error: invalid operand for instruction
4769 // CHECK-ERROR:        sshr d15, s16, #31
4770 // CHECK-ERROR:                  ^
4771
4772 //----------------------------------------------------------------------
4773 // Scalar Unsigned Shift Right (Immediate)
4774 //----------------------------------------------------------------------
4775
4776         ushr d10, d17, #99
4777
4778 // CHECK-ERROR: error: expected integer in range [1, 64]
4779 // CHECK-ERROR:        ushr d10, d17, #99
4780 // CHECK-ERROR:                       ^
4781
4782 //----------------------------------------------------------------------
4783 // Scalar Signed Rounding Shift Right (Immediate)
4784 //----------------------------------------------------------------------
4785
4786         srshr d19, d18, #99
4787
4788 // CHECK-ERROR: error: expected integer in range [1, 64]
4789 // CHECK-ERROR:        srshr d19, d18, #99
4790 // CHECK-ERROR:                        ^
4791
4792 //----------------------------------------------------------------------
4793 // Scalar Unigned Rounding Shift Right (Immediate)
4794 //----------------------------------------------------------------------
4795
4796         urshr d20, d23, #99
4797
4798 // CHECK-ERROR: error: expected integer in range [1, 64]
4799 // CHECK-ERROR:        urshr d20, d23, #99
4800 // CHECK-ERROR:                        ^
4801
4802 //----------------------------------------------------------------------
4803 // Scalar Signed Shift Right and Accumulate (Immediate)
4804 //----------------------------------------------------------------------
4805
4806         ssra d18, d12, #99
4807
4808 // CHECK-ERROR: error: expected integer in range [1, 64]
4809 // CHECK-ERROR:        ssra d18, d12, #99
4810 // CHECK-ERROR:                       ^
4811
4812 //----------------------------------------------------------------------
4813 // Scalar Unsigned Shift Right and Accumulate (Immediate)
4814 //----------------------------------------------------------------------
4815
4816         usra d20, d13, #99
4817
4818 // CHECK-ERROR: error: expected integer in range [1, 64]
4819 // CHECK-ERROR:        usra d20, d13, #99
4820 // CHECK-ERROR:                       ^
4821
4822 //----------------------------------------------------------------------
4823 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
4824 //----------------------------------------------------------------------
4825
4826         srsra d15, d11, #99
4827
4828 // CHECK-ERROR: error: expected integer in range [1, 64]
4829 // CHECK-ERROR:        srsra d15, d11, #99
4830 // CHECK-ERROR:                        ^
4831
4832 //----------------------------------------------------------------------
4833 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
4834 //----------------------------------------------------------------------
4835
4836         ursra d18, d10, #99
4837
4838 // CHECK-ERROR: error: expected integer in range [1, 64]
4839 // CHECK-ERROR:        ursra d18, d10, #99
4840 // CHECK-ERROR:                        ^
4841
4842 //----------------------------------------------------------------------
4843 // Scalar Shift Left (Immediate)
4844 //----------------------------------------------------------------------
4845
4846         shl d7, d10, #99
4847
4848 // CHECK-ERROR: error: expected integer in range [0, 63]
4849 // CHECK-ERROR:        shl d7, d10, #99
4850 // CHECK-ERROR:                     ^
4851
4852         shl d7, s16, #31
4853         
4854 // CHECK-ERROR: error: invalid operand for instruction
4855 // CHECK-ERROR:        shl d7, s16, #31
4856 // CHECK-ERROR:                ^
4857
4858 //----------------------------------------------------------------------
4859 // Signed Saturating Shift Left (Immediate)
4860 //----------------------------------------------------------------------
4861
4862         sqshl b11, b19, #99
4863         sqshl h13, h18, #99
4864         sqshl s14, s17, #99
4865         sqshl d15, d16, #99
4866
4867 // CHECK-ERROR: error: expected integer in range [0, 7]
4868 // CHECK-ERROR:        sqshl b11, b19, #99
4869 // CHECK-ERROR:                        ^
4870 // CHECK-ERROR: error: expected integer in range [0, 15]
4871 // CHECK-ERROR:        sqshl h13, h18, #99
4872 // CHECK-ERROR:                        ^
4873 // CHECK-ERROR: error: expected integer in range [0, 31]
4874 // CHECK-ERROR:        sqshl s14, s17, #99
4875 // CHECK-ERROR:                        ^
4876 // CHECK-ERROR: error: expected integer in range [0, 63]
4877 // CHECK-ERROR:        sqshl d15, d16, #99
4878 // CHECK-ERROR:                        ^
4879
4880 //----------------------------------------------------------------------
4881 // Unsigned Saturating Shift Left (Immediate)
4882 //----------------------------------------------------------------------
4883
4884         uqshl b18, b15, #99
4885         uqshl h11, h18, #99
4886         uqshl s14, s19, #99
4887         uqshl d15, d12, #99
4888
4889 // CHECK-ERROR: error: expected integer in range [0, 7]
4890 // CHECK-ERROR:        uqshl b18, b15, #99
4891 // CHECK-ERROR:                        ^
4892 // CHECK-ERROR: error: expected integer in range [0, 15]
4893 // CHECK-ERROR:        uqshl h11, h18, #99
4894 // CHECK-ERROR:                        ^
4895 // CHECK-ERROR: error: expected integer in range [0, 31]
4896 // CHECK-ERROR:        uqshl s14, s19, #99
4897 // CHECK-ERROR:                        ^
4898 // CHECK-ERROR: error: expected integer in range [0, 63]
4899 // CHECK-ERROR:        uqshl d15, d12, #99
4900 // CHECK-ERROR:                        ^
4901
4902 //----------------------------------------------------------------------
4903 // Signed Saturating Shift Left Unsigned (Immediate)
4904 //----------------------------------------------------------------------
4905
4906         sqshlu b15, b18, #99
4907         sqshlu h19, h17, #99
4908         sqshlu s16, s14, #99
4909         sqshlu d11, d13, #99
4910
4911 // CHECK-ERROR: error: expected integer in range [0, 7]
4912 // CHECK-ERROR:        sqshlu  b15, b18, #99
4913 // CHECK-ERROR:                          ^
4914 // CHECK-ERROR: error: expected integer in range [0, 15]
4915 // CHECK-ERROR:        sqshlu  h19, h17, #99
4916 // CHECK-ERROR:                          ^
4917 // CHECK-ERROR: error: expected integer in range [0, 31]
4918 // CHECK-ERROR:        sqshlu  s16, s14, #99
4919 // CHECK-ERROR:                          ^
4920 // CHECK-ERROR: error: expected integer in range [0, 63]
4921 // CHECK-ERROR:        sqshlu  d11, d13, #99
4922 // CHECK-ERROR:                          ^
4923
4924 //----------------------------------------------------------------------
4925 // Shift Right And Insert (Immediate)
4926 //----------------------------------------------------------------------
4927
4928         sri d10, d12, #99
4929
4930 // CHECK-ERROR: error: expected integer in range [1, 64]
4931 // CHECK-ERROR:        sri d10, d12, #99
4932 // CHECK-ERROR:                      ^
4933
4934 //----------------------------------------------------------------------
4935 // Shift Left And Insert (Immediate)
4936 //----------------------------------------------------------------------
4937
4938         sli d10, d14, #99
4939
4940 // CHECK-ERROR: error: expected integer in range [0, 63]
4941 // CHECK-ERROR:        sli d10, d14, #99
4942 // CHECK-ERROR:                      ^
4943
4944 //----------------------------------------------------------------------
4945 // Signed Saturating Shift Right Narrow (Immediate)
4946 //----------------------------------------------------------------------
4947
4948         sqshrn b10, h15, #99
4949         sqshrn h17, s10, #99
4950         sqshrn s18, d10, #99
4951
4952 // CHECK-ERROR: error: expected integer in range [1, 8]
4953 // CHECK-ERROR:        sqshrn  b10, h15, #99
4954 // CHECK-ERROR:                          ^
4955 // CHECK-ERROR: error: expected integer in range [1, 16]
4956 // CHECK-ERROR:        sqshrn  h17, s10, #99
4957 // CHECK-ERROR:                          ^
4958 // CHECK-ERROR: error: expected integer in range [1, 32]
4959 // CHECK-ERROR:        sqshrn  s18, d10, #99
4960 // CHECK-ERROR:                          ^
4961         
4962 //----------------------------------------------------------------------
4963 // Unsigned Saturating Shift Right Narrow (Immediate)
4964 //----------------------------------------------------------------------
4965
4966         uqshrn b12, h10, #99
4967         uqshrn h10, s14, #99
4968         uqshrn s10, d12, #99
4969
4970 // CHECK-ERROR: error: expected integer in range [1, 8]
4971 // CHECK-ERROR:        uqshrn  b12, h10, #99
4972 // CHECK-ERROR:                          ^
4973 // CHECK-ERROR: error: expected integer in range [1, 16]
4974 // CHECK-ERROR:        uqshrn  h10, s14, #99
4975 // CHECK-ERROR:                          ^
4976 // CHECK-ERROR: error: expected integer in range [1, 32]
4977 // CHECK-ERROR:        uqshrn  s10, d12, #99
4978 // CHECK-ERROR:                          ^
4979         
4980 //----------------------------------------------------------------------
4981 // Signed Saturating Rounded Shift Right Narrow (Immediate)
4982 //----------------------------------------------------------------------
4983
4984         sqrshrn b10, h13, #99
4985         sqrshrn h15, s10, #99
4986         sqrshrn s15, d12, #99
4987
4988 // CHECK-ERROR: error: expected integer in range [1, 8]
4989 // CHECK-ERROR:        sqrshrn b10, h13, #99
4990 // CHECK-ERROR:                          ^
4991 // CHECK-ERROR: error: expected integer in range [1, 16]
4992 // CHECK-ERROR:        sqrshrn h15, s10, #99
4993 // CHECK-ERROR:                          ^
4994 // CHECK-ERROR: error: expected integer in range [1, 32]
4995 // CHECK-ERROR:        sqrshrn s15, d12, #99
4996 // CHECK-ERROR:                          ^
4997         
4998 //----------------------------------------------------------------------
4999 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5000 //----------------------------------------------------------------------
5001
5002         uqrshrn b10, h12, #99
5003         uqrshrn h12, s10, #99
5004         uqrshrn s10, d10, #99
5005
5006 // CHECK-ERROR: error: expected integer in range [1, 8]
5007 // CHECK-ERROR:        uqrshrn b10, h12, #99
5008 // CHECK-ERROR:                          ^
5009 // CHECK-ERROR: error: expected integer in range [1, 16]
5010 // CHECK-ERROR:        uqrshrn h12, s10, #99
5011 // CHECK-ERROR:                          ^
5012 // CHECK-ERROR: error: expected integer in range [1, 32]
5013 // CHECK-ERROR:        uqrshrn s10, d10, #99
5014 // CHECK-ERROR:                          ^
5015
5016 //----------------------------------------------------------------------
5017 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5018 //----------------------------------------------------------------------
5019
5020         sqshrun b15, h10, #99
5021         sqshrun h20, s14, #99
5022         sqshrun s10, d15, #99
5023
5024 // CHECK-ERROR: error: expected integer in range [1, 8]
5025 // CHECK-ERROR:        sqshrun b15, h10, #99
5026 // CHECK-ERROR:                          ^
5027 // CHECK-ERROR: error: expected integer in range [1, 16]
5028 // CHECK-ERROR:        sqshrun h20, s14, #99
5029 // CHECK-ERROR:                          ^
5030 // CHECK-ERROR: error: expected integer in range [1, 32]
5031 // CHECK-ERROR:        sqshrun s10, d15, #99
5032 // CHECK-ERROR:                          ^
5033
5034 //----------------------------------------------------------------------
5035 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5036 //----------------------------------------------------------------------
5037
5038         sqrshrun b17, h10, #99
5039         sqrshrun h10, s13, #99
5040         sqrshrun s22, d16, #99
5041
5042 // CHECK-ERROR: error: expected integer in range [1, 8]
5043 // CHECK-ERROR:        sqrshrun b17, h10, #99
5044 // CHECK-ERROR:                           ^
5045 // CHECK-ERROR: error: expected integer in range [1, 16]
5046 // CHECK-ERROR:        sqrshrun h10, s13, #99
5047 // CHECK-ERROR:                           ^
5048 // CHECK-ERROR: error: expected integer in range [1, 32]
5049 // CHECK-ERROR:        sqrshrun s22, d16, #99
5050 // CHECK-ERROR:                           ^
5051
5052 //----------------------------------------------------------------------
5053 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5054 //----------------------------------------------------------------------
5055
5056     scvtf s22, s13, #0
5057     scvtf s22, s13, #33
5058     scvtf d21, d12, #65
5059     scvtf d21, s12, #31
5060         
5061 // CHECK-ERROR: error: expected integer in range [1, 32]
5062 // CHECK-ERROR:        scvtf s22, s13, #0
5063 // CHECK-ERROR:                        ^
5064 // CHECK-ERROR: error: expected integer in range [1, 32]
5065 // CHECK-ERROR:        scvtf s22, s13, #33
5066 // CHECK-ERROR:                        ^
5067 // CHECK-ERROR: error: expected integer in range [1, 64]
5068 // CHECK-ERROR:        scvtf d21, d12, #65
5069 // CHECK-ERROR:                        ^
5070 // CHECK-ERROR: error: invalid operand for instruction
5071 // CHECK-ERROR:        scvtf d21, s12, #31
5072 // CHECK-ERROR:                   ^
5073
5074 //----------------------------------------------------------------------
5075 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5076 //----------------------------------------------------------------------
5077
5078     ucvtf s22, s13, #34
5079     ucvtf d21, d14, #65
5080     ucvtf d21, s14, #64
5081         
5082 // CHECK-ERROR: error: expected integer in range [1, 32]
5083 // CHECK-ERROR:        ucvtf s22, s13, #34
5084 // CHECK-ERROR:                        ^
5085 // CHECK-ERROR: error: expected integer in range [1, 64]
5086 // CHECK-ERROR:        ucvtf d21, d14, #65
5087 // CHECK-ERROR:                        ^
5088 // CHECK-ERROR: error: invalid operand for instruction
5089 // CHECK-ERROR:        ucvtf d21, s14, #64
5090 // CHECK-ERROR:                   ^
5091
5092 //----------------------------------------------------------------------
5093 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
5094 //----------------------------------------------------------------------
5095
5096     fcvtzs s21, s12, #0
5097     fcvtzs d21, d12, #65
5098     fcvtzs s21, d12, #1
5099
5100 // CHECK-ERROR: error: expected integer in range [1, 32]
5101 // CHECK-ERROR:        fcvtzs s21, s12, #0
5102 // CHECK-ERROR:                         ^
5103 // CHECK-ERROR: error: expected integer in range [1, 64]
5104 // CHECK-ERROR:        fcvtzs d21, d12, #65
5105 // CHECK-ERROR:                         ^
5106 // CHECK-ERROR: error: invalid operand for instruction
5107 // CHECK-ERROR:        fcvtzs s21, d12, #1
5108 // CHECK-ERROR:                    ^
5109
5110 //----------------------------------------------------------------------
5111 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
5112 //----------------------------------------------------------------------
5113
5114     fcvtzu s21, s12, #33
5115     fcvtzu d21, d12, #0
5116     fcvtzu s21, d12, #1
5117
5118 // CHECK-ERROR: error: expected integer in range [1, 32]
5119 // CHECK-ERROR:        fcvtzu s21, s12, #33
5120 // CHECK-ERROR:                         ^
5121 // CHECK-ERROR: error: expected integer in range [1, 64]
5122 // CHECK-ERROR:        fcvtzu d21, d12, #0
5123 // CHECK-ERROR:                         ^
5124 // CHECK-ERROR: error: invalid operand for instruction
5125 // CHECK-ERROR:        fcvtzu s21, d12, #1
5126 // CHECK-ERROR:                    ^
5127
5128 //----------------------------------------------------------------------
5129 // Scalar Unsigned Saturating Extract Narrow
5130 //----------------------------------------------------------------------
5131
5132         aese v0.8h, v1.8h
5133         aese v0.4s, v1.4s
5134         aese v0.2d, v1.2d
5135         aesd v0.8h, v1.8h
5136         aesmc v0.8h, v1.8h
5137         aesimc v0.8h, v1.8h
5138
5139 // CHECK:  error: invalid operand for instruction
5140 // CHECK:         aese v0.8h, v1.8h
5141 // CHECK:                 ^
5142 // CHECK:  error: invalid operand for instruction
5143 // CHECK:         aese v0.4s, v1.4s
5144 // CHECK:                 ^
5145 // CHECK:  error: invalid operand for instruction
5146 // CHECK:         aese v0.2d, v1.2d
5147 // CHECK:                 ^
5148 // CHECK:  error: invalid operand for instruction
5149 // CHECK:         aesd v0.8h, v1.8h
5150 // CHECK:                 ^
5151 // CHECK:  error: invalid operand for instruction
5152 // CHECK:         aesmc v0.8h, v1.8h
5153 // CHECK:                  ^
5154 // CHECK:  error: invalid operand for instruction
5155 // CHECK:         aesimc v0.8h, v1.8h
5156 // CHECK:                   ^
5157
5158         sha1h b0, b1
5159         sha1h h0, h1
5160         sha1h d0, d1
5161         sha1h q0, q1
5162         sha1su1 v0.16b, v1.16b
5163         sha1su1 v0.8h, v1.8h
5164         sha1su1 v0.2d, v1.2d
5165         sha256su0 v0.16b, v1.16b
5166
5167 // CHECK:  error: invalid operand for instruction
5168 // CHECK:         sha1h b0, b1
5169 // CHECK:               ^
5170 // CHECK:  error: invalid operand for instruction
5171 // CHECK:         sha1h h0, h1
5172 // CHECK:               ^
5173 // CHECK:  error: invalid operand for instruction
5174 // CHECK:         sha1h d0, d1
5175 // CHECK:               ^
5176 // CHECK:  error: invalid operand for instruction
5177 // CHECK:         sha1h q0, q1
5178 // CHECK:               ^
5179 // CHECK:  error: invalid operand for instruction
5180 // CHECK:         sha1su1 v0.16b, v1.16b
5181 // CHECK:                    ^
5182 // CHECK:  error: invalid operand for instruction
5183 // CHECK:         sha1su1 v0.8h, v1.8h
5184 // CHECK:                    ^
5185 // CHECK:  error: invalid operand for instruction
5186 // CHECK:         sha1su1 v0.2d, v1.2d
5187 // CHECK:                    ^
5188 // CHECK:  error: invalid operand for instruction
5189 // CHECK:         sha256su0 v0.16b, v1.16b
5190 // CHECK:                      ^
5191
5192         sha1c q0, q1, v2.4s
5193         sha1p q0, q1, v2.4s
5194         sha1m q0, q1, v2.4s
5195         sha1su0 v0.16b, v1.16b, v2.16b
5196         sha1su0 v0.8h, v1.8h, v2.8h
5197         sha1su0 v0.2d, v1.2d, v2.2d
5198         sha256h q0, q1, q2
5199         sha256h v0.4s, v1.4s, v2.4s
5200         sha256h2 q0, q1, q2
5201         sha256su1 v0.16b, v1.16b, v2.16b
5202
5203 // CHECK:  error: invalid operand for instruction
5204 // CHECK:         sha1c q0, q1, v2.4s
5205 // CHECK:                   ^
5206 // CHECK:  error: invalid operand for instruction
5207 // CHECK:         sha1p q0, q1, v2.4s
5208 // CHECK:                   ^
5209 // CHECK:  error: invalid operand for instruction
5210 // CHECK:         sha1m q0, q1, v2.4s
5211 // CHECK:                   ^
5212 // CHECK:  error: invalid operand for instruction
5213 // CHECK:         sha1su0 v0.16b, v1.16b, v2.16b
5214 // CHECK:                    ^
5215 // CHECK:  error: invalid operand for instruction
5216 // CHECK:         sha1su0 v0.8h, v1.8h, v2.8h
5217 // CHECK:                    ^
5218 // CHECK:  error: invalid operand for instruction
5219 // CHECK:         sha1su0 v0.2d, v1.2d, v2.2d
5220 // CHECK:                    ^
5221 // CHECK:  error: too few operands for instruction
5222 // CHECK:         sha256h q0, q1, q2
5223 // CHECK:         ^
5224 // CHECK:  error: invalid operand for instruction
5225 // CHECK:         sha256h v0.4s, v1.4s, v2.4s
5226 // CHECK:                    ^
5227 // CHECK:  error: too few operands for instruction
5228 // CHECK:         sha256h2 q0, q1, q2
5229 // CHECK:         ^
5230 // CHECK:  error: invalid operand for instruction
5231 // CHECK:         sha256su1 v0.16b, v1.16b, v2.16b
5232 // CHECK:                      ^
5233
5234 //----------------------------------------------------------------------
5235 // Bitwise extract
5236 //----------------------------------------------------------------------
5237
5238         ext v0.8b, v1.8b, v2.4h, #0x3
5239         ext v0.4h, v1.4h, v2.4h, #0x3
5240         ext v0.2s, v1.2s, v2.2s, #0x1
5241         ext v0.1d, v1.1d, v2.1d, #0x0
5242
5243 // CHECK-ERROR: error: invalid operand for instruction
5244 // CHECK-ERROR:         ext v0.8b, v1.8b, v2.4h, #0x3
5245 // CHECK-ERROR:                              ^
5246 // CHECK-ERROR: error: invalid operand for instruction
5247 // CHECK-ERROR:         ext v0.4h, v1.4h, v2.4h, #0x3
5248 // CHECK-ERROR:                ^
5249 // CHECK-ERROR: error: invalid operand for instruction
5250 // CHECK-ERROR:         ext v0.2s, v1.2s, v2.2s, #0x1
5251 // CHECK-ERROR:                ^
5252 // CHECK-ERROR: error: invalid operand for instruction
5253 // CHECK-ERROR:         ext v0.1d, v1.1d, v2.1d, #0x0
5254 // CHECK-ERROR:                ^
5255
5256         ext v0.16b, v1.16b, v2.8h, #0x3
5257         ext v0.8h, v1.8h, v2.8h, #0x3
5258         ext v0.4s, v1.4s, v2.4s, #0x1
5259         ext v0.2d, v1.2d, v2.2d, #0x0
5260
5261 // CHECK-ERROR: error: invalid operand for instruction
5262 // CHECK-ERROR:         ext v0.16b, v1.16b, v2.8h, #0x3
5263 // CHECK-ERROR:                                ^
5264 // CHECK-ERROR: error: invalid operand for instruction
5265 // CHECK-ERROR:         ext v0.8h, v1.8h, v2.8h, #0x3
5266 // CHECK-ERROR:                ^
5267 // CHECK-ERROR: error: invalid operand for instruction
5268 // CHECK-ERROR:         ext v0.4s, v1.4s, v2.4s, #0x1
5269 // CHECK-ERROR:                ^
5270 // CHECK-ERROR: error: invalid operand for instruction
5271 // CHECK-ERROR:         ext v0.2d, v1.2d, v2.2d, #0x0
5272 // CHECK-ERROR:                ^
5273
5274
5275 //----------------------------------------------------------------------
5276 // Permutation with 3 vectors
5277 //----------------------------------------------------------------------
5278
5279         uzp1 v0.16b, v1.8b, v2.8b
5280         uzp1 v0.8b, v1.4b, v2.4b
5281         uzp1 v0.8h, v1.4h, v2.4h
5282         uzp1 v0.4h, v1.2h, v2.2h
5283         uzp1 v0.4s, v1.2s, v2.2s
5284         uzp1 v0.2s, v1.1s, v2.1s
5285         uzp1 v0.2d, v1.1d, v2.1d
5286         uzp1 v0.1d, v1.1d, v2.1d
5287
5288 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
5289 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
5290 // CHECK-ERROR                      ^
5291 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
5292 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
5293 // CHECK-ERROR                     ^
5294 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
5295 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
5296 // CHECK-ERROR                     ^
5297 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
5298 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
5299 // CHECK-ERROR                     ^
5300 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
5301 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
5302 // CHECK-ERROR                     ^
5303 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
5304 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
5305 // CHECK-ERROR                     ^
5306 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
5307 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
5308 // CHECK-ERROR                     ^
5309 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
5310 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
5311 // CHECK-ERROR                 ^
5312
5313         uzp2 v0.16b, v1.8b, v2.8b
5314         uzp2 v0.8b, v1.4b, v2.4b
5315         uzp2 v0.8h, v1.4h, v2.4h
5316         uzp2 v0.4h, v1.2h, v2.2h
5317         uzp2 v0.4s, v1.2s, v2.2s
5318         uzp2 v0.2s, v1.1s, v2.1s
5319         uzp2 v0.2d, v1.1d, v2.1d
5320         uzp2 v0.1d, v1.1d, v2.1d
5321
5322 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
5323 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
5324 // CHECK-ERROR                      ^
5325 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
5326 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
5327 // CHECK-ERROR                     ^
5328 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
5329 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
5330 // CHECK-ERROR                     ^
5331 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
5332 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
5333 // CHECK-ERROR                     ^
5334 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
5335 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
5336 // CHECK-ERROR                     ^
5337 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
5338 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
5339 // CHECK-ERROR                     ^
5340 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
5341 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
5342 // CHECK-ERROR                     ^
5343 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
5344 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
5345 // CHECK-ERROR                 ^
5346
5347         zip1 v0.16b, v1.8b, v2.8b
5348         zip1 v0.8b, v1.4b, v2.4b
5349         zip1 v0.8h, v1.4h, v2.4h
5350         zip1 v0.4h, v1.2h, v2.2h
5351         zip1 v0.4s, v1.2s, v2.2s
5352         zip1 v0.2s, v1.1s, v2.1s
5353         zip1 v0.2d, v1.1d, v2.1d
5354         zip1 v0.1d, v1.1d, v2.1d
5355
5356 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
5357 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
5358 // CHECK-ERROR                      ^
5359 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
5360 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
5361 // CHECK-ERROR                     ^
5362 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
5363 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
5364 // CHECK-ERROR                     ^
5365 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
5366 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
5367 // CHECK-ERROR                     ^
5368 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
5369 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
5370 // CHECK-ERROR                     ^
5371 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
5372 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
5373 // CHECK-ERROR                     ^
5374 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
5375 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
5376 // CHECK-ERROR                     ^
5377 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
5378 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
5379 // CHECK-ERROR                 ^
5380
5381         zip2 v0.16b, v1.8b, v2.8b
5382         zip2 v0.8b, v1.4b, v2.4b
5383         zip2 v0.8h, v1.4h, v2.4h
5384         zip2 v0.4h, v1.2h, v2.2h
5385         zip2 v0.4s, v1.2s, v2.2s
5386         zip2 v0.2s, v1.1s, v2.1s
5387         zip2 v0.2d, v1.1d, v2.1d
5388         zip2 v0.1d, v1.1d, v2.1d
5389
5390 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
5391 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
5392 // CHECK-ERROR                      ^
5393 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
5394 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
5395 // CHECK-ERROR                     ^
5396 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
5397 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
5398 // CHECK-ERROR                     ^
5399 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
5400 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
5401 // CHECK-ERROR                     ^
5402 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
5403 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
5404 // CHECK-ERROR                     ^
5405 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
5406 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
5407 // CHECK-ERROR                     ^
5408 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
5409 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
5410 // CHECK-ERROR                     ^
5411 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
5412 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
5413 // CHECK-ERROR                 ^
5414
5415         trn1 v0.16b, v1.8b, v2.8b
5416         trn1 v0.8b, v1.4b, v2.4b
5417         trn1 v0.8h, v1.4h, v2.4h
5418         trn1 v0.4h, v1.2h, v2.2h
5419         trn1 v0.4s, v1.2s, v2.2s
5420         trn1 v0.2s, v1.1s, v2.1s
5421         trn1 v0.2d, v1.1d, v2.1d
5422         trn1 v0.1d, v1.1d, v2.1d
5423
5424 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
5425 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
5426 // CHECK-ERROR                      ^
5427 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
5428 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
5429 // CHECK-ERROR                     ^
5430 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
5431 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
5432 // CHECK-ERROR                     ^
5433 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
5434 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
5435 // CHECK-ERROR                     ^
5436 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
5437 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
5438 // CHECK-ERROR                     ^
5439 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
5440 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
5441 // CHECK-ERROR                     ^
5442 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
5443 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
5444 // CHECK-ERROR                     ^
5445 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
5446 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
5447 // CHECK-ERROR                 ^
5448
5449         trn2 v0.16b, v1.8b, v2.8b
5450         trn2 v0.8b, v1.4b, v2.4b
5451         trn2 v0.8h, v1.4h, v2.4h
5452         trn2 v0.4h, v1.2h, v2.2h
5453         trn2 v0.4s, v1.2s, v2.2s
5454         trn2 v0.2s, v1.1s, v2.1s
5455         trn2 v0.2d, v1.1d, v2.1d
5456         trn2 v0.1d, v1.1d, v2.1d
5457
5458 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
5459 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
5460 // CHECK-ERROR                      ^
5461 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
5462 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
5463 // CHECK-ERROR                     ^
5464 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
5465 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
5466 // CHECK-ERROR                     ^
5467 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
5468 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
5469 // CHECK-ERROR                     ^
5470 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
5471 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
5472 // CHECK-ERROR                     ^
5473 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
5474 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
5475 // CHECK-ERROR                     ^
5476 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
5477 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
5478 // CHECK-ERROR                     ^
5479 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
5480 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
5481 // CHECK-ERROR                 ^
5482
5483 //----------------------------------------------------------------------
5484 // Permutation with 3 vectors
5485 //----------------------------------------------------------------------
5486
5487         uzp1 v0.16b, v1.8b, v2.8b
5488         uzp1 v0.8b, v1.4b, v2.4b
5489         uzp1 v0.8h, v1.4h, v2.4h
5490         uzp1 v0.4h, v1.2h, v2.2h
5491         uzp1 v0.4s, v1.2s, v2.2s
5492         uzp1 v0.2s, v1.1s, v2.1s
5493         uzp1 v0.2d, v1.1d, v2.1d
5494         uzp1 v0.1d, v1.1d, v2.1d
5495
5496 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
5497 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
5498 // CHECK-ERROR                      ^
5499 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
5500 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
5501 // CHECK-ERROR                     ^
5502 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
5503 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
5504 // CHECK-ERROR                     ^
5505 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
5506 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
5507 // CHECK-ERROR                     ^
5508 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
5509 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
5510 // CHECK-ERROR                     ^
5511 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
5512 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
5513 // CHECK-ERROR                     ^
5514 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
5515 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
5516 // CHECK-ERROR                     ^
5517 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
5518 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
5519 // CHECK-ERROR                 ^
5520
5521         uzp2 v0.16b, v1.8b, v2.8b
5522         uzp2 v0.8b, v1.4b, v2.4b
5523         uzp2 v0.8h, v1.4h, v2.4h
5524         uzp2 v0.4h, v1.2h, v2.2h
5525         uzp2 v0.4s, v1.2s, v2.2s
5526         uzp2 v0.2s, v1.1s, v2.1s
5527         uzp2 v0.2d, v1.1d, v2.1d
5528         uzp2 v0.1d, v1.1d, v2.1d
5529
5530 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
5531 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
5532 // CHECK-ERROR                      ^
5533 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
5534 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
5535 // CHECK-ERROR                     ^
5536 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
5537 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
5538 // CHECK-ERROR                     ^
5539 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
5540 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
5541 // CHECK-ERROR                     ^
5542 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
5543 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
5544 // CHECK-ERROR                     ^
5545 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
5546 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
5547 // CHECK-ERROR                     ^
5548 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
5549 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
5550 // CHECK-ERROR                     ^
5551 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
5552 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
5553 // CHECK-ERROR                 ^
5554
5555         zip1 v0.16b, v1.8b, v2.8b
5556         zip1 v0.8b, v1.4b, v2.4b
5557         zip1 v0.8h, v1.4h, v2.4h
5558         zip1 v0.4h, v1.2h, v2.2h
5559         zip1 v0.4s, v1.2s, v2.2s
5560         zip1 v0.2s, v1.1s, v2.1s
5561         zip1 v0.2d, v1.1d, v2.1d
5562         zip1 v0.1d, v1.1d, v2.1d
5563
5564 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
5565 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
5566 // CHECK-ERROR                      ^
5567 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
5568 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
5569 // CHECK-ERROR                     ^
5570 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
5571 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
5572 // CHECK-ERROR                     ^
5573 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
5574 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
5575 // CHECK-ERROR                     ^
5576 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
5577 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
5578 // CHECK-ERROR                     ^
5579 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
5580 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
5581 // CHECK-ERROR                     ^
5582 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
5583 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
5584 // CHECK-ERROR                     ^
5585 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
5586 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
5587 // CHECK-ERROR                 ^
5588
5589         zip2 v0.16b, v1.8b, v2.8b
5590         zip2 v0.8b, v1.4b, v2.4b
5591         zip2 v0.8h, v1.4h, v2.4h
5592         zip2 v0.4h, v1.2h, v2.2h
5593         zip2 v0.4s, v1.2s, v2.2s
5594         zip2 v0.2s, v1.1s, v2.1s
5595         zip2 v0.2d, v1.1d, v2.1d
5596         zip2 v0.1d, v1.1d, v2.1d
5597
5598 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
5599 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
5600 // CHECK-ERROR                      ^
5601 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
5602 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
5603 // CHECK-ERROR                     ^
5604 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
5605 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
5606 // CHECK-ERROR                     ^
5607 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
5608 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
5609 // CHECK-ERROR                     ^
5610 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
5611 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
5612 // CHECK-ERROR                     ^
5613 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
5614 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
5615 // CHECK-ERROR                     ^
5616 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
5617 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
5618 // CHECK-ERROR                     ^
5619 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
5620 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
5621 // CHECK-ERROR                 ^
5622
5623         trn1 v0.16b, v1.8b, v2.8b
5624         trn1 v0.8b, v1.4b, v2.4b
5625         trn1 v0.8h, v1.4h, v2.4h
5626         trn1 v0.4h, v1.2h, v2.2h
5627         trn1 v0.4s, v1.2s, v2.2s
5628         trn1 v0.2s, v1.1s, v2.1s
5629         trn1 v0.2d, v1.1d, v2.1d
5630         trn1 v0.1d, v1.1d, v2.1d
5631
5632 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
5633 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
5634 // CHECK-ERROR                      ^
5635 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
5636 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
5637 // CHECK-ERROR                     ^
5638 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
5639 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
5640 // CHECK-ERROR                     ^
5641 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
5642 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
5643 // CHECK-ERROR                     ^
5644 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
5645 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
5646 // CHECK-ERROR                     ^
5647 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
5648 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
5649 // CHECK-ERROR                     ^
5650 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
5651 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
5652 // CHECK-ERROR                     ^
5653 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
5654 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
5655 // CHECK-ERROR                 ^
5656
5657         trn2 v0.16b, v1.8b, v2.8b
5658         trn2 v0.8b, v1.4b, v2.4b
5659         trn2 v0.8h, v1.4h, v2.4h
5660         trn2 v0.4h, v1.2h, v2.2h
5661         trn2 v0.4s, v1.2s, v2.2s
5662         trn2 v0.2s, v1.1s, v2.1s
5663         trn2 v0.2d, v1.1d, v2.1d
5664         trn2 v0.1d, v1.1d, v2.1d
5665
5666 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
5667 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
5668 // CHECK-ERROR                      ^
5669 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
5670 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
5671 // CHECK-ERROR                     ^
5672 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
5673 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
5674 // CHECK-ERROR                     ^
5675 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
5676 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
5677 // CHECK-ERROR                     ^
5678 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
5679 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
5680 // CHECK-ERROR                     ^
5681 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
5682 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
5683 // CHECK-ERROR                     ^
5684 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
5685 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
5686 // CHECK-ERROR                     ^
5687 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
5688 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
5689 // CHECK-ERROR                 ^