[ARM64] Port basic-a64-diagnostics.s over to ARM64
[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 --check-prefix=CHECK-AARCH64-ERROR < %t %s
3
4 // RUN: not llvm-mc -triple arm64-none-linux-gnu -mattr=+neon < %s 2> %t
5 // RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ARM64-ERROR < %t %s
6
7 //------------------------------------------------------------------------------
8 // Vector Integer Add/sub
9 //------------------------------------------------------------------------------
10
11         // Mismatched vector types
12         add v0.16b, v1.8b, v2.8b
13         sub v0.2d, v1.2d, v2.2s
14
15 // CHECK-ERROR: error: invalid operand for instruction
16 // CHECK-ERROR:         add v0.16b, v1.8b, v2.8b
17 // CHECK-ERROR:                        ^
18 // CHECK-ERROR: error: invalid operand for instruction
19 // CHECK-ERROR:         sub v0.2d, v1.2d, v2.2s
20 // CHECK-ERROR:                              ^
21
22 //------------------------------------------------------------------------------
23 // Vector Floating-Point Add/sub
24 //------------------------------------------------------------------------------
25
26         // Mismatched and invalid vector types
27         fadd v0.2d, v1.2s, v2.2s
28         fsub v0.4s, v1.2s, v2.4s
29         fsub v0.8b, v1.8b, v2.8b
30
31 // CHECK-ERROR: error: invalid operand for instruction
32 // CHECK-ERROR:         fadd v0.2d, v1.2s, v2.2s
33 // CHECK-ERROR:                        ^
34 // CHECK-ERROR: error: invalid operand for instruction
35 // CHECK-ERROR:         fsub v0.4s, v1.2s, v2.4s
36 // CHECK-ERROR:                        ^
37 // CHECK-ERROR: error: invalid operand for instruction
38 // CHECK-ERROR:         fsub v0.8b, v1.8b, v2.8b
39 // CHECK-ERROR:                  ^
40
41 //----------------------------------------------------------------------
42 // Vector Integer Mul
43 //----------------------------------------------------------------------
44
45         // Mismatched and invalid vector types
46         mul v0.16b, v1.8b, v2.8b
47         mul v0.2d, v1.2d, v2.2d
48
49 // CHECK-ERROR: error: invalid operand for instruction
50 // CHECK-ERROR:         mul v0.16b, v1.8b, v2.8b
51 // CHECK-ERROR:                        ^
52 // CHECK-ERROR: error: invalid operand for instruction
53 // CHECK-ERROR:         mul v0.2d, v1.2d, v2.2d
54 // CHECK-ERROR:                ^
55
56 //----------------------------------------------------------------------
57 // Vector Floating-Point Mul/Div
58 //----------------------------------------------------------------------
59         // Mismatched vector types
60         fmul v0.16b, v1.8b, v2.8b
61         fdiv v0.2s, v1.2d, v2.2d
62
63 // CHECK-ERROR: error: invalid operand for instruction
64 // CHECK-ERROR:         fmul v0.16b, v1.8b, v2.8b
65 // CHECK-ERROR:                         ^
66 // CHECK-ERROR: error: invalid operand for instruction
67 // CHECK-ERROR:         fdiv v0.2s, v1.2d, v2.2d
68 // CHECK-ERROR:                        ^
69
70 //----------------------------------------------------------------------
71 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
72 //----------------------------------------------------------------------
73         // Mismatched and invalid vector types
74         and v0.8b, v1.16b, v2.8b
75         orr v0.4h, v1.4h, v2.4h
76         eor v0.2s, v1.2s, v2.2s
77         bsl v0.8b, v1.16b, v2.8b
78         bsl v0.2s, v1.2s, v2.2s
79         bit v0.2d, v1.2d, v2.2d
80         bif v0.4h, v1.4h, v2.4h
81         orn v0.8b, v1.16b, v2.16b
82         bic v0.2d, v1.2d, v2.2d
83
84 // CHECK-ERROR: error: invalid operand for instruction
85 // CHECK-ERROR:         and v0.8b, v1.16b, v2.8b
86 // CHECK-ERROR:                       ^
87 // CHECK-ERROR: error: invalid operand for instruction
88 // CHECK-ERROR:         orr v0.4h, v1.4h, v2.4h
89 // CHECK-ERROR:                ^
90 // CHECK-ERROR: error: invalid operand for instruction
91 // CHECK-ERROR:         eor v0.2s, v1.2s, v2.2s
92 // CHECK-ERROR:                ^
93 // CHECK-ERROR: error: invalid operand for instruction
94 // CHECK-ERROR:         bsl v0.8b, v1.16b, v2.8b
95 // CHECK-ERROR:                       ^
96 // CHECK-ERROR: error: invalid operand for instruction
97 // CHECK-ERROR:         bsl v0.2s, v1.2s, v2.2s
98 // CHECK-ERROR:                ^
99 // CHECK-ERROR: error: invalid operand for instruction
100 // CHECK-ERROR:         bit v0.2d, v1.2d, v2.2d
101 // CHECK-ERROR:                ^
102 // CHECK-ERROR: error: invalid operand for instruction
103 // CHECK-ERROR:         bif v0.4h, v1.4h, v2.4h
104 // CHECK-ERROR:                ^
105 // CHECK-ERROR: error: invalid operand for instruction
106 // CHECK-ERROR:         orn v0.8b, v1.16b, v2.16b
107 // CHECK-ERROR:                        ^
108 // CHECK-ERROR: error: invalid operand for instruction
109 // CHECK-ERROR:         bic v0.2d, v1.2d, v2.2d
110 // CHECK-ERROR:                ^
111
112 //----------------------------------------------------------------------
113 // Vector Integer Multiply-accumulate and Multiply-subtract
114 //----------------------------------------------------------------------
115
116         // Mismatched and invalid vector types
117         mla v0.16b, v1.8b, v2.8b
118         mls v0.2d, v1.2d, v2.2d
119
120 // CHECK-ERROR: error: invalid operand for instruction
121 // CHECK-ERROR:         mla v0.16b, v1.8b, v2.8b
122 // CHECK-ERROR:                        ^
123 // CHECK-ERROR: error: invalid operand for instruction
124 // CHECK-ERROR:         mls v0.2d, v1.2d, v2.2d
125 // CHECK-ERROR:                ^
126
127 //----------------------------------------------------------------------
128 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
129 //----------------------------------------------------------------------
130         // Mismatched vector types
131         fmla v0.2s, v1.2d, v2.2d
132         fmls v0.16b, v1.8b, v2.8b
133
134 // CHECK-ERROR: error: invalid operand for instruction
135 // CHECK-ERROR:         fmla v0.2s, v1.2d, v2.2d
136 // CHECK-ERROR:                        ^
137 // CHECK-ERROR: error: invalid operand for instruction
138 // CHECK-ERROR:         fmls v0.16b, v1.8b, v2.8b
139 // CHECK-ERROR:                         ^
140
141
142 //----------------------------------------------------------------------
143 // Vector Move Immediate Shifted
144 // Vector Move Inverted Immediate Shifted
145 // Vector Bitwise Bit Clear (AND NOT) - immediate
146 // Vector Bitwise OR - immedidate
147 //----------------------------------------------------------------------
148       // out of range immediate (0 to 0xff)
149       movi v0.2s, #-1
150       mvni v1.4s, #256
151       // out of range shift (0, 8, 16, 24 and 0, 8)
152       bic v15.4h, #1, lsl #7
153       orr v31.2s, #1, lsl #25
154       movi v5.4h, #10, lsl #16
155       // invalid vector type (2s, 4s, 4h, 8h)
156       movi v5.8b, #1, lsl #8
157
158 // CHECK-ERROR: error: invalid operand for instruction
159 // CHECK-ERROR:          movi v0.2s, #-1
160 // CHECK-ERROR:                      ^
161 // CHECK-ERROR: error: invalid operand for instruction
162 // CHECK-ERROR:         mvni v1.4s, #256
163 // CHECK-ERROR:                     ^
164 // CHECK-ERROR: error: invalid operand for instruction
165 // CHECK-ERROR:         bic v15.4h, #1, lsl #7
166 // CHECK-ERROR:                         ^
167 // CHECK-ERROR: error: invalid operand for instruction
168 // CHECK-ERROR:         orr v31.2s, #1, lsl #25
169 // CHECK-ERROR:                         ^
170 // CHECK-ERROR: error: invalid operand for instruction
171 // CHECK-ERROR:         movi v5.4h, #10, lsl #16
172 // CHECK-ERROR:                          ^
173 // CHECK-ERROR: error: invalid operand for instruction
174 // CHECK-ERROR:         movi v5.8b, #1, lsl #8
175 // CHECK-ERROR:                         ^
176 //----------------------------------------------------------------------
177 // Vector Move Immediate Masked
178 // Vector Move Inverted Immediate Masked
179 //----------------------------------------------------------------------
180       // out of range immediate (0 to 0xff)
181       movi v0.2s, #-1, msl #8
182       mvni v7.4s, #256, msl #16
183       // out of range shift (8, 16)
184       movi v3.2s, #1, msl #0
185       mvni v17.4s, #255, msl #32
186       // invalid vector type (2s, 4s)
187       movi v5.4h, #31, msl #8
188
189 // CHECK-ERROR: error: invalid operand for instruction
190 // CHECK-ERROR:         movi v0.2s, #-1, msl #8
191 // CHECK-ERROR:                     ^
192 // CHECK-ERROR: error: invalid operand for instruction
193 // CHECK-ERROR:         mvni v7.4s, #256, msl #16
194 // CHECK-ERROR:                     ^
195 // CHECK-ERROR: error: invalid operand for instruction
196 // CHECK-ERROR:         movi v3.2s, #1, msl #0
197 // CHECK-ERROR:                         ^
198 // CHECK-ERROR: error: invalid operand for instruction
199 // CHECK-ERROR:         mvni v17.4s, #255, msl #32
200 // CHECK-ERROR:                            ^
201 // CHECK-ERROR: error: invalid operand for instruction
202 // CHECK-ERROR:         movi v5.4h, #31, msl #8
203 // CHECK-ERROR:                          ^
204
205 //----------------------------------------------------------------------
206 // Vector Immediate - per byte
207 //----------------------------------------------------------------------
208         // out of range immediate (0 to 0xff)
209         movi v0.8b, #-1
210         movi v1.16b, #256
211
212 // CHECK-ERROR: error: invalid operand for instruction
213 // CHECK-ERROR:         movi v0.8b, #-1
214 // CHECK-ERROR:                     ^
215 // CHECK-ERROR: error: invalid operand for instruction
216 // CHECK-ERROR:         movi v1.16b, #256
217 // CHECK-ERROR:                      ^
218
219 //----------------------------------------------------------------------
220 // Scalar Floating-point Reciprocal Estimate
221 //----------------------------------------------------------------------
222
223     frecpe s19, h14
224     frecpe d13, s13
225
226 // CHECK-ERROR: error: invalid operand for instruction
227 // CHECK-ERROR:        frecpe s19, h14
228 // CHECK-ERROR:                    ^
229 // CHECK-ERROR: error: invalid operand for instruction
230 // CHECK-ERROR:        frecpe d13, s13
231 // CHECK-ERROR:                    ^
232
233 //----------------------------------------------------------------------
234 // Scalar Floating-point Reciprocal Exponent
235 //----------------------------------------------------------------------
236
237     frecpx s18, h10
238     frecpx d16, s19
239
240 // CHECK-ERROR: error: invalid operand for instruction
241 // CHECK-ERROR:        frecpx s18, h10
242 // CHECK-ERROR:                    ^
243 // CHECK-ERROR: error: invalid operand for instruction
244 // CHECK-ERROR:        frecpx d16, s19
245 // CHECK-ERROR:                    ^
246
247 //----------------------------------------------------------------------
248 // Scalar Floating-point Reciprocal Square Root Estimate
249 //----------------------------------------------------------------------
250
251     frsqrte s22, h13
252     frsqrte d21, s12
253
254 // CHECK-ERROR: error: invalid operand for instruction
255 // CHECK-ERROR:        frsqrte s22, h13
256 // CHECK-ERROR:                     ^
257 // CHECK-ERROR: error: invalid operand for instruction
258 // CHECK-ERROR:        frsqrte d21, s12
259 // CHECK-ERROR:                     ^
260
261 //----------------------------------------------------------------------
262 // Vector Move Immediate - bytemask, per doubleword
263 //---------------------------------------------------------------------
264         // invalid bytemask (0x00 or 0xff)
265         movi v0.2d, #0x10ff00ff00ff00ff
266
267 // CHECK:ERROR: error: invalid operand for instruction
268 // CHECK:ERROR:         movi v0.2d, #0x10ff00ff00ff00ff
269 // CHECK:ERROR:                     ^
270
271 //----------------------------------------------------------------------
272 // Vector Move Immediate - bytemask, one doubleword
273 //----------------------------------------------------------------------
274         // invalid bytemask (0x00 or 0xff)
275         movi v0.2d, #0xffff00ff001f00ff
276
277 // CHECK:ERROR: error: invalid operand for instruction
278 // CHECK:ERROR:         movi v0.2d, #0xffff00ff001f00ff
279 // CHECK:ERROR:                     ^
280 //----------------------------------------------------------------------
281 // Vector Floating Point Move Immediate
282 //----------------------------------------------------------------------
283         // invalid vector type (2s, 4s, 2d)
284          fmov v0.4h, #1.0
285
286 // CHECK:ERROR: error: invalid operand for instruction
287 // CHECK:ERROR:         fmov v0.4h, #1.0
288 // CHECK:ERROR:              ^
289
290 //----------------------------------------------------------------------
291 // Vector Move -  register
292 //----------------------------------------------------------------------
293       // invalid vector type (8b, 16b)
294       mov v0.2s, v31.8b
295 // CHECK:ERROR: error: invalid operand for instruction
296 // CHECK:ERROR:         mov v0.2s, v31.8b
297 // CHECK:ERROR:                ^
298
299 //----------------------------------------------------------------------
300 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
301 //----------------------------------------------------------------------
302
303         // Mismatched and invalid vector types (2d)
304         saba v0.16b, v1.8b, v2.8b
305         uaba v0.2d, v1.2d, v2.2d
306
307 // CHECK-ERROR: error: invalid operand for instruction
308 // CHECK-ERROR:         saba v0.16b, v1.8b, v2.8b
309 // CHECK-ERROR:                        ^
310 // CHECK-ERROR: error: invalid operand for instruction
311 // CHECK-ERROR:         uaba v0.2d, v1.2d, v2.2d
312 // CHECK-ERROR:                ^
313
314 //----------------------------------------------------------------------
315 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
316 // Vector Absolute Difference (Signed, Unsigned)
317
318         // Mismatched and invalid vector types (2d)
319         uaba v0.16b, v1.8b, v2.8b
320         saba v0.2d, v1.2d, v2.2d
321         uabd v0.4s, v1.2s, v2.2s
322         sabd v0.4h, v1.8h, v8.8h
323
324 // CHECK-ERROR: error: invalid operand for instruction
325 // CHECK-ERROR:         uaba v0.16b, v1.8b, v2.8b
326 // CHECK-ERROR:                        ^
327 // CHECK-ERROR: error: invalid operand for instruction
328 // CHECK-ERROR:         saba v0.2d, v1.2d, v2.2d
329 // CHECK-ERROR:                ^
330 // CHECK-ERROR: error: invalid operand for instruction
331 // CHECK-ERROR:         uabd v0.4s, v1.2s, v2.2s
332 // CHECK-ERROR:                        ^
333 // CHECK-ERROR: error: invalid operand for instruction
334 // CHECK-ERROR:         sabd v0.4h, v1.8h, v8.8h
335 // CHECK-ERROR:                        ^
336
337 //----------------------------------------------------------------------
338 // Vector Absolute Difference (Floating Point)
339 //----------------------------------------------------------------------
340         // Mismatched and invalid vector types
341         fabd v0.2s, v1.4s, v2.2d
342         fabd v0.4h, v1.4h, v2.4h
343
344 // CHECK-ERROR: error: invalid operand for instruction
345 // CHECK-ERROR:         fabd v0.2s, v1.4s, v2.2d
346 // CHECK-ERROR:                        ^
347 // CHECK-ERROR: error: invalid operand for instruction
348 // CHECK-ERROR:         fabd v0.4h, v1.4h, v2.4h
349 // CHECK-ERROR:                 ^
350 //----------------------------------------------------------------------
351 // Vector Multiply (Polynomial)
352 //----------------------------------------------------------------------
353
354         // Mismatched and invalid vector types
355          pmul v0.8b, v1.8b, v2.16b
356          pmul v0.2s, v1.2s, v2.2s
357
358 // CHECK-ERROR: error: invalid operand for instruction
359 // CHECK-ERROR:         pmul v0.8b, v1.8b, v2.16b
360 // CHECK-ERROR:                               ^
361 // CHECK-ERROR: error: invalid operand for instruction
362 // CHECK-ERROR:         pmul v0.2s, v1.2s, v2.2s
363 // CHECK-ERROR:                 ^
364
365 //----------------------------------------------------------------------
366 // Scalar Integer Add and Sub
367 //----------------------------------------------------------------------
368
369       // Mismatched registers
370          add d0, s1, d2
371          sub s1, d1, d2
372
373 // CHECK-ERROR: error: invalid operand for instruction
374 // CHECK-ERROR:         add d0, s1, d2
375 // CHECK-ERROR:                 ^
376 // CHECK-ERROR: error: invalid operand for instruction
377 // CHECK-ERROR:         sub s1, d1, d2
378 // CHECK-ERROR:             ^
379
380 //----------------------------------------------------------------------
381 // Vector Reciprocal Step (Floating Point)
382 //----------------------------------------------------------------------
383
384         // Mismatched and invalid vector types
385          frecps v0.4s, v1.2d, v2.4s
386          frecps v0.8h, v1.8h, v2.8h
387
388 // CHECK-ERROR: error: invalid operand for instruction
389 // CHECK-ERROR:        frecps v0.4s, v1.2d, v2.4s
390 // CHECK-ERROR:                         ^
391 // CHECK-ERROR: error: invalid operand for instruction
392 // CHECK-ERROR:        frecps v0.8h, v1.8h, v2.8h
393 // CHECK-ERROR:                  ^
394
395 //----------------------------------------------------------------------
396 // Vector Reciprocal Square Root Step (Floating Point)
397 //----------------------------------------------------------------------
398
399         // Mismatched and invalid vector types
400          frsqrts v0.2d, v1.2d, v2.2s
401          frsqrts v0.4h, v1.4h, v2.4h
402
403 // CHECK-ERROR: error: invalid operand for instruction
404 // CHECK-ERROR:        frsqrts v0.2d, v1.2d, v2.2s
405 // CHECK-ERROR:                                 ^
406 // CHECK-ERROR: error: invalid operand for instruction
407 // CHECK-ERROR:        frsqrts v0.4h, v1.4h, v2.4h
408 // CHECK-ERROR:                   ^
409
410
411 //----------------------------------------------------------------------
412 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
413 //----------------------------------------------------------------------
414
415         // Mismatched and invalid vector types
416         facge v0.2d, v1.2s, v2.2d
417         facge v0.4h, v1.4h, v2.4h
418         facle v0.8h, v1.4h, v2.4h
419
420 // CHECK-ERROR: error: invalid operand for instruction
421 // CHECK-ERROR:        facge v0.2d, v1.2s, v2.2d
422 // CHECK-ERROR:                        ^
423 // CHECK-ERROR: error: invalid operand for instruction
424 // CHECK-ERROR:        facge v0.4h, v1.4h, v2.4h
425 // CHECK-ERROR:                 ^
426 // CHECK-ERROR: error: invalid operand for instruction
427 // CHECK-ERROR:        facle v0.8h, v1.4h, v2.4h
428 // CHECK-ERROR:                 ^
429 //----------------------------------------------------------------------
430 // Vector Absolute Compare Mask Less Than (Floating Point)
431 //----------------------------------------------------------------------
432
433         // Mismatched and invalid vector types
434         facgt v0.2d, v1.2d, v2.4s
435         facgt v0.8h, v1.8h, v2.8h
436         faclt v0.8b, v1.8b, v2.8b
437
438 // CHECK-ERROR: error: invalid operand for instruction
439 // CHECK-ERROR:        facgt v0.2d, v1.2d, v2.4s
440 // CHECK-ERROR:                               ^
441 // CHECK-ERROR: error: invalid operand for instruction
442 // CHECK-ERROR:        facgt v0.8h, v1.8h, v2.8h
443 // CHECK-ERROR:                 ^
444 // CHECK-ERROR: error: invalid operand for instruction
445 // CHECK-ERROR:        faclt v0.8b, v1.8b, v2.8b
446 // CHECK-ERROR:                 ^
447
448
449 //----------------------------------------------------------------------
450 // Vector Compare Mask Equal (Integer)
451 //----------------------------------------------------------------------
452
453          // Mismatched vector types
454          cmeq c0.2d, v1.2d, v2.2s
455
456 // CHECK-ERROR: error: invalid operand for instruction
457 // CHECK-ERROR:        cmeq c0.2d, v1.2d, v2.2s
458 // CHECK-ERROR:                              ^
459
460 //----------------------------------------------------------------------
461 // Vector Compare Mask Higher or Same (Unsigned Integer)
462 // Vector Compare Mask Less or Same (Unsigned Integer)
463 // CMLS is alias for CMHS with operands reversed.
464 //----------------------------------------------------------------------
465
466          // Mismatched vector types
467          cmhs c0.4h, v1.8b, v2.8b
468          cmls c0.16b, v1.16b, v2.2d
469
470 // CHECK-ERROR: error: invalid operand for instruction
471 // CHECK-ERROR:        cmhs c0.4h, v1.8b, v2.8b
472 // CHECK-ERROR:                       ^
473 // CHECK-ERROR: error: invalid operand for instruction
474 // CHECK-ERROR:        cmls c0.16b, v1.16b, v2.2d
475 // CHECK-ERROR:                                ^
476
477 //----------------------------------------------------------------------
478 // Vector Compare Mask Greater Than or Equal (Integer)
479 // Vector Compare Mask Less Than or Equal (Integer)
480 // CMLE is alias for CMGE with operands reversed.
481 //----------------------------------------------------------------------
482
483          // Mismatched vector types
484          cmge c0.8h, v1.8b, v2.8b
485          cmle c0.4h, v1.2s, v2.2s
486
487 // CHECK-ERROR: error: invalid operand for instruction
488 // CHECK-ERROR:        cmge c0.8h, v1.8b, v2.8b
489 // CHECK-ERROR:                       ^
490 // CHECK-ERROR: error: invalid operand for instruction
491 // CHECK-ERROR:         cmle c0.4h, v1.2s, v2.2s
492 // CHECK-ERROR:                        ^
493
494 //----------------------------------------------------------------------
495 // Vector Compare Mask Higher (Unsigned Integer)
496 // Vector Compare Mask Lower (Unsigned Integer)
497 // CMLO is alias for CMHI with operands reversed.
498 //----------------------------------------------------------------------
499
500          // Mismatched vector types
501          cmhi c0.4s, v1.4s, v2.16b
502          cmlo c0.8b, v1.8b, v2.2s
503
504 // CHECK-ERROR: error: invalid operand for instruction
505 // CHECK-ERROR:        cmhi c0.4s, v1.4s, v2.16b
506 // CHECK-ERROR:                              ^
507 // CHECK-ERROR: error: invalid operand for instruction
508 // CHECK-ERROR:         cmlo c0.8b, v1.8b, v2.2s
509 // CHECK-ERROR:                               ^
510
511 //----------------------------------------------------------------------
512 // Vector Compare Mask Greater Than (Integer)
513 // Vector Compare Mask Less Than (Integer)
514 // CMLT is alias for CMGT with operands reversed.
515 //----------------------------------------------------------------------
516
517          // Mismatched vector types
518          cmgt c0.8b, v1.4s, v2.16b
519          cmlt c0.8h, v1.16b, v2.4s
520
521 // CHECK-ERROR: error: invalid operand for instruction
522 // CHECK-ERROR:         cmgt c0.8b, v1.4s, v2.16b
523 // CHECK-ERROR:                        ^
524 // CHECK-ERROR: error: invalid operand for instruction
525 // CHECK-ERROR:         cmlt c0.8h, v1.16b, v2.4s
526 // CHECK-ERROR:                        ^
527
528 //----------------------------------------------------------------------
529 // Vector Compare Mask Bitwise Test (Integer)
530 //----------------------------------------------------------------------
531
532          // Mismatched vector types
533          cmtst c0.16b, v1.16b, v2.4s
534
535 // CHECK-ERROR: error: invalid operand for instruction
536 // CHECK-ERROR:         cmtst c0.16b, v1.16b, v2.4s
537 // CHECK-ERROR:                                  ^
538
539 //----------------------------------------------------------------------
540 // Vector Compare Mask Equal (Floating Point)
541 //----------------------------------------------------------------------
542
543         // Mismatched and invalid vector types
544         fcmeq v0.2d, v1.2s, v2.2d
545         fcmeq v0.16b, v1.16b, v2.16b
546         fcmeq v0.8b, v1.4h, v2.4h
547
548 // CHECK-ERROR: error: invalid operand for instruction
549 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, v2.2d
550 // CHECK-ERROR:                        ^
551 // CHECK-ERROR: error: invalid operand for instruction
552 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, v2.16b
553 // CHECK-ERROR:                 ^
554 // CHECK-ERROR: error: invalid operand for instruction
555 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, v2.4h
556 // CHECK-ERROR:                 ^
557
558 //----------------------------------------------------------------------
559 // Vector Compare Mask Greater Than Or Equal (Floating Point)
560 // Vector Compare Mask Less Than Or Equal (Floating Point)
561 // FCMLE is alias for FCMGE with operands reversed.
562 //----------------------------------------------------------------------
563
564         // Mismatched and invalid vector types
565          fcmge v31.4s, v29.2s, v28.4s
566          fcmge v3.8b, v8.2s, v12.2s
567          fcmle v17.8h, v15.2d, v13.2d
568
569 // CHECK-ERROR: error: invalid operand for instruction
570 // CHECK-ERROR:        fcmge v31.4s, v29.2s, v28.4s
571 // CHECK-ERROR:                          ^
572 // CHECK-ERROR: error: invalid operand for instruction
573 // CHECK-ERROR:        fcmge v3.8b, v8.2s, v12.2s
574 // CHECK-ERROR:                 ^
575 // CHECK-ERROR: error: invalid operand for instruction
576 // CHECK-ERROR:        fcmle v17.8h, v15.2d, v13.2d
577 // CHECK-ERROR:                 ^
578
579 //----------------------------------------------------------------------
580 // Vector Compare Mask Greater Than (Floating Point)
581 // Vector Compare Mask Less Than (Floating Point)
582 // FCMLT is alias for FCMGT with operands reversed.
583 //----------------------------------------------------------------------
584
585         // Mismatched and invalid vector types
586          fcmgt v0.2d, v31.2s, v16.2s
587          fcmgt v4.4s, v7.4s, v15.4h
588          fcmlt v29.2d, v5.2d, v2.16b
589
590 // CHECK-ERROR: error: invalid operand for instruction
591 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, v16.2s
592 // CHECK-ERROR:                         ^
593 // CHECK-AARCH64-ERROR: error: expected floating-point constant #0.0 or invalid register type
594 // CHECK-AARCH64-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
595 // CHECK-AARCH64-ERROR:                                ^
596 // CHECK-AARCH64-ERROR: error: expected floating-point constant #0.0 or invalid register type
597 // CHECK-AARCH64-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
598 // CHECK-AARCH64-ERROR:                                ^
599
600 // CHECK-ARM64-ERROR: error: invalid operand for instruction
601 // CHECK-ARM64-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
602 // CHECK-ARM64-ERROR:                                ^
603 // CHECK-ARM64-ERROR: error: invalid operand for instruction
604 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
605 // CHECK-ARM64-ERROR:                                ^
606
607 //----------------------------------------------------------------------
608 // Vector Compare Mask Equal to Zero (Integer)
609 //----------------------------------------------------------------------
610         // Mismatched vector types and invalid imm
611          // Mismatched vector types
612          cmeq c0.2d, v1.2s, #0
613          cmeq c0.2d, v1.2d, #1
614
615 // CHECK-ERROR: error: invalid operand for instruction
616 // CHECK-ERROR:        cmeq c0.2d, v1.2s, #0
617 // CHECK-ERROR:                       ^
618 // CHECK-ERROR: error: invalid operand for instruction
619 // CHECK-ERROR:        cmeq c0.2d, v1.2d, #1
620 // CHECK-ERROR:                            ^
621
622 //----------------------------------------------------------------------
623 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
624 //----------------------------------------------------------------------
625         // Mismatched vector types and invalid imm
626          cmge c0.8h, v1.8b, #0
627          cmge c0.4s, v1.4s, #-1
628
629 // CHECK-ERROR: error: invalid operand for instruction
630 // CHECK-ERROR:        cmge c0.8h, v1.8b, #0
631 // CHECK-ERROR:                       ^
632 // CHECK-ERROR: error: invalid operand for instruction
633 // CHECK-ERROR:         cmge c0.4s, v1.4s, #-1
634 // CHECK-ERROR:                             ^
635
636 //----------------------------------------------------------------------
637 // Vector Compare Mask Greater Than Zero (Signed Integer)
638 //----------------------------------------------------------------------
639         // Mismatched vector types and invalid imm
640          cmgt c0.8b, v1.4s, #0
641          cmgt c0.8b, v1.8b, #-255
642
643 // CHECK-ERROR: error: invalid operand for instruction
644 // CHECK-ERROR:         cmgt c0.8b, v1.4s, #0
645 // CHECK-ERROR:                        ^
646 // CHECK-ERROR: error: invalid operand for instruction
647 // CHECK-ERROR:         cmgt c0.8b, v1.8b, #-255
648 // CHECK-ERROR:                             ^
649
650 //----------------------------------------------------------------------
651 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
652 //----------------------------------------------------------------------
653         // Mismatched vector types and invalid imm
654          cmle c0.4h, v1.2s, #0
655          cmle c0.16b, v1.16b, #16
656
657 // CHECK-ERROR: error: invalid operand for instruction
658 // CHECK-ERROR:        cmle c0.4h, v1.2s, #0
659 // CHECK-ERROR:                       ^
660 // CHECK-ERROR: error: invalid operand for instruction
661 // CHECK-ERROR:         cmle c0.16b, v1.16b, #16
662 // CHECK-ERROR:                               ^
663 //----------------------------------------------------------------------
664 // Vector Compare Mask Less Than Zero (Signed Integer)
665 //----------------------------------------------------------------------
666         // Mismatched vector types and invalid imm
667          cmlt c0.8h, v1.16b, #0
668          cmlt c0.8h, v1.8h, #-15
669
670 // CHECK-ERROR: error: invalid operand for instruction
671 // CHECK-ERROR:         cmlt c0.8h, v1.16b, #0
672 // CHECK-ERROR:                        ^
673 // CHECK-ERROR: error: invalid operand for instruction
674 // CHECK-ERROR:         cmlt c0.8h, v1.8h, #-15
675 // CHECK-ERROR:                             ^
676
677 //----------------------------------------------------------------------
678 // Vector Compare Mask Equal to Zero (Floating Point)
679 //----------------------------------------------------------------------
680
681         // Mismatched and invalid vector types, invalid imm
682         fcmeq v0.2d, v1.2s, #0.0
683         fcmeq v0.16b, v1.16b, #0.0
684         fcmeq v0.8b, v1.4h, #1.0
685         fcmeq v0.8b, v1.4h, #1
686
687 // CHECK-ERROR: error: invalid operand for instruction
688 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, #0.0
689 // CHECK-ERROR:                        ^
690 // CHECK-ERROR: error: invalid operand for instruction
691 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, #0.0
692 // CHECK-ERROR:                 ^
693
694 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
695 // CHECK-AARCH64-ERROR:        fcmeq v0.8b, v1.4h, #1.0
696 // CHECK-AARCH64-ERROR:                             ^
697 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
698 // CHECK-AARCH64-ERROR:        fcmeq v0.8b, v1.4h, #1
699 // CHECK-AARCH64-ERROR:                             ^
700
701 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
702 // CHECK-ARM64-ERROR:        fcmeq v0.8b, v1.4h, #1.0
703 // CHECK-ARM64-ERROR:                             ^
704 // CHECK-ARM64-ERROR: error: invalid operand for instruction
705 // CHECK-ARM64-ERROR:        fcmeq v0.8b, v1.4h, #1
706 // CHECK-ARM64-ERROR:                             ^
707
708 //----------------------------------------------------------------------
709 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
710 //----------------------------------------------------------------------
711
712         // Mismatched and invalid vector types, invalid imm
713          fcmge v31.4s, v29.2s, #0.0
714          fcmge v3.8b, v8.2s, #0.0
715          fcmle v17.8h, v15.2d, #-1.0
716          fcmle v17.8h, v15.2d, #2
717
718 // CHECK-ERROR: error: invalid operand for instruction
719 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
720 // CHECK-ERROR:                          ^
721 // CHECK-ERROR: error: invalid operand for instruction
722 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
723 // CHECK-ERROR:                 ^
724
725 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
726 // CHECK-AARCH64-ERROR:        fcmle v17.8h, v15.2d, #-1.0
727 // CHECK-AARCH64-ERROR:                               ^
728 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
729 // CHECK-AARCH64-ERROR:        fcmle v17.8h, v15.2d, #2
730 // CHECK-AARCH64-ERROR:                               ^
731
732 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
733 // CHECK-ARM64-ERROR:        fcmle v17.8h, v15.2d, #-1.0
734 // CHECK-ARM64-ERROR:                               ^
735 // CHECK-ARM64-ERROR: error: invalid operand for instruction
736 // CHECK-ARM64-ERROR:        fcmle v17.8h, v15.2d, #2
737 // CHECK-ARM64-ERROR:                               ^
738
739 //----------------------------------------------------------------------
740 // Vector Compare Mask Greater Than Zero (Floating Point)
741 //----------------------------------------------------------------------
742         // Mismatched and invalid vector types, invalid imm
743          fcmgt v0.2d, v31.2s, #0.0
744          fcmgt v4.4s, v7.4h, #0.0
745          fcmlt v29.2d, v5.2d, #255.0
746          fcmlt v29.2d, v5.2d, #255
747
748 // CHECK-ERROR: error: invalid operand for instruction
749 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
750 // CHECK-ERROR:                         ^
751 // CHECK-ERROR: error: invalid operand for instruction
752 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
753 // CHECK-ERROR:                        ^
754
755 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
756 // CHECK-AARCH64-ERROR:        fcmlt v29.2d, v5.2d, #255.0
757 // CHECK-AARCH64-ERROR:                              ^
758 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
759 // CHECK-AARCH64-ERROR:        fcmlt v29.2d, v5.2d, #255
760 // CHECK-AARCH64-ERROR:                              ^
761
762 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
763 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #255.0
764 // CHECK-ARM64-ERROR:                              ^
765 // CHECK-ARM64-ERROR: error: invalid operand for instruction
766 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #255
767 // CHECK-ARM64-ERROR:                              ^
768
769 //----------------------------------------------------------------------
770 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
771 //----------------------------------------------------------------------
772         // Mismatched and invalid vector types, invalid imm
773          fcmge v31.4s, v29.2s, #0.0
774          fcmge v3.8b, v8.2s, #0.0
775          fcmle v17.2d, v15.2d, #15.0
776          fcmle v17.2d, v15.2d, #15
777
778 // CHECK-ERROR: error: invalid operand for instruction
779 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
780 // CHECK-ERROR:                          ^
781 // CHECK-ERROR: error: invalid operand for instruction
782 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
783 // CHECK-ERROR:                 ^
784
785 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
786 // CHECK-AARCH64-ERROR:        fcmle v17.2d, v15.2d, #15.0
787 // CHECK-AARCH64-ERROR:                               ^
788 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
789 // CHECK-AARCH64-ERROR:        fcmle v17.2d, v15.2d, #15
790 // CHECK-AARCH64-ERROR:                              ^
791
792 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
793 // CHECK-ARM64-ERROR:        fcmle v17.2d, v15.2d, #15.0
794 // CHECK-ARM64-ERROR:                               ^
795 // CHECK-ARM64-ERROR: error: invalid operand for instruction
796 // CHECK-ARM64-ERROR:        fcmle v17.2d, v15.2d, #15
797 // CHECK-ARM64-ERROR:                              ^
798
799 //----------------------------------------------------------------------
800 // Vector Compare Mask Less Than Zero (Floating Point)
801 //----------------------------------------------------------------------
802         // Mismatched and invalid vector types, invalid imm
803          fcmgt v0.2d, v31.2s, #0.0
804          fcmgt v4.4s, v7.4h, #0.0
805          fcmlt v29.2d, v5.2d, #16.0
806          fcmlt v29.2d, v5.2d, #2
807
808 // CHECK-ERROR: error: invalid operand for instruction
809 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
810 // CHECK-ERROR:                         ^
811 // CHECK-ERROR: error: invalid operand for instruction
812 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
813 // CHECK-ERROR:                        ^
814
815 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
816 // CHECK-AARCH64-ERROR:        fcmlt v29.2d, v5.2d, #16.0
817 // CHECK-AARCH64-ERROR:                              ^
818 // CHECK-AARCH64-ERROR: error: only #0.0 is acceptable as immediate
819 // CHECK-AARCH64-ERROR:        fcmlt v29.2d, v5.2d, #2
820 // CHECK-AARCH64-ERROR:                              ^
821
822 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
823 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #16.0
824 // CHECK-ARM64-ERROR:                              ^
825 // CHECK-ARM64-ERROR: error: invalid operand for instruction
826 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #2
827 // CHECK-ARM64-ERROR:                              ^
828
829 /-----------------------------------------------------------------------
830 // Vector Integer Halving Add (Signed)
831 // Vector Integer Halving Add (Unsigned)
832 // Vector Integer Halving Sub (Signed)
833 // Vector Integer Halving Sub (Unsigned)
834 //----------------------------------------------------------------------
835         // Mismatched and invalid vector types (2d)
836         shadd v0.2d, v1.2d, v2.2d
837         uhadd v4.2s, v5.2s, v5.4h
838         shsub v11.4h, v12.8h, v13.4h
839         uhsub v31.16b, v29.8b, v28.8b
840
841 // CHECK-ERROR: error: invalid operand for instruction
842 // CHECK-ERROR:        shadd v0.2d, v1.2d, v2.2d
843 // CHECK-ERROR:                 ^
844 // CHECK-ERROR: error: invalid operand for instruction
845 // CHECK-ERROR:        uhadd v4.2s, v5.2s, v5.4h
846 // CHECK-ERROR:                               ^
847 // CHECK-ERROR: error: invalid operand for instruction
848 // CHECK-ERROR:        shsub v11.4h, v12.8h, v13.4h
849 // CHECK-ERROR:                          ^
850 // CHECK-ERROR: error: invalid operand for instruction
851 // CHECK-ERROR:        uhsub v31.16b, v29.8b, v28.8b
852 // CHECK-ERROR:                          ^
853
854 //----------------------------------------------------------------------
855 // Vector Integer Rouding Halving Add (Signed)
856 // Vector Integer Rouding Halving Add (Unsigned)
857 //----------------------------------------------------------------------
858
859         // Mismatched and invalid vector types (2d)
860         srhadd v0.2s, v1.2s, v2.2d
861         urhadd v0.16b, v1.16b, v2.8h
862
863 // CHECK-ERROR: error: invalid operand for instruction
864 // CHECK-ERROR:        srhadd v0.2s, v1.2s, v2.2d
865 // CHECK-ERROR:                                ^
866 // CHECK-ERROR: error: invalid operand for instruction
867 // CHECK-ERROR:        urhadd v0.16b, v1.16b, v2.8h
868 // CHECK-ERROR:                                  ^
869
870 //----------------------------------------------------------------------
871 // Vector Integer Saturating Add (Signed)
872 // Vector Integer Saturating Add (Unsigned)
873 // Vector Integer Saturating Sub (Signed)
874 // Vector Integer Saturating Sub (Unsigned)
875 //----------------------------------------------------------------------
876
877         // Mismatched vector types
878         sqadd v0.2s, v1.2s, v2.2d
879         uqadd v31.8h, v1.4h, v2.4h
880         sqsub v10.8h, v1.16b, v2.16b
881         uqsub v31.8b, v1.8b, v2.4s
882
883 // CHECK-ERROR: error: invalid operand for instruction
884 // CHECK-ERROR:        sqadd v0.2s, v1.2s, v2.2d
885 // CHECK-ERROR:                               ^
886 // CHECK-ERROR: error: invalid operand for instruction
887 // CHECK-ERROR:        uqadd v31.8h, v1.4h, v2.4h
888 // CHECK-ERROR:                         ^
889 // CHECK-ERROR: error: invalid operand for instruction
890 // CHECK-ERROR:        sqsub v10.8h, v1.16b, v2.16b
891 // CHECK-ERROR:                         ^
892 // CHECK-ERROR: error: invalid operand for instruction
893 // CHECK-ERROR:        uqsub v31.8b, v1.8b, v2.4s
894 // CHECK-ERROR:                                ^
895
896 //----------------------------------------------------------------------
897 // Scalar Integer Saturating Add (Signed)
898 // Scalar Integer Saturating Add (Unsigned)
899 // Scalar Integer Saturating Sub (Signed)
900 // Scalar Integer Saturating Sub (Unsigned)
901 //----------------------------------------------------------------------
902
903       // Mismatched registers
904          sqadd d0, s31, d2
905          uqadd s0, s1, d2
906          sqsub b0, b2, s18
907          uqsub h1, h2, d2
908
909 // CHECK-ERROR: error: invalid operand for instruction
910 // CHECK-ERROR:        sqadd d0, s31, d2
911 // CHECK-ERROR:                  ^
912 // CHECK-ERROR: error: invalid operand for instruction
913 // CHECK-ERROR:        uqadd s0, s1, d2
914 // CHECK-ERROR:                      ^
915 // CHECK-ERROR: error: invalid operand for instruction
916 // CHECK-ERROR:        sqsub b0, b2, s18
917 // CHECK-ERROR:                      ^
918 // CHECK-ERROR: error: invalid operand for instruction
919 // CHECK-ERROR:        uqsub h1, h2, d2
920 // CHECK-ERROR:                      ^
921
922 //----------------------------------------------------------------------
923 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
924 //----------------------------------------------------------------------
925
926     sqdmulh h10, s11, h12
927     sqdmulh s20, h21, s2
928
929 // CHECK-ERROR: error: invalid operand for instruction
930 // CHECK-ERROR:        sqdmulh h10, s11, h12
931 // CHECK-ERROR:                     ^
932 // CHECK-ERROR: error: invalid operand for instruction
933 // CHECK-ERROR:        sqdmulh s20, h21, s2
934 // CHECK-ERROR:                     ^
935
936 //------------------------------------------------------------------------
937 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
938 //------------------------------------------------------------------------
939
940     sqrdmulh h10, s11, h12
941     sqrdmulh s20, h21, s2
942
943 // CHECK-ERROR: error: invalid operand for instruction
944 // CHECK-ERROR:        sqrdmulh h10, s11, h12
945 // CHECK-ERROR:                      ^
946 // CHECK-ERROR: error: invalid operand for instruction
947 // CHECK-ERROR:        sqrdmulh s20, h21, s2
948 // CHECK-ERROR:                      ^
949
950 //----------------------------------------------------------------------
951 // Vector Shift Left (Signed and Unsigned Integer)
952 //----------------------------------------------------------------------
953         // Mismatched vector types
954         sshl v0.4s, v15.2s, v16.2s
955         ushl v1.16b, v25.16b, v6.8h
956
957 // CHECK-ERROR: error: invalid operand for instruction
958 // CHECK-ERROR:        sshl v0.4s, v15.2s, v16.2s
959 // CHECK-ERROR:                        ^
960 // CHECK-ERROR: error: invalid operand for instruction
961 // CHECK-ERROR:        ushl v1.16b, v25.16b, v6.8h
962 // CHECK-ERROR:                                 ^
963
964 //----------------------------------------------------------------------
965 // Vector Saturating Shift Left (Signed and Unsigned Integer)
966 //----------------------------------------------------------------------
967         // Mismatched vector types
968         sqshl v0.2s, v15.4s, v16.2d
969         uqshl v1.8b, v25.4h, v6.8h
970
971 // CHECK-ERROR: error: invalid operand for instruction
972 // CHECK-ERROR:        sqshl v0.2s, v15.4s, v16.2d 
973 // CHECK-ERROR:                         ^
974 // CHECK-ERROR: error: invalid operand for instruction
975 // CHECK-ERROR:        uqshl v1.8b, v25.4h, v6.8h
976 // CHECK-ERROR:                         ^
977
978 //----------------------------------------------------------------------
979 // Vector Rouding Shift Left (Signed and Unsigned Integer)
980 //----------------------------------------------------------------------
981         // Mismatched vector types
982         srshl v0.8h, v15.8h, v16.16b
983         urshl v1.2d, v25.2d, v6.4s
984
985 // CHECK-ERROR: error: invalid operand for instruction
986 // CHECK-ERROR:        srshl v0.8h, v15.8h, v16.16b
987 // CHECK-ERROR:                                 ^
988 // CHECK-ERROR: error: invalid operand for instruction
989 // CHECK-ERROR:        urshl v1.2d, v25.2d, v6.4s
990 // CHECK-ERROR:                                ^
991
992 //----------------------------------------------------------------------
993 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
994 //----------------------------------------------------------------------
995         // Mismatched vector types
996         sqrshl v0.2s, v15.8h, v16.16b
997         uqrshl v1.4h, v25.4h,  v6.2d
998
999 // CHECK-ERROR: error: invalid operand for instruction
1000 // CHECK-ERROR:        sqrshl v0.2s, v15.8h, v16.16b
1001 // CHECK-ERROR:                          ^
1002 // CHECK-ERROR: error: invalid operand for instruction
1003 // CHECK-ERROR:        uqrshl v1.4h, v25.4h,  v6.2d
1004 // CHECK-ERROR:                                  ^
1005
1006 //----------------------------------------------------------------------
1007 // Scalar Integer Shift Left (Signed, Unsigned)
1008 //----------------------------------------------------------------------
1009         // Mismatched and invalid vector types
1010         sshl d0, d1, s2
1011         ushl b2, b0, b1
1012
1013 // CHECK-ERROR: error: invalid operand for instruction
1014 // CHECK-ERROR:        sshl d0, d1, s2
1015 // CHECK-ERROR:                     ^
1016 // CHECK-ERROR: error: invalid operand for instruction
1017 // CHECK-ERROR:        ushl b2, b0, b1
1018 // CHECK-ERROR:             ^
1019
1020 //----------------------------------------------------------------------
1021 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
1022 //----------------------------------------------------------------------
1023
1024         // Mismatched vector types
1025         sqshl b0, s1, b0
1026         uqshl h0, b1, h0
1027         sqshl s0, h1, s0
1028         uqshl d0, b1, d0
1029
1030 // CHECK-ERROR: error: invalid operand for instruction
1031 // CHECK-ERROR:        sqshl b0, s1, b0
1032 // CHECK-ERROR:                  ^
1033 // CHECK-ERROR: error: invalid operand for instruction
1034 // CHECK-ERROR:        uqshl h0, b1, h0
1035 // CHECK-ERROR:                  ^
1036 // CHECK-ERROR: error: invalid operand for instruction
1037 // CHECK-ERROR:        sqshl s0, h1, s0
1038 // CHECK-ERROR:                  ^
1039 // CHECK-ERROR: error: invalid operand for instruction
1040 // CHECK-ERROR:        uqshl d0, b1, d0
1041 // CHECK-ERROR:                  ^
1042
1043 //----------------------------------------------------------------------
1044 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
1045 //----------------------------------------------------------------------
1046         // Mismatched and invalid vector types
1047         srshl h0, h1, h2
1048         urshl s0, s1, s2
1049
1050 // CHECK-ERROR: error: invalid operand for instruction
1051 // CHECK-ERROR:        srshl h0, h1, h2
1052 // CHECK-ERROR:              ^
1053 // CHECK-ERROR: error: invalid operand for instruction
1054 // CHECK-ERROR:        urshl s0, s1, s2
1055 // CHECK-ERROR:              ^
1056
1057
1058 //----------------------------------------------------------------------
1059 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1060 //----------------------------------------------------------------------
1061
1062         // Mismatched vector types
1063         sqrshl b0, b1, s0
1064         uqrshl h0, h1, b0
1065         sqrshl s0, s1, h0
1066         uqrshl d0, d1, b0
1067
1068 // CHECK-ERROR: error: invalid operand for instruction
1069 // CHECK-ERROR:        sqrshl b0, b1, s0
1070 // CHECK-ERROR:                       ^
1071 // CHECK-ERROR: error: invalid operand for instruction
1072 // CHECK-ERROR:        uqrshl h0, h1, b0
1073 // CHECK-ERROR:                       ^
1074 // CHECK-ERROR: error: invalid operand for instruction
1075 // CHECK-ERROR:        sqrshl s0, s1, h0
1076 // CHECK-ERROR:                       ^
1077 // CHECK-ERROR: error: invalid operand for instruction
1078 // CHECK-ERROR:        uqrshl d0, d1, b0
1079 // CHECK-ERROR:                       ^
1080
1081
1082 //----------------------------------------------------------------------
1083 // Vector Maximum (Signed, Unsigned)
1084 //----------------------------------------------------------------------
1085         // Mismatched and invalid vector types
1086         smax v0.2d, v1.2d, v2.2d
1087         umax v0.4h, v1.4h, v2.2s
1088
1089 // CHECK-ERROR: error: invalid operand for instruction
1090 // CHECK-ERROR:        smax v0.2d, v1.2d, v2.2d
1091 // CHECK-ERROR:                ^
1092 // CHECK-ERROR: error: invalid operand for instruction
1093 // CHECK-ERROR:        umax v0.4h, v1.4h, v2.2s
1094 // CHECK-ERROR:                              ^
1095
1096 //----------------------------------------------------------------------
1097 // Vector Minimum (Signed, Unsigned)
1098 //----------------------------------------------------------------------
1099         // Mismatched and invalid vector types
1100         smin v0.2d, v1.2d, v2.2d
1101         umin v0.2s, v1.2s, v2.8b
1102
1103 // CHECK-ERROR: error: invalid operand for instruction
1104 // CHECK-ERROR:        smin v0.2d, v1.2d, v2.2d
1105 // CHECK-ERROR:                ^
1106 // CHECK-ERROR: error: invalid operand for instruction
1107 // CHECK-ERROR:        umin v0.2s, v1.2s, v2.8b
1108 // CHECK-ERROR:                             ^
1109
1110
1111 //----------------------------------------------------------------------
1112 // Vector Maximum (Floating Point)
1113 //----------------------------------------------------------------------
1114         // Mismatched and invalid vector types
1115         fmax v0.2s, v1.2s, v2.4s
1116         fmax v0.8b, v1.8b, v2.8b
1117
1118 // CHECK-ERROR: error: invalid operand for instruction
1119 // CHECK-ERROR:        fmax v0.2s, v1.2s, v2.4s
1120 // CHECK-ERROR:                              ^
1121 // CHECK-ERROR: error: invalid operand for instruction
1122 // CHECK-ERROR:        fmax v0.8b, v1.8b, v2.8b
1123 // CHECK-ERROR:                ^
1124 //----------------------------------------------------------------------
1125 // Vector Minimum (Floating Point)
1126 //----------------------------------------------------------------------
1127         // Mismatched and invalid vector types
1128         fmin v0.4s, v1.4s, v2.2d
1129         fmin v0.8h, v1.8h, v2.8h
1130
1131 // CHECK-ERROR: error: invalid operand for instruction
1132 // CHECK-ERROR:        fmin v0.4s, v1.4s, v2.2d
1133 // CHECK-ERROR:                              ^
1134 // CHECK-ERROR: error: invalid operand for instruction
1135 // CHECK-ERROR:        fmin v0.8h, v1.8h, v2.8h
1136 // CHECK-ERROR:                ^
1137
1138 //----------------------------------------------------------------------
1139 // Vector maxNum (Floating Point)
1140 //----------------------------------------------------------------------
1141         // Mismatched and invalid vector types
1142         fmaxnm v0.2s, v1.2s, v2.2d
1143         fmaxnm v0.4h, v1.8h, v2.4h
1144
1145 // CHECK-ERROR: error: invalid operand for instruction
1146 // CHECK-ERROR:        fmaxnm v0.2s, v1.2s, v2.2d
1147 // CHECK-ERROR:                                ^
1148 // CHECK-ERROR: error: invalid operand for instruction
1149 // CHECK-ERROR:        fmaxnm v0.4h, v1.8h, v2.4h
1150 // CHECK-ERROR:                  ^
1151
1152 //----------------------------------------------------------------------
1153 // Vector minNum (Floating Point)
1154 //----------------------------------------------------------------------
1155         // Mismatched and invalid vector types
1156         fminnm v0.4s, v1.2s, v2.4s
1157         fminnm v0.16b, v0.16b, v0.16b
1158
1159 // CHECK-ERROR: error: invalid operand for instruction
1160 // CHECK-ERROR:        fminnm v0.4s, v1.2s, v2.4s
1161 // CHECK-ERROR:                         ^
1162 // CHECK-ERROR: error: invalid operand for instruction
1163 // CHECK-ERROR:        fminnm v0.16b, v0.16b, v0.16b
1164 // CHECK-ERROR:                  ^
1165
1166
1167 //----------------------------------------------------------------------
1168 // Vector Maximum Pairwise (Signed, Unsigned)
1169 //----------------------------------------------------------------------
1170         // Mismatched and invalid vector types
1171         smaxp v0.2d, v1.2d, v2.2d
1172         umaxp v0.4h, v1.4h, v2.2s
1173
1174 // CHECK-ERROR: error: invalid operand for instruction
1175 // CHECK-ERROR:        smaxp v0.2d, v1.2d, v2.2d
1176 // CHECK-ERROR:                 ^
1177 // CHECK-ERROR: error: invalid operand for instruction
1178 // CHECK-ERROR:        umaxp v0.4h, v1.4h, v2.2s
1179 // CHECK-ERROR:                               ^
1180
1181 //----------------------------------------------------------------------
1182 // Vector Minimum Pairwise (Signed, Unsigned)
1183 //----------------------------------------------------------------------
1184         // Mismatched and invalid vector types
1185         sminp v0.2d, v1.2d, v2.2d
1186         uminp v0.2s, v1.2s, v2.8b
1187
1188 // CHECK-ERROR: error: invalid operand for instruction
1189 // CHECK-ERROR:        sminp v0.2d, v1.2d, v2.2d
1190 // CHECK-ERROR:                 ^
1191 // CHECK-ERROR: error: invalid operand for instruction
1192 // CHECK-ERROR:        uminp v0.2s, v1.2s, v2.8b
1193 // CHECK-ERROR:                               ^
1194
1195
1196 //----------------------------------------------------------------------
1197 // Vector Maximum Pairwise (Floating Point)
1198 //----------------------------------------------------------------------
1199         // Mismatched and invalid vector types
1200         fmaxp v0.2s, v1.2s, v2.4s
1201         fmaxp v0.8b, v1.8b, v2.8b
1202
1203 // CHECK-ERROR: error: invalid operand for instruction
1204 // CHECK-ERROR:        fmaxp v0.2s, v1.2s, v2.4s
1205 // CHECK-ERROR:                               ^
1206 // CHECK-ERROR: error: invalid operand for instruction
1207 // CHECK-ERROR:        fmaxp v0.8b, v1.8b, v2.8b
1208 // CHECK-ERROR:                 ^
1209 //----------------------------------------------------------------------
1210 // Vector Minimum Pairwise (Floating Point)
1211 //----------------------------------------------------------------------
1212         // Mismatched and invalid vector types
1213         fminp v0.4s, v1.4s, v2.2d
1214         fminp v0.8h, v1.8h, v2.8h
1215
1216 // CHECK-ERROR: error: invalid operand for instruction
1217 // CHECK-ERROR:        fminp v0.4s, v1.4s, v2.2d
1218 // CHECK-ERROR:                               ^
1219 // CHECK-ERROR: error: invalid operand for instruction
1220 // CHECK-ERROR:        fminp v0.8h, v1.8h, v2.8h
1221 // CHECK-ERROR:                 ^
1222
1223 //----------------------------------------------------------------------
1224 // Vector maxNum Pairwise (Floating Point)
1225 //----------------------------------------------------------------------
1226         // Mismatched and invalid vector types
1227         fmaxnmp v0.2s, v1.2s, v2.2d
1228         fmaxnmp v0.4h, v1.8h, v2.4h
1229
1230 // CHECK-ERROR: error: invalid operand for instruction
1231 // CHECK-ERROR:        fmaxnmp v0.2s, v1.2s, v2.2d
1232 // CHECK-ERROR:                                 ^
1233 // CHECK-ERROR: error: invalid operand for instruction
1234 // CHECK-ERROR:        fmaxnmp v0.4h, v1.8h, v2.4h
1235 // CHECK-ERROR:                   ^
1236
1237 //----------------------------------------------------------------------
1238 // Vector minNum Pairwise (Floating Point)
1239 //----------------------------------------------------------------------
1240         // Mismatched and invalid vector types
1241         fminnmp v0.4s, v1.2s, v2.4s
1242         fminnmp v0.16b, v0.16b, v0.16b
1243
1244 // CHECK-ERROR: error: invalid operand for instruction
1245 // CHECK-ERROR:        fminnmp v0.4s, v1.2s, v2.4s
1246 // CHECK-ERROR:                          ^
1247 // CHECK-ERROR: error: invalid operand for instruction
1248 // CHECK-ERROR:        fminnmp v0.16b, v0.16b, v0.16b
1249 // CHECK-ERROR:                   ^
1250
1251
1252 //----------------------------------------------------------------------
1253 // Vector Add Pairwise (Integer)
1254 //----------------------------------------------------------------------
1255
1256         // Mismatched vector types
1257         addp v0.16b, v1.8b, v2.8b
1258
1259 // CHECK-ERROR: error: invalid operand for instruction
1260 // CHECK-ERROR:         addp v0.16b, v1.8b, v2.8b
1261 // CHECK-ERROR:                         ^
1262
1263 //----------------------------------------------------------------------
1264 // Vector Add Pairwise (Floating Point)
1265 //----------------------------------------------------------------------
1266         // Mismatched and invalid vector types
1267         faddp v0.16b, v1.8b, v2.8b
1268         faddp v0.2d, v1.2d, v2.8h
1269
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR:         faddp v0.16b, v1.8b, v2.8b
1272 // CHECK-ERROR:                  ^
1273 // CHECK-ERROR: error: invalid operand for instruction
1274 // CHECK-ERROR:         faddp v0.2d, v1.2d, v2.8h
1275 // CHECK-ERROR:                                ^
1276
1277
1278 //----------------------------------------------------------------------
1279 // Vector Saturating Doubling Multiply High
1280 //----------------------------------------------------------------------
1281          // Mismatched and invalid vector types
1282          sqdmulh v2.4h, v25.8h, v3.4h
1283          sqdmulh v12.2d, v5.2d, v13.2d
1284          sqdmulh v3.8b, v1.8b, v30.8b
1285
1286 // CHECK-ERROR: error: invalid operand for instruction
1287 // CHECK-ERROR:         sqdmulh v2.4h, v25.8h, v3.4h
1288 // CHECK-ERROR:                            ^
1289 // CHECK-ERROR: error: invalid operand for instruction
1290 // CHECK-ERROR:         sqdmulh v12.2d, v5.2d, v13.2d
1291 // CHECK-ERROR:                     ^
1292 // CHECK-ERROR: error: invalid operand for instruction
1293 // CHECK-ERROR:         sqdmulh v3.8b, v1.8b, v30.8b
1294 // CHECK-ERROR:                    ^
1295
1296 //----------------------------------------------------------------------
1297 // Vector Saturating Rouding Doubling Multiply High
1298 //----------------------------------------------------------------------
1299          // Mismatched and invalid vector types
1300          sqrdmulh v2.2s, v25.4s, v3.4s
1301          sqrdmulh v12.16b, v5.16b, v13.16b
1302          sqrdmulh v3.4h, v1.4h, v30.2d
1303
1304
1305 // CHECK-ERROR: error: invalid operand for instruction
1306 // CHECK-ERROR:         sqrdmulh v2.2s, v25.4s, v3.4s
1307 // CHECK-ERROR:                             ^
1308 // CHECK-ERROR: error: invalid operand for instruction
1309 // CHECK-ERROR:         sqrdmulh v12.16b, v5.16b, v13.16b
1310 // CHECK-ERROR:                       ^
1311 // CHECK-ERROR: error: invalid operand for instruction
1312 // CHECK-ERROR:         sqrdmulh v3.4h, v1.4h, v30.2d
1313 // CHECK-ERROR:                                    ^
1314
1315 //----------------------------------------------------------------------
1316 // Vector Multiply Extended
1317 //----------------------------------------------------------------------
1318          // Mismatched and invalid vector types
1319       fmulx v21.2s, v5.2s, v13.2d
1320       fmulx v1.4h, v25.4h, v3.4h
1321
1322 // CHECK-ERROR: error: invalid operand for instruction
1323 // CHECK-ERROR:         fmulx v21.2s, v5.2s, v13.2d
1324 // CHECK-ERROR:                                  ^
1325 // CHECK-ERROR: error: invalid operand for instruction
1326 // CHECK-ERROR:         fmulx v1.4h, v25.4h, v3.4h
1327 // CHECK-ERROR:                  ^
1328
1329 //------------------------------------------------------------------------------
1330 // Vector Shift Left by Immediate
1331 //------------------------------------------------------------------------------
1332          // Mismatched vector types and out of range
1333          shl v0.4s, v15,2s, #3
1334          shl v0.2d, v17.4s, #3
1335          shl v0.8b, v31.8b, #-1
1336          shl v0.8b, v31.8b, #8
1337          shl v0.4s, v21.4s, #32
1338          shl v0.2d, v1.2d, #64
1339
1340 // CHECK-AARCH64-ERROR: error: expected comma before next operand
1341 // CHECK-AARCH64-ERROR:         shl v0.4s, v15,2s, #3
1342 // CHECK-AARCH64-ERROR:                         ^
1343
1344 // CHECK-ARM64-ERROR: error: unexpected token in argument list
1345 // CHECK-ARM64-ERROR:         shl v0.4s, v15,2s, #3
1346 // CHECK-ARM64-ERROR:                         ^
1347
1348 // CHECK-ERROR: error: invalid operand for instruction
1349 // CHECK-ERROR:         shl v0.2d, v17.4s, #3
1350 // CHECK-ERROR:                        ^
1351 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1352 // CHECK-ERROR:         shl v0.8b, v31.8b, #-1
1353 // CHECK-ERROR:                            ^
1354 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1355 // CHECK-ERROR:         shl v0.8b, v31.8b, #8
1356 // CHECK-ERROR:                            ^
1357 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1358 // CHECK-ERROR:         shl v0.4s, v21.4s, #32
1359 // CHECK-ERROR:                            ^
1360 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1361 // CHECK-ERROR:         shl v0.2d, v1.2d, #64
1362 // CHECK-ERROR:                           ^
1363
1364 //----------------------------------------------------------------------
1365 // Vector Shift Left Long by Immediate
1366 //----------------------------------------------------------------------
1367         // Mismatched vector types
1368         sshll v0.4s, v15.2s, #3
1369         ushll v1.16b, v25.16b, #6
1370         sshll2 v0.2d, v3.8s, #15
1371         ushll2 v1.4s, v25.4s, #7
1372
1373         // Out of range 
1374         sshll v0.8h, v1.8b, #-1
1375         sshll v0.8h, v1.8b, #9
1376         ushll v0.4s, v1.4h, #17
1377         ushll v0.2d, v1.2s, #33
1378         sshll2 v0.8h, v1.16b, #9
1379         sshll2 v0.4s, v1.8h, #17
1380         ushll2 v0.2d, v1.4s, #33
1381
1382 // CHECK-ERROR: error: invalid operand for instruction
1383 // CHECK-ERROR:        sshll v0.4s, v15.2s, #3
1384 // CHECK-ERROR:                         ^
1385 // CHECK-ERROR: error: invalid operand for instruction
1386 // CHECK-ERROR:        ushll v1.16b, v25.16b, #6
1387 // CHECK-ERROR:                 ^
1388 // CHECK-ERROR: error: invalid operand for instruction
1389 // CHECK-ERROR:        sshll2 v0.2d, v3.8s, #15
1390 // CHECK-ERROR:                      ^
1391 // CHECK-ERROR: error: invalid operand for instruction
1392 // CHECK-ERROR:        ushll2 v1.4s, v25.4s, #7
1393 // CHECK-ERROR:                          ^
1394 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1395 // CHECK-ERROR:        sshll v0.8h, v1.8b, #-1
1396 // CHECK-ERROR:                            ^
1397 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1398 // CHECK-ERROR:        sshll v0.8h, v1.8b, #9
1399 // CHECK-ERROR:                            ^
1400 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1401 // CHECK-ERROR:        ushll v0.4s, v1.4h, #17
1402 // CHECK-ERROR:                            ^
1403 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1404 // CHECK-ERROR:        ushll v0.2d, v1.2s, #33
1405 // CHECK-ERROR:                            ^
1406 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1407 // CHECK-ERROR:        sshll2 v0.8h, v1.16b, #9
1408 // CHECK-ERROR:                              ^
1409 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1410 // CHECK-ERROR:        sshll2 v0.4s, v1.8h, #17
1411 // CHECK-ERROR:                             ^
1412 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1413 // CHECK-ERROR:        ushll2 v0.2d, v1.4s, #33
1414 // CHECK-ERROR:                             ^
1415
1416
1417 //------------------------------------------------------------------------------
1418 // Vector shift right by immediate
1419 //------------------------------------------------------------------------------
1420          sshr v0.8b, v1.8h, #3
1421          sshr v0.4h, v1.4s, #3
1422          sshr v0.2s, v1.2d, #3
1423          sshr v0.16b, v1.16b, #9
1424          sshr v0.8h, v1.8h, #17
1425          sshr v0.4s, v1.4s, #33
1426          sshr v0.2d, v1.2d, #65
1427
1428 // CHECK-ERROR: error: invalid operand for instruction
1429 // CHECK-ERROR:         sshr v0.8b, v1.8h, #3
1430 // CHECK-ERROR:                        ^
1431 // CHECK-ERROR: error: invalid operand for instruction
1432 // CHECK-ERROR:         sshr v0.4h, v1.4s, #3
1433 // CHECK-ERROR:                        ^
1434 // CHECK-ERROR: error: invalid operand for instruction
1435 // CHECK-ERROR:         sshr v0.2s, v1.2d, #3
1436 // CHECK-ERROR:                        ^
1437 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1438 // CHECK-ERROR:         sshr v0.16b, v1.16b, #9
1439 // CHECK-ERROR:                              ^
1440 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1441 // CHECK-ERROR:         sshr v0.8h, v1.8h, #17
1442 // CHECK-ERROR:                            ^
1443 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1444 // CHECK-ERROR:         sshr v0.4s, v1.4s, #33
1445 // CHECK-ERROR:                            ^
1446 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1447 // CHECK-ERROR:         sshr v0.2d, v1.2d, #65
1448 // CHECK-ERROR:                            ^
1449
1450 //------------------------------------------------------------------------------
1451 // Vector  shift right by immediate
1452 //------------------------------------------------------------------------------
1453          ushr v0.8b, v1.8h, #3
1454          ushr v0.4h, v1.4s, #3
1455          ushr v0.2s, v1.2d, #3
1456          ushr v0.16b, v1.16b, #9
1457          ushr v0.8h, v1.8h, #17
1458          ushr v0.4s, v1.4s, #33
1459          ushr v0.2d, v1.2d, #65
1460
1461 // CHECK-ERROR: error: invalid operand for instruction
1462 // CHECK-ERROR:         ushr v0.8b, v1.8h, #3
1463 // CHECK-ERROR:                        ^
1464 // CHECK-ERROR: error: invalid operand for instruction
1465 // CHECK-ERROR:         ushr v0.4h, v1.4s, #3
1466 // CHECK-ERROR:                        ^
1467 // CHECK-ERROR: error: invalid operand for instruction
1468 // CHECK-ERROR:         ushr v0.2s, v1.2d, #3
1469 // CHECK-ERROR:                        ^
1470 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1471 // CHECK-ERROR:         ushr v0.16b, v1.16b, #9
1472 // CHECK-ERROR:                              ^
1473 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1474 // CHECK-ERROR:         ushr v0.8h, v1.8h, #17
1475 // CHECK-ERROR:                            ^
1476 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1477 // CHECK-ERROR:         ushr v0.4s, v1.4s, #33
1478 // CHECK-ERROR:                            ^
1479 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1480 // CHECK-ERROR:         ushr v0.2d, v1.2d, #65
1481 // CHECK-ERROR:                            ^
1482
1483 //------------------------------------------------------------------------------
1484 // Vector shift right and accumulate by immediate
1485 //------------------------------------------------------------------------------
1486          ssra v0.8b, v1.8h, #3
1487          ssra v0.4h, v1.4s, #3
1488          ssra v0.2s, v1.2d, #3
1489          ssra v0.16b, v1.16b, #9
1490          ssra v0.8h, v1.8h, #17
1491          ssra v0.4s, v1.4s, #33
1492          ssra v0.2d, v1.2d, #65
1493
1494 // CHECK-ERROR: error: invalid operand for instruction
1495 // CHECK-ERROR:         ssra v0.8b, v1.8h, #3
1496 // CHECK-ERROR:                        ^
1497 // CHECK-ERROR: error: invalid operand for instruction
1498 // CHECK-ERROR:         ssra v0.4h, v1.4s, #3
1499 // CHECK-ERROR:                        ^
1500 // CHECK-ERROR: error: invalid operand for instruction
1501 // CHECK-ERROR:         ssra v0.2s, v1.2d, #3
1502 // CHECK-ERROR:                        ^
1503 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1504 // CHECK-ERROR:         ssra v0.16b, v1.16b, #9
1505 // CHECK-ERROR:                              ^
1506 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1507 // CHECK-ERROR:         ssra v0.8h, v1.8h, #17
1508 // CHECK-ERROR:                            ^
1509 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1510 // CHECK-ERROR:         ssra v0.4s, v1.4s, #33
1511 // CHECK-ERROR:                            ^
1512 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1513 // CHECK-ERROR:         ssra v0.2d, v1.2d, #65
1514 // CHECK-ERROR:                            ^
1515
1516 //------------------------------------------------------------------------------
1517 // Vector  shift right and accumulate by immediate
1518 //------------------------------------------------------------------------------
1519          usra v0.8b, v1.8h, #3
1520          usra v0.4h, v1.4s, #3
1521          usra v0.2s, v1.2d, #3
1522          usra v0.16b, v1.16b, #9
1523          usra v0.8h, v1.8h, #17
1524          usra v0.4s, v1.4s, #33
1525          usra v0.2d, v1.2d, #65
1526
1527 // CHECK-ERROR: error: invalid operand for instruction
1528 // CHECK-ERROR:         usra v0.8b, v1.8h, #3
1529 // CHECK-ERROR:                        ^
1530 // CHECK-ERROR: error: invalid operand for instruction
1531 // CHECK-ERROR:         usra v0.4h, v1.4s, #3
1532 // CHECK-ERROR:                        ^
1533 // CHECK-ERROR: error: invalid operand for instruction
1534 // CHECK-ERROR:         usra v0.2s, v1.2d, #3
1535 // CHECK-ERROR:                        ^
1536 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1537 // CHECK-ERROR:         usra v0.16b, v1.16b, #9
1538 // CHECK-ERROR:                              ^
1539 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1540 // CHECK-ERROR:         usra v0.8h, v1.8h, #17
1541 // CHECK-ERROR:                            ^
1542 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1543 // CHECK-ERROR:         usra v0.4s, v1.4s, #33
1544 // CHECK-ERROR:                            ^
1545 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1546 // CHECK-ERROR:         usra v0.2d, v1.2d, #65
1547 // CHECK-ERROR:                            ^
1548
1549 //------------------------------------------------------------------------------
1550 // Vector rounding shift right by immediate
1551 //------------------------------------------------------------------------------
1552          srshr v0.8b, v1.8h, #3
1553          srshr v0.4h, v1.4s, #3
1554          srshr v0.2s, v1.2d, #3
1555          srshr v0.16b, v1.16b, #9
1556          srshr v0.8h, v1.8h, #17
1557          srshr v0.4s, v1.4s, #33
1558          srshr v0.2d, v1.2d, #65
1559
1560 // CHECK-ERROR: error: invalid operand for instruction
1561 // CHECK-ERROR:         srshr v0.8b, v1.8h, #3
1562 // CHECK-ERROR:                         ^
1563 // CHECK-ERROR: error: invalid operand for instruction
1564 // CHECK-ERROR:         srshr v0.4h, v1.4s, #3
1565 // CHECK-ERROR:                         ^
1566 // CHECK-ERROR: error: invalid operand for instruction
1567 // CHECK-ERROR:         srshr v0.2s, v1.2d, #3
1568 // CHECK-ERROR:                         ^
1569 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1570 // CHECK-ERROR:         srshr v0.16b, v1.16b, #9
1571 // CHECK-ERROR:                               ^
1572 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1573 // CHECK-ERROR:         srshr v0.8h, v1.8h, #17
1574 // CHECK-ERROR:                             ^
1575 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1576 // CHECK-ERROR:         srshr v0.4s, v1.4s, #33
1577 // CHECK-ERROR:                             ^
1578 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1579 // CHECK-ERROR:         srshr v0.2d, v1.2d, #65
1580 // CHECK-ERROR:                             ^
1581
1582 //------------------------------------------------------------------------------
1583 // Vecotr rounding shift right by immediate
1584 //------------------------------------------------------------------------------
1585          urshr v0.8b, v1.8h, #3
1586          urshr v0.4h, v1.4s, #3
1587          urshr v0.2s, v1.2d, #3
1588          urshr v0.16b, v1.16b, #9
1589          urshr v0.8h, v1.8h, #17
1590          urshr v0.4s, v1.4s, #33
1591          urshr v0.2d, v1.2d, #65
1592
1593 // CHECK-ERROR: error: invalid operand for instruction
1594 // CHECK-ERROR:         urshr v0.8b, v1.8h, #3
1595 // CHECK-ERROR:                         ^
1596 // CHECK-ERROR: error: invalid operand for instruction
1597 // CHECK-ERROR:         urshr v0.4h, v1.4s, #3
1598 // CHECK-ERROR:                         ^
1599 // CHECK-ERROR: error: invalid operand for instruction
1600 // CHECK-ERROR:         urshr v0.2s, v1.2d, #3
1601 // CHECK-ERROR:                         ^
1602 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1603 // CHECK-ERROR:         urshr v0.16b, v1.16b, #9
1604 // CHECK-ERROR:                               ^
1605 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1606 // CHECK-ERROR:         urshr v0.8h, v1.8h, #17
1607 // CHECK-ERROR:                             ^
1608 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1609 // CHECK-ERROR:         urshr v0.4s, v1.4s, #33
1610 // CHECK-ERROR:                             ^
1611 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1612 // CHECK-ERROR:         urshr v0.2d, v1.2d, #65
1613 // CHECK-ERROR:                             ^
1614
1615 //------------------------------------------------------------------------------
1616 // Vector rounding shift right and accumulate by immediate
1617 //------------------------------------------------------------------------------
1618          srsra v0.8b, v1.8h, #3
1619          srsra v0.4h, v1.4s, #3
1620          srsra v0.2s, v1.2d, #3
1621          srsra v0.16b, v1.16b, #9
1622          srsra v0.8h, v1.8h, #17
1623          srsra v0.4s, v1.4s, #33
1624          srsra v0.2d, v1.2d, #65
1625
1626 // CHECK-ERROR: error: invalid operand for instruction
1627 // CHECK-ERROR:         srsra v0.8b, v1.8h, #3
1628 // CHECK-ERROR:                         ^
1629 // CHECK-ERROR: error: invalid operand for instruction
1630 // CHECK-ERROR:         srsra v0.4h, v1.4s, #3
1631 // CHECK-ERROR:                         ^
1632 // CHECK-ERROR: error: invalid operand for instruction
1633 // CHECK-ERROR:         srsra v0.2s, v1.2d, #3
1634 // CHECK-ERROR:                         ^
1635 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1636 // CHECK-ERROR:         srsra v0.16b, v1.16b, #9
1637 // CHECK-ERROR:                               ^
1638 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1639 // CHECK-ERROR:         srsra v0.8h, v1.8h, #17
1640 // CHECK-ERROR:                             ^
1641 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1642 // CHECK-ERROR:         srsra v0.4s, v1.4s, #33
1643 // CHECK-ERROR:                             ^
1644 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1645 // CHECK-ERROR:         srsra v0.2d, v1.2d, #65
1646 // CHECK-ERROR:                             ^
1647
1648 //------------------------------------------------------------------------------
1649 // Vector rounding shift right and accumulate by immediate
1650 //------------------------------------------------------------------------------
1651          ursra v0.8b, v1.8h, #3
1652          ursra v0.4h, v1.4s, #3
1653          ursra v0.2s, v1.2d, #3
1654          ursra v0.16b, v1.16b, #9
1655          ursra v0.8h, v1.8h, #17
1656          ursra v0.4s, v1.4s, #33
1657          ursra v0.2d, v1.2d, #65
1658
1659 // CHECK-ERROR: error: invalid operand for instruction
1660 // CHECK-ERROR:         ursra v0.8b, v1.8h, #3
1661 // CHECK-ERROR:                         ^
1662 // CHECK-ERROR: error: invalid operand for instruction
1663 // CHECK-ERROR:         ursra v0.4h, v1.4s, #3
1664 // CHECK-ERROR:                         ^
1665 // CHECK-ERROR: error: invalid operand for instruction
1666 // CHECK-ERROR:         ursra v0.2s, v1.2d, #3
1667 // CHECK-ERROR:                         ^
1668 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1669 // CHECK-ERROR:         ursra v0.16b, v1.16b, #9
1670 // CHECK-ERROR:                               ^
1671 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1672 // CHECK-ERROR:         ursra v0.8h, v1.8h, #17
1673 // CHECK-ERROR:                             ^
1674 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1675 // CHECK-ERROR:         ursra v0.4s, v1.4s, #33
1676 // CHECK-ERROR:                             ^
1677 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1678 // CHECK-ERROR:         ursra v0.2d, v1.2d, #65
1679 // CHECK-ERROR:                             ^
1680
1681 //------------------------------------------------------------------------------
1682 // Vector shift right and insert by immediate
1683 //------------------------------------------------------------------------------
1684          sri v0.8b, v1.8h, #3
1685          sri v0.4h, v1.4s, #3
1686          sri v0.2s, v1.2d, #3
1687          sri v0.16b, v1.16b, #9
1688          sri v0.8h, v1.8h, #17
1689          sri v0.4s, v1.4s, #33
1690          sri v0.2d, v1.2d, #65
1691
1692 // CHECK-ERROR: error: invalid operand for instruction
1693 // CHECK-ERROR:         sri v0.8b, v1.8h, #3
1694 // CHECK-ERROR:                       ^
1695 // CHECK-ERROR: error: invalid operand for instruction
1696 // CHECK-ERROR:         sri v0.4h, v1.4s, #3
1697 // CHECK-ERROR:                       ^
1698 // CHECK-ERROR: error: invalid operand for instruction
1699 // CHECK-ERROR:         sri v0.2s, v1.2d, #3
1700 // CHECK-ERROR:                       ^
1701 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1702 // CHECK-ERROR:         sri v0.16b, v1.16b, #9
1703 // CHECK-ERROR:                             ^
1704 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1705 // CHECK-ERROR:         sri v0.8h, v1.8h, #17
1706 // CHECK-ERROR:                           ^
1707 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1708 // CHECK-ERROR:         sri v0.4s, v1.4s, #33
1709 // CHECK-ERROR:                           ^
1710 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1711 // CHECK-ERROR:         sri v0.2d, v1.2d, #65
1712 // CHECK-ERROR:                           ^
1713
1714 //------------------------------------------------------------------------------
1715 // Vector shift left and insert by immediate
1716 //------------------------------------------------------------------------------
1717          sli v0.8b, v1.8h, #3
1718          sli v0.4h, v1.4s, #3
1719          sli v0.2s, v1.2d, #3
1720          sli v0.16b, v1.16b, #8
1721          sli v0.8h, v1.8h, #16
1722          sli v0.4s, v1.4s, #32
1723          sli v0.2d, v1.2d, #64
1724
1725 // CHECK-ERROR: error: invalid operand for instruction
1726 // CHECK-ERROR:         sli v0.8b, v1.8h, #3
1727 // CHECK-ERROR:                       ^
1728 // CHECK-ERROR: error: invalid operand for instruction
1729 // CHECK-ERROR:         sli v0.4h, v1.4s, #3
1730 // CHECK-ERROR:                       ^
1731 // CHECK-ERROR: error: invalid operand for instruction
1732 // CHECK-ERROR:         sli v0.2s, v1.2d, #3
1733 // CHECK-ERROR:                       ^
1734 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1735 // CHECK-ERROR:         sli v0.16b, v1.16b, #8
1736 // CHECK-ERROR:                             ^
1737 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1738 // CHECK-ERROR:         sli v0.8h, v1.8h, #16
1739 // CHECK-ERROR:                           ^
1740 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1741 // CHECK-ERROR:         sli v0.4s, v1.4s, #32
1742 // CHECK-ERROR:                           ^
1743 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1744 // CHECK-ERROR:         sli v0.2d, v1.2d, #64
1745 // CHECK-ERROR:                           ^
1746
1747 //------------------------------------------------------------------------------
1748 // Vector saturating shift left unsigned by immediate
1749 //------------------------------------------------------------------------------
1750          sqshlu v0.8b, v1.8h, #3
1751          sqshlu v0.4h, v1.4s, #3
1752          sqshlu v0.2s, v1.2d, #3
1753          sqshlu v0.16b, v1.16b, #8
1754          sqshlu v0.8h, v1.8h, #16
1755          sqshlu v0.4s, v1.4s, #32
1756          sqshlu v0.2d, v1.2d, #64
1757
1758 // CHECK-ERROR: error: invalid operand for instruction
1759 // CHECK-ERROR:         sqshlu v0.8b, v1.8h, #3
1760 // CHECK-ERROR:                          ^
1761 // CHECK-ERROR: error: invalid operand for instruction
1762 // CHECK-ERROR:         sqshlu v0.4h, v1.4s, #3
1763 // CHECK-ERROR:                          ^
1764 // CHECK-ERROR: error: invalid operand for instruction
1765 // CHECK-ERROR:         sqshlu v0.2s, v1.2d, #3
1766 // CHECK-ERROR:                          ^
1767 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1768 // CHECK-ERROR:         sqshlu v0.16b, v1.16b, #8
1769 // CHECK-ERROR:                                ^
1770 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1771 // CHECK-ERROR:         sqshlu v0.8h, v1.8h, #16
1772 // CHECK-ERROR:                              ^
1773 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1774 // CHECK-ERROR:         sqshlu v0.4s, v1.4s, #32
1775 // CHECK-ERROR:                              ^
1776 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1777 // CHECK-ERROR:         sqshlu v0.2d, v1.2d, #64
1778 // CHECK-ERROR:                              ^
1779
1780 //------------------------------------------------------------------------------
1781 // Vector saturating shift left by immediate
1782 //------------------------------------------------------------------------------
1783          sqshl v0.8b, v1.8h, #3
1784          sqshl v0.4h, v1.4s, #3
1785          sqshl v0.2s, v1.2d, #3
1786          sqshl v0.16b, v1.16b, #8
1787          sqshl v0.8h, v1.8h, #16
1788          sqshl v0.4s, v1.4s, #32
1789          sqshl v0.2d, v1.2d, #64
1790
1791 // CHECK-ERROR: error: invalid operand for instruction
1792 // CHECK-ERROR:         sqshl v0.8b, v1.8h, #3
1793 // CHECK-ERROR:                         ^
1794 // CHECK-ERROR: error: invalid operand for instruction
1795 // CHECK-ERROR:         sqshl v0.4h, v1.4s, #3
1796 // CHECK-ERROR:                         ^
1797 // CHECK-ERROR: error: invalid operand for instruction
1798 // CHECK-ERROR:         sqshl v0.2s, v1.2d, #3
1799 // CHECK-ERROR:                         ^
1800 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1801 // CHECK-ERROR:         sqshl v0.16b, v1.16b, #8
1802 // CHECK-ERROR:                               ^
1803 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1804 // CHECK-ERROR:         sqshl v0.8h, v1.8h, #16
1805 // CHECK-ERROR:                             ^
1806 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1807 // CHECK-ERROR:         sqshl v0.4s, v1.4s, #32
1808 // CHECK-ERROR:                             ^
1809 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1810 // CHECK-ERROR:         sqshl v0.2d, v1.2d, #64
1811 // CHECK-ERROR:                             ^
1812
1813 //------------------------------------------------------------------------------
1814 // Vector saturating shift left by immediate
1815 //------------------------------------------------------------------------------
1816          uqshl v0.8b, v1.8h, #3
1817          uqshl v0.4h, v1.4s, #3
1818          uqshl v0.2s, v1.2d, #3
1819          uqshl v0.16b, v1.16b, #8
1820          uqshl v0.8h, v1.8h, #16
1821          uqshl v0.4s, v1.4s, #32
1822          uqshl v0.2d, v1.2d, #64
1823
1824 // CHECK-ERROR: error: invalid operand for instruction
1825 // CHECK-ERROR:         uqshl v0.8b, v1.8h, #3
1826 // CHECK-ERROR:                         ^
1827 // CHECK-ERROR: error: invalid operand for instruction
1828 // CHECK-ERROR:         uqshl v0.4h, v1.4s, #3
1829 // CHECK-ERROR:                         ^
1830 // CHECK-ERROR: error: invalid operand for instruction
1831 // CHECK-ERROR:         uqshl v0.2s, v1.2d, #3
1832 // CHECK-ERROR:                         ^
1833 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1834 // CHECK-ERROR:         uqshl v0.16b, v1.16b, #8
1835 // CHECK-ERROR:                               ^
1836 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1837 // CHECK-ERROR:         uqshl v0.8h, v1.8h, #16
1838 // CHECK-ERROR:                             ^
1839 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1840 // CHECK-ERROR:         uqshl v0.4s, v1.4s, #32
1841 // CHECK-ERROR:                             ^
1842 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1843 // CHECK-ERROR:         uqshl v0.2d, v1.2d, #64
1844 // CHECK-ERROR:                             ^
1845
1846 //------------------------------------------------------------------------------
1847 // Vector shift right narrow by immediate
1848 //------------------------------------------------------------------------------
1849          shrn v0.8b, v1.8b, #3
1850          shrn v0.4h, v1.4h, #3
1851          shrn v0.2s, v1.2s, #3
1852          shrn2 v0.16b, v1.8h, #17
1853          shrn2 v0.8h, v1.4s, #33
1854          shrn2 v0.4s, v1.2d, #65
1855
1856 // CHECK-ERROR: error: invalid operand for instruction
1857 // CHECK-ERROR:         shrn v0.8b, v1.8b, #3
1858 // CHECK-ERROR:                        ^
1859 // CHECK-ERROR: error: invalid operand for instruction
1860 // CHECK-ERROR:         shrn v0.4h, v1.4h, #3
1861 // CHECK-ERROR:                        ^
1862 // CHECK-ERROR: error: invalid operand for instruction
1863 // CHECK-ERROR:         shrn v0.2s, v1.2s, #3
1864 // CHECK-ERROR:                        ^
1865 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1866 // CHECK-ERROR:         shrn2 v0.16b, v1.8h, #17
1867 // CHECK-ERROR:                              ^
1868 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1869 // CHECK-ERROR:         shrn2 v0.8h, v1.4s, #33
1870 // CHECK-ERROR:                             ^
1871 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1872 // CHECK-ERROR:         shrn2 v0.4s, v1.2d, #65
1873 // CHECK-ERROR:                             ^
1874
1875 //------------------------------------------------------------------------------
1876 // Vector saturating shift right unsigned narrow by immediate
1877 //------------------------------------------------------------------------------
1878          sqshrun v0.8b, v1.8b, #3
1879          sqshrun v0.4h, v1.4h, #3
1880          sqshrun v0.2s, v1.2s, #3
1881          sqshrun2 v0.16b, v1.8h, #17
1882          sqshrun2 v0.8h, v1.4s, #33
1883          sqshrun2 v0.4s, v1.2d, #65
1884
1885 // CHECK-ERROR: error: invalid operand for instruction
1886 // CHECK-ERROR:         sqshrun v0.8b, v1.8b, #3
1887 // CHECK-ERROR:                           ^
1888 // CHECK-ERROR: error: invalid operand for instruction
1889 // CHECK-ERROR:         sqshrun v0.4h, v1.4h, #3
1890 // CHECK-ERROR:                           ^
1891 // CHECK-ERROR: error: invalid operand for instruction
1892 // CHECK-ERROR:         sqshrun v0.2s, v1.2s, #3
1893 // CHECK-ERROR:                           ^
1894 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1895 // CHECK-ERROR:         sqshrun2 v0.16b, v1.8h, #17
1896 // CHECK-ERROR:                                 ^
1897 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1898 // CHECK-ERROR:         sqshrun2 v0.8h, v1.4s, #33
1899 // CHECK-ERROR:                                ^
1900 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1901 // CHECK-ERROR:         sqshrun2 v0.4s, v1.2d, #65
1902 // CHECK-ERROR:                                ^
1903
1904 //------------------------------------------------------------------------------
1905 // Vector rounding shift right narrow by immediate
1906 //------------------------------------------------------------------------------
1907          rshrn v0.8b, v1.8b, #3
1908          rshrn v0.4h, v1.4h, #3
1909          rshrn v0.2s, v1.2s, #3
1910          rshrn2 v0.16b, v1.8h, #17
1911          rshrn2 v0.8h, v1.4s, #33
1912          rshrn2 v0.4s, v1.2d, #65
1913
1914 // CHECK-ERROR: error: invalid operand for instruction
1915 // CHECK-ERROR:         rshrn v0.8b, v1.8b, #3
1916 // CHECK-ERROR:                         ^
1917 // CHECK-ERROR: error: invalid operand for instruction
1918 // CHECK-ERROR:         rshrn v0.4h, v1.4h, #3
1919 // CHECK-ERROR:                         ^
1920 // CHECK-ERROR: error: invalid operand for instruction
1921 // CHECK-ERROR:         rshrn v0.2s, v1.2s, #3
1922 // CHECK-ERROR:                         ^
1923 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1924 // CHECK-ERROR:         rshrn2 v0.16b, v1.8h, #17
1925 // CHECK-ERROR:                               ^
1926 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1927 // CHECK-ERROR:         rshrn2 v0.8h, v1.4s, #33
1928 // CHECK-ERROR:                              ^
1929 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1930 // CHECK-ERROR:         rshrn2 v0.4s, v1.2d, #65
1931 // CHECK-ERROR:                              ^
1932
1933 //------------------------------------------------------------------------------
1934 // Vector saturating shift right rounded unsigned narrow by immediate
1935 //------------------------------------------------------------------------------
1936          sqrshrun v0.8b, v1.8b, #3
1937          sqrshrun v0.4h, v1.4h, #3
1938          sqrshrun v0.2s, v1.2s, #3
1939          sqrshrun2 v0.16b, v1.8h, #17
1940          sqrshrun2 v0.8h, v1.4s, #33
1941          sqrshrun2 v0.4s, v1.2d, #65
1942
1943 // CHECK-ERROR: error: invalid operand for instruction
1944 // CHECK-ERROR:         sqrshrun v0.8b, v1.8b, #3
1945 // CHECK-ERROR:                            ^
1946 // CHECK-ERROR: error: invalid operand for instruction
1947 // CHECK-ERROR:         sqrshrun v0.4h, v1.4h, #3
1948 // CHECK-ERROR:                            ^
1949 // CHECK-ERROR: error: invalid operand for instruction
1950 // CHECK-ERROR:         sqrshrun v0.2s, v1.2s, #3
1951 // CHECK-ERROR:                            ^
1952 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1953 // CHECK-ERROR:         sqrshrun2 v0.16b, v1.8h, #17
1954 // CHECK-ERROR:                                  ^
1955 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1956 // CHECK-ERROR:         sqrshrun2 v0.8h, v1.4s, #33
1957 // CHECK-ERROR:                                 ^
1958 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1959 // CHECK-ERROR:         sqrshrun2 v0.4s, v1.2d, #65
1960 // CHECK-ERROR:                                 ^
1961
1962 //------------------------------------------------------------------------------
1963 // Vector saturating shift right narrow by immediate
1964 //------------------------------------------------------------------------------
1965          sqshrn v0.8b, v1.8b, #3
1966          sqshrn v0.4h, v1.4h, #3
1967          sqshrn v0.2s, v1.2s, #3
1968          sqshrn2 v0.16b, v1.8h, #17
1969          sqshrn2 v0.8h, v1.4s, #33
1970          sqshrn2 v0.4s, v1.2d, #65
1971
1972 // CHECK-ERROR: error: invalid operand for instruction
1973 // CHECK-ERROR:         sqshrn v0.8b, v1.8b, #3
1974 // CHECK-ERROR:                          ^
1975 // CHECK-ERROR: error: invalid operand for instruction
1976 // CHECK-ERROR:         sqshrn v0.4h, v1.4h, #3
1977 // CHECK-ERROR:                          ^
1978 // CHECK-ERROR: error: invalid operand for instruction
1979 // CHECK-ERROR:         sqshrn v0.2s, v1.2s, #3
1980 // CHECK-ERROR:                          ^
1981 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1982 // CHECK-ERROR:         sqshrn2 v0.16b, v1.8h, #17
1983 // CHECK-ERROR:                                ^
1984 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1985 // CHECK-ERROR:         sqshrn2 v0.8h, v1.4s, #33
1986 // CHECK-ERROR:                               ^
1987 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1988 // CHECK-ERROR:         sqshrn2 v0.4s, v1.2d, #65
1989 // CHECK-ERROR:                               ^
1990
1991 //------------------------------------------------------------------------------
1992 // Vector saturating shift right narrow by immediate
1993 //------------------------------------------------------------------------------
1994          uqshrn v0.8b, v1.8b, #3
1995          uqshrn v0.4h, v1.4h, #3
1996          uqshrn v0.2s, v1.2s, #3
1997          uqshrn2 v0.16b, v1.8h, #17
1998          uqshrn2 v0.8h, v1.4s, #33
1999          uqshrn2 v0.4s, v1.2d, #65
2000
2001 // CHECK-ERROR: error: invalid operand for instruction
2002 // CHECK-ERROR:         uqshrn v0.8b, v1.8b, #3
2003 // CHECK-ERROR:                          ^
2004 // CHECK-ERROR: error: invalid operand for instruction
2005 // CHECK-ERROR:         uqshrn v0.4h, v1.4h, #3
2006 // CHECK-ERROR:                          ^
2007 // CHECK-ERROR: error: invalid operand for instruction
2008 // CHECK-ERROR:         uqshrn v0.2s, v1.2s, #3
2009 // CHECK-ERROR:                          ^
2010 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2011 // CHECK-ERROR:         uqshrn2 v0.16b, v1.8h, #17
2012 // CHECK-ERROR:                                ^
2013 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2014 // CHECK-ERROR:         uqshrn2 v0.8h, v1.4s, #33
2015 // CHECK-ERROR:                               ^
2016 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2017 // CHECK-ERROR:         uqshrn2 v0.4s, v1.2d, #65
2018 // CHECK-ERROR:                               ^
2019
2020 //------------------------------------------------------------------------------
2021 // Vector saturating shift right rounded narrow by immediate
2022 //------------------------------------------------------------------------------
2023          sqrshrn v0.8b, v1.8b, #3
2024          sqrshrn v0.4h, v1.4h, #3
2025          sqrshrn v0.2s, v1.2s, #3
2026          sqrshrn2 v0.16b, v1.8h, #17
2027          sqrshrn2 v0.8h, v1.4s, #33
2028          sqrshrn2 v0.4s, v1.2d, #65
2029
2030 // CHECK-ERROR: error: invalid operand for instruction
2031 // CHECK-ERROR:         sqrshrn v0.8b, v1.8b, #3
2032 // CHECK-ERROR:                           ^
2033 // CHECK-ERROR: error: invalid operand for instruction
2034 // CHECK-ERROR:         sqrshrn v0.4h, v1.4h, #3
2035 // CHECK-ERROR:                           ^
2036 // CHECK-ERROR: error: invalid operand for instruction
2037 // CHECK-ERROR:         sqrshrn v0.2s, v1.2s, #3
2038 // CHECK-ERROR:                           ^
2039 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2040 // CHECK-ERROR:         sqrshrn2 v0.16b, v1.8h, #17
2041 // CHECK-ERROR:                                 ^
2042 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2043 // CHECK-ERROR:         sqrshrn2 v0.8h, v1.4s, #33
2044 // CHECK-ERROR:                                ^
2045 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2046 // CHECK-ERROR:         sqrshrn2 v0.4s, v1.2d, #65
2047 // CHECK-ERROR:                                ^
2048
2049 //------------------------------------------------------------------------------
2050 // Vector saturating shift right rounded narrow by immediate
2051 //------------------------------------------------------------------------------
2052          uqrshrn v0.8b, v1.8b, #3
2053          uqrshrn v0.4h, v1.4h, #3
2054          uqrshrn v0.2s, v1.2s, #3
2055          uqrshrn2 v0.16b, v1.8h, #17
2056          uqrshrn2 v0.8h, v1.4s, #33
2057          uqrshrn2 v0.4s, v1.2d, #65
2058
2059 // CHECK-ERROR: error: invalid operand for instruction
2060 // CHECK-ERROR:         uqrshrn v0.8b, v1.8b, #3
2061 // CHECK-ERROR:                           ^
2062 // CHECK-ERROR: error: invalid operand for instruction
2063 // CHECK-ERROR:         uqrshrn v0.4h, v1.4h, #3
2064 // CHECK-ERROR:                           ^
2065 // CHECK-ERROR: error: invalid operand for instruction
2066 // CHECK-ERROR:         uqrshrn v0.2s, v1.2s, #3
2067 // CHECK-ERROR:                           ^
2068 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2069 // CHECK-ERROR:         uqrshrn2 v0.16b, v1.8h, #17
2070 // CHECK-ERROR:                                 ^
2071 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2072 // CHECK-ERROR:         uqrshrn2 v0.8h, v1.4s, #33
2073 // CHECK-ERROR:                                ^
2074 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2075 // CHECK-ERROR:         uqrshrn2 v0.4s, v1.2d, #65
2076 // CHECK-ERROR:                                ^
2077
2078 //------------------------------------------------------------------------------
2079 // Fixed-point convert to floating-point
2080 //------------------------------------------------------------------------------
2081          scvtf v0.2s, v1.2d, #3
2082          scvtf v0.4s, v1.4h, #3
2083          scvtf v0.2d, v1.2s, #3
2084          ucvtf v0.2s, v1.2s, #33
2085          ucvtf v0.4s, v1.4s, #33
2086          ucvtf v0.2d, v1.2d, #65
2087
2088 // CHECK-ERROR: error: invalid operand for instruction
2089 // CHECK-ERROR:         scvtf v0.2s, v1.2d, #3
2090 // CHECK-ERROR:                         ^
2091 // CHECK-ERROR: error: invalid operand for instruction
2092 // CHECK-ERROR:         scvtf v0.4s, v1.4h, #3
2093 // CHECK-ERROR:                         ^
2094 // CHECK-ERROR: error: invalid operand for instruction
2095 // CHECK-ERROR:         scvtf v0.2d, v1.2s, #3
2096 // CHECK-ERROR:                         ^
2097 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2098 // CHECK-ERROR:         ucvtf v0.2s, v1.2s, #33
2099 // CHECK-ERROR:                             ^
2100 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2101 // CHECK-ERROR:         ucvtf v0.4s, v1.4s, #33
2102 // CHECK-ERROR:                             ^
2103 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2104 // CHECK-ERROR:         ucvtf v0.2d, v1.2d, #65
2105 // CHECK-ERROR:                             ^
2106
2107 //------------------------------------------------------------------------------
2108 // Floating-point convert to fixed-point
2109 //------------------------------------------------------------------------------
2110          fcvtzs v0.2s, v1.2d, #3
2111          fcvtzs v0.4s, v1.4h, #3
2112          fcvtzs v0.2d, v1.2s, #3
2113          fcvtzu v0.2s, v1.2s, #33
2114          fcvtzu v0.4s, v1.4s, #33
2115          fcvtzu v0.2d, v1.2d, #65
2116
2117 // CHECK-ERROR: error: invalid operand for instruction
2118 // CHECK-ERROR:         fcvtzs v0.2s, v1.2d, #3
2119 // CHECK-ERROR:                          ^
2120 // CHECK-ERROR: error: invalid operand for instruction
2121 // CHECK-ERROR:         fcvtzs v0.4s, v1.4h, #3
2122 // CHECK-ERROR:                          ^
2123 // CHECK-ERROR: error: invalid operand for instruction
2124 // CHECK-ERROR:         fcvtzs v0.2d, v1.2s, #3
2125 // CHECK-ERROR:                          ^
2126 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2127 // CHECK-ERROR:         fcvtzu v0.2s, v1.2s, #33
2128 // CHECK-ERROR:                              ^
2129 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2130 // CHECK-ERROR:         fcvtzu v0.4s, v1.4s, #33
2131 // CHECK-ERROR:                              ^
2132 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2133 // CHECK-ERROR:         fcvtzu v0.2d, v1.2d, #65
2134 // CHECK-ERROR:                              ^
2135
2136 //----------------------------------------------------------------------
2137 // Vector operation on 3 operands with different types
2138 //----------------------------------------------------------------------
2139
2140         // Mismatched and invalid vector types
2141         saddl v0.8h, v1.8h, v2.8b
2142         saddl v0.4s, v1.4s, v2.4h
2143         saddl v0.2d, v1.2d, v2.2s
2144
2145 // CHECK-ERROR: error: invalid operand for instruction
2146 // CHECK-ERROR:        saddl v0.8h, v1.8h, v2.8b
2147 // CHECK-ERROR:                        ^
2148 // CHECK-ERROR: error: invalid operand for instruction
2149 // CHECK-ERROR:        saddl v0.4s, v1.4s, v2.4h
2150 // CHECK-ERROR:                        ^
2151 // CHECK-ERROR: error: invalid operand for instruction
2152 // CHECK-ERROR:        saddl v0.2d, v1.2d, v2.2s
2153 // CHECK-ERROR:                        ^
2154
2155         saddl2 v0.4s, v1.8s, v2.8h
2156         saddl2 v0.8h, v1.16h, v2.16b
2157         saddl2 v0.2d, v1.4d, v2.4s
2158
2159 // CHECK-ERROR: error: invalid operand for instruction
2160 // CHECK-ERROR:        saddl2 v0.4s, v1.8s, v2.8h
2161 // CHECK-ERROR:                      ^
2162 // CHECK-ERROR: error: invalid operand for instruction
2163 // CHECK-ERROR:        saddl2 v0.8h, v1.16h, v2.16b
2164 // CHECK-ERROR:                      ^
2165 // CHECK-ERROR: error: invalid operand for instruction
2166 // CHECK-ERROR:        saddl2 v0.2d, v1.4d, v2.4s
2167 // CHECK-ERROR:                      ^
2168
2169         uaddl v0.8h, v1.8h, v2.8b
2170         uaddl v0.4s, v1.4s, v2.4h
2171         uaddl v0.2d, v1.2d, v2.2s
2172
2173 // CHECK-ERROR: error: invalid operand for instruction
2174 // CHECK-ERROR:        uaddl v0.8h, v1.8h, v2.8b
2175 // CHECK-ERROR:                        ^
2176 // CHECK-ERROR: error: invalid operand for instruction
2177 // CHECK-ERROR:        uaddl v0.4s, v1.4s, v2.4h
2178 // CHECK-ERROR:                        ^
2179 // CHECK-ERROR: error: invalid operand for instruction
2180 // CHECK-ERROR:        uaddl v0.2d, v1.2d, v2.2s
2181 // CHECK-ERROR:                        ^
2182
2183         uaddl2 v0.8h, v1.16h, v2.16b
2184         uaddl2 v0.4s, v1.8s, v2.8h
2185         uaddl2 v0.2d, v1.4d, v2.4s
2186
2187 // CHECK-ERROR: error: invalid operand for instruction
2188 // CHECK-ERROR:        uaddl2 v0.8h, v1.16h, v2.16b
2189 // CHECK-ERROR:                      ^
2190 // CHECK-ERROR: error: invalid operand for instruction
2191 // CHECK-ERROR:        uaddl2 v0.4s, v1.8s, v2.8h
2192 // CHECK-ERROR:                      ^
2193 // CHECK-ERROR: error: invalid operand for instruction
2194 // CHECK-ERROR:        uaddl2 v0.2d, v1.4d, v2.4s
2195 // CHECK-ERROR:                      ^
2196
2197         ssubl v0.8h, v1.8h, v2.8b
2198         ssubl v0.4s, v1.4s, v2.4h
2199         ssubl v0.2d, v1.2d, v2.2s
2200
2201 // CHECK-ERROR: error: invalid operand for instruction
2202 // CHECK-ERROR:        ssubl v0.8h, v1.8h, v2.8b
2203 // CHECK-ERROR:                        ^
2204 // CHECK-ERROR: error: invalid operand for instruction
2205 // CHECK-ERROR:        ssubl v0.4s, v1.4s, v2.4h
2206 // CHECK-ERROR:                        ^
2207 // CHECK-ERROR: error: invalid operand for instruction
2208 // CHECK-ERROR:        ssubl v0.2d, v1.2d, v2.2s
2209 // CHECK-ERROR:                        ^
2210
2211         ssubl2 v0.8h, v1.16h, v2.16b
2212         ssubl2 v0.4s, v1.8s, v2.8h
2213         ssubl2 v0.2d, v1.4d, v2.4s
2214
2215 // CHECK-ERROR: error: invalid operand for instruction
2216 // CHECK-ERROR:        ssubl2 v0.8h, v1.16h, v2.16b
2217 // CHECK-ERROR:                      ^
2218 // CHECK-ERROR: error: invalid operand for instruction
2219 // CHECK-ERROR:        ssubl2 v0.4s, v1.8s, v2.8h
2220 // CHECK-ERROR:                      ^
2221 // CHECK-ERROR: error: invalid operand for instruction
2222 // CHECK-ERROR:        ssubl2 v0.2d, v1.4d, v2.4s
2223 // CHECK-ERROR:                      ^
2224
2225         usubl v0.8h, v1.8h, v2.8b
2226         usubl v0.4s, v1.4s, v2.4h
2227         usubl v0.2d, v1.2d, v2.2s
2228
2229 // CHECK-ERROR: error: invalid operand for instruction
2230 // CHECK-ERROR:        usubl v0.8h, v1.8h, v2.8b
2231 // CHECK-ERROR:                        ^
2232 // CHECK-ERROR: error: invalid operand for instruction
2233 // CHECK-ERROR:        usubl v0.4s, v1.4s, v2.4h
2234 // CHECK-ERROR:                        ^
2235 // CHECK-ERROR: error: invalid operand for instruction
2236 // CHECK-ERROR:        usubl v0.2d, v1.2d, v2.2s
2237 // CHECK-ERROR:                        ^
2238
2239         usubl2 v0.8h, v1.16h, v2.16b
2240         usubl2 v0.4s, v1.8s, v2.8h
2241         usubl2 v0.2d, v1.4d, v2.4s
2242
2243 // CHECK-ERROR: error: invalid operand for instruction
2244 // CHECK-ERROR:        usubl2 v0.8h, v1.16h, v2.16b
2245 // CHECK-ERROR:                      ^
2246 // CHECK-ERROR: error: invalid operand for instruction
2247 // CHECK-ERROR:        usubl2 v0.4s, v1.8s, v2.8h
2248 // CHECK-ERROR:                      ^
2249 // CHECK-ERROR: error: invalid operand for instruction
2250 // CHECK-ERROR:        usubl2 v0.2d, v1.4d, v2.4s
2251 // CHECK-ERROR:                      ^
2252
2253         sabal v0.8h, v1.8h, v2.8b
2254         sabal v0.4s, v1.4s, v2.4h
2255         sabal v0.2d, v1.2d, v2.2s
2256
2257 // CHECK-ERROR: error: invalid operand for instruction
2258 // CHECK-ERROR:        sabal v0.8h, v1.8h, v2.8b
2259 // CHECK-ERROR:                        ^
2260 // CHECK-ERROR: error: invalid operand for instruction
2261 // CHECK-ERROR:        sabal v0.4s, v1.4s, v2.4h
2262 // CHECK-ERROR:                        ^
2263 // CHECK-ERROR: error: invalid operand for instruction
2264 // CHECK-ERROR:        sabal v0.2d, v1.2d, v2.2s
2265 // CHECK-ERROR:                        ^
2266
2267         sabal2 v0.8h, v1.16h, v2.16b
2268         sabal2 v0.4s, v1.8s, v2.8h
2269         sabal2 v0.2d, v1.4d, v2.4s
2270
2271 // CHECK-ERROR: error: invalid operand for instruction
2272 // CHECK-ERROR:        sabal2 v0.8h, v1.16h, v2.16b
2273 // CHECK-ERROR:                      ^
2274 // CHECK-ERROR: error: invalid operand for instruction
2275 // CHECK-ERROR:        sabal2 v0.4s, v1.8s, v2.8h
2276 // CHECK-ERROR:                      ^
2277 // CHECK-ERROR: error: invalid operand for instruction
2278 // CHECK-ERROR:        sabal2 v0.2d, v1.4d, v2.4s
2279 // CHECK-ERROR:                      ^
2280
2281         uabal v0.8h, v1.8h, v2.8b
2282         uabal v0.4s, v1.4s, v2.4h
2283         uabal v0.2d, v1.2d, v2.2s
2284
2285 // CHECK-ERROR: error: invalid operand for instruction
2286 // CHECK-ERROR:        uabal v0.8h, v1.8h, v2.8b
2287 // CHECK-ERROR:                        ^
2288 // CHECK-ERROR: error: invalid operand for instruction
2289 // CHECK-ERROR:        uabal v0.4s, v1.4s, v2.4h
2290 // CHECK-ERROR:                        ^
2291 // CHECK-ERROR: error: invalid operand for instruction
2292 // CHECK-ERROR:        uabal v0.2d, v1.2d, v2.2s
2293 // CHECK-ERROR:                        ^
2294
2295         uabal2 v0.8h, v1.16h, v2.16b
2296         uabal2 v0.4s, v1.8s, v2.8h
2297         uabal2 v0.2d, v1.4d, v2.4s
2298
2299 // CHECK-ERROR: error: invalid operand for instruction
2300 // CHECK-ERROR:        uabal2 v0.8h, v1.16h, v2.16b
2301 // CHECK-ERROR:                      ^
2302 // CHECK-ERROR: error: invalid operand for instruction
2303 // CHECK-ERROR:        uabal2 v0.4s, v1.8s, v2.8h
2304 // CHECK-ERROR:                      ^
2305 // CHECK-ERROR: error: invalid operand for instruction
2306 // CHECK-ERROR:        uabal2 v0.2d, v1.4d, v2.4s
2307 // CHECK-ERROR:                      ^
2308
2309         sabdl v0.8h, v1.8h, v2.8b
2310         sabdl v0.4s, v1.4s, v2.4h
2311         sabdl v0.2d, v1.2d, v2.2s
2312
2313 // CHECK-ERROR: error: invalid operand for instruction
2314 // CHECK-ERROR:        sabdl v0.8h, v1.8h, v2.8b
2315 // CHECK-ERROR:                        ^
2316 // CHECK-ERROR: error: invalid operand for instruction
2317 // CHECK-ERROR:        sabdl v0.4s, v1.4s, v2.4h
2318 // CHECK-ERROR:                        ^
2319 // CHECK-ERROR: error: invalid operand for instruction
2320 // CHECK-ERROR:        sabdl v0.2d, v1.2d, v2.2s
2321 // CHECK-ERROR:                        ^
2322
2323         sabdl2 v0.8h, v1.16h, v2.16b
2324         sabdl2 v0.4s, v1.8s, v2.8h
2325         sabdl2 v0.2d, v1.4d, v2.4s
2326
2327 // CHECK-ERROR: error: invalid operand for instruction
2328 // CHECK-ERROR:        sabdl2 v0.8h, v1.16h, v2.16b
2329 // CHECK-ERROR:                      ^
2330 // CHECK-ERROR: error: invalid operand for instruction
2331 // CHECK-ERROR:        sabdl2 v0.4s, v1.8s, v2.8h
2332 // CHECK-ERROR:                      ^
2333 // CHECK-ERROR: error: invalid operand for instruction
2334 // CHECK-ERROR:        sabdl2 v0.2d, v1.4d, v2.4s
2335 // CHECK-ERROR:                      ^
2336
2337         uabdl v0.8h, v1.8h, v2.8b
2338         uabdl v0.4s, v1.4s, v2.4h
2339         uabdl v0.2d, v1.2d, v2.2s
2340
2341 // CHECK-ERROR: error: invalid operand for instruction
2342 // CHECK-ERROR:        uabdl v0.8h, v1.8h, v2.8b
2343 // CHECK-ERROR:                        ^
2344 // CHECK-ERROR: error: invalid operand for instruction
2345 // CHECK-ERROR:        uabdl v0.4s, v1.4s, v2.4h
2346 // CHECK-ERROR:                        ^
2347 // CHECK-ERROR: error: invalid operand for instruction
2348 // CHECK-ERROR:        uabdl v0.2d, v1.2d, v2.2s
2349 // CHECK-ERROR:                        ^
2350
2351         uabdl2 v0.8h, v1.16h, v2.16b
2352         uabdl2 v0.4s, v1.8s, v2.8h
2353         uabdl2 v0.2d, v1.4d, v2.4s
2354
2355 // CHECK-ERROR: error: invalid operand for instruction
2356 // CHECK-ERROR:        uabdl2 v0.8h, v1.16h, v2.16b
2357 // CHECK-ERROR:                      ^
2358 // CHECK-ERROR: error: invalid operand for instruction
2359 // CHECK-ERROR:        uabdl2 v0.4s, v1.8s, v2.8h
2360 // CHECK-ERROR:                      ^
2361 // CHECK-ERROR: error: invalid operand for instruction
2362 // CHECK-ERROR:        uabdl2 v0.2d, v1.4d, v2.4s
2363 // CHECK-ERROR:                      ^
2364
2365         smlal v0.8h, v1.8h, v2.8b
2366         smlal v0.4s, v1.4s, v2.4h
2367         smlal v0.2d, v1.2d, v2.2s
2368
2369 // CHECK-ERROR: error: invalid operand for instruction
2370 // CHECK-ERROR:        smlal v0.8h, v1.8h, v2.8b
2371 // CHECK-ERROR:                        ^
2372 // CHECK-ERROR: error: invalid operand for instruction
2373 // CHECK-ERROR:        smlal v0.4s, v1.4s, v2.4h
2374 // CHECK-ERROR:                        ^
2375 // CHECK-ERROR: error: invalid operand for instruction
2376 // CHECK-ERROR:        smlal v0.2d, v1.2d, v2.2s
2377 // CHECK-ERROR:                        ^
2378
2379         smlal2 v0.8h, v1.16h, v2.16b
2380         smlal2 v0.4s, v1.8s, v2.8h
2381         smlal2 v0.2d, v1.4d, v2.4s
2382
2383 // CHECK-ERROR: error: invalid operand for instruction
2384 // CHECK-ERROR:        smlal2 v0.8h, v1.16h, v2.16b
2385 // CHECK-ERROR:                      ^
2386 // CHECK-ERROR: error: invalid operand for instruction
2387 // CHECK-ERROR:        smlal2 v0.4s, v1.8s, v2.8h
2388 // CHECK-ERROR:                      ^
2389 // CHECK-ERROR: error: invalid operand for instruction
2390 // CHECK-ERROR:        smlal2 v0.2d, v1.4d, v2.4s
2391 // CHECK-ERROR:                      ^
2392
2393         umlal v0.8h, v1.8h, v2.8b
2394         umlal v0.4s, v1.4s, v2.4h
2395         umlal v0.2d, v1.2d, v2.2s
2396
2397 // CHECK-ERROR: error: invalid operand for instruction
2398 // CHECK-ERROR:        umlal v0.8h, v1.8h, v2.8b
2399 // CHECK-ERROR:                        ^
2400 // CHECK-ERROR: error: invalid operand for instruction
2401 // CHECK-ERROR:        umlal v0.4s, v1.4s, v2.4h
2402 // CHECK-ERROR:                        ^
2403 // CHECK-ERROR: error: invalid operand for instruction
2404 // CHECK-ERROR:        umlal v0.2d, v1.2d, v2.2s
2405 // CHECK-ERROR:                        ^
2406
2407         umlal2 v0.8h, v1.16h, v2.16b
2408         umlal2 v0.4s, v1.8s, v2.8h
2409         umlal2 v0.2d, v1.4d, v2.4s
2410
2411 // CHECK-ERROR: error: invalid operand for instruction
2412 // CHECK-ERROR:        umlal2 v0.8h, v1.16h, v2.16b
2413 // CHECK-ERROR:                      ^
2414 // CHECK-ERROR: error: invalid operand for instruction
2415 // CHECK-ERROR:        umlal2 v0.4s, v1.8s, v2.8h
2416 // CHECK-ERROR:                      ^
2417 // CHECK-ERROR: error: invalid operand for instruction
2418 // CHECK-ERROR:        umlal2 v0.2d, v1.4d, v2.4s
2419 // CHECK-ERROR:                      ^
2420
2421         smlsl v0.8h, v1.8h, v2.8b
2422         smlsl v0.4s, v1.4s, v2.4h
2423         smlsl v0.2d, v1.2d, v2.2s
2424
2425 // CHECK-ERROR: error: invalid operand for instruction
2426 // CHECK-ERROR:        smlsl v0.8h, v1.8h, v2.8b
2427 // CHECK-ERROR:                        ^
2428 // CHECK-ERROR: error: invalid operand for instruction
2429 // CHECK-ERROR:        smlsl v0.4s, v1.4s, v2.4h
2430 // CHECK-ERROR:                        ^
2431 // CHECK-ERROR: error: invalid operand for instruction
2432 // CHECK-ERROR:        smlsl v0.2d, v1.2d, v2.2s
2433 // CHECK-ERROR:                        ^
2434
2435         smlsl2 v0.8h, v1.16h, v2.16b
2436         smlsl2 v0.4s, v1.8s, v2.8h
2437         smlsl2 v0.2d, v1.4d, v2.4s
2438
2439 // CHECK-ERROR: error: invalid operand for instruction
2440 // CHECK-ERROR:        smlsl2 v0.8h, v1.16h, v2.16b
2441 // CHECK-ERROR:                      ^
2442 // CHECK-ERROR: error: invalid operand for instruction
2443 // CHECK-ERROR:        smlsl2 v0.4s, v1.8s, v2.8h
2444 // CHECK-ERROR:                      ^
2445 // CHECK-ERROR: error: invalid operand for instruction
2446 // CHECK-ERROR:        smlsl2 v0.2d, v1.4d, v2.4s
2447 // CHECK-ERROR:                      ^
2448
2449         umlsl v0.8h, v1.8h, v2.8b
2450         umlsl v0.4s, v1.4s, v2.4h
2451         umlsl v0.2d, v1.2d, v2.2s
2452
2453 // CHECK-ERROR: error: invalid operand for instruction
2454 // CHECK-ERROR:        umlsl v0.8h, v1.8h, v2.8b
2455 // CHECK-ERROR:                        ^
2456 // CHECK-ERROR: error: invalid operand for instruction
2457 // CHECK-ERROR:        umlsl v0.4s, v1.4s, v2.4h
2458 // CHECK-ERROR:                        ^
2459 // CHECK-ERROR: error: invalid operand for instruction
2460 // CHECK-ERROR:        umlsl v0.2d, v1.2d, v2.2s
2461 // CHECK-ERROR:                        ^
2462
2463         umlsl2 v0.8h, v1.16h, v2.16b
2464         umlsl2 v0.4s, v1.8s, v2.8h
2465         umlsl2 v0.2d, v1.4d, v2.4s
2466
2467 // CHECK-ERROR: error: invalid operand for instruction
2468 // CHECK-ERROR:        umlsl2 v0.8h, v1.16h, v2.16b
2469 // CHECK-ERROR:                      ^
2470 // CHECK-ERROR: error: invalid operand for instruction
2471 // CHECK-ERROR:        umlsl2 v0.4s, v1.8s, v2.8h
2472 // CHECK-ERROR:                      ^
2473 // CHECK-ERROR: error: invalid operand for instruction
2474 // CHECK-ERROR:        umlsl2 v0.2d, v1.4d, v2.4s
2475 // CHECK-ERROR:                      ^
2476
2477         smull v0.8h, v1.8h, v2.8b
2478         smull v0.4s, v1.4s, v2.4h
2479         smull v0.2d, v1.2d, v2.2s
2480
2481 // CHECK-ERROR: error: invalid operand for instruction
2482 // CHECK-ERROR:        smull v0.8h, v1.8h, v2.8b
2483 // CHECK-ERROR:                        ^
2484 // CHECK-ERROR: error: invalid operand for instruction
2485 // CHECK-ERROR:        smull v0.4s, v1.4s, v2.4h
2486 // CHECK-ERROR:                        ^
2487 // CHECK-ERROR: error: invalid operand for instruction
2488 // CHECK-ERROR:        smull v0.2d, v1.2d, v2.2s
2489 // CHECK-ERROR:                        ^
2490
2491         smull2 v0.8h, v1.16h, v2.16b
2492         smull2 v0.4s, v1.8s, v2.8h
2493         smull2 v0.2d, v1.4d, v2.4s
2494
2495 // CHECK-ERROR: error: invalid operand for instruction
2496 // CHECK-ERROR:        smull2 v0.8h, v1.16h, v2.16b
2497 // CHECK-ERROR:                      ^
2498 // CHECK-ERROR: error: invalid operand for instruction
2499 // CHECK-ERROR:        smull2 v0.4s, v1.8s, v2.8h
2500 // CHECK-ERROR:                      ^
2501 // CHECK-ERROR: error: invalid operand for instruction
2502 // CHECK-ERROR:        smull2 v0.2d, v1.4d, v2.4s
2503 // CHECK-ERROR:                      ^
2504
2505         umull v0.8h, v1.8h, v2.8b
2506         umull v0.4s, v1.4s, v2.4h
2507         umull v0.2d, v1.2d, v2.2s
2508
2509 // CHECK-ERROR: error: invalid operand for instruction
2510 // CHECK-ERROR:        umull v0.8h, v1.8h, v2.8b
2511 // CHECK-ERROR:                        ^
2512 // CHECK-ERROR: error: invalid operand for instruction
2513 // CHECK-ERROR:        umull v0.4s, v1.4s, v2.4h
2514 // CHECK-ERROR:                        ^
2515 // CHECK-ERROR: error: invalid operand for instruction
2516 // CHECK-ERROR:        umull v0.2d, v1.2d, v2.2s
2517 // CHECK-ERROR:                        ^
2518
2519         umull2 v0.8h, v1.16h, v2.16b
2520         umull2 v0.4s, v1.8s, v2.8h
2521         umull2 v0.2d, v1.4d, v2.4s
2522
2523 // CHECK-ERROR: error: invalid operand for instruction
2524 // CHECK-ERROR:        umull2 v0.8h, v1.16h, v2.16b
2525 // CHECK-ERROR:                      ^
2526 // CHECK-ERROR: error: invalid operand for instruction
2527 // CHECK-ERROR:        umull2 v0.4s, v1.8s, v2.8h
2528 // CHECK-ERROR:                      ^
2529 // CHECK-ERROR: error: invalid operand for instruction
2530 // CHECK-ERROR:        umull2 v0.2d, v1.4d, v2.4s
2531 // CHECK-ERROR:                      ^
2532
2533 //------------------------------------------------------------------------------
2534 // Long - Variant 2
2535 //------------------------------------------------------------------------------
2536
2537         sqdmlal v0.4s, v1.4s, v2.4h
2538         sqdmlal v0.2d, v1.2d, v2.2s
2539
2540 // CHECK-ERROR: error: invalid operand for instruction
2541 // CHECK-ERROR:        sqdmlal v0.4s, v1.4s, v2.4h
2542 // CHECK-ERROR:                          ^
2543 // CHECK-ERROR: error: invalid operand for instruction
2544 // CHECK-ERROR:        sqdmlal v0.2d, v1.2d, v2.2s
2545 // CHECK-ERROR:                          ^
2546
2547         sqdmlal2 v0.4s, v1.8s, v2.8h
2548         sqdmlal2 v0.2d, v1.4d, v2.4s
2549
2550 // CHECK-ERROR: error: invalid operand for instruction
2551 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8s, v2.8h
2552 // CHECK-ERROR:                        ^
2553 // CHECK-ERROR: error: invalid operand for instruction
2554 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4d, v2.4s
2555 // CHECK-ERROR:                        ^
2556
2557         // Mismatched vector types
2558         sqdmlal v0.8h, v1.8b, v2.8b
2559         sqdmlal2 v0.8h, v1.16b, v2.16b
2560
2561 // CHECK-ERROR: error: invalid operand for instruction
2562 // CHECK-ERROR:        sqdmlal v0.8h, v1.8b, v2.8b
2563 // CHECK-ERROR:                   ^
2564 // CHECK-ERROR: error: invalid operand for instruction
2565 // CHECK-ERROR:        sqdmlal2 v0.8h, v1.16b, v2.16b
2566 // CHECK-ERROR:                    ^
2567
2568         sqdmlsl v0.4s, v1.4s, v2.4h
2569         sqdmlsl v0.2d, v1.2d, v2.2s
2570
2571 // CHECK-ERROR: error: invalid operand for instruction
2572 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4s, v2.4h
2573 // CHECK-ERROR:                          ^
2574 // CHECK-ERROR: error: invalid operand for instruction
2575 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2d, v2.2s
2576 // CHECK-ERROR:                          ^
2577
2578         sqdmlsl2 v0.4s, v1.8s, v2.8h
2579         sqdmlsl2 v0.2d, v1.4d, v2.4s
2580
2581 // CHECK-ERROR: error: invalid operand for instruction
2582 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8s, v2.8h
2583 // CHECK-ERROR:                        ^
2584 // CHECK-ERROR: error: invalid operand for instruction
2585 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4d, v2.4s
2586 // CHECK-ERROR:                        ^
2587
2588         // Mismatched vector types
2589         sqdmlsl v0.8h, v1.8b, v2.8b
2590         sqdmlsl2 v0.8h, v1.16b, v2.16b
2591
2592 // CHECK-ERROR: error: invalid operand for instruction
2593 // CHECK-ERROR:        sqdmlsl v0.8h, v1.8b, v2.8b
2594 // CHECK-ERROR:                   ^
2595 // CHECK-ERROR: error: invalid operand for instruction
2596 // CHECK-ERROR:        sqdmlsl2 v0.8h, v1.16b, v2.16b
2597 // CHECK-ERROR:                    ^
2598
2599
2600         sqdmull v0.4s, v1.4s, v2.4h
2601         sqdmull v0.2d, v1.2d, v2.2s
2602
2603 // CHECK-ERROR: error: invalid operand for instruction
2604 // CHECK-ERROR:        sqdmull v0.4s, v1.4s, v2.4h
2605 // CHECK-ERROR:                          ^
2606 // CHECK-ERROR: error: invalid operand for instruction
2607 // CHECK-ERROR:        sqdmull v0.2d, v1.2d, v2.2s
2608 // CHECK-ERROR:                          ^
2609
2610         sqdmull2 v0.4s, v1.8s, v2.8h
2611         sqdmull2 v0.2d, v1.4d, v2.4s
2612
2613 // CHECK-ERROR: error: invalid operand for instruction
2614 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8s, v2.8h
2615 // CHECK-ERROR:                        ^
2616 // CHECK-ERROR: error: invalid operand for instruction
2617 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4d, v2.4s
2618 // CHECK-ERROR:                        ^
2619
2620         // Mismatched vector types
2621         sqdmull v0.8h, v1.8b, v2.8b
2622         sqdmull2 v0.8h, v1.16b, v2.16b
2623
2624 // CHECK-ERROR: error: invalid operand for instruction
2625 // CHECK-ERROR:        sqdmull v0.8h, v1.8b, v2.8b
2626 // CHECK-ERROR:                   ^
2627 // CHECK-ERROR: error: invalid operand for instruction
2628 // CHECK-ERROR:        sqdmull2 v0.8h, v1.16b, v2.16b
2629 // CHECK-ERROR:                    ^
2630
2631
2632 //------------------------------------------------------------------------------
2633 // Long - Variant 3
2634 //------------------------------------------------------------------------------
2635
2636         pmull v0.8h, v1.8h, v2.8b
2637
2638 // CHECK-ERROR: error: invalid operand for instruction
2639 // CHECK-ERROR:        pmull v0.8h, v1.8h, v2.8b
2640 // CHECK-ERROR:                        ^
2641
2642         pmull v0.1q, v1.2d, v2.2d
2643         
2644 // CHECK-ERROR: error: invalid operand for instruction
2645 // CHECK-ERROR:        pmull v0.1q, v1.2d, v2.2d
2646 // CHECK-ERROR:                     ^
2647
2648         // Mismatched vector types
2649         pmull v0.4s, v1.4h, v2.4h
2650         pmull v0.2d, v1.2s, v2.2s
2651
2652 // CHECK-ERROR: error: invalid operand for instruction
2653 // CHECK-ERROR:        pmull v0.4s, v1.4h, v2.4h
2654 // CHECK-ERROR:                 ^
2655 // CHECK-ERROR: error: invalid operand for instruction
2656 // CHECK-ERROR:        pmull v0.2d, v1.2s, v2.2s
2657 // CHECK-ERROR:                 ^
2658
2659
2660         pmull2 v0.8h, v1.16h, v2.16b
2661
2662 // CHECK-ERROR: error: invalid operand for instruction
2663 // CHECK-ERROR:        pmull2 v0.8h, v1.16h, v2.16b
2664 // CHECK-ERROR:                      ^
2665
2666         pmull2 v0.q, v1.2d, v2.2d
2667         
2668 // CHECK-ERROR: error: invalid operand for instruction
2669 // CHECK-ERROR:        pmull2 v0.q, v1.2d, v2.2d
2670 // CHECK-ERROR:                  ^
2671
2672         // Mismatched vector types
2673         pmull2 v0.4s, v1.8h v2.8h
2674         pmull2 v0.2d, v1.4s, v2.4s
2675
2676 // CHECK-AARCH64-ERROR: error: expected comma before next operand
2677 // CHECK-AARCH64-ERROR:        pmull2 v0.4s, v1.8h v2.8h
2678 // CHECK-AARCH64-ERROR:                            ^
2679
2680 // CHECK-ARM64-ERROR: error: unexpected token in argument list
2681 // CHECK-ARM64-ERROR:        pmull2 v0.4s, v1.8h v2.8h
2682 // CHECK-ARM64-ERROR:                            ^
2683
2684 // CHECK-ERROR: error: invalid operand for instruction
2685 // CHECK-ERROR:        pmull2 v0.2d, v1.4s, v2.4s
2686 // CHECK-ERROR:                  ^
2687
2688 //------------------------------------------------------------------------------
2689 // Widen
2690 //------------------------------------------------------------------------------
2691
2692         saddw v0.8h, v1.8h, v2.8h
2693         saddw v0.4s, v1.4s, v2.4s
2694         saddw v0.2d, v1.2d, v2.2d
2695
2696 // CHECK-ERROR: error: invalid operand for instruction
2697 // CHECK-ERROR:        saddw v0.8h, v1.8h, v2.8h
2698 // CHECK-ERROR:                               ^
2699 // CHECK-ERROR: error: invalid operand for instruction
2700 // CHECK-ERROR:        saddw v0.4s, v1.4s, v2.4s
2701 // CHECK-ERROR:                               ^
2702 // CHECK-ERROR: error: invalid operand for instruction
2703 // CHECK-ERROR:        saddw v0.2d, v1.2d, v2.2d
2704 // CHECK-ERROR:                               ^
2705
2706         saddw2 v0.8h, v1.8h, v2.16h
2707         saddw2 v0.4s, v1.4s, v2.8s
2708         saddw2 v0.2d, v1.2d, v2.4d
2709
2710 // CHECK-ERROR: error: invalid operand for instruction
2711 // CHECK-ERROR:        saddw2 v0.8h, v1.8h, v2.16h
2712 // CHECK-ERROR:                             ^
2713 // CHECK-ERROR: error: invalid operand for instruction
2714 // CHECK-ERROR:        saddw2 v0.4s, v1.4s, v2.8s
2715 // CHECK-ERROR:                             ^
2716 // CHECK-ERROR: error: invalid operand for instruction
2717 // CHECK-ERROR:        saddw2 v0.2d, v1.2d, v2.4d
2718 // CHECK-ERROR:                             ^
2719
2720         uaddw v0.8h, v1.8h, v2.8h
2721         uaddw v0.4s, v1.4s, v2.4s
2722         uaddw v0.2d, v1.2d, v2.2d
2723
2724 // CHECK-ERROR: error: invalid operand for instruction
2725 // CHECK-ERROR:        uaddw v0.8h, v1.8h, v2.8h
2726 // CHECK-ERROR:                               ^
2727 // CHECK-ERROR: error: invalid operand for instruction
2728 // CHECK-ERROR:        uaddw v0.4s, v1.4s, v2.4s
2729 // CHECK-ERROR:                               ^
2730 // CHECK-ERROR: error: invalid operand for instruction
2731 // CHECK-ERROR:        uaddw v0.2d, v1.2d, v2.2d
2732 // CHECK-ERROR:                               ^
2733
2734         uaddw2 v0.8h, v1.8h, v2.16h
2735         uaddw2 v0.4s, v1.4s, v2.8s
2736         uaddw2 v0.2d, v1.2d, v2.4d
2737
2738 // CHECK-ERROR: error: invalid operand for instruction
2739 // CHECK-ERROR:        uaddw2 v0.8h, v1.8h, v2.16h
2740 // CHECK-ERROR:                             ^
2741 // CHECK-ERROR: error: invalid operand for instruction
2742 // CHECK-ERROR:        uaddw2 v0.4s, v1.4s, v2.8s
2743 // CHECK-ERROR:                             ^
2744 // CHECK-ERROR: error: invalid operand for instruction
2745 // CHECK-ERROR:        uaddw2 v0.2d, v1.2d, v2.4d
2746 // CHECK-ERROR:                             ^
2747
2748         ssubw v0.8h, v1.8h, v2.8h
2749         ssubw v0.4s, v1.4s, v2.4s
2750         ssubw v0.2d, v1.2d, v2.2d
2751
2752 // CHECK-ERROR: error: invalid operand for instruction
2753 // CHECK-ERROR:        ssubw v0.8h, v1.8h, v2.8h
2754 // CHECK-ERROR:                               ^
2755 // CHECK-ERROR: error: invalid operand for instruction
2756 // CHECK-ERROR:        ssubw v0.4s, v1.4s, v2.4s
2757 // CHECK-ERROR:                               ^
2758 // CHECK-ERROR: error: invalid operand for instruction
2759 // CHECK-ERROR:        ssubw v0.2d, v1.2d, v2.2d
2760 // CHECK-ERROR:                               ^
2761
2762         ssubw2 v0.8h, v1.8h, v2.16h
2763         ssubw2 v0.4s, v1.4s, v2.8s
2764         ssubw2 v0.2d, v1.2d, v2.4d
2765
2766 // CHECK-ERROR: error: invalid operand for instruction
2767 // CHECK-ERROR:        ssubw2 v0.8h, v1.8h, v2.16h
2768 // CHECK-ERROR:                             ^
2769 // CHECK-ERROR: error: invalid operand for instruction
2770 // CHECK-ERROR:        ssubw2 v0.4s, v1.4s, v2.8s
2771 // CHECK-ERROR:                             ^
2772 // CHECK-ERROR: error: invalid operand for instruction
2773 // CHECK-ERROR:        ssubw2 v0.2d, v1.2d, v2.4d
2774 // CHECK-ERROR:                             ^
2775
2776         usubw v0.8h, v1.8h, v2.8h
2777         usubw v0.4s, v1.4s, v2.4s
2778         usubw v0.2d, v1.2d, v2.2d
2779
2780 // CHECK-ERROR: error: invalid operand for instruction
2781 // CHECK-ERROR:        usubw v0.8h, v1.8h, v2.8h
2782 // CHECK-ERROR:                               ^
2783 // CHECK-ERROR: error: invalid operand for instruction
2784 // CHECK-ERROR:        usubw v0.4s, v1.4s, v2.4s
2785 // CHECK-ERROR:                               ^
2786 // CHECK-ERROR: error: invalid operand for instruction
2787 // CHECK-ERROR:        usubw v0.2d, v1.2d, v2.2d
2788 // CHECK-ERROR:                               ^
2789
2790         usubw2 v0.8h, v1.8h, v2.16h
2791         usubw2 v0.4s, v1.4s, v2.8s
2792         usubw2 v0.2d, v1.2d, v2.4d
2793
2794 // CHECK-ERROR: error: invalid operand for instruction
2795 // CHECK-ERROR:        usubw2 v0.8h, v1.8h, v2.16h
2796 // CHECK-ERROR:                             ^
2797 // CHECK-ERROR: error: invalid operand for instruction
2798 // CHECK-ERROR:        usubw2 v0.4s, v1.4s, v2.8s
2799 // CHECK-ERROR:                             ^
2800 // CHECK-ERROR: error: invalid operand for instruction
2801 // CHECK-ERROR:        usubw2 v0.2d, v1.2d, v2.4d
2802 // CHECK-ERROR:                             ^
2803
2804 //------------------------------------------------------------------------------
2805 // Narrow
2806 //------------------------------------------------------------------------------
2807
2808         addhn v0.8b, v1.8h, v2.8d
2809         addhn v0.4h, v1.4s, v2.4h
2810         addhn v0.2s, v1.2d, v2.2s
2811
2812 // CHECK-ERROR: error: invalid operand for instruction
2813 // CHECK-ERROR:        addhn v0.8b, v1.8h, v2.8d
2814 // CHECK-ERROR:                            ^
2815 // CHECK-ERROR: error: invalid operand for instruction
2816 // CHECK-ERROR:        addhn v0.4h, v1.4s, v2.4h
2817 // CHECK-ERROR:                               ^
2818 // CHECK-ERROR: error: invalid operand for instruction
2819 // CHECK-ERROR:        addhn v0.2s, v1.2d, v2.2s
2820 // CHECK-ERROR:                               ^
2821
2822         addhn2 v0.16b, v1.8h, v2.8b
2823         addhn2 v0.8h, v1.4s, v2.4h
2824         addhn2 v0.4s, v1.2d, v2.2s
2825
2826 // CHECK-ERROR: error: invalid operand for instruction
2827 // CHECK-ERROR:        addhn2 v0.16b, v1.8h, v2.8b
2828 // CHECK-ERROR:                                 ^
2829 // CHECK-ERROR: error: invalid operand for instruction
2830 // CHECK-ERROR:        addhn2 v0.8h, v1.4s, v2.4h
2831 // CHECK-ERROR:                                ^
2832 // CHECK-ERROR: error: invalid operand for instruction
2833 // CHECK-ERROR:        addhn2 v0.4s, v1.2d, v2.2s
2834 // CHECK-ERROR:                                ^
2835
2836         raddhn v0.8b, v1.8h, v2.8b
2837         raddhn v0.4h, v1.4s, v2.4h
2838         raddhn v0.2s, v1.2d, v2.2s
2839
2840 // CHECK-ERROR: error: invalid operand for instruction
2841 // CHECK-ERROR:        raddhn v0.8b, v1.8h, v2.8b
2842 // CHECK-ERROR:                                ^
2843 // CHECK-ERROR: error: invalid operand for instruction
2844 // CHECK-ERROR:        raddhn v0.4h, v1.4s, v2.4h
2845 // CHECK-ERROR:                                ^
2846 // CHECK-ERROR: error: invalid operand for instruction
2847 // CHECK-ERROR:        raddhn v0.2s, v1.2d, v2.2s
2848 // CHECK-ERROR:                                ^
2849
2850         raddhn2 v0.16b, v1.8h, v2.8b
2851         raddhn2 v0.8h, v1.4s, v2.4h
2852         raddhn2 v0.4s, v1.2d, v2.2s
2853
2854 // CHECK-ERROR: error: invalid operand for instruction
2855 // CHECK-ERROR:        raddhn2 v0.16b, v1.8h, v2.8b
2856 // CHECK-ERROR:                                  ^
2857 // CHECK-ERROR: error: invalid operand for instruction
2858 // CHECK-ERROR:        raddhn2 v0.8h, v1.4s, v2.4h
2859 // CHECK-ERROR:                                 ^
2860 // CHECK-ERROR: error: invalid operand for instruction
2861 // CHECK-ERROR:        raddhn2 v0.4s, v1.2d, v2.2s
2862 // CHECK-ERROR:                                 ^
2863
2864         rsubhn v0.8b, v1.8h, v2.8b
2865         rsubhn v0.4h, v1.4s, v2.4h
2866         rsubhn v0.2s, v1.2d, v2.2s
2867
2868 // CHECK-ERROR: error: invalid operand for instruction
2869 // CHECK-ERROR:        rsubhn v0.8b, v1.8h, v2.8b
2870 // CHECK-ERROR:                                ^
2871 // CHECK-ERROR: error: invalid operand for instruction
2872 // CHECK-ERROR:        rsubhn v0.4h, v1.4s, v2.4h
2873 // CHECK-ERROR:                                ^
2874 // CHECK-ERROR: error: invalid operand for instruction
2875 // CHECK-ERROR:        rsubhn v0.2s, v1.2d, v2.2s
2876 // CHECK-ERROR:                                ^
2877
2878         rsubhn2 v0.16b, v1.8h, v2.8b
2879         rsubhn2 v0.8h, v1.4s, v2.4h
2880         rsubhn2 v0.4s, v1.2d, v2.2s
2881
2882 // CHECK-ERROR: error: invalid operand for instruction
2883 // CHECK-ERROR:        rsubhn2 v0.16b, v1.8h, v2.8b
2884 // CHECK-ERROR:                                  ^
2885 // CHECK-ERROR: error: invalid operand for instruction
2886 // CHECK-ERROR:        rsubhn2 v0.8h, v1.4s, v2.4h
2887 // CHECK-ERROR:                                 ^
2888 // CHECK-ERROR: error: invalid operand for instruction
2889 // CHECK-ERROR:        rsubhn2 v0.4s, v1.2d, v2.2s
2890 // CHECK-ERROR:                                 ^
2891
2892 //----------------------------------------------------------------------
2893 // Scalar Reduce Add Pairwise (Integer)
2894 //----------------------------------------------------------------------
2895          // invalid vector types
2896       addp s0, d1.2d
2897       addp d0, d1.2s
2898
2899 // CHECK-ERROR: error: invalid operand for instruction
2900 // CHECK-ERROR:          addp s0, d1.2d
2901 // CHECK-ERROR:               ^
2902 // CHECK-ERROR: error: invalid operand for instruction
2903 // CHECK-ERROR:          addp d0, d1.2s
2904 // CHECK-ERROR:                      ^
2905
2906 //----------------------------------------------------------------------
2907 // Scalar Reduce Add Pairwise (Floating Point)
2908 //----------------------------------------------------------------------
2909          // invalid vector types
2910       faddp s0, d1.2d
2911       faddp d0, d1.2s
2912
2913 // CHECK-ERROR: error: invalid operand for instruction
2914 // CHECK-ERROR:          faddp s0, d1.2d
2915 // CHECK-ERROR:                    ^
2916 // CHECK-ERROR: error: invalid operand for instruction
2917 // CHECK-ERROR:          faddp d0, d1.2s
2918 // CHECK-ERROR:                    ^
2919
2920 //----------------------------------------------------------------------
2921 // Scalar Reduce Maximum Pairwise (Floating Point)
2922 //----------------------------------------------------------------------
2923          // mismatched and invalid vector types
2924       fmaxp s0, v1.2d
2925       fmaxp d31, v2.2s
2926       fmaxp h3, v2.2s
2927
2928 // CHECK-ERROR: error: invalid operand for instruction
2929 // CHECK-ERROR:          fmaxp s0, v1.2d
2930 // CHECK-ERROR:                       ^
2931 // CHECK-ERROR: error: invalid operand for instruction
2932 // CHECK-ERROR:          fmaxp d31, v2.2s
2933 // CHECK-ERROR:                        ^
2934 // CHECK-ERROR: error: invalid operand for instruction
2935 // CHECK-ERROR:          fmaxp h3, v2.2s
2936 // CHECK-ERROR:                ^
2937
2938
2939 //----------------------------------------------------------------------
2940 // Scalar Reduce Minimum Pairwise (Floating Point)
2941 //----------------------------------------------------------------------
2942          // mismatched and invalid vector types
2943       fminp s0, v1.4h
2944       fminp d31, v2.8h
2945       fminp b3, v2.2s
2946
2947 // CHECK-ERROR: error: invalid operand for instruction
2948 // CHECK-ERROR:          fminp s0, v1.4h
2949 // CHECK-ERROR:                       ^
2950 // CHECK-ERROR: error: invalid operand for instruction
2951 // CHECK-ERROR:          fminp d31, v2.8h
2952 // CHECK-ERROR:                        ^
2953 // CHECK-ERROR: error: invalid operand for instruction
2954 // CHECK-ERROR:          fminp b3, v2.2s
2955 // CHECK-ERROR:                ^
2956
2957
2958 //----------------------------------------------------------------------
2959 // Scalar Reduce maxNum Pairwise (Floating Point)
2960 //----------------------------------------------------------------------
2961          // mismatched and invalid vector types
2962       fmaxnmp s0, v1.8b
2963       fmaxnmp d31, v2.16b
2964       fmaxnmp v1.2s, v2.2s
2965
2966 // CHECK-ERROR: error: invalid operand for instruction
2967 // CHECK-ERROR:          fmaxnmp s0, v1.8b
2968 // CHECK-ERROR:                         ^
2969 // CHECK-ERROR: error: invalid operand for instruction
2970 // CHECK-ERROR:          fmaxnmp d31, v2.16b
2971 // CHECK-ERROR:                          ^
2972 // CHECK-ERROR: error: too few operands for instruction
2973 // CHECK-ERROR:          fmaxnmp v1.2s, v2.2s
2974 // CHECK-ERROR:          ^
2975
2976 //----------------------------------------------------------------------
2977 // Scalar Reduce minNum Pairwise (Floating Point)
2978 //----------------------------------------------------------------------
2979          // mismatched and invalid vector types
2980       fminnmp s0, v1.2d
2981       fminnmp d31, v2.4s
2982       fminnmp v1.4s, v2.2d
2983
2984 // CHECK-ERROR: error: invalid operand for instruction
2985 // CHECK-ERROR:          fminnmp s0, v1.2d
2986 // CHECK-ERROR:                         ^
2987 // CHECK-ERROR: error: invalid operand for instruction
2988 // CHECK-ERROR:          fminnmp d31, v2.4s
2989 // CHECK-ERROR:                          ^
2990 // CHECK-ERROR: error: invalid operand for instruction
2991 // CHECK-ERROR:          fminnmp v1.4s, v2.2d
2992 // CHECK-ERROR:          ^
2993
2994       mla v0.2d, v1.2d, v16.d[1]
2995       mla v0.2s, v1.2s, v2.s[4]
2996       mla v0.4s, v1.4s, v2.s[4]
2997       mla v0.2h, v1.2h, v2.h[1]
2998       mla v0.4h, v1.4h, v2.h[8]
2999       mla v0.8h, v1.8h, v2.h[8]
3000       mla v0.4h, v1.4h, v16.h[2]
3001       mla v0.8h, v1.8h, v16.h[2]
3002
3003 // CHECK-ERROR: error: invalid operand for instruction
3004 // CHECK-ERROR:        mla v0.2d, v1.2d, v16.d[1]
3005 // CHECK-ERROR:               ^
3006 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3007 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3008 // CHECK-ERROR:        mla v0.2s, v1.2s, v2.s[4]
3009 // CHECK-ERROR:                               ^
3010 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3011 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3012 // CHECK-ERROR:        mla v0.4s, v1.4s, v2.s[4]
3013 // CHECK-ERROR:                               ^
3014 // CHECK-ERROR: error: invalid operand for instruction
3015 // CHECK-ERROR:        mla v0.2h, v1.2h, v2.h[1]
3016 // CHECK-ERROR:            ^
3017 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3018 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3019 // CHECK-ERROR:        mla v0.4h, v1.4h, v2.h[8]
3020 // CHECK-ERROR:                               ^
3021 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3022 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3023 // CHECK-ERROR:        mla v0.8h, v1.8h, v2.h[8]
3024 // CHECK-ERROR:                               ^
3025 // CHECK-ERROR: error: invalid operand for instruction
3026 // CHECK-ERROR:        mla v0.4h, v1.4h, v16.h[2]
3027 // CHECK-ERROR:                          ^
3028 // CHECK-ERROR: error: invalid operand for instruction
3029 // CHECK-ERROR:        mla v0.8h, v1.8h, v16.h[2]
3030 // CHECK-ERROR:                              ^
3031
3032       mls v0.2d, v1.2d, v16.d[1]
3033       mls v0.2s, v1.2s, v2.s[4]
3034       mls v0.4s, v1.4s, v2.s[4]
3035       mls v0.2h, v1.2h, v2.h[1]
3036       mls v0.4h, v1.4h, v2.h[8]
3037       mls v0.8h, v1.8h, v2.h[8]
3038       mls v0.4h, v1.4h, v16.h[2]
3039       mls v0.8h, v1.8h, v16.h[2]
3040
3041 // CHECK-ERROR: error: invalid operand for instruction
3042 // CHECK-ERROR:        mls v0.2d, v1.2d, v16.d[1]
3043 // CHECK-ERROR:               ^
3044 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3045 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3046 // CHECK-ERROR:        mls v0.2s, v1.2s, v2.s[4]
3047 // CHECK-ERROR:                               ^
3048 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3049 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3050 // CHECK-ERROR:        mls v0.4s, v1.4s, v2.s[4]
3051 // CHECK-ERROR:                               ^
3052 // CHECK-ERROR: error: invalid operand for instruction
3053 // CHECK-ERROR:        mls v0.2h, v1.2h, v2.h[1]
3054 // CHECK-ERROR:            ^
3055 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3056 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3057 // CHECK-ERROR:        mls v0.4h, v1.4h, v2.h[8]
3058 // CHECK-ERROR:                               ^
3059 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3060 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3061 // CHECK-ERROR:        mls v0.8h, v1.8h, v2.h[8]
3062 // CHECK-ERROR:                               ^
3063 // CHECK-ERROR: error: invalid operand for instruction
3064 // CHECK-ERROR:        mls v0.4h, v1.4h, v16.h[2]
3065 // CHECK-ERROR:                          ^
3066 // CHECK-ERROR: error: invalid operand for instruction
3067 // CHECK-ERROR:        mls v0.8h, v1.8h, v16.h[2]
3068 // CHECK-ERROR:                              ^
3069
3070       fmla v0.4h, v1.4h, v2.h[2]
3071       fmla v0.8h, v1.8h, v2.h[2]
3072       fmla v0.2s, v1.2s, v2.s[4]
3073       fmla v0.2s, v1.2s, v22.s[4]
3074       fmla v3.4s, v8.4s, v2.s[4]
3075       fmla v3.4s, v8.4s, v22.s[4]
3076       fmla v0.2d, v1.2d, v2.d[2]
3077       fmla v0.2d, v1.2d, v22.d[2]
3078
3079 // CHECK-ERROR: error: invalid operand for instruction
3080 // CHECK-ERROR:        fmla v0.4h, v1.4h, v2.h[2]
3081 // CHECK-ERROR:                ^
3082 // CHECK-ERROR: error: invalid operand for instruction
3083 // CHECK-ERROR:        fmla v0.8h, v1.8h, v2.h[2]
3084 // CHECK-ERROR:                ^
3085 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3086 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3087 // CHECK-ERROR:        fmla v0.2s, v1.2s, v2.s[4]
3088 // CHECK-ERROR:                                ^
3089 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3090 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3091 // CHECK-ERROR:        fmla v0.2s, v1.2s, v22.s[4]
3092 // CHECK-ERROR:                                 ^
3093 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3094 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3095 // CHECK-ERROR:        fmla v3.4s, v8.4s, v2.s[4]
3096 // CHECK-ERROR:                                ^
3097 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3098 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3099 // CHECK-ERROR:        fmla v3.4s, v8.4s, v22.s[4]
3100 // CHECK-ERROR:                                 ^
3101 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3102 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3103 // CHECK-ERROR:        fmla v0.2d, v1.2d, v2.d[2]
3104 // CHECK-ERROR:                                ^
3105 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3106 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3107 // CHECK-ERROR:        fmla v0.2d, v1.2d, v22.d[2]
3108 // CHECK-ERROR:                                 ^
3109
3110       fmls v0.4h, v1.4h, v2.h[2]
3111       fmls v0.8h, v1.8h, v2.h[2]
3112       fmls v0.2s, v1.2s, v2.s[4]
3113       fmls v0.2s, v1.2s, v22.s[4]
3114       fmls v3.4s, v8.4s, v2.s[4]
3115       fmls v3.4s, v8.4s, v22.s[4]
3116       fmls v0.2d, v1.2d, v2.d[2]
3117       fmls v0.2d, v1.2d, v22.d[2]
3118
3119 // CHECK-ERROR: error: invalid operand for instruction
3120 // CHECK-ERROR:        fmls v0.4h, v1.4h, v2.h[2]
3121 // CHECK-ERROR:                ^
3122 // CHECK-ERROR: error: invalid operand for instruction
3123 // CHECK-ERROR:        fmls v0.8h, v1.8h, v2.h[2]
3124 // CHECK-ERROR:                ^
3125 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3126 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3127 // CHECK-ERROR:        fmls v0.2s, v1.2s, v2.s[4]
3128 // CHECK-ERROR:                                ^
3129 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3130 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3131 // CHECK-ERROR:        fmls v0.2s, v1.2s, v22.s[4]
3132 // CHECK-ERROR:                                 ^
3133 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3134 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3135 // CHECK-ERROR:        fmls v3.4s, v8.4s, v2.s[4]
3136 // CHECK-ERROR:                                ^
3137 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3138 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3139 // CHECK-ERROR:        fmls v3.4s, v8.4s, v22.s[4]
3140 // CHECK-ERROR:                                 ^
3141 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3142 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3143 // CHECK-ERROR:        fmls v0.2d, v1.2d, v2.d[2]
3144 // CHECK-ERROR:                                ^
3145 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3146 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3147 // CHECK-ERROR:        fmls v0.2d, v1.2d, v22.d[2]
3148 // CHECK-ERROR:                                 ^
3149
3150       smlal v0.4h, v1.4h, v2.h[2]
3151       smlal v0.4s, v1.4h, v2.h[8]
3152       smlal v0.4s, v1.4h, v16.h[2]
3153       smlal v0.2s, v1.2s, v2.s[1]
3154       smlal v0.2d, v1.2s, v2.s[4]
3155       smlal v0.2d, v1.2s, v22.s[4]
3156       smlal2 v0.4h, v1.8h, v1.h[2]
3157       smlal2 v0.4s, v1.8h, v1.h[8]
3158       smlal2 v0.4s, v1.8h, v16.h[2]
3159       smlal2 v0.2s, v1.4s, v1.s[2]
3160       smlal2 v0.2d, v1.4s, v1.s[4]
3161       smlal2 v0.2d, v1.4s, v22.s[4]
3162
3163 // CHECK-ERROR: error: invalid operand for instruction
3164 // CHECK-ERROR:        smlal v0.4h, v1.4h, v2.h[2]
3165 // CHECK-ERROR:              ^
3166 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3167 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3168 // CHECK-ERROR:        smlal v0.4s, v1.4h, v2.h[8]
3169 // CHECK-ERROR:                                 ^
3170 // CHECK-ERROR: error: invalid operand for instruction
3171 // CHECK-ERROR:        smlal v0.4s, v1.4h, v16.h[2]
3172 // CHECK-ERROR:                            ^
3173 // CHECK-ERROR: error: invalid operand for instruction
3174 // CHECK-ERROR:        smlal v0.2s, v1.2s, v2.s[1]
3175 // CHECK-ERROR:                                 ^
3176 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3177 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3178 // CHECK-ERROR:        smlal v0.2d, v1.2s, v2.s[4]
3179 // CHECK-ERROR:                                 ^
3180 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3181 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3182 // CHECK-ERROR:        smlal v0.2d, v1.2s, v22.s[4]
3183 // CHECK-ERROR:                                  ^
3184 // CHECK-ERROR: error: invalid operand for instruction
3185 // CHECK-ERROR:        smlal2 v0.4h, v1.8h, v1.h[2]
3186 // CHECK-ERROR:               ^
3187 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3188 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3189 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v1.h[8]
3190 // CHECK-ERROR:                                  ^
3191 // CHECK-ERROR: error: invalid operand for instruction
3192 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v16.h[2]
3193 // CHECK-ERROR:                                 ^
3194 // CHECK-ERROR: error: invalid operand for instruction
3195 // CHECK-ERROR:        smlal2 v0.2s, v1.4s, v1.s[2]
3196 // CHECK-ERROR:               ^
3197 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3198 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3199 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v1.s[4]
3200 // CHECK-ERROR:                                  ^
3201 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3202 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3203 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v22.s[4]
3204 // CHECK-ERROR:                                   ^
3205
3206       smlsl v0.4h, v1.4h, v2.h[2]
3207       smlsl v0.4s, v1.4h, v2.h[8]
3208       smlsl v0.4s, v1.4h, v16.h[2]
3209       smlsl v0.2s, v1.2s, v2.s[1]
3210       smlsl v0.2d, v1.2s, v2.s[4]
3211       smlsl v0.2d, v1.2s, v22.s[4]
3212       smlsl2 v0.4h, v1.8h, v1.h[2]
3213       smlsl2 v0.4s, v1.8h, v1.h[8]
3214       smlsl2 v0.4s, v1.8h, v16.h[2]
3215       smlsl2 v0.2s, v1.4s, v1.s[2]
3216       smlsl2 v0.2d, v1.4s, v1.s[4]
3217       smlsl2 v0.2d, v1.4s, v22.s[4]
3218
3219 // CHECK-ERROR: error: invalid operand for instruction
3220 // CHECK-ERROR:        smlsl v0.4h, v1.4h, v2.h[2]
3221 // CHECK-ERROR:              ^
3222 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3223 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3224 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v2.h[8]
3225 // CHECK-ERROR:                                 ^
3226 // CHECK-ERROR: error: invalid operand for instruction
3227 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v16.h[2]
3228 // CHECK-ERROR:                            ^
3229 // CHECK-ERROR: error: invalid operand for instruction
3230 // CHECK-ERROR:        smlsl v0.2s, v1.2s, v2.s[1]
3231 // CHECK-ERROR:                                 ^
3232 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3233 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3234 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v2.s[4]
3235 // CHECK-ERROR:                                 ^
3236 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3237 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3238 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v22.s[4]
3239 // CHECK-ERROR:                                  ^
3240 // CHECK-ERROR: error: invalid operand for instruction
3241 // CHECK-ERROR:        smlsl2 v0.4h, v1.8h, v1.h[2]
3242 // CHECK-ERROR:               ^
3243 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3244 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3245 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v1.h[8]
3246 // CHECK-ERROR:                                  ^
3247 // CHECK-ERROR: error: invalid operand for instruction
3248 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v16.h[2]
3249 // CHECK-ERROR:                                 ^
3250 // CHECK-ERROR: error: invalid operand for instruction
3251 // CHECK-ERROR:        smlsl2 v0.2s, v1.4s, v1.s[2]
3252 // CHECK-ERROR:               ^
3253 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3254 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3255 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v1.s[4]
3256 // CHECK-ERROR:                                  ^
3257 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3258 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3259 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v22.s[4]
3260 // CHECK-ERROR:                                   ^
3261
3262       umlal v0.4h, v1.4h, v2.h[2]
3263       umlal v0.4s, v1.4h, v2.h[8]
3264       umlal v0.4s, v1.4h, v16.h[2]
3265       umlal v0.2s, v1.2s, v2.s[1]
3266       umlal v0.2d, v1.2s, v2.s[4]
3267       umlal v0.2d, v1.2s, v22.s[4]
3268       umlal2 v0.4h, v1.8h, v1.h[2]
3269       umlal2 v0.4s, v1.8h, v1.h[8]
3270       umlal2 v0.4s, v1.8h, v16.h[2]
3271       umlal2 v0.2s, v1.4s, v1.s[2]
3272       umlal2 v0.2d, v1.4s, v1.s[4]
3273       umlal2 v0.2d, v1.4s, v22.s[4]
3274
3275 // CHECK-ERROR: error: invalid operand for instruction
3276 // CHECK-ERROR:        umlal v0.4h, v1.4h, v2.h[2]
3277 // CHECK-ERROR:              ^
3278 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3279 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3280 // CHECK-ERROR:        umlal v0.4s, v1.4h, v2.h[8]
3281 // CHECK-ERROR:                                 ^
3282 // CHECK-ERROR: error: invalid operand for instruction
3283 // CHECK-ERROR:        umlal v0.4s, v1.4h, v16.h[2]
3284 // CHECK-ERROR:                            ^
3285 // CHECK-ERROR: error: invalid operand for instruction
3286 // CHECK-ERROR:        umlal v0.2s, v1.2s, v2.s[1]
3287 // CHECK-ERROR:                                 ^
3288 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3289 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3290 // CHECK-ERROR:        umlal v0.2d, v1.2s, v2.s[4]
3291 // CHECK-ERROR:                                 ^
3292 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3293 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3294 // CHECK-ERROR:        umlal v0.2d, v1.2s, v22.s[4]
3295 // CHECK-ERROR:                                  ^
3296 // CHECK-ERROR: error: invalid operand for instruction
3297 // CHECK-ERROR:        umlal2 v0.4h, v1.8h, v1.h[2]
3298 // CHECK-ERROR:               ^
3299 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3300 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3301 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v1.h[8]
3302 // CHECK-ERROR:                                  ^
3303 // CHECK-ERROR: error: invalid operand for instruction
3304 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v16.h[2]
3305 // CHECK-ERROR:                                 ^
3306 // CHECK-ERROR: error: invalid operand for instruction
3307 // CHECK-ERROR:        umlal2 v0.2s, v1.4s, v1.s[2]
3308 // CHECK-ERROR:               ^
3309 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3310 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3311 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v1.s[4]
3312 // CHECK-ERROR:                                  ^
3313 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3314 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3315 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v22.s[4]
3316 // CHECK-ERROR:                                   ^
3317
3318       umlsl v0.4h, v1.4h, v2.h[2]
3319       umlsl v0.4s, v1.4h, v2.h[8]
3320       umlsl v0.4s, v1.4h, v16.h[2]
3321       umlsl v0.2s, v1.2s, v2.s[3]
3322       umlsl v0.2d, v1.2s, v2.s[4]
3323       umlsl v0.2d, v1.2s, v22.s[4]
3324       umlsl2 v0.4h, v1.8h, v1.h[2]
3325       umlsl2 v0.4s, v1.8h, v1.h[8]
3326       umlsl2 v0.4s, v1.8h, v16.h[2]
3327       umlsl2 v0.2s, v1.4s, v1.s[2]
3328       umlsl2 v0.2d, v1.4s, v1.s[4]
3329       umlsl2 v0.2d, v1.4s, v22.s[4]
3330
3331 // CHECK-ERROR: error: invalid operand for instruction
3332 // CHECK-ERROR:        umlsl v0.4h, v1.4h, v2.h[2]
3333 // CHECK-ERROR:              ^
3334 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3335 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3336 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v2.h[8]
3337 // CHECK-ERROR:                                 ^
3338 // CHECK-ERROR: error: invalid operand for instruction
3339 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v16.h[2]
3340 // CHECK-ERROR:                            ^
3341 // CHECK-ERROR: error: invalid operand for instruction
3342 // CHECK-ERROR:        umlsl v0.2s, v1.2s, v2.s[3]
3343 // CHECK-ERROR:                                 ^
3344 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3345 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3346 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v2.s[4]
3347 // CHECK-ERROR:                                 ^
3348 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3349 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3350 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v22.s[4]
3351 // CHECK-ERROR:                                  ^
3352 // CHECK-ERROR: error: invalid operand for instruction
3353 // CHECK-ERROR:        umlsl2 v0.4h, v1.8h, v1.h[2]
3354 // CHECK-ERROR:               ^
3355 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3356 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3357 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v1.h[8]
3358 // CHECK-ERROR:                                  ^
3359 // CHECK-ERROR: error: invalid operand for instruction
3360 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v16.h[2]
3361 // CHECK-ERROR:                                 ^
3362 // CHECK-ERROR: error: invalid operand for instruction
3363 // CHECK-ERROR:        umlsl2 v0.2s, v1.4s, v1.s[2]
3364 // CHECK-ERROR:               ^
3365 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3366 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3367 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v1.s[4]
3368 // CHECK-ERROR:                                  ^
3369 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3370 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3371 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v22.s[4]
3372 // CHECK-ERROR:                                   ^
3373
3374       sqdmlal v0.4h, v1.4h, v2.h[2]
3375       sqdmlal v0.4s, v1.4h, v2.h[8]
3376       sqdmlal v0.4s, v1.4h, v16.h[2]
3377       sqdmlal v0.2s, v1.2s, v2.s[3]
3378       sqdmlal v0.2d, v1.2s, v2.s[4]
3379       sqdmlal v0.2d, v1.2s, v22.s[4]
3380       sqdmlal2 v0.4h, v1.8h, v1.h[2]
3381       sqdmlal2 v0.4s, v1.8h, v1.h[8]
3382       sqdmlal2 v0.4s, v1.8h, v16.h[2]
3383       sqdmlal2 v0.2s, v1.4s, v1.s[2]
3384       sqdmlal2 v0.2d, v1.4s, v1.s[4]
3385       sqdmlal2 v0.2d, v1.4s, v22.s[4]
3386
3387 // CHECK-ERROR: error: invalid operand for instruction
3388 // CHECK-ERROR:        sqdmlal v0.4h, v1.4h, v2.h[2]
3389 // CHECK-ERROR:                ^
3390 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3391 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3392 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v2.h[8]
3393 // CHECK-ERROR:                                   ^
3394 // CHECK-ERROR: error: invalid operand for instruction
3395 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v16.h[2]
3396 // CHECK-ERROR:                              ^
3397 // CHECK-ERROR: error: invalid operand for instruction
3398 // CHECK-ERROR:        sqdmlal v0.2s, v1.2s, v2.s[3]
3399 // CHECK-ERROR:                                   ^
3400 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3401 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3402 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v2.s[4]
3403 // CHECK-ERROR:                                   ^
3404 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3405 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3406 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v22.s[4]
3407 // CHECK-ERROR:                                    ^
3408 // CHECK-ERROR: error: invalid operand for instruction
3409 // CHECK-ERROR:        sqdmlal2 v0.4h, v1.8h, v1.h[2]
3410 // CHECK-ERROR:                 ^
3411 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3412 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3413 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v1.h[8]
3414 // CHECK-ERROR:                                    ^
3415 // CHECK-ERROR: error: invalid operand for instruction
3416 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v16.h[2]
3417 // CHECK-ERROR:                                   ^
3418 // CHECK-ERROR: error: invalid operand for instruction
3419 // CHECK-ERROR:        sqdmlal2 v0.2s, v1.4s, v1.s[2]
3420 // CHECK-ERROR:                 ^
3421 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3422 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3423 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v1.s[4]
3424 // CHECK-ERROR:                                    ^
3425 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3426 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3427 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v22.s[4]
3428 // CHECK-ERROR:                                     ^
3429
3430       sqdmlsl v0.4h, v1.4h, v2.h[2]
3431       sqdmlsl v0.4s, v1.4h, v2.h[8]
3432       sqdmlsl v0.4s, v1.4h, v16.h[2]
3433       sqdmlsl v0.2s, v1.2s, v2.s[3]
3434       sqdmlsl v0.2d, v1.2s, v2.s[4]
3435       sqdmlsl v0.2d, v1.2s, v22.s[4]
3436       sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3437       sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3438       sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3439       sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3440       sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3441       sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3442
3443 // CHECK-ERROR: error: invalid operand for instruction
3444 // CHECK-ERROR:        sqdmlsl v0.4h, v1.4h, v2.h[2]
3445 // CHECK-ERROR:                ^
3446 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3447 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3448 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v2.h[8]
3449 // CHECK-ERROR:                                   ^
3450 // CHECK-ERROR: error: invalid operand for instruction
3451 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v16.h[2]
3452 // CHECK-ERROR:                              ^
3453 // CHECK-ERROR: error: invalid operand for instruction
3454 // CHECK-ERROR:        sqdmlsl v0.2s, v1.2s, v2.s[3]
3455 // CHECK-ERROR:                                   ^
3456 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3457 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3458 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v2.s[4]
3459 // CHECK-ERROR:                                   ^
3460 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3461 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3462 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v22.s[4]
3463 // CHECK-ERROR:                                    ^
3464 // CHECK-ERROR: error: invalid operand for instruction
3465 // CHECK-ERROR:        sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3466 // CHECK-ERROR:                 ^
3467 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3468 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3469 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3470 // CHECK-ERROR:                                    ^
3471 // CHECK-ERROR: error: invalid operand for instruction
3472 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3473 // CHECK-ERROR:                                   ^
3474 // CHECK-ERROR: error: invalid operand for instruction
3475 // CHECK-ERROR:        sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3476 // CHECK-ERROR:                 ^
3477 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3478 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3479 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3480 // CHECK-ERROR:                                    ^
3481 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3482 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3483 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3484 // CHECK-ERROR:                                     ^
3485
3486       mul v0.4h, v1.4h, v2.h[8]
3487       mul v0.4h, v1.4h, v16.h[8]
3488       mul v0.8h, v1.8h, v2.h[8]
3489       mul v0.8h, v1.8h, v16.h[8]
3490       mul v0.2s, v1.2s, v2.s[4]
3491       mul v0.2s, v1.2s, v22.s[4]
3492       mul v0.4s, v1.4s, v2.s[4]
3493       mul v0.4s, v1.4s, v22.s[4]
3494       mul v0.2d, v1.2d, v2.d[1]
3495
3496 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3497 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3498 // CHECK-ERROR:        mul v0.4h, v1.4h, v2.h[8]
3499 // CHECK-ERROR:                               ^
3500 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3501 // CHECK-ARM64-ERROR: error: invalid operand for instruction
3502 // CHECK-ERROR:        mul v0.4h, v1.4h, v16.h[8]
3503 // CHECK-ERROR:                                ^
3504 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3505 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3506 // CHECK-ERROR:        mul v0.8h, v1.8h, v2.h[8]
3507 // CHECK-ERROR:                               ^
3508 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3509 // CHECK-ARM64-ERROR: invalid operand for instruction
3510 // CHECK-ERROR:        mul v0.8h, v1.8h, v16.h[8]
3511 // CHECK-ERROR:                                ^
3512 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3513 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3514 // CHECK-ERROR:        mul v0.2s, v1.2s, v2.s[4]
3515 // CHECK-ERROR:                               ^
3516 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3517 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3518 // CHECK-ERROR:        mul v0.2s, v1.2s, v22.s[4]
3519 // CHECK-ERROR:                                ^
3520 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3521 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3522 // CHECK-ERROR:        mul v0.4s, v1.4s, v2.s[4]
3523 // CHECK-ERROR:                               ^
3524 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3525 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3526 // CHECK-ERROR:        mul v0.4s, v1.4s, v22.s[4]
3527 // CHECK-ERROR:                                ^
3528
3529       fmul v0.4h, v1.4h, v2.h[4]
3530       fmul v0.2s, v1.2s, v2.s[4]
3531       fmul v0.2s, v1.2s, v22.s[4]
3532       fmul v0.4s, v1.4s, v2.s[4]
3533       fmul v0.4s, v1.4s, v22.s[4]
3534       fmul v0.2d, v1.2d, v2.d[2]
3535       fmul v0.2d, v1.2d, v22.d[2]
3536
3537 // CHECK-ERROR: error: invalid operand for instruction
3538 // CHECK-ERROR:        mul v0.2d, v1.2d, v2.d[1]
3539 // CHECK-ERROR:               ^
3540 // CHECK-ERROR: error: invalid operand for instruction
3541 // CHECK-ERROR:        fmul v0.4h, v1.4h, v2.h[4]
3542 // CHECK-ERROR:                ^
3543 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3544 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3545 // CHECK-ERROR:        fmul v0.2s, v1.2s, v2.s[4]
3546 // CHECK-ERROR:                                ^
3547 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3548 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3549 // CHECK-ERROR:        fmul v0.2s, v1.2s, v22.s[4]
3550 // CHECK-ERROR:                                 ^
3551 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3552 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3553 // CHECK-ERROR:        fmul v0.4s, v1.4s, v2.s[4]
3554 // CHECK-ERROR:                                ^
3555 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3556 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3557 // CHECK-ERROR:        fmul v0.4s, v1.4s, v22.s[4]
3558 // CHECK-ERROR:                                 ^
3559 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3560 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3561 // CHECK-ERROR:        fmul v0.2d, v1.2d, v2.d[2]
3562 // CHECK-ERROR:                                ^
3563 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3564 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3565 // CHECK-ERROR:        fmul v0.2d, v1.2d, v22.d[2]
3566 // CHECK-ERROR:                                 ^
3567
3568       fmulx v0.4h, v1.4h, v2.h[4]
3569       fmulx v0.2s, v1.2s, v2.s[4]
3570       fmulx v0.2s, v1.2s, v22.s[4]
3571       fmulx v0.4s, v1.4s, v2.s[4]
3572       fmulx v0.4s, v1.4s, v22.s[4]
3573       fmulx v0.2d, v1.2d, v2.d[2]
3574       fmulx v0.2d, v1.2d, v22.d[2]
3575
3576 // CHECK-ERROR: error: invalid operand for instruction
3577 // CHECK-ERROR:        fmulx v0.4h, v1.4h, v2.h[4]
3578 // CHECK-ERROR:                 ^
3579 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3580 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3581 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v2.s[4]
3582 // CHECK-ERROR:                                 ^
3583 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3584 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3585 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v22.s[4]
3586 // CHECK-ERROR:                                  ^
3587 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3588 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3589 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v2.s[4]
3590 // CHECK-ERROR:                                 ^
3591 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3592 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3593 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v22.s[4]
3594 // CHECK-ERROR:                                  ^
3595 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3596 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3597 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v2.d[2]
3598 // CHECK-ERROR:                                 ^
3599 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3600 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3601 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v22.d[2]
3602 // CHECK-ERROR:                                  ^
3603
3604       smull v0.4h, v1.4h, v2.h[2]
3605       smull v0.4s, v1.4h, v2.h[8]
3606       smull v0.4s, v1.4h, v16.h[4]
3607       smull v0.2s, v1.2s, v2.s[2]
3608       smull v0.2d, v1.2s, v2.s[4]
3609       smull v0.2d, v1.2s, v22.s[4]
3610       smull2 v0.4h, v1.8h, v2.h[2]
3611       smull2 v0.4s, v1.8h, v2.h[8]
3612       smull2 v0.4s, v1.8h, v16.h[4]
3613       smull2 v0.2s, v1.4s, v2.s[2]
3614       smull2 v0.2d, v1.4s, v2.s[4]
3615       smull2 v0.2d, v1.4s, v22.s[4]
3616
3617 // CHECK-ERROR: error: invalid operand for instruction
3618 // CHECK-ERROR:        smull v0.4h, v1.4h, v2.h[2]
3619 // CHECK-ERROR:              ^
3620 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3621 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3622 // CHECK-ERROR:        smull v0.4s, v1.4h, v2.h[8]
3623 // CHECK-ERROR:                                 ^
3624 // CHECK-ERROR: error: invalid operand for instruction
3625 // CHECK-ERROR:        smull v0.4s, v1.4h, v16.h[4]
3626 // CHECK-ERROR:                            ^
3627 // CHECK-ERROR: error: invalid operand for instruction
3628 // CHECK-ERROR:        smull v0.2s, v1.2s, v2.s[2]
3629 // CHECK-ERROR:              ^
3630 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3631 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3632 // CHECK-ERROR:        smull v0.2d, v1.2s, v2.s[4]
3633 // CHECK-ERROR:                                 ^
3634 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3635 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3636 // CHECK-ERROR:        smull v0.2d, v1.2s, v22.s[4]
3637 // CHECK-ERROR:                                  ^
3638 // CHECK-ERROR: error: invalid operand for instruction
3639 // CHECK-ERROR:        smull2 v0.4h, v1.8h, v2.h[2]
3640 // CHECK-ERROR:               ^
3641 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3642 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3643 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v2.h[8]
3644 // CHECK-ERROR:                                  ^
3645 // CHECK-ERROR: error: invalid operand for instruction
3646 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v16.h[4]
3647 // CHECK-ERROR:                                 ^
3648 // CHECK-ERROR: error: invalid operand for instruction
3649 // CHECK-ERROR:        smull2 v0.2s, v1.4s, v2.s[2]
3650 // CHECK-ERROR:               ^
3651 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3652 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3653 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v2.s[4]
3654 // CHECK-ERROR:                                  ^
3655 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3656 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3657 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v22.s[4]
3658 // CHECK-ERROR:                                   ^
3659
3660       umull v0.4h, v1.4h, v2.h[2]
3661       umull v0.4s, v1.4h, v2.h[8]
3662       umull v0.4s, v1.4h, v16.h[4]
3663       umull v0.2s, v1.2s, v2.s[2]
3664       umull v0.2d, v1.2s, v2.s[4]
3665       umull v0.2d, v1.2s, v22.s[4]
3666       umull2 v0.4h, v1.8h, v2.h[2]
3667       umull2 v0.4s, v1.8h, v2.h[8]
3668       umull2 v0.4s, v1.8h, v16.h[4]
3669       umull2 v0.2s, v1.4s, v2.s[2]
3670       umull2 v0.2d, v1.4s, v2.s[4]
3671       umull2 v0.2d, v1.4s, v22.s[4]
3672
3673 // CHECK-ERROR: error: invalid operand for instruction
3674 // CHECK-ERROR:        umull v0.4h, v1.4h, v2.h[2]
3675 // CHECK-ERROR:              ^
3676 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3677 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3678 // CHECK-ERROR:        umull v0.4s, v1.4h, v2.h[8]
3679 // CHECK-ERROR:                                 ^
3680 // CHECK-ERROR: error: invalid operand for instruction
3681 // CHECK-ERROR:        umull v0.4s, v1.4h, v16.h[4]
3682 // CHECK-ERROR:                            ^
3683 // CHECK-ERROR: error: invalid operand for instruction
3684 // CHECK-ERROR:        umull v0.2s, v1.2s, v2.s[2]
3685 // CHECK-ERROR:              ^
3686 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3687 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3688 // CHECK-ERROR:        umull v0.2d, v1.2s, v2.s[4]
3689 // CHECK-ERROR:                                 ^
3690 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3691 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3692 // CHECK-ERROR:        umull v0.2d, v1.2s, v22.s[4]
3693 // CHECK-ERROR:                                  ^
3694 // CHECK-ERROR: error: invalid operand for instruction
3695 // CHECK-ERROR:        umull2 v0.4h, v1.8h, v2.h[2]
3696 // CHECK-ERROR:               ^
3697 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3698 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3699 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v2.h[8]
3700 // CHECK-ERROR:                                  ^
3701 // CHECK-ERROR: error: invalid operand for instruction
3702 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v16.h[4]
3703 // CHECK-ERROR:                                 ^
3704 // CHECK-ERROR: error: invalid operand for instruction
3705 // CHECK-ERROR:        umull2 v0.2s, v1.4s, v2.s[2]
3706 // CHECK-ERROR:               ^
3707 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3708 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3709 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v2.s[4]
3710 // CHECK-ERROR:                                  ^
3711 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3712 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3713 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v22.s[4]
3714 // CHECK-ERROR:                                   ^
3715
3716       sqdmull v0.4h, v1.4h, v2.h[2]
3717       sqdmull v0.4s, v1.4h, v2.h[8]
3718       sqdmull v0.4s, v1.4h, v16.h[4]
3719       sqdmull v0.2s, v1.2s, v2.s[2]
3720       sqdmull v0.2d, v1.2s, v2.s[4]
3721       sqdmull v0.2d, v1.2s, v22.s[4]
3722       sqdmull2 v0.4h, v1.8h, v2.h[2]
3723       sqdmull2 v0.4s, v1.8h, v2.h[8]
3724       sqdmull2 v0.4s, v1.8h, v16.h[4]
3725       sqdmull2 v0.2s, v1.4s, v2.s[2]
3726       sqdmull2 v0.2d, v1.4s, v2.s[4]
3727       sqdmull2 v0.2d, v1.4s, v22.s[4]
3728
3729 // CHECK-ERROR: error: invalid operand for instruction
3730 // CHECK-ERROR:        sqdmull v0.4h, v1.4h, v2.h[2]
3731 // CHECK-ERROR:                ^
3732 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3733 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3734 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v2.h[8]
3735 // CHECK-ERROR:                                   ^
3736 // CHECK-ERROR: error: invalid operand for instruction
3737 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v16.h[4]
3738 // CHECK-ERROR:                              ^
3739 // CHECK-ERROR: error: invalid operand for instruction
3740 // CHECK-ERROR:        sqdmull v0.2s, v1.2s, v2.s[2]
3741 // CHECK-ERROR:                ^
3742 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3743 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3744 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v2.s[4]
3745 // CHECK-ERROR:                                   ^
3746 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3747 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3748 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v22.s[4]
3749 // CHECK-ERROR:                                    ^
3750 // CHECK-ERROR: error: invalid operand for instruction
3751 // CHECK-ERROR:        sqdmull2 v0.4h, v1.8h, v2.h[2]
3752 // CHECK-ERROR:                 ^
3753 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3754 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3755 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v2.h[8]
3756 // CHECK-ERROR:                                    ^
3757 // CHECK-ERROR: error: invalid operand for instruction
3758 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v16.h[4]
3759 // CHECK-ERROR:                                   ^
3760 // CHECK-ERROR: error: invalid operand for instruction
3761 // CHECK-ERROR:        sqdmull2 v0.2s, v1.4s, v2.s[2]
3762 // CHECK-ERROR:                 ^
3763 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3764 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3765 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v2.s[4]
3766 // CHECK-ERROR:                                    ^
3767 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3768 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3769 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v22.s[4]
3770 // CHECK-ERROR:                                     ^
3771
3772       sqdmulh v0.4h, v1.4h, v2.h[8]
3773       sqdmulh v0.4h, v1.4h, v16.h[2]
3774       sqdmulh v0.8h, v1.8h, v2.h[8]
3775       sqdmulh v0.8h, v1.8h, v16.h[2]
3776       sqdmulh v0.2s, v1.2s, v2.s[4]
3777       sqdmulh v0.2s, v1.2s, v22.s[4]
3778       sqdmulh v0.4s, v1.4s, v2.s[4]
3779       sqdmulh v0.4s, v1.4s, v22.s[4]
3780       sqdmulh v0.2d, v1.2d, v22.d[1]
3781
3782 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3783 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3784 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v2.h[8]
3785 // CHECK-ERROR:                                   ^
3786 // CHECK-ERROR: error: invalid operand for instruction
3787 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v16.h[2]
3788 // CHECK-ERROR:                              ^
3789 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3790 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3791 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v2.h[8]
3792 // CHECK-ERROR:                                   ^
3793 // CHECK-ERROR: error: invalid operand for instruction
3794 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v16.h[2]
3795 // CHECK-ERROR:                                  ^
3796 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3797 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3798 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v2.s[4]
3799 // CHECK-ERROR:                                   ^
3800 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3801 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3802 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v22.s[4]
3803 // CHECK-ERROR:                                    ^
3804 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3805 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3806 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v2.s[4]
3807 // CHECK-ERROR:                                   ^
3808 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3809 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3810 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v22.s[4]
3811 // CHECK-ERROR:                                    ^
3812 // CHECK-ERROR: error: invalid operand for instruction
3813 // CHECK-ERROR:        sqdmulh v0.2d, v1.2d, v22.d[1]
3814 // CHECK-ERROR:                   ^
3815
3816       sqrdmulh v0.4h, v1.4h, v2.h[8]
3817       sqrdmulh v0.4h, v1.4h, v16.h[2]
3818       sqrdmulh v0.8h, v1.8h, v2.h[8]
3819       sqrdmulh v0.8h, v1.8h, v16.h[2]
3820       sqrdmulh v0.2s, v1.2s, v2.s[4]
3821       sqrdmulh v0.2s, v1.2s, v22.s[4]
3822       sqrdmulh v0.4s, v1.4s, v2.s[4]
3823       sqrdmulh v0.4s, v1.4s, v22.s[4]
3824       sqrdmulh v0.2d, v1.2d, v22.d[1]
3825
3826 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3827 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3828 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v2.h[8]
3829 // CHECK-ERROR:                                    ^
3830 // CHECK-ERROR: error: invalid operand for instruction
3831 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v16.h[2]
3832 // CHECK-ERROR:                               ^
3833 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3834 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3835 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v2.h[8]
3836 // CHECK-ERROR:                                    ^
3837 // CHECK-ERROR: error: invalid operand for instruction
3838 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v16.h[2]
3839 // CHECK-ERROR:                                   ^
3840 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3841 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3842 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v2.s[4]
3843 // CHECK-ERROR:                                    ^
3844 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3845 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3846 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v22.s[4]
3847 // CHECK-ERROR:                                     ^
3848 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3849 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3850 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v2.s[4]
3851 // CHECK-ERROR:                                    ^
3852 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
3853 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3854 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v22.s[4]
3855 // CHECK-ERROR:                                     ^
3856 // CHECK-ERROR: error: invalid operand for instruction
3857 // CHECK-ERROR:        sqrdmulh v0.2d, v1.2d, v22.d[1]
3858 // CHECK-ERROR:                    ^
3859
3860 //----------------------------------------------------------------------
3861 // Across vectors
3862 //----------------------------------------------------------------------
3863
3864         saddlv b0, v1.8b
3865         saddlv b0, v1.16b
3866         saddlv h0, v1.4h
3867         saddlv h0, v1.8h
3868         saddlv s0, v1.2s
3869         saddlv s0, v1.4s
3870         saddlv d0, v1.2s
3871
3872 // CHECK-ERROR: error: invalid operand for instruction
3873 // CHECK-ERROR:        saddlv b0, v1.8b
3874 // CHECK-ERROR:               ^
3875 // CHECK-ERROR: error: invalid operand for instruction
3876 // CHECK-ERROR:        saddlv b0, v1.16b
3877 // CHECK-ERROR:               ^
3878 // CHECK-ERROR: error: invalid operand for instruction
3879 // CHECK-ERROR:        saddlv h0, v1.4h
3880 // CHECK-ERROR:                      ^
3881 // CHECK-ERROR: error: invalid operand for instruction
3882 // CHECK-ERROR:        saddlv h0, v1.8h
3883 // CHECK-ERROR:                      ^
3884 // CHECK-ERROR: error: invalid operand for instruction
3885 // CHECK-ERROR:        saddlv s0, v1.2s
3886 // CHECK-ERROR:                      ^
3887 // CHECK-ERROR: error: invalid operand for instruction
3888 // CHECK-ERROR:        saddlv s0, v1.4s
3889 // CHECK-ERROR:                      ^
3890 // CHECK-ERROR: error: invalid operand for instruction
3891 // CHECK-ERROR:        saddlv d0, v1.2s
3892 // CHECK-ERROR:                   ^
3893
3894         uaddlv b0, v1.8b
3895         uaddlv b0, v1.16b
3896         uaddlv h0, v1.4h
3897         uaddlv h0, v1.8h
3898         uaddlv s0, v1.2s
3899         uaddlv s0, v1.4s
3900         uaddlv d0, v1.2s
3901
3902 // CHECK-ERROR: error: invalid operand for instruction
3903 // CHECK-ERROR:        uaddlv b0, v1.8b
3904 // CHECK-ERROR:               ^
3905 // CHECK-ERROR: error: invalid operand for instruction
3906 // CHECK-ERROR:        uaddlv b0, v1.16b
3907 // CHECK-ERROR:               ^
3908 // CHECK-ERROR: error: invalid operand for instruction
3909 // CHECK-ERROR:        uaddlv h0, v1.4h
3910 // CHECK-ERROR:                      ^
3911 // CHECK-ERROR: error: invalid operand for instruction
3912 // CHECK-ERROR:        uaddlv h0, v1.8h
3913 // CHECK-ERROR:                      ^
3914 // CHECK-ERROR: error: invalid operand for instruction
3915 // CHECK-ERROR:        uaddlv s0, v1.2s
3916 // CHECK-ERROR:                      ^
3917 // CHECK-ERROR: error: invalid operand for instruction
3918 // CHECK-ERROR:        uaddlv s0, v1.4s
3919 // CHECK-ERROR:                      ^
3920 // CHECK-ERROR: error: invalid operand for instruction
3921 // CHECK-ERROR:        uaddlv d0, v1.2s
3922 // CHECK-ERROR:                   ^
3923
3924         smaxv s0, v1.2s
3925         sminv s0, v1.2s
3926         umaxv s0, v1.2s
3927         uminv s0, v1.2s
3928         addv s0, v1.2s
3929
3930 // CHECK-ERROR: error: invalid operand for instruction
3931 // CHECK-ERROR:        smaxv s0, v1.2s
3932 // CHECK-ERROR:                  ^
3933 // CHECK-ERROR: error: invalid operand for instruction
3934 // CHECK-ERROR:        sminv s0, v1.2s
3935 // CHECK-ERROR:                  ^
3936 // CHECK-ERROR: error: invalid operand for instruction
3937 // CHECK-ERROR:        umaxv s0, v1.2s
3938 // CHECK-ERROR:                  ^
3939 // CHECK-ERROR: error: invalid operand for instruction
3940 // CHECK-ERROR:        uminv s0, v1.2s
3941 // CHECK-ERROR:                  ^
3942 // CHECK-ERROR: error: invalid operand for instruction
3943 // CHECK-ERROR:        addv s0, v1.2s
3944 // CHECK-ERROR:                 ^
3945
3946         smaxv d0, v1.2d
3947         sminv d0, v1.2d
3948         umaxv d0, v1.2d
3949         uminv d0, v1.2d
3950         addv d0, v1.2d
3951
3952 // CHECK-ERROR: error: invalid operand for instruction
3953 // CHECK-ERROR:        smaxv d0, v1.2d
3954 // CHECK-ERROR:              ^
3955 // CHECK-ERROR: error: invalid operand for instruction
3956 // CHECK-ERROR:        sminv d0, v1.2d
3957 // CHECK-ERROR:              ^
3958 // CHECK-ERROR: error: invalid operand for instruction
3959 // CHECK-ERROR:        umaxv d0, v1.2d
3960 // CHECK-ERROR:              ^
3961 // CHECK-ERROR: error: invalid operand for instruction
3962 // CHECK-ERROR:        uminv d0, v1.2d
3963 // CHECK-ERROR:              ^
3964 // CHECK-ERROR: error: invalid operand for instruction
3965 // CHECK-ERROR:        addv d0, v1.2d
3966 // CHECK-ERROR:             ^
3967
3968         fmaxnmv b0, v1.16b
3969         fminnmv b0, v1.16b
3970         fmaxv b0, v1.16b
3971         fminv b0, v1.16b
3972
3973 // CHECK-ERROR: error: invalid operand for instruction
3974 // CHECK-ERROR:        fmaxnmv b0, v1.16b
3975 // CHECK-ERROR:                ^
3976 // CHECK-ERROR: error: invalid operand for instruction
3977 // CHECK-ERROR:        fminnmv b0, v1.16b
3978 // CHECK-ERROR:                ^
3979 // CHECK-ERROR: error: invalid operand for instruction
3980 // CHECK-ERROR:        fmaxv b0, v1.16b
3981 // CHECK-ERROR:              ^
3982 // CHECK-ERROR: error: invalid operand for instruction
3983 // CHECK-ERROR:        fminv b0, v1.16b
3984 // CHECK-ERROR:              ^
3985
3986         fmaxnmv h0, v1.8h
3987         fminnmv h0, v1.8h
3988         fmaxv h0, v1.8h
3989         fminv h0, v1.8h
3990
3991 // CHECK-ERROR: error: invalid operand for instruction
3992 // CHECK-ERROR:        fmaxnmv h0, v1.8h
3993 // CHECK-ERROR:                ^
3994 // CHECK-ERROR: error: invalid operand for instruction
3995 // CHECK-ERROR:        fminnmv h0, v1.8h
3996 // CHECK-ERROR:                ^
3997 // CHECK-ERROR: error: invalid operand for instruction
3998 // CHECK-ERROR:        fmaxv h0, v1.8h
3999 // CHECK-ERROR:              ^
4000 // CHECK-ERROR: error: invalid operand for instruction
4001 // CHECK-ERROR:        fminv h0, v1.8h
4002 // CHECK-ERROR:              ^
4003
4004         fmaxnmv d0, v1.2d
4005         fminnmv d0, v1.2d
4006         fmaxv d0, v1.2d
4007         fminv d0, v1.2d
4008
4009 // CHECK-ERROR: error: invalid operand for instruction
4010 // CHECK-ERROR:        fmaxnmv d0, v1.2d
4011 // CHECK-ERROR:                ^
4012 // CHECK-ERROR: error: invalid operand for instruction
4013 // CHECK-ERROR:        fminnmv d0, v1.2d
4014 // CHECK-ERROR:                ^
4015 // CHECK-ERROR: error: invalid operand for instruction
4016 // CHECK-ERROR:        fmaxv d0, v1.2d
4017 // CHECK-ERROR:              ^
4018 // CHECK-ERROR: error: invalid operand for instruction
4019 // CHECK-ERROR:        fminv d0, v1.2d
4020 // CHECK-ERROR:              ^
4021
4022 //----------------------------------------------------------------------
4023 // Floating-point Multiply Extended
4024 //----------------------------------------------------------------------
4025
4026     fmulx s20, h22, s15
4027     fmulx d23, d11, s1
4028
4029 // CHECK-ERROR: error: invalid operand for instruction
4030 // CHECK-ERROR:          fmulx s20, h22, s15
4031 // CHECK-ERROR:                     ^
4032 // CHECK-ERROR: error: invalid operand for instruction
4033 // CHECK-ERROR:          fmulx d23, d11, s1
4034 // CHECK-ERROR:                          ^
4035
4036 //----------------------------------------------------------------------
4037 // Floating-point Reciprocal Step
4038 //----------------------------------------------------------------------
4039
4040     frecps s21, s16, h13
4041     frecps d22, s30, d21
4042
4043 // CHECK-ERROR: error: invalid operand for instruction
4044 // CHECK-ERROR:          frecps s21, s16, h13
4045 // CHECK-ERROR:                           ^
4046 // CHECK-ERROR: error: invalid operand for instruction
4047 // CHECK-ERROR:          frecps d22, s30, d21
4048 // CHECK-ERROR:                      ^
4049
4050 //----------------------------------------------------------------------
4051 // Floating-point Reciprocal Square Root Step
4052 //----------------------------------------------------------------------
4053
4054     frsqrts s21, h5, s12
4055     frsqrts d8, s22, d18
4056
4057 // CHECK-ERROR: error: invalid operand for instruction
4058 // CHECK-ERROR:          frsqrts s21, h5, s12
4059 // CHECK-ERROR:                       ^
4060 // CHECK-ERROR: error: invalid operand for instruction
4061 // CHECK-ERROR:          frsqrts d8, s22, d18
4062 // CHECK-ERROR:                      ^
4063
4064 //----------------------------------------------------------------------
4065 // Vector load/store multiple N-element structure (class SIMD lselem)
4066 //----------------------------------------------------------------------
4067          ld1 {x3}, [x2]
4068          ld1 {v4}, [x0]
4069          ld1 {v32.16b}, [x0]
4070          ld1 {v15.8h}, [x32]
4071 // CHECK-AARCH64-ERROR: error: expected vector type register
4072 // CHECK-ARM64-ERROR: error: vector register expected
4073 // CHECK-ERROR:        ld1 {x3}, [x2]
4074 // CHECK-ERROR:             ^
4075 // CHECK-AARCH64-ERROR: error: expected vector type register
4076 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4077 // CHECK-ERROR:        ld1 {v4}, [x0]
4078 // CHECK-ERROR:             ^
4079 // CHECK-AARCH64-ERROR: error: expected vector type register
4080 // CHECK-ARM64-ERROR: error: vector register expected
4081 // CHECK-ERROR:        ld1 {v32.16b}, [x0]
4082 // CHECK-ERROR:             ^
4083 // CHECK-AARCH64-ERROR: error: invalid operand for instruction
4084 // CHECK-ARM64-ERROR: error: register expected
4085 // CHECK-ERROR:        ld1 {v15.8h}, [x32]
4086 // CHECK-ERROR:                       ^
4087
4088          ld1 {v0.16b, v2.16b}, [x0]
4089          ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4090          ld1 v0.8b, v1.8b}, [x0]
4091          ld1 {v0.8h-v4.8h}, [x0]
4092          ld1 {v1.8h-v1.8h}, [x0]
4093          ld1 {v15.8h-v17.4h}, [x15]
4094          ld1 {v0.8b-v2.8b, [x0]
4095 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4096 // CHECK-ARM64-ERROR: error: registers must be sequential
4097 // CHECK-ERROR:        ld1 {v0.16b, v2.16b}, [x0]
4098 // CHECK-ERROR:                     ^
4099 // CHECK-ERROR: error: invalid number of vectors
4100 // CHECK-ERROR:        ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4101 // CHECK-ERROR:                                         ^
4102 // CHECK-AARCH64-ERROR: error: '{' expected
4103 // CHECK-ARM64-ERROR: error: unexpected token in argument list
4104 // CHECK-ERROR:        ld1 v0.8b, v1.8b}, [x0]
4105 // CHECK-ERROR:            ^
4106 // CHECK-ERROR: error: invalid number of vectors
4107 // CHECK-ERROR:        ld1 {v0.8h-v4.8h}, [x0]
4108 // CHECK-ERROR:                   ^
4109 // CHECK-ERROR: error: invalid number of vectors
4110 // CHECK-ERROR:        ld1 {v1.8h-v1.8h}, [x0]
4111 // CHECK-ERROR:                   ^
4112 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4113 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4114 // CHECK-ERROR:        ld1 {v15.8h-v17.4h}, [x15]
4115 // CHECK-ERROR:                        ^
4116 // CHECK-ERROR: error: '}' expected
4117 // CHECK-ERROR:        ld1 {v0.8b-v2.8b, [x0]
4118 // CHECK-ERROR:                        ^
4119
4120          ld2 {v15.8h, v16.4h}, [x15]
4121          ld2 {v0.8b, v2.8b}, [x0]
4122          ld2 {v15.4h, v16.4h, v17.4h}, [x32]
4123          ld2 {v15.8h-v16.4h}, [x15]
4124          ld2 {v0.2d-v2.2d}, [x0]
4125 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4126 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4127 // CHECK-ERROR:        ld2 {v15.8h, v16.4h}, [x15]
4128 // CHECK-ERROR:                     ^
4129 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4130 // CHECK-ARM64-ERROR: error: registers must be sequential
4131 // CHECK-ERROR:        ld2 {v0.8b, v2.8b}, [x0]
4132 // CHECK-ERROR:                    ^
4133 // CHECK-AARCH64-ERROR: error: invalid operand for instruction
4134 // CHECK-ARM64-ERROR: error: register expected
4135 // CHECK-ERROR:        ld2 {v15.4h, v16.4h, v17.4h}, [x32]
4136 // CHECK-ERROR:            ^
4137 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4138 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4139 // CHECK-ERROR:        ld2 {v15.8h-v16.4h}, [x15]
4140 // CHECK-ERROR:                        ^
4141 // CHECK-ERROR: error: invalid operand for instruction
4142 // CHECK-ERROR:        ld2 {v0.2d-v2.2d}, [x0]
4143 // CHECK-ERROR:            ^
4144
4145          ld3 {v15.8h, v16.8h, v17.4h}, [x15]
4146          ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4147          ld3 {v0.8b, v2.8b, v3.8b}, [x0]
4148          ld3 {v15.8h-v17.4h}, [x15]
4149          ld3 {v31.4s-v2.4s}, [sp]
4150 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4151 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4152 // CHECK-ERROR:        ld3 {v15.8h, v16.8h, v17.4h}, [x15]
4153 // CHECK-ERROR:                             ^
4154 // CHECK-AARCH64-ERROR: error: expected vector type register
4155 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4156 // CHECK-ERROR:        ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4157 // CHECK-ERROR:                    ^
4158 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4159 // CHECK-ARM64-ERROR: error: registers must be sequential
4160 // CHECK-ERROR:        ld3 {v0.8b, v2.8b, v3.8b}, [x0]
4161 // CHECK-ERROR:                    ^
4162 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4163 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4164 // CHECK-ERROR:        ld3 {v15.8h-v17.4h}, [x15]
4165 // CHECK-ERROR:                        ^
4166 // CHECK-ERROR: error: invalid operand for instruction
4167 // CHECK-ERROR:        ld3 {v31.4s-v2.4s}, [sp]
4168 // CHECK-ERROR:            ^
4169
4170          ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4171          ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4172          ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4173          ld4 {v15.8h-v18.4h}, [x15]
4174          ld4 {v31.2s-v1.2s}, [x31]
4175 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4176 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4177 // CHECK-ERROR:        ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4178 // CHECK-ERROR:                             ^
4179 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4180 // CHECK-ARM64-ERROR: error: registers must be sequential
4181 // CHECK-ERROR:        ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4182 // CHECK-ERROR:                    ^
4183 // CHECK-ERROR: error: invalid number of vectors
4184 // CHECK-ERROR:        ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4185 // CHECK-ERROR:                                             ^
4186 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4187 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4188 // CHECK-ERROR:        ld4 {v15.8h-v18.4h}, [x15]
4189 // CHECK-ERROR:                        ^
4190 // CHECK-ERROR: error: invalid operand for instruction
4191 // CHECK-ERROR:        ld4 {v31.2s-v1.2s}, [x31]
4192 // CHECK-ERROR:            ^
4193
4194          st1 {x3}, [x2]
4195          st1 {v4}, [x0]
4196          st1 {v32.16b}, [x0]
4197          st1 {v15.8h}, [x32]
4198 // CHECK-AARCH64-ERROR: error: expected vector type register
4199 // CHECK-ARM64-ERROR: error: vector register expected
4200 // CHECK-ERROR:        st1 {x3}, [x2]
4201 // CHECK-ERROR:             ^
4202 // CHECK-AARCH64-ERROR: error: expected vector type register
4203 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4204 // CHECK-ERROR:        st1 {v4}, [x0]
4205 // CHECK-ERROR:             ^
4206 // CHECK-AARCH64-ERROR: error: expected vector type register
4207 // CHECK-ARM64-ERROR: error: vector register expected
4208 // CHECK-ERROR:        st1 {v32.16b}, [x0]
4209 // CHECK-ERROR:             ^
4210 // CHECK-AARCH64-ERROR: error: invalid operand for instruction
4211 // CHECK-ARM64-ERROR: error: register expected
4212 // CHECK-ERROR:        st1 {v15.8h}, [x32]
4213 // CHECK-ERROR:                       ^
4214
4215          st1 {v0.16b, v2.16b}, [x0]
4216          st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4217          st1 v0.8b, v1.8b}, [x0]
4218          st1 {v0.8h-v4.8h}, [x0]
4219          st1 {v1.8h-v1.8h}, [x0]
4220          st1 {v15.8h-v17.4h}, [x15]
4221          st1 {v0.8b-v2.8b, [x0]
4222 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4223 // CHECK-ARM64-ERROR: error: registers must be sequential
4224 // CHECK-ERROR:        st1 {v0.16b, v2.16b}, [x0]
4225 // CHECK-ERROR:                     ^
4226 // CHECK-ERROR: error: invalid number of vectors
4227 // CHECK-ERROR:        st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4228 // CHECK-ERROR:                                         ^
4229 // CHECK-AARCH64-ERROR: error: '{' expected
4230 // CHECK-ARM64-ERROR: error: unexpected token in argument list
4231 // CHECK-ERROR:        st1 v0.8b, v1.8b}, [x0]
4232 // CHECK-ERROR:            ^
4233 // CHECK-ERROR: error: invalid number of vectors
4234 // CHECK-ERROR:        st1 {v0.8h-v4.8h}, [x0]
4235 // CHECK-ERROR:                   ^
4236 // CHECK-ERROR: error: invalid number of vectors
4237 // CHECK-ERROR:        st1 {v1.8h-v1.8h}, [x0]
4238 // CHECK-ERROR:                   ^
4239 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4240 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4241 // CHECK-ERROR:        st1 {v15.8h-v17.4h}, [x15]
4242 // CHECK-ERROR:                        ^
4243 // CHECK-ERROR: error: '}' expected
4244 // CHECK-ERROR:        st1 {v0.8b-v2.8b, [x0]
4245 // CHECK-ERROR:                        ^
4246
4247          st2 {v15.8h, v16.4h}, [x15]
4248          st2 {v0.8b, v2.8b}, [x0]
4249          st2 {v15.4h, v16.4h, v17.4h}, [x30]
4250          st2 {v15.8h-v16.4h}, [x15]
4251          st2 {v0.2d-v2.2d}, [x0]
4252 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4253 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4254 // CHECK-ERROR:        st2 {v15.8h, v16.4h}, [x15]
4255 // CHECK-ERROR:                     ^
4256 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4257 // CHECK-ARM64-ERROR: error: registers must be sequential
4258 // CHECK-ERROR:        st2 {v0.8b, v2.8b}, [x0]
4259 // CHECK-ERROR:                    ^
4260 // CHECK-ERROR: error: invalid operand for instruction
4261 // CHECK-ERROR:        st2 {v15.4h, v16.4h, v17.4h}, [x30]
4262 // CHECK-ERROR:            ^
4263 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4264 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4265 // CHECK-ERROR:        st2 {v15.8h-v16.4h}, [x15]
4266 // CHECK-ERROR:                        ^
4267 // CHECK-ERROR: error: invalid operand for instruction
4268 // CHECK-ERROR:        st2 {v0.2d-v2.2d}, [x0]
4269 // CHECK-ERROR:            ^
4270
4271          st3 {v15.8h, v16.8h, v17.4h}, [x15]
4272          st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4273          st3 {v0.8b, v2.8b, v3.8b}, [x0]
4274          st3 {v15.8h-v17.4h}, [x15]
4275          st3 {v31.4s-v2.4s}, [sp]
4276 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4277 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4278 // CHECK-ERROR:        st3 {v15.8h, v16.8h, v17.4h}, [x15]
4279 // CHECK-ERROR:                             ^
4280 // CHECK-AARCH64-ERROR: error: expected vector type register
4281 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4282 // CHECK-ERROR:        st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4283 // CHECK-ERROR:                    ^
4284 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4285 // CHECK-ARM64-ERROR: error: registers must be sequential
4286 // CHECK-ERROR:        st3 {v0.8b, v2.8b, v3.8b}, [x0]
4287 // CHECK-ERROR:                    ^
4288 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4289 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4290 // CHECK-ERROR:        st3 {v15.8h-v17.4h}, [x15]
4291 // CHECK-ERROR:                        ^
4292 // CHECK-ERROR: error: invalid operand for instruction
4293 // CHECK-ERROR:        st3 {v31.4s-v2.4s}, [sp]
4294 // CHECK-ERROR:            ^
4295
4296          st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4297          st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4298          st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4299          st4 {v15.8h-v18.4h}, [x15]
4300          st4 {v31.2s-v1.2s}, [x31]
4301 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4302 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4303 // CHECK-ERROR:        st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4304 // CHECK-ERROR:                             ^
4305 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4306 // CHECK-ARM64-ERROR: error: registers must be sequential
4307 // CHECK-ERROR:        st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4308 // CHECK-ERROR:                    ^
4309 // CHECK-ERROR: error: invalid number of vectors
4310 // CHECK-ERROR:        st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4311 // CHECK-ERROR:                                             ^
4312 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4313 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4314 // CHECK-ERROR:        st4 {v15.8h-v18.4h}, [x15]
4315 // CHECK-ERROR:                        ^
4316 // CHECK-ERROR: error: invalid operand for instruction
4317 // CHECK-ERROR:        st4 {v31.2s-v1.2s}, [x31]
4318 // CHECK-ERROR:            ^
4319
4320 //----------------------------------------------------------------------
4321 // Vector post-index load/store multiple N-element structure
4322 // (class SIMD lselem-post)
4323 //----------------------------------------------------------------------
4324          ld1 {v0.16b}, [x0], #8
4325          ld1 {v0.8h, v1.16h}, [x0], x1
4326          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4327 // CHECK-ERROR: error: invalid operand for instruction
4328 // CHECK-ERROR:          ld1 {v0.16b}, [x0], #8
4329 // CHECK-ERROR:                              ^
4330 // CHECK-AARCH64-ERROR:  error: expected vector type register
4331 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4332 // CHECK-ERROR:          ld1 {v0.8h, v1.16h}, [x0], x1
4333 // CHECK-ERROR:                      ^
4334 // CHECK-ERROR:  error: invalid operand for instruction
4335 // CHECK-ERROR:          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4336 // CHECK-ERROR:                                                  ^
4337
4338          ld2 {v0.16b, v1.16b}, [x0], #16
4339          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4340          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4341 // CHECK-ERROR:  error: invalid operand for instruction
4342 // CHECK-ERROR:          ld2 {v0.16b, v1.16b}, [x0], #16
4343 // CHECK-ERROR:                                      ^
4344 // CHECK-ERROR:  error: invalid operand for instruction
4345 // CHECK-ERROR:          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4346 // CHECK-ERROR:                                           ^
4347 // CHECK-AARCH64-ERROR:  error: invalid space between two vectors
4348 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4349 // CHECK-ERROR:          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4350 // CHECK-ERROR:                                     ^
4351
4352          st1 {v0.16b}, [x0], #8
4353          st1 {v0.8h, v1.16h}, [x0], x1
4354          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4355 // CHECK-ERROR:  error: invalid operand for instruction
4356 // CHECK-ERROR:          st1 {v0.16b}, [x0], #8
4357 // CHECK-ERROR:                              ^
4358 // CHECK-AARCH64-ERROR:  error: expected vector type register
4359 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4360 // CHECK-ERROR:          st1 {v0.8h, v1.16h}, [x0], x1
4361 // CHECK-ERROR:                      ^
4362 // CHECK-ERROR:  error: invalid operand for instruction
4363 // CHECK-ERROR:          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4364                                                  ^
4365
4366          st2 {v0.16b, v1.16b}, [x0], #16
4367          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4368          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4369 // CHECK-ERROR:  error: invalid operand for instruction
4370 // CHECK-ERROR:          st2 {v0.16b, v1.16b}, [x0], #16
4371 // CHECK-ERROR:                                      ^
4372 // CHECK-ERROR:  error: invalid operand for instruction
4373 // CHECK-ERROR:          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4374 // CHECK-ERROR:                                           ^
4375 // CHECK-AARCH64-ERROR:  error: invalid space between two vectors
4376 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4377 // CHECK-ERROR:          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4378 // CHECK-ERROR:                                     ^
4379
4380 //------------------------------------------------------------------------------
4381 // Load single N-element structure to all lanes of N consecutive
4382 // registers (N = 1,2,3,4)
4383 //------------------------------------------------------------------------------
4384          ld1r {x1}, [x0]
4385          ld2r {v31.4s, v0.2s}, [sp]
4386          ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4387          ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4388 // CHECK-AARCH64-ERROR: error: expected vector type register
4389 // CHECK-ARM64-ERROR: error: vector register expected
4390 // CHECK-ERROR: ld1r {x1}, [x0]
4391 // CHECK-ERROR:       ^
4392 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4393 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4394 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
4395 // CHECK-ERROR:               ^
4396 // CHECK-ERROR: error: invalid operand for instruction
4397 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4398 // CHECK-ERROR:      ^
4399 // CHECK-AARCH64-ERROR: error: invalid space between two vectors
4400 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4401 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4402 // CHECK-ERROR:                      ^
4403
4404 //------------------------------------------------------------------------------
4405 // Load/Store single N-element structure to/from one lane of N consecutive
4406 // registers (N = 1, 2,3,4)
4407 //------------------------------------------------------------------------------
4408          ld1 {v0.b}[16], [x0]
4409          ld2 {v15.h, v16.h}[8], [x15]
4410          ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4411          ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4412 // CHECK-AARCH64-ERROR:: error: lane number incompatible with layout
4413 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4414 // CHECK-ERROR: ld1 {v0.b}[16], [x0]
4415 // CHECK-ERROR:            ^
4416 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4417 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4418 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
4419 // CHECK-ERROR:                    ^
4420 // CHECK-AARCH64-ERROR: error: expected lane number
4421 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4422 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4423 // CHECK-ERROR:                         ^
4424 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4425 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4426 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4427 // CHECK-ERROR:                              ^
4428
4429          st1 {v0.d}[16], [x0]
4430          st2 {v31.s, v0.s}[3], [8]
4431          st3 {v15.h, v16.h, v17.h}[-1], [x15]
4432          st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4433 // CHECK-AARCH64-ERROR:: error: lane number incompatible with layout
4434 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4435 // CHECK-ERROR: st1 {v0.d}[16], [x0]
4436 // CHECK-ERROR:            ^
4437 // CHECK-AARCH64-ERROR: error: invalid operand for instruction
4438 // CHECK-ARM64-ERROR: error: register expected
4439 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
4440 // CHECK-ERROR:                        ^
4441 // CHECK-AARCH64-ERROR: error: expected lane number
4442 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4443 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
4444 // CHECK-ERROR:                           ^
4445 // CHECK-AARCH64-ERROR: lane number incompatible with layout
4446 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4447 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4448 // CHECK-ERROR:                              ^
4449
4450 //------------------------------------------------------------------------------
4451 // Post-index of load single N-element structure to all lanes of N consecutive
4452 // registers (N = 1,2,3,4)
4453 //------------------------------------------------------------------------------
4454          ld1r {v15.8h}, [x15], #5
4455          ld2r {v0.2d, v1.2d}, [x0], #7
4456          ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4457          ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4458 // CHECK-ERROR: error: invalid operand for instruction
4459 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5
4460 // CHECK-ERROR:                       ^
4461 // CHECK-ERROR: error: invalid operand for instruction
4462 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
4463 // CHECK-ERROR:                            ^
4464 // CHECK-ERROR: error: invalid operand for instruction
4465 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4466 // CHECK-ERROR:                                       ^
4467 // CHECK-ERROR: error: invalid operand for instruction
4468 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4469 // CHECK-ERROR:                                           ^
4470
4471 //------------------------------------------------------------------------------
4472 // Post-index of Load/Store single N-element structure to/from one lane of N
4473 // consecutive registers (N = 1, 2,3,4)
4474 //------------------------------------------------------------------------------
4475          ld1 {v0.b}[0], [x0], #2
4476          ld2 {v15.h, v16.h}[0], [x15], #3
4477          ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4478          ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4479 // CHECK-ERROR: error: invalid operand for instruction
4480 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
4481 // CHECK-ERROR:                      ^
4482 // CHECK-ERROR: error: invalid operand for instruction
4483 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
4484 // CHECK-ERROR:                               ^
4485 // CHECK-AARCH64-ERROR: error: expected the same vector layout
4486 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4487 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4488 // CHECK-ERROR:                      ^
4489 // CHECK-ERROR: error: invalid operand for instruction
4490 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4491 // CHECK-ERROR:                                        ^
4492
4493          st1 {v0.d}[0], [x0], #7
4494          st2 {v31.s, v0.s}[0], [sp], #6
4495          st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4496          st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4497 // CHECK-ERROR: error: invalid operand for instruction
4498 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7
4499 // CHECK-ERROR:                      ^
4500 // CHECK-ERROR: error: invalid operand for instruction
4501 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
4502 // CHECK-ERROR:                             ^
4503 // CHECK-ERROR: error: invalid operand for instruction
4504 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4505 // CHECK-ERROR:                                      ^
4506 // CHECK-ERROR: error: invalid operand for instruction
4507 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4508 // CHECK-ERROR:                                        ^
4509
4510
4511          ins v2.b[16], w1
4512          ins v7.h[8], w14
4513          ins v20.s[5], w30
4514          ins v1.d[2], x7
4515          ins v2.b[3], b1
4516          ins v7.h[2], h14
4517          ins v20.s[1], s30
4518          ins v1.d[0], d7
4519
4520 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4521 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4522 // CHECK-ERROR:         ins v2.b[16], w1
4523 // CHECK-ERROR:                  ^
4524 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4525 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4526 // CHECK-ERROR:         ins v7.h[8], w14
4527 // CHECK-ERROR:                  ^
4528 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4529 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4530 // CHECK-ERROR:         ins v20.s[5], w30
4531 // CHECK-ERROR:                   ^
4532 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
4533 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4534 // CHECK-ERROR:         ins v1.d[2], x7
4535 // CHECK-ERROR:                  ^
4536 // CHECK-ERROR: error: invalid operand for instruction
4537 // CHECK-ERROR:         ins v2.b[3], b1
4538 // CHECK-ERROR:                      ^
4539 // CHECK-ERROR: error: invalid operand for instruction
4540 // CHECK-ERROR:         ins v7.h[2], h14
4541 // CHECK-ERROR:                      ^
4542 // CHECK-ERROR: error: invalid operand for instruction
4543 // CHECK-ERROR:         ins v20.s[1], s30
4544 // CHECK-ERROR:                       ^
4545 // CHECK-ERROR: error: invalid operand for instruction
4546 // CHECK-ERROR:         ins v1.d[0], d7
4547 // CHECK-ERROR:                      ^
4548
4549          smov w1, v0.b[16]
4550          smov w14, v6.h[8]
4551          smov x1, v0.b[16]
4552          smov x14, v6.h[8]
4553          smov x20, v9.s[5]
4554          smov w1, v0.d[0]
4555          smov w14, v6.d[1]
4556          smov x1, v0.d[0]
4557          smov x14, v6.d[1]
4558          smov x20, v9.d[0]
4559
4560 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4561 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4562 // CHECK-ERROR         smov w1, v0.b[16]
4563 // CHECK-ERROR                       ^
4564 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4565 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4566 // CHECK-ERROR         smov w14, v6.h[8]
4567 // CHECK-ERROR                        ^
4568 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4569 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4570 // CHECK-ERROR         smov x1, v0.b[16]
4571 // CHECK-ERROR                       ^
4572 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4573 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4574 // CHECK-ERROR         smov x14, v6.h[8]
4575 // CHECK-ERROR                        ^
4576 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4577 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4578 // CHECK-ERROR         smov x20, v9.s[5]
4579 // CHECK-ERROR                        ^
4580 // CHECK-ERROR error: invalid operand for instruction
4581 // CHECK-ERROR         smov w1, v0.d[0]
4582 // CHECK-ERROR                     ^
4583 // CHECK-ERROR error: invalid operand for instruction
4584 // CHECK-ERROR         smov w14, v6.d[1]
4585 // CHECK-ERROR                      ^
4586 // CHECK-ERROR error: invalid operand for instruction
4587 // CHECK-ERROR         smov x1, v0.d[0]
4588 // CHECK-ERROR                     ^
4589 // CHECK-ERROR error: invalid operand for instruction
4590 // CHECK-ERROR         smov x14, v6.d[1]
4591 // CHECK-ERROR                      ^
4592 // CHECK-ERROR error: invalid operand for instruction
4593 // CHECK-ERROR         smov x20, v9.d[0]
4594 // CHECK-ERROR                      ^
4595
4596          umov w1, v0.b[16]
4597          umov w14, v6.h[8]
4598          umov w20, v9.s[5]
4599          umov x7, v18.d[3]
4600          umov w1, v0.d[0]
4601          umov s20, v9.s[2]
4602          umov d7, v18.d[1]
4603
4604 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4605 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4606 // CHECK-ERROR         umov w1, v0.b[16]
4607 // CHECK-ERROR                       ^
4608 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4609 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4610 // CHECK-ERROR         umov w14, v6.h[8]
4611 // CHECK-ERROR                        ^
4612 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4613 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4614 // CHECK-ERROR         umov w20, v9.s[5]
4615 // CHECK-ERROR                        ^
4616 // CHECK-AARCH64-ERROR error: lane number incompatible with layout
4617 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4618 // CHECK-ERROR         umov x7, v18.d[3]
4619 // CHECK-ERROR                        ^
4620 // CHECK-ERROR error: invalid operand for instruction
4621 // CHECK-ERROR         umov w1, v0.d[0]
4622 // CHECK-ERROR                     ^
4623 // CHECK-ERROR error: invalid operand for instruction
4624 // CHECK-ERROR         umov s20, v9.s[2]
4625 // CHECK-ERROR              ^
4626 // CHECK-ERROR error: invalid operand for instruction
4627 // CHECK-ERROR         umov d7, v18.d[1]
4628 // CHECK-ERROR              ^
4629
4630          Ins v1.h[2], v3.b[6]
4631          Ins v6.h[7], v7.s[2]
4632          Ins v15.d[0], v22.s[2]
4633          Ins v0.d[0], v4.b[1]
4634
4635 // CHECK-ERROR error: invalid operand for instruction
4636 // CHECK-ERROR         Ins v1.h[2], v3.b[6]
4637 // CHECK-ERROR                         ^
4638 // CHECK-ERROR error: invalid operand for instruction
4639 // CHECK-ERROR         Ins v6.h[7], v7.s[2]
4640 // CHECK-ERROR                         ^
4641 // CHECK-ERROR error: invalid operand for instruction
4642 // CHECK-ERROR         Ins v15.d[0], v22.s[2]
4643 // CHECK-ERROR                           ^
4644 // CHECK-ERROR error: invalid operand for instruction
4645 // CHECK-ERROR         Ins v0.d[0], v4.b[1]
4646 // CHECK-ERROR                         ^
4647
4648          dup v1.8h, v2.b[2]
4649          dup v11.4s, v7.h[7]
4650          dup v17.2d, v20.s[0]
4651          dup v1.16b, v2.h[2]
4652          dup v11.8h, v7.s[3]
4653          dup v17.4s, v20.d[0]
4654          dup v5.2d, v1.b[1]
4655
4656 // CHECK-ERROR error: invalid operand for instruction
4657 // CHECK-ERROR         dup v1.8h, v2.b[2]
4658 // CHECK-ERROR                       ^
4659 // CHECK-ERROR error: invalid operand for instruction
4660 // CHECK-ERROR         dup v11.4s, v7.h[7]
4661 // CHECK-ERROR                        ^
4662 // CHECK-ERROR error: invalid operand for instruction
4663 // CHECK-ERROR         dup v17.2d, v20.s[0]
4664 // CHECK-ERROR                         ^
4665 // CHECK-ERROR error: invalid operand for instruction
4666 // CHECK-ERROR         dup v1.16b, v2.h[2]
4667 // CHECK-ERROR                        ^
4668 // CHECK-ERROR invalid operand for instruction
4669 // CHECK-ERROR         dup v11.8h, v7.s[3]
4670 // CHECK-ERROR                        ^
4671 // CHECK-ERROR invalid operand for instruction
4672 // CHECK-ERROR         dup v17.4s, v20.d[0]
4673 // CHECK-ERROR                         ^
4674 // CHECK-ERROR invalid operand for instruction
4675 // CHECK-ERROR         dup v5.2d, v1.b[1]
4676 // CHECK-ERROR                       ^
4677
4678          dup v1.8b, b1
4679          dup v11.4h, h14
4680          dup v17.2s, s30
4681          dup v1.16b, d2
4682          dup v11.8s, w16
4683          dup v17.4d, w28
4684          dup v5.2d, w0
4685
4686 // CHECK-ERROR error: invalid operand for instruction
4687 // CHECK-ERROR         dup v1.8b, b1
4688 // CHECK-ERROR                    ^
4689 // CHECK-ERROR error: invalid operand for instruction
4690 // CHECK-ERROR         dup v11.4h, h14
4691 // CHECK-ERROR                     ^
4692 // CHECK-ERROR error: invalid operand for instruction
4693 // CHECK-ERROR         dup v17.2s, s30
4694 // CHECK-ERROR                     ^
4695 // CHECK-ERROR error: invalid operand for instruction
4696 // CHECK-ERROR         dup v1.16b, d2
4697 // CHECK-ERROR                     ^
4698 // CHECK-ERROR error: invalid operand for instruction
4699 // CHECK-ERROR         dup v11.8s, w16
4700 // CHECK-ERROR             ^
4701 // CHECK-ERROR error: invalid operand for instruction
4702 // CHECK-ERROR         dup v17.4d, w28
4703 // CHECK-ERROR             ^
4704 // CHECK-ERROR error: invalid operand for instruction
4705 // CHECK-ERROR         dup v5.2d, w0
4706 // CHECK-ERROR                    ^
4707
4708 //----------------------------------------------------------------------
4709 // Scalar Compare Bitwise Equal
4710 //----------------------------------------------------------------------
4711
4712          cmeq b20, d21, d22
4713
4714 // CHECK-ERROR: error: invalid operand for instruction
4715 // CHECK-ERROR:          cmeq b20, d21, d22
4716 // CHECK-ERROR:               ^
4717
4718 //----------------------------------------------------------------------
4719 // Scalar Compare Bitwise Equal To Zero
4720 //----------------------------------------------------------------------
4721
4722          cmeq d20, b21, #0
4723
4724 // CHECK-ERROR: error: invalid operand for instruction
4725 // CHECK-ERROR:          cmeq d20, b21, #0
4726 // CHECK-ERROR:                    ^
4727
4728 //----------------------------------------------------------------------
4729 // Scalar Compare Unsigned Higher Or Same
4730 //----------------------------------------------------------------------
4731
4732          cmhs b20, d21, d22
4733
4734 // CHECK-ERROR: error: invalid operand for instruction
4735 // CHECK-ERROR:          cmhs b20, d21, d22
4736 // CHECK-ERROR:               ^
4737
4738         
4739 //----------------------------------------------------------------------
4740 // Scalar Compare Signed Greather Than Or Equal
4741 //----------------------------------------------------------------------
4742
4743          cmge b20, d21, d22
4744
4745 // CHECK-ERROR: error: invalid operand for instruction
4746 // CHECK-ERROR:          cmge b20, d21, d22
4747 // CHECK-ERROR:               ^
4748
4749 //----------------------------------------------------------------------
4750 // Scalar Compare Signed Greather Than Or Equal To Zero
4751 //----------------------------------------------------------------------
4752
4753          cmge d20, b21, #0
4754
4755 // CHECK-ERROR: error: invalid operand for instruction
4756 // CHECK-ERROR:          cmge d20, b21, #0
4757 // CHECK-ERROR:                    ^
4758
4759 //----------------------------------------------------------------------
4760 // Scalar Compare Unsigned Higher
4761 //----------------------------------------------------------------------
4762
4763          cmhi b20, d21, d22
4764
4765 // CHECK-ERROR: error: invalid operand for instruction
4766 // CHECK-ERROR:          cmhi b20, d21, d22
4767 // CHECK-ERROR:               ^
4768
4769 //----------------------------------------------------------------------
4770 // Scalar Compare Signed Greater Than
4771 //----------------------------------------------------------------------
4772
4773          cmgt b20, d21, d22
4774
4775 // CHECK-ERROR: error: invalid operand for instruction
4776 // CHECK-ERROR:          cmgt b20, d21, d22
4777 // CHECK-ERROR:               ^
4778
4779 //----------------------------------------------------------------------
4780 // Scalar Compare Signed Greater Than Zero
4781 //----------------------------------------------------------------------
4782
4783          cmgt d20, b21, #0
4784
4785 // CHECK-ERROR: error: invalid operand for instruction
4786 // CHECK-ERROR:          cmgt d20, b21, #0
4787 // CHECK-ERROR:                    ^
4788
4789 //----------------------------------------------------------------------
4790 // Scalar Compare Signed Less Than Or Equal To Zero
4791 //----------------------------------------------------------------------
4792
4793          cmle d20, b21, #0
4794
4795 // CHECK-ERROR: error: invalid operand for instruction
4796 // CHECK-ERROR:          cmle d20, b21, #0
4797 // CHECK-ERROR:                    ^
4798
4799 //----------------------------------------------------------------------
4800 // Scalar Compare Less Than Zero
4801 //----------------------------------------------------------------------
4802
4803          cmlt d20, b21, #0
4804
4805 // CHECK-ERROR: error: invalid operand for instruction
4806 // CHECK-ERROR:          cmlt d20, b21, #0
4807 // CHECK-ERROR:                    ^
4808
4809 //----------------------------------------------------------------------
4810 // Scalar Compare Bitwise Test Bits
4811 //----------------------------------------------------------------------
4812
4813          cmtst b20, d21, d22
4814
4815 // CHECK-ERROR: error: invalid operand for instruction
4816 // CHECK-ERROR:          cmtst b20, d21, d22
4817 // CHECK-ERROR:                ^
4818
4819 //----------------------------------------------------------------------
4820 // Scalar Floating-point Compare Mask Equal
4821 //----------------------------------------------------------------------
4822
4823          fcmeq s10, h11, s12
4824          fcmeq d20, s21, d22
4825
4826 // CHECK-ERROR: error: invalid operand for instruction
4827 // CHECK-ERROR:          fcmeq s10, h11, s12
4828 // CHECK-ERROR:                     ^
4829 // CHECK-ERROR: error: invalid operand for instruction
4830 // CHECK-ERROR:          fcmeq d20, s21, d22
4831 // CHECK-ERROR:                     ^
4832
4833 //----------------------------------------------------------------------
4834 // Scalar Floating-point Compare Mask Equal To Zero
4835 //----------------------------------------------------------------------
4836
4837          fcmeq h10, s11, #0.0
4838          fcmeq d20, s21, #0.0
4839
4840 // CHECK-ERROR: error: invalid operand for instruction
4841 // CHECK-ERROR:          fcmeq h10, s11, #0.0
4842 // CHECK-ERROR:                ^
4843 // CHECK-ERROR: error: invalid operand for instruction
4844 // CHECK-ERROR:          fcmeq d20, s21, #0.0
4845 // CHECK-ERROR:                     ^
4846
4847 //----------------------------------------------------------------------
4848 // Scalar Floating-point Compare Mask Greater Than Or Equal
4849 //----------------------------------------------------------------------
4850
4851          fcmge s10, h11, s12
4852          fcmge d20, s21, d22
4853
4854 // CHECK-ERROR: error: invalid operand for instruction
4855 // CHECK-ERROR:          fcmge s10, h11, s12
4856 // CHECK-ERROR:                     ^
4857 // CHECK-ERROR: error: invalid operand for instruction
4858 // CHECK-ERROR:          fcmge d20, s21, d22
4859 // CHECK-ERROR:                     ^
4860
4861 //----------------------------------------------------------------------
4862 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4863 //----------------------------------------------------------------------
4864
4865          fcmge h10, s11, #0.0
4866          fcmge d20, s21, #0.0
4867
4868 // CHECK-ERROR: error: invalid operand for instruction
4869 // CHECK-ERROR:          fcmge h10, s11, #0.0
4870 // CHECK-ERROR:                ^
4871 // CHECK-ERROR: error: invalid operand for instruction
4872 // CHECK-ERROR:          fcmge d20, s21, #0.0
4873 // CHECK-ERROR:                     ^
4874
4875 //----------------------------------------------------------------------
4876 // Scalar Floating-point Compare Mask Greather Than
4877 //----------------------------------------------------------------------
4878
4879          fcmgt s10, h11, s12
4880          fcmgt d20, s21, d22
4881
4882 // CHECK-ERROR: error: invalid operand for instruction
4883 // CHECK-ERROR:          fcmgt s10, h11, s12
4884 // CHECK-ERROR:                     ^
4885 // CHECK-ERROR: error: invalid operand for instruction
4886 // CHECK-ERROR:          fcmgt d20, s21, d22
4887 // CHECK-ERROR:                     ^
4888
4889 //----------------------------------------------------------------------
4890 // Scalar Floating-point Compare Mask Greather Than Zero
4891 //----------------------------------------------------------------------
4892
4893          fcmgt h10, s11, #0.0
4894          fcmgt d20, s21, #0.0
4895
4896 // CHECK-ERROR: error: invalid operand for instruction
4897 // CHECK-ERROR:          fcmgt h10, s11, #0.0
4898 // CHECK-ERROR:                ^
4899 // CHECK-ERROR: error: invalid operand for instruction
4900 // CHECK-ERROR:          fcmgt d20, s21, #0.0
4901 // CHECK-ERROR:                     ^
4902
4903 //----------------------------------------------------------------------
4904 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4905 //----------------------------------------------------------------------
4906
4907          fcmle h10, s11, #0.0
4908          fcmle d20, s21, #0.0
4909
4910 // CHECK-ERROR: error: invalid operand for instruction
4911 // CHECK-ERROR:          fcmle h10, s11, #0.0
4912 // CHECK-ERROR:                ^
4913 // CHECK-ERROR: error: invalid operand for instruction
4914 // CHECK-ERROR:          fcmle d20, s21, #0.0
4915 // CHECK-ERROR:                     ^
4916
4917 //----------------------------------------------------------------------
4918 // Scalar Floating-point Compare Mask Less Than
4919 //----------------------------------------------------------------------
4920
4921          fcmlt h10, s11, #0.0
4922          fcmlt d20, s21, #0.0
4923
4924 // CHECK-ERROR: error: invalid operand for instruction
4925 // CHECK-ERROR:          fcmlt h10, s11, #0.0
4926 // CHECK-ERROR:                     ^
4927 // CHECK-ERROR: error: invalid operand for instruction
4928 // CHECK-ERROR:          fcmlt d20, s21, #0.0
4929 // CHECK-ERROR:                     ^
4930
4931 //----------------------------------------------------------------------
4932 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4933 //----------------------------------------------------------------------
4934
4935          facge s10, h11, s12
4936          facge d20, s21, d22
4937
4938 // CHECK-ERROR: error: invalid operand for instruction
4939 // CHECK-ERROR:          facge s10, h11, s12
4940 // CHECK-ERROR:                     ^
4941 // CHECK-ERROR: error: invalid operand for instruction
4942 // CHECK-ERROR:          facge d20, s21, d22
4943 // CHECK-ERROR:                     ^
4944
4945 //----------------------------------------------------------------------
4946 // Scalar Floating-point Absolute Compare Mask Greater Than
4947 //----------------------------------------------------------------------
4948
4949          facgt s10, h11, s12
4950          facgt d20, d21, s22
4951
4952 // CHECK-ERROR: error: invalid operand for instruction
4953 // CHECK-ERROR:          facgt s10, h11, s12
4954 // CHECK-ERROR:                     ^
4955 // CHECK-ERROR: error: invalid operand for instruction
4956 // CHECK-ERROR:          facgt d20, d21, s22
4957 // CHECK-ERROR:                          ^
4958         
4959 //----------------------------------------------------------------------
4960 // Scalar Signed Saturating Accumulated of Unsigned Value
4961 //----------------------------------------------------------------------
4962
4963         suqadd b0, h1
4964         suqadd h0, s1
4965         suqadd s0, d1
4966         suqadd d0, b0
4967
4968 // CHECK-ERROR: error: invalid operand for instruction
4969 // CHECK-ERROR:        suqadd b0, h1
4970 // CHECK-ERROR:                   ^
4971 // CHECK-ERROR: error: invalid operand for instruction
4972 // CHECK-ERROR:        suqadd h0, s1
4973 // CHECK-ERROR:                   ^
4974 // CHECK-ERROR: error: invalid operand for instruction
4975 // CHECK-ERROR:        suqadd s0, d1
4976 // CHECK-ERROR:                   ^
4977 // CHECK-ERROR: error: invalid operand for instruction
4978 // CHECK-ERROR:        suqadd d0, b0
4979 // CHECK-ERROR:                   ^
4980
4981 //----------------------------------------------------------------------
4982 // Scalar Unsigned Saturating Accumulated of Signed Value
4983 //----------------------------------------------------------------------
4984
4985         usqadd b0, h1
4986         usqadd h0, s1
4987         usqadd s0, d1
4988         usqadd d0, b1
4989
4990 // CHECK-ERROR: error: invalid operand for instruction
4991 // CHECK-ERROR:        usqadd b0, h1
4992 // CHECK-ERROR:                   ^
4993 // CHECK-ERROR: error: invalid operand for instruction
4994 // CHECK-ERROR:        usqadd h0, s1
4995 // CHECK-ERROR:                   ^
4996 // CHECK-ERROR: error: invalid operand for instruction
4997 // CHECK-ERROR:        usqadd s0, d1
4998 // CHECK-ERROR:                   ^
4999 // CHECK-ERROR: error: invalid operand for instruction
5000 // CHECK-ERROR:        usqadd d0, b1
5001 // CHECK-ERROR:                   ^
5002
5003 //----------------------------------------------------------------------
5004 // Scalar Absolute Value
5005 //----------------------------------------------------------------------
5006
5007     abs d29, s24
5008
5009 // CHECK-ERROR: error: invalid operand for instruction
5010 // CHECK-ERROR:        abs d29, s24
5011 // CHECK-ERROR:                 ^
5012
5013 //----------------------------------------------------------------------
5014 // Scalar Negate
5015 //----------------------------------------------------------------------
5016
5017     neg d29, s24
5018
5019 // CHECK-ERROR: error: invalid operand for instruction
5020 // CHECK-ERROR:        neg d29, s24
5021 // CHECK-ERROR:                 ^
5022
5023 //----------------------------------------------------------------------
5024 // Signed Saturating Doubling Multiply-Add Long
5025 //----------------------------------------------------------------------
5026
5027     sqdmlal s17, h27, s12
5028     sqdmlal d19, s24, d12
5029
5030 // CHECK-ERROR: error: invalid operand for instruction
5031 // CHECK-ERROR:        sqdmlal s17, h27, s12
5032 // CHECK-ERROR:                          ^
5033 // CHECK-AARCH64-ERROR: error: too few operands for instruction
5034 // CHECK-ARM64-ERROR: error: invalid operand for instruction
5035 // CHECK-ERROR:        sqdmlal d19, s24, d12
5036 // CHECK-ERROR:                          ^
5037
5038 //----------------------------------------------------------------------
5039 // Signed Saturating Doubling Multiply-Subtract Long
5040 //----------------------------------------------------------------------
5041
5042     sqdmlsl s14, h12, s25
5043     sqdmlsl d12, s23, d13
5044
5045 // CHECK-ERROR: error: invalid operand for instruction
5046 // CHECK-ERROR:        sqdmlsl s14, h12, s25
5047 // CHECK-ERROR:                          ^
5048 // CHECK-AARCH64-ERROR: error: too few operands for instruction
5049 // CHECK-ARM64-ERROR: error: invalid operand for instruction
5050 // CHECK-ERROR:        sqdmlsl d12, s23, d13
5051 // CHECK-ERROR:                          ^
5052
5053 //----------------------------------------------------------------------
5054 // Signed Saturating Doubling Multiply Long
5055 //----------------------------------------------------------------------
5056
5057     sqdmull s12, h22, s12
5058     sqdmull d15, s22, d12
5059
5060 // CHECK-ERROR: error: invalid operand for instruction
5061 // CHECK-ERROR:        sqdmull s12, h22, s12
5062 // CHECK-ERROR:                          ^
5063 // CHECK-AARCH64-ERROR: error: too few operands for instruction
5064 // CHECK-ARM64-ERROR: error: invalid operand for instruction
5065 // CHECK-ERROR:        sqdmull d15, s22, d12
5066 // CHECK-ERROR:                          ^
5067
5068 //----------------------------------------------------------------------
5069 // Scalar Signed Saturating Extract Unsigned Narrow
5070 //----------------------------------------------------------------------
5071
5072     sqxtun b19, b14
5073     sqxtun h21, h15
5074     sqxtun s20, s12
5075
5076 // CHECK-ERROR: error: invalid operand for instruction
5077 // CHECK-ERROR:        sqxtun b19, b14
5078 // CHECK-ERROR:                    ^
5079 // CHECK-ERROR: error: invalid operand for instruction
5080 // CHECK-ERROR:        sqxtun h21, h15
5081 // CHECK-ERROR:                    ^
5082 // CHECK-ERROR: error: invalid operand for instruction
5083 // CHECK-ERROR:        sqxtun s20, s12
5084 // CHECK-ERROR:                    ^
5085
5086 //----------------------------------------------------------------------
5087 // Scalar Signed Saturating Extract Signed Narrow
5088 //----------------------------------------------------------------------
5089
5090     sqxtn b18, b18
5091     sqxtn h20, h17
5092     sqxtn s19, s14
5093
5094 // CHECK-ERROR: error: invalid operand for instruction
5095 // CHECK-ERROR:        sqxtn b18, b18
5096 // CHECK-ERROR:                   ^
5097 // CHECK-ERROR: error: invalid operand for instruction
5098 // CHECK-ERROR:        sqxtn h20, h17
5099 // CHECK-ERROR:                   ^
5100 // CHECK-ERROR: error: invalid operand for instruction
5101 // CHECK-ERROR:        sqxtn s19, s14
5102 // CHECK-ERROR:                   ^
5103
5104
5105 //----------------------------------------------------------------------
5106 // Scalar Unsigned Saturating Extract Narrow
5107 //----------------------------------------------------------------------
5108
5109     uqxtn b18, b18
5110     uqxtn h20, h17
5111     uqxtn s19, s14
5112
5113 // CHECK-ERROR: error: invalid operand for instruction
5114 // CHECK-ERROR:        uqxtn b18, b18
5115 // CHECK-ERROR:                   ^
5116 // CHECK-ERROR: error: invalid operand for instruction
5117 // CHECK-ERROR:        uqxtn h20, h17
5118 // CHECK-ERROR:                   ^
5119 // CHECK-ERROR: error: invalid operand for instruction
5120 // CHECK-ERROR:        uqxtn s19, s14
5121 // CHECK-ERROR:                   ^
5122
5123 //----------------------------------------------------------------------
5124 // Scalar Signed Shift Right (Immediate)
5125 //----------------------------------------------------------------------
5126         sshr d15, d16, #99
5127
5128 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5129 // CHECK-ERROR:        sshr d15, d16, #99
5130 // CHECK-ERROR:                       ^
5131
5132         sshr d15, s16, #31
5133
5134 // CHECK-ERROR: error: invalid operand for instruction
5135 // CHECK-ERROR:        sshr d15, s16, #31
5136 // CHECK-ERROR:                  ^
5137
5138 //----------------------------------------------------------------------
5139 // Scalar Unsigned Shift Right (Immediate)
5140 //----------------------------------------------------------------------
5141
5142         ushr d10, d17, #99
5143
5144 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5145 // CHECK-ERROR:        ushr d10, d17, #99
5146 // CHECK-ERROR:                       ^
5147
5148 //----------------------------------------------------------------------
5149 // Scalar Signed Rounding Shift Right (Immediate)
5150 //----------------------------------------------------------------------
5151
5152         srshr d19, d18, #99
5153
5154 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5155 // CHECK-ERROR:        srshr d19, d18, #99
5156 // CHECK-ERROR:                        ^
5157
5158 //----------------------------------------------------------------------
5159 // Scalar Unigned Rounding Shift Right (Immediate)
5160 //----------------------------------------------------------------------
5161
5162         urshr d20, d23, #99
5163
5164 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5165 // CHECK-ERROR:        urshr d20, d23, #99
5166 // CHECK-ERROR:                        ^
5167
5168 //----------------------------------------------------------------------
5169 // Scalar Signed Shift Right and Accumulate (Immediate)
5170 //----------------------------------------------------------------------
5171
5172         ssra d18, d12, #99
5173
5174 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5175 // CHECK-ERROR:        ssra d18, d12, #99
5176 // CHECK-ERROR:                       ^
5177
5178 //----------------------------------------------------------------------
5179 // Scalar Unsigned Shift Right and Accumulate (Immediate)
5180 //----------------------------------------------------------------------
5181
5182         usra d20, d13, #99
5183
5184 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5185 // CHECK-ERROR:        usra d20, d13, #99
5186 // CHECK-ERROR:                       ^
5187
5188 //----------------------------------------------------------------------
5189 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
5190 //----------------------------------------------------------------------
5191
5192         srsra d15, d11, #99
5193
5194 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5195 // CHECK-ERROR:        srsra d15, d11, #99
5196 // CHECK-ERROR:                        ^
5197
5198 //----------------------------------------------------------------------
5199 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
5200 //----------------------------------------------------------------------
5201
5202         ursra d18, d10, #99
5203
5204 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5205 // CHECK-ERROR:        ursra d18, d10, #99
5206 // CHECK-ERROR:                        ^
5207
5208 //----------------------------------------------------------------------
5209 // Scalar Shift Left (Immediate)
5210 //----------------------------------------------------------------------
5211
5212         shl d7, d10, #99
5213
5214 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5215 // CHECK-ERROR:        shl d7, d10, #99
5216 // CHECK-ERROR:                     ^
5217
5218         shl d7, s16, #31
5219         
5220 // CHECK-ERROR: error: invalid operand for instruction
5221 // CHECK-ERROR:        shl d7, s16, #31
5222 // CHECK-ERROR:                ^
5223
5224 //----------------------------------------------------------------------
5225 // Signed Saturating Shift Left (Immediate)
5226 //----------------------------------------------------------------------
5227
5228         sqshl b11, b19, #99
5229         sqshl h13, h18, #99
5230         sqshl s14, s17, #99
5231         sqshl d15, d16, #99
5232
5233 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5234 // CHECK-ERROR:        sqshl b11, b19, #99
5235 // CHECK-ERROR:                        ^
5236 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5237 // CHECK-ERROR:        sqshl h13, h18, #99
5238 // CHECK-ERROR:                        ^
5239 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5240 // CHECK-ERROR:        sqshl s14, s17, #99
5241 // CHECK-ERROR:                        ^
5242 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5243 // CHECK-ERROR:        sqshl d15, d16, #99
5244 // CHECK-ERROR:                        ^
5245
5246 //----------------------------------------------------------------------
5247 // Unsigned Saturating Shift Left (Immediate)
5248 //----------------------------------------------------------------------
5249
5250         uqshl b18, b15, #99
5251         uqshl h11, h18, #99
5252         uqshl s14, s19, #99
5253         uqshl d15, d12, #99
5254
5255 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5256 // CHECK-ERROR:        uqshl b18, b15, #99
5257 // CHECK-ERROR:                        ^
5258 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5259 // CHECK-ERROR:        uqshl h11, h18, #99
5260 // CHECK-ERROR:                        ^
5261 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5262 // CHECK-ERROR:        uqshl s14, s19, #99
5263 // CHECK-ERROR:                        ^
5264 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5265 // CHECK-ERROR:        uqshl d15, d12, #99
5266 // CHECK-ERROR:                        ^
5267
5268 //----------------------------------------------------------------------
5269 // Signed Saturating Shift Left Unsigned (Immediate)
5270 //----------------------------------------------------------------------
5271
5272         sqshlu b15, b18, #99
5273         sqshlu h19, h17, #99
5274         sqshlu s16, s14, #99
5275         sqshlu d11, d13, #99
5276
5277 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5278 // CHECK-ERROR:        sqshlu  b15, b18, #99
5279 // CHECK-ERROR:                          ^
5280 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5281 // CHECK-ERROR:        sqshlu  h19, h17, #99
5282 // CHECK-ERROR:                          ^
5283 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5284 // CHECK-ERROR:        sqshlu  s16, s14, #99
5285 // CHECK-ERROR:                          ^
5286 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5287 // CHECK-ERROR:        sqshlu  d11, d13, #99
5288 // CHECK-ERROR:                          ^
5289
5290 //----------------------------------------------------------------------
5291 // Shift Right And Insert (Immediate)
5292 //----------------------------------------------------------------------
5293
5294         sri d10, d12, #99
5295
5296 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5297 // CHECK-ERROR:        sri d10, d12, #99
5298 // CHECK-ERROR:                      ^
5299
5300 //----------------------------------------------------------------------
5301 // Shift Left And Insert (Immediate)
5302 //----------------------------------------------------------------------
5303
5304         sli d10, d14, #99
5305
5306 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5307 // CHECK-ERROR:        sli d10, d14, #99
5308 // CHECK-ERROR:                      ^
5309
5310 //----------------------------------------------------------------------
5311 // Signed Saturating Shift Right Narrow (Immediate)
5312 //----------------------------------------------------------------------
5313
5314         sqshrn b10, h15, #99
5315         sqshrn h17, s10, #99
5316         sqshrn s18, d10, #99
5317
5318 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5319 // CHECK-ERROR:        sqshrn  b10, h15, #99
5320 // CHECK-ERROR:                          ^
5321 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5322 // CHECK-ERROR:        sqshrn  h17, s10, #99
5323 // CHECK-ERROR:                          ^
5324 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5325 // CHECK-ERROR:        sqshrn  s18, d10, #99
5326 // CHECK-ERROR:                          ^
5327         
5328 //----------------------------------------------------------------------
5329 // Unsigned Saturating Shift Right Narrow (Immediate)
5330 //----------------------------------------------------------------------
5331
5332         uqshrn b12, h10, #99
5333         uqshrn h10, s14, #99
5334         uqshrn s10, d12, #99
5335
5336 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5337 // CHECK-ERROR:        uqshrn  b12, h10, #99
5338 // CHECK-ERROR:                          ^
5339 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5340 // CHECK-ERROR:        uqshrn  h10, s14, #99
5341 // CHECK-ERROR:                          ^
5342 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5343 // CHECK-ERROR:        uqshrn  s10, d12, #99
5344 // CHECK-ERROR:                          ^
5345         
5346 //----------------------------------------------------------------------
5347 // Signed Saturating Rounded Shift Right Narrow (Immediate)
5348 //----------------------------------------------------------------------
5349
5350         sqrshrn b10, h13, #99
5351         sqrshrn h15, s10, #99
5352         sqrshrn s15, d12, #99
5353
5354 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5355 // CHECK-ERROR:        sqrshrn b10, h13, #99
5356 // CHECK-ERROR:                          ^
5357 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5358 // CHECK-ERROR:        sqrshrn h15, s10, #99
5359 // CHECK-ERROR:                          ^
5360 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5361 // CHECK-ERROR:        sqrshrn s15, d12, #99
5362 // CHECK-ERROR:                          ^
5363         
5364 //----------------------------------------------------------------------
5365 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5366 //----------------------------------------------------------------------
5367
5368         uqrshrn b10, h12, #99
5369         uqrshrn h12, s10, #99
5370         uqrshrn s10, d10, #99
5371
5372 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5373 // CHECK-ERROR:        uqrshrn b10, h12, #99
5374 // CHECK-ERROR:                          ^
5375 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5376 // CHECK-ERROR:        uqrshrn h12, s10, #99
5377 // CHECK-ERROR:                          ^
5378 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5379 // CHECK-ERROR:        uqrshrn s10, d10, #99
5380 // CHECK-ERROR:                          ^
5381
5382 //----------------------------------------------------------------------
5383 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5384 //----------------------------------------------------------------------
5385
5386         sqshrun b15, h10, #99
5387         sqshrun h20, s14, #99
5388         sqshrun s10, d15, #99
5389
5390 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5391 // CHECK-ERROR:        sqshrun b15, h10, #99
5392 // CHECK-ERROR:                          ^
5393 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5394 // CHECK-ERROR:        sqshrun h20, s14, #99
5395 // CHECK-ERROR:                          ^
5396 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5397 // CHECK-ERROR:        sqshrun s10, d15, #99
5398 // CHECK-ERROR:                          ^
5399
5400 //----------------------------------------------------------------------
5401 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5402 //----------------------------------------------------------------------
5403
5404         sqrshrun b17, h10, #99
5405         sqrshrun h10, s13, #99
5406         sqrshrun s22, d16, #99
5407
5408 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5409 // CHECK-ERROR:        sqrshrun b17, h10, #99
5410 // CHECK-ERROR:                           ^
5411 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5412 // CHECK-ERROR:        sqrshrun h10, s13, #99
5413 // CHECK-ERROR:                           ^
5414 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5415 // CHECK-ERROR:        sqrshrun s22, d16, #99
5416 // CHECK-ERROR:                           ^
5417
5418 //----------------------------------------------------------------------
5419 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5420 //----------------------------------------------------------------------
5421
5422     scvtf s22, s13, #0
5423     scvtf s22, s13, #33
5424     scvtf d21, d12, #65
5425     scvtf d21, s12, #31
5426         
5427 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5428 // CHECK-ERROR:        scvtf s22, s13, #0
5429 // CHECK-ERROR:                        ^
5430 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5431 // CHECK-ERROR:        scvtf s22, s13, #33
5432 // CHECK-ERROR:                        ^
5433 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5434 // CHECK-ERROR:        scvtf d21, d12, #65
5435 // CHECK-ERROR:                        ^
5436 // CHECK-ERROR: error: invalid operand for instruction
5437 // CHECK-ERROR:        scvtf d21, s12, #31
5438 // CHECK-ERROR:                   ^
5439
5440 //----------------------------------------------------------------------
5441 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5442 //----------------------------------------------------------------------
5443
5444     ucvtf s22, s13, #34
5445     ucvtf d21, d14, #65
5446     ucvtf d21, s14, #64
5447         
5448 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5449 // CHECK-ERROR:        ucvtf s22, s13, #34
5450 // CHECK-ERROR:                        ^
5451 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5452 // CHECK-ERROR:        ucvtf d21, d14, #65
5453 // CHECK-ERROR:                        ^
5454 // CHECK-ERROR: error: invalid operand for instruction
5455 // CHECK-ERROR:        ucvtf d21, s14, #64
5456 // CHECK-ERROR:                   ^
5457
5458 //------------------------------------------------------------------------------
5459 // Element reverse
5460 //------------------------------------------------------------------------------
5461          rev64 v6.2d, v8.2d
5462          rev32 v30.2s, v31.2s
5463          rev32 v30.4s, v31.4s
5464          rev32 v30.2d, v31.2d
5465          rev16 v21.4h, v1.4h
5466          rev16 v21.8h, v1.8h
5467          rev16 v21.2s, v1.2s
5468          rev16 v21.4s, v1.4s
5469          rev16 v21.2d, v1.2d
5470
5471 // CHECK-ERROR: error: invalid operand for instruction
5472 // CHECK-ERROR:         rev64 v6.2d, v8.2d
5473 // CHECK-ERROR:                  ^
5474 // CHECK-ERROR: error: invalid operand for instruction
5475 // CHECK-ERROR:         rev32 v30.2s, v31.2s
5476 // CHECK-ERROR:                   ^
5477 // CHECK-ERROR: error: invalid operand for instruction
5478 // CHECK-ERROR:         rev32 v30.4s, v31.4s
5479 // CHECK-ERROR:                   ^
5480 // CHECK-ERROR: error: invalid operand for instruction
5481 // CHECK-ERROR:         rev32 v30.2d, v31.2d
5482 // CHECK-ERROR:                   ^
5483 // CHECK-ERROR: error: invalid operand for instruction
5484 // CHECK-ERROR:         rev16 v21.4h, v1.4h
5485 // CHECK-ERROR:                   ^
5486 // CHECK-ERROR: error: invalid operand for instruction
5487 // CHECK-ERROR:         rev16 v21.8h, v1.8h
5488 // CHECK-ERROR:                   ^
5489 // CHECK-ERROR: error: invalid operand for instruction
5490 // CHECK-ERROR:         rev16 v21.2s, v1.2s
5491 // CHECK-ERROR:                   ^
5492 // CHECK-ERROR: error: invalid operand for instruction
5493 // CHECK-ERROR:         rev16 v21.4s, v1.4s
5494 // CHECK-ERROR:                   ^
5495 // CHECK-ERROR: error: invalid operand for instruction
5496 // CHECK-ERROR:         rev16 v21.2d, v1.2d
5497 // CHECK-ERROR:                   ^
5498
5499 //------------------------------------------------------------------------------
5500 // Signed integer pairwise add long
5501 //------------------------------------------------------------------------------
5502
5503          saddlp v3.8h, v21.8h
5504          saddlp v8.8b, v5.8b
5505          saddlp v9.8h, v1.4s
5506          saddlp v0.4s, v1.2d
5507
5508 // CHECK-ERROR: error: invalid operand for instruction
5509 // CHECK-ERROR:         saddlp v3.8h, v21.8h
5510 // CHECK-ERROR:                           ^
5511 // CHECK-ERROR: error: invalid operand for instruction
5512 // CHECK-ERROR:         saddlp v8.8b, v5.8b
5513 // CHECK-ERROR:                   ^
5514 // CHECK-ERROR: error: invalid operand for instruction
5515 // CHECK-ERROR:         saddlp v9.8h, v1.4s
5516 // CHECK-ERROR:                          ^
5517 // CHECK-ERROR: error: invalid operand for instruction
5518 // CHECK-ERROR:         saddlp v0.4s, v1.2d
5519 // CHECK-ERROR:                          ^
5520
5521 //------------------------------------------------------------------------------
5522 // Unsigned integer pairwise add long
5523 //------------------------------------------------------------------------------
5524
5525          uaddlp v3.8h, v21.8h
5526          uaddlp v8.8b, v5.8b
5527          uaddlp v9.8h, v1.4s
5528          uaddlp v0.4s, v1.2d
5529
5530 // CHECK-ERROR: error: invalid operand for instruction
5531 // CHECK-ERROR:         uaddlp v3.8h, v21.8h
5532 // CHECK-ERROR:                           ^
5533 // CHECK-ERROR: error: invalid operand for instruction
5534 // CHECK-ERROR:         uaddlp v8.8b, v5.8b
5535 // CHECK-ERROR:                   ^
5536 // CHECK-ERROR: error: invalid operand for instruction
5537 // CHECK-ERROR:         uaddlp v9.8h, v1.4s
5538 // CHECK-ERROR:                          ^
5539 // CHECK-ERROR: error: invalid operand for instruction
5540 // CHECK-ERROR:         uaddlp v0.4s, v1.2d
5541 // CHECK-ERROR:                          ^
5542
5543 //------------------------------------------------------------------------------
5544 // Signed integer pairwise add and accumulate long
5545 //------------------------------------------------------------------------------
5546
5547          sadalp v3.16b, v21.16b
5548          sadalp v8.4h, v5.4h
5549          sadalp v9.4s, v1.4s
5550          sadalp v0.4h, v1.2s
5551          sadalp v12.2d, v4.8h
5552
5553 // CHECK-ERROR: error: invalid operand for instruction
5554 // CHECK-ERROR:         sadalp v3.16b, v21.16b
5555 // CHECK-ERROR:                   ^
5556 // CHECK-ERROR: error: invalid operand for instruction
5557 // CHECK-ERROR:         sadalp v8.4h, v5.4h
5558 // CHECK-ERROR:                          ^
5559 // CHECK-ERROR: error: invalid operand for instruction
5560 // CHECK-ERROR:         sadalp v9.4s, v1.4s
5561 // CHECK-ERROR:                          ^
5562 // CHECK-ERROR: error: invalid operand for instruction
5563 // CHECK-ERROR:         sadalp v0.4h, v1.2s
5564 // CHECK-ERROR:                          ^
5565 // CHECK-ERROR: error: invalid operand for instruction
5566 // CHECK-ERROR:         sadalp v12.2d, v4.8h
5567 // CHECK-ERROR:                           ^
5568
5569 //------------------------------------------------------------------------------
5570 // Unsigned integer pairwise add and accumulate long
5571 //------------------------------------------------------------------------------
5572
5573          uadalp v3.16b, v21.16b
5574          uadalp v8.4h, v5.4h
5575          uadalp v9.4s, v1.4s
5576          uadalp v0.4h, v1.2s
5577          uadalp v12.2d, v4.8h
5578
5579 // CHECK-ERROR: error: invalid operand for instruction
5580 // CHECK-ERROR:         uadalp v3.16b, v21.16b
5581 // CHECK-ERROR:                   ^
5582 // CHECK-ERROR: error: invalid operand for instruction
5583 // CHECK-ERROR:         uadalp v8.4h, v5.4h
5584 // CHECK-ERROR:                          ^
5585 // CHECK-ERROR: error: invalid operand for instruction
5586 // CHECK-ERROR:         uadalp v9.4s, v1.4s
5587 // CHECK-ERROR:                          ^
5588 // CHECK-ERROR: error: invalid operand for instruction
5589 // CHECK-ERROR:         uadalp v0.4h, v1.2s
5590 // CHECK-ERROR:                          ^
5591 // CHECK-ERROR: error: invalid operand for instruction
5592 // CHECK-ERROR:         uadalp v12.2d, v4.8h
5593 // CHECK-ERROR:                           ^
5594
5595 //------------------------------------------------------------------------------
5596 // Signed integer saturating accumulate of unsigned value
5597 //------------------------------------------------------------------------------
5598
5599          suqadd v0.16b, v31.8b
5600          suqadd v1.8b, v9.8h
5601          suqadd v13.4h, v21.4s
5602          suqadd v4.2s, v0.2d
5603
5604 // CHECK-ERROR: error: invalid operand for instruction
5605 // CHECK-ERROR:         suqadd v0.16b, v31.8b
5606 // CHECK-ERROR:                        ^
5607 // CHECK-ERROR: error: invalid operand for instruction
5608 // CHECK-ERROR:         suqadd v1.8b, v9.8h
5609 // CHECK-ERROR:                       ^
5610 // CHECK-ERROR: error: invalid operand for instruction
5611 // CHECK-ERROR:         suqadd v13.4h, v21.4s
5612 // CHECK-ERROR:                        ^
5613 // CHECK-ERROR: error: invalid operand for instruction
5614 // CHECK-ERROR:         suqadd v4.2s, v0.2d
5615 // CHECK-ERROR:                       ^
5616
5617 //------------------------------------------------------------------------------
5618 // Unsigned integer saturating accumulate of signed value
5619 //------------------------------------------------------------------------------
5620
5621          usqadd v0.16b, v31.8b
5622          usqadd v2.8h, v4.4h
5623          usqadd v13.4h, v21.4s
5624          usqadd v4.2s, v0.2d
5625
5626 // CHECK-ERROR: error: invalid operand for instruction
5627 // CHECK-ERROR:         usqadd v0.16b, v31.8b
5628 // CHECK-ERROR:                        ^
5629 // CHECK-ERROR: error: invalid operand for instruction
5630 // CHECK-ERROR:         usqadd v2.8h, v4.4h
5631 // CHECK-ERROR:                       ^
5632 // CHECK-ERROR: error: invalid operand for instruction
5633 // CHECK-ERROR:         usqadd v13.4h, v21.4s
5634 // CHECK-ERROR:                        ^
5635 // CHECK-ERROR: error: invalid operand for instruction
5636 // CHECK-ERROR:         usqadd v4.2s, v0.2d
5637 // CHECK-ERROR:                       ^
5638
5639 //------------------------------------------------------------------------------
5640 // Integer saturating absolute
5641 //------------------------------------------------------------------------------
5642
5643          sqabs v0.16b, v31.8b
5644          sqabs v2.8h, v4.4h
5645          sqabs v6.4s, v8.2s
5646          sqabs v6.2d, v8.2s
5647
5648 // CHECK-ERROR: error: invalid operand for instruction
5649 // CHECK-ERROR:         sqabs v0.16b, v31.8b
5650 // CHECK-ERROR:                       ^
5651 // CHECK-ERROR: error: invalid operand for instruction
5652 // CHECK-ERROR:         sqabs v2.8h, v4.4h
5653 // CHECK-ERROR:                      ^
5654 // CHECK-ERROR: error: invalid operand for instruction
5655 // CHECK-ERROR:         sqabs v6.4s, v8.2s
5656 // CHECK-ERROR:                      ^
5657 // CHECK-ERROR: error: invalid operand for instruction
5658 // CHECK-ERROR:         sqabs v6.2d, v8.2s
5659 // CHECK-ERROR:                      ^
5660
5661 //------------------------------------------------------------------------------
5662 // Signed integer saturating negate
5663 //------------------------------------------------------------------------------
5664
5665          sqneg v0.16b, v31.8b
5666          sqneg v2.8h, v4.4h
5667          sqneg v6.4s, v8.2s
5668          sqneg v6.2d, v8.2s
5669
5670 // CHECK-ERROR: error: invalid operand for instruction
5671 // CHECK-ERROR:         sqneg v0.16b, v31.8b
5672 // CHECK-ERROR:                       ^
5673 // CHECK-ERROR: error: invalid operand for instruction
5674 // CHECK-ERROR:         sqneg v2.8h, v4.4h
5675 // CHECK-ERROR:                      ^
5676 // CHECK-ERROR: error: invalid operand for instruction
5677 // CHECK-ERROR:         sqneg v6.4s, v8.2s
5678 // CHECK-ERROR:                      ^
5679 // CHECK-ERROR: error: invalid operand for instruction
5680 // CHECK-ERROR:         sqneg v6.2d, v8.2s
5681 // CHECK-ERROR:                      ^
5682
5683 //------------------------------------------------------------------------------
5684 // Integer absolute
5685 //------------------------------------------------------------------------------
5686
5687          abs v0.16b, v31.8b
5688          abs v2.8h, v4.4h
5689          abs v6.4s, v8.2s
5690          abs v6.2d, v8.2s
5691
5692 // CHECK-ERROR: error: invalid operand for instruction
5693 // CHECK-ERROR:         abs v0.16b, v31.8b
5694 // CHECK-ERROR:                     ^
5695 // CHECK-ERROR: error: invalid operand for instruction
5696 // CHECK-ERROR:         abs v2.8h, v4.4h
5697 // CHECK-ERROR:                    ^
5698 // CHECK-ERROR: error: invalid operand for instruction
5699 // CHECK-ERROR:         abs v6.4s, v8.2s
5700 // CHECK-ERROR:                    ^
5701 // CHECK-ERROR: error: invalid operand for instruction
5702 // CHECK-ERROR:         abs v6.2d, v8.2s
5703 // CHECK-ERROR:                    ^
5704
5705 //------------------------------------------------------------------------------
5706 // Integer count leading sign bits
5707 //------------------------------------------------------------------------------
5708
5709          cls v0.2d, v31.2d
5710
5711 // CHECK-ERROR: error: invalid operand for instruction
5712 // CHECK-ERROR:         cls v0.2d, v31.2d
5713 // CHECK-ERROR:                ^
5714
5715 //------------------------------------------------------------------------------
5716 // Integer count leading zeros
5717 //------------------------------------------------------------------------------
5718
5719          clz v0.2d, v31.2d
5720
5721 // CHECK-ERROR: error: invalid operand for instruction
5722 // CHECK-ERROR:         clz v0.2d, v31.2d
5723 // CHECK-ERROR:                ^
5724
5725 //------------------------------------------------------------------------------
5726 // Population count
5727 //------------------------------------------------------------------------------
5728
5729          cnt v2.8h, v4.8h
5730          cnt v6.4s, v8.4s
5731          cnt v6.2d, v8.2d
5732          cnt v13.4h, v21.4h
5733          cnt v4.2s, v0.2s
5734
5735 // CHECK-ERROR: error: invalid operand for instruction
5736 // CHECK-ERROR:         cnt v2.8h, v4.8h
5737 // CHECK-ERROR:                ^
5738 // CHECK-ERROR: error: invalid operand for instruction
5739 // CHECK-ERROR:         cnt v6.4s, v8.4s
5740 // CHECK-ERROR:                ^
5741 // CHECK-ERROR: error: invalid operand for instruction
5742 // CHECK-ERROR:         cnt v6.2d, v8.2d
5743 // CHECK-ERROR:                ^
5744 // CHECK-ERROR: error: invalid operand for instruction
5745 // CHECK-ERROR:         cnt v13.4h, v21.4h
5746 // CHECK-ERROR:                 ^
5747 // CHECK-ERROR: error: invalid operand for instruction
5748 // CHECK-ERROR:         cnt v4.2s, v0.2s
5749 // CHECK-ERROR:                ^
5750
5751
5752 //------------------------------------------------------------------------------
5753 // Bitwise NOT
5754 //------------------------------------------------------------------------------
5755
5756          not v2.8h, v4.8h
5757          not v6.4s, v8.4s
5758          not v6.2d, v8.2d
5759          not v13.4h, v21.4h
5760          not v4.2s, v0.2s
5761
5762 // CHECK-ERROR: error: invalid operand for instruction
5763 // CHECK-ERROR:         not v2.8h, v4.8h
5764 // CHECK-ERROR:                ^
5765 // CHECK-ERROR: error: invalid operand for instruction
5766 // CHECK-ERROR:         not v6.4s, v8.4s
5767 // CHECK-ERROR:                ^
5768 // CHECK-ERROR: error: invalid operand for instruction
5769 // CHECK-ERROR:         not v6.2d, v8.2d
5770 // CHECK-ERROR:                ^
5771 // CHECK-ERROR: error: invalid operand for instruction
5772 // CHECK-ERROR:         not v13.4h, v21.4h
5773 // CHECK-ERROR:                 ^
5774 // CHECK-ERROR: error: invalid operand for instruction
5775 // CHECK-ERROR:         not v4.2s, v0.2s
5776 // CHECK-ERROR:                ^
5777
5778 //------------------------------------------------------------------------------
5779 // Bitwise reverse
5780 //------------------------------------------------------------------------------
5781
5782          rbit v2.8h, v4.8h
5783          rbit v6.4s, v8.4s
5784          rbit v6.2d, v8.2d
5785          rbit v13.4h, v21.4h
5786          rbit v4.2s, v0.2s
5787
5788 // CHECK-ERROR: error: invalid operand for instruction
5789 // CHECK-ERROR:         rbit v2.8h, v4.8h
5790 // CHECK-ERROR:                 ^
5791 // CHECK-ERROR: error: invalid operand for instruction
5792 // CHECK-ERROR:         rbit v6.4s, v8.4s
5793 // CHECK-ERROR:                 ^
5794 // CHECK-ERROR: error: invalid operand for instruction
5795 // CHECK-ERROR:         rbit v6.2d, v8.2d
5796 // CHECK-ERROR:                 ^
5797 // CHECK-ERROR: error: invalid operand for instruction
5798 // CHECK-ERROR:         rbit v13.4h, v21.4h
5799 // CHECK-ERROR:                  ^
5800 // CHECK-ERROR: error: invalid operand for instruction
5801 // CHECK-ERROR:         rbit v4.2s, v0.2s
5802 // CHECK-ERROR:                 ^
5803
5804 //------------------------------------------------------------------------------
5805 // Floating-point absolute
5806 //------------------------------------------------------------------------------
5807
5808          fabs v0.16b, v31.16b
5809          fabs v2.8h, v4.8h
5810          fabs v1.8b, v9.8b
5811          fabs v13.4h, v21.4h
5812
5813 // CHECK-ERROR: error: invalid operand for instruction
5814 // CHECK-ERROR:         fabs v0.16b, v31.16b
5815 // CHECK-ERROR:                 ^
5816 // CHECK-ERROR: error: invalid operand for instruction
5817 // CHECK-ERROR:         fabs v2.8h, v4.8h
5818 // CHECK-ERROR:                 ^
5819 // CHECK-ERROR: error: invalid operand for instruction
5820 // CHECK-ERROR:         fabs v1.8b, v9.8b
5821 // CHECK-ERROR:                 ^
5822 // CHECK-ERROR: error: invalid operand for instruction
5823 // CHECK-ERROR:         fabs v13.4h, v21.4h
5824 // CHECK-ERROR:                  ^
5825
5826 //------------------------------------------------------------------------------
5827 // Floating-point negate
5828 //------------------------------------------------------------------------------
5829
5830          fneg v0.16b, v31.16b
5831          fneg v2.8h, v4.8h
5832          fneg v1.8b, v9.8b
5833          fneg v13.4h, v21.4h
5834
5835 // CHECK-ERROR: error: invalid operand for instruction
5836 // CHECK-ERROR:         fneg v0.16b, v31.16b
5837 // CHECK-ERROR:                 ^
5838 // CHECK-ERROR: error: invalid operand for instruction
5839 // CHECK-ERROR:         fneg v2.8h, v4.8h
5840 // CHECK-ERROR:                 ^
5841 // CHECK-ERROR: error: invalid operand for instruction
5842 // CHECK-ERROR:         fneg v1.8b, v9.8b
5843 // CHECK-ERROR:                 ^
5844 // CHECK-ERROR: error: invalid operand for instruction
5845 // CHECK-ERROR:         fneg v13.4h, v21.4h
5846 // CHECK-ERROR:                  ^
5847
5848 //------------------------------------------------------------------------------
5849 // Integer extract and narrow
5850 //------------------------------------------------------------------------------
5851
5852          xtn v0.16b, v31.8h
5853          xtn v2.8h, v4.4s
5854          xtn v6.4s, v8.2d
5855          xtn2 v1.8b, v9.8h
5856          xtn2 v13.4h, v21.4s
5857          xtn2 v4.2s, v0.2d
5858
5859 // CHECK-ERROR: error: invalid operand for instruction
5860 // CHECK-ERROR:         xtn v0.16b, v31.8h
5861 // CHECK-ERROR:             ^
5862 // CHECK-ERROR: error: invalid operand for instruction
5863 // CHECK-ERROR:         xtn v2.8h, v4.4s
5864 // CHECK-ERROR:             ^
5865 // CHECK-ERROR: error: invalid operand for instruction
5866 // CHECK-ERROR:         xtn v6.4s, v8.2d
5867 // CHECK-ERROR:             ^
5868 // CHECK-ERROR: error: invalid operand for instruction
5869 // CHECK-ERROR:         xtn2 v1.8b, v9.8h
5870 // CHECK-ERROR:              ^
5871 // CHECK-ERROR: error: invalid operand for instruction
5872 // CHECK-ERROR:         xtn2 v13.4h, v21.4s
5873 // CHECK-ERROR:              ^
5874 // CHECK-ERROR: error: invalid operand for instruction
5875 // CHECK-ERROR:         xtn2 v4.2s, v0.2d
5876 // CHECK-ERROR:              ^
5877
5878 //------------------------------------------------------------------------------
5879 // Signed integer saturating extract and unsigned narrow
5880 //------------------------------------------------------------------------------
5881
5882          sqxtun v0.16b, v31.8h
5883          sqxtun v2.8h, v4.4s
5884          sqxtun v6.4s, v8.2d
5885          sqxtun2 v1.8b, v9.8h
5886          sqxtun2 v13.4h, v21.4s
5887          sqxtun2 v4.2s, v0.2d
5888
5889 // CHECK-ERROR: error: invalid operand for instruction
5890 // CHECK-ERROR:         sqxtun v0.16b, v31.8h
5891 // CHECK-ERROR:                ^
5892 // CHECK-ERROR: error: invalid operand for instruction
5893 // CHECK-ERROR:         sqxtun v2.8h, v4.4s
5894 // CHECK-ERROR:                ^
5895 // CHECK-ERROR: error: invalid operand for instruction
5896 // CHECK-ERROR:         sqxtun v6.4s, v8.2d
5897 // CHECK-ERROR:                ^
5898 // CHECK-ERROR: error: invalid operand for instruction
5899 // CHECK-ERROR:         sqxtun2 v1.8b, v9.8h
5900 // CHECK-ERROR:                 ^
5901 // CHECK-ERROR: error: invalid operand for instruction
5902 // CHECK-ERROR:         sqxtun2 v13.4h, v21.4s
5903 // CHECK-ERROR:                 ^
5904 // CHECK-ERROR: error: invalid operand for instruction
5905 // CHECK-ERROR:         sqxtun2 v4.2s, v0.2d
5906 // CHECK-ERROR:                 ^
5907
5908 //------------------------------------------------------------------------------
5909 // Signed integer saturating extract and narrow
5910 //------------------------------------------------------------------------------
5911
5912          sqxtn v0.16b, v31.8h
5913          sqxtn v2.8h, v4.4s
5914          sqxtn v6.4s, v8.2d
5915          sqxtn2 v1.8b, v9.8h
5916          sqxtn2 v13.4h, v21.4s
5917          sqxtn2 v4.2s, v0.2d
5918
5919 // CHECK-ERROR: error: invalid operand for instruction
5920 // CHECK-ERROR:         sqxtn v0.16b, v31.8h
5921 // CHECK-ERROR:               ^
5922 // CHECK-ERROR: error: invalid operand for instruction
5923 // CHECK-ERROR:         sqxtn v2.8h, v4.4s
5924 // CHECK-ERROR:               ^
5925 // CHECK-ERROR: error: invalid operand for instruction
5926 // CHECK-ERROR:         sqxtn v6.4s, v8.2d
5927 // CHECK-ERROR:               ^
5928 // CHECK-ERROR: error: invalid operand for instruction
5929 // CHECK-ERROR:         sqxtn2 v1.8b, v9.8h
5930 // CHECK-ERROR:                ^
5931 // CHECK-ERROR: error: invalid operand for instruction
5932 // CHECK-ERROR:         sqxtn2 v13.4h, v21.4s
5933 // CHECK-ERROR:                ^
5934 // CHECK-ERROR: error: invalid operand for instruction
5935 // CHECK-ERROR:         sqxtn2 v4.2s, v0.2d
5936 // CHECK-ERROR:                ^
5937
5938 //------------------------------------------------------------------------------
5939 // Unsigned integer saturating extract and narrow
5940 //------------------------------------------------------------------------------
5941
5942          uqxtn v0.16b, v31.8h
5943          uqxtn v2.8h, v4.4s
5944          uqxtn v6.4s, v8.2d
5945          uqxtn2 v1.8b, v9.8h
5946          uqxtn2 v13.4h, v21.4s
5947          uqxtn2 v4.2s, v0.2d
5948
5949 // CHECK-ERROR: error: invalid operand for instruction
5950 // CHECK-ERROR:         uqxtn v0.16b, v31.8h
5951 // CHECK-ERROR:               ^
5952 // CHECK-ERROR: error: invalid operand for instruction
5953 // CHECK-ERROR:         uqxtn v2.8h, v4.4s
5954 // CHECK-ERROR:               ^
5955 // CHECK-ERROR: error: invalid operand for instruction
5956 // CHECK-ERROR:         uqxtn v6.4s, v8.2d
5957 // CHECK-ERROR:               ^
5958 // CHECK-ERROR: error: invalid operand for instruction
5959 // CHECK-ERROR:         uqxtn2 v1.8b, v9.8h
5960 // CHECK-ERROR:                ^
5961 // CHECK-ERROR: error: invalid operand for instruction
5962 // CHECK-ERROR:         uqxtn2 v13.4h, v21.4s
5963 // CHECK-ERROR:                ^
5964 // CHECK-ERROR: error: invalid operand for instruction
5965 // CHECK-ERROR:         uqxtn2 v4.2s, v0.2d
5966 // CHECK-ERROR:                ^
5967
5968 //------------------------------------------------------------------------------
5969 // Integer shift left long
5970 //------------------------------------------------------------------------------
5971
5972          shll2 v2.8h, v4.16b, #7
5973          shll2 v6.4s, v8.8h, #15
5974          shll2 v6.2d, v8.4s, #31
5975          shll v2.8h, v4.16b, #8
5976          shll v6.4s, v8.8h, #16
5977          shll v6.2d, v8.4s, #32
5978          shll v2.8h, v4.8b, #8
5979          shll v6.4s, v8.4h, #16
5980          shll v6.2d, v8.2s, #32
5981          shll2 v2.8h, v4.8b, #5
5982          shll2 v6.4s, v8.4h, #14
5983          shll2 v6.2d, v8.2s, #1
5984
5985 // CHECK-ERROR: error: invalid operand for instruction
5986 // CHECK-ERROR:         shll2 v2.8h, v4.16b, #7
5987 // CHECK-ERROR:                              ^
5988 // CHECK-ERROR: error: invalid operand for instruction
5989 // CHECK-ERROR:         shll2 v6.4s, v8.8h, #15
5990 // CHECK-ERROR:                             ^
5991 // CHECK-ERROR: error: invalid operand for instruction
5992 // CHECK-ERROR:         shll2 v6.2d, v8.4s, #31
5993 // CHECK-ERROR:                             ^
5994 // CHECK-ERROR: error: invalid operand for instruction
5995 // CHECK-ERROR:         shll v2.8h, v4.16b, #8
5996 // CHECK-ERROR:                     ^
5997 // CHECK-ERROR: error: invalid operand for instruction
5998 // CHECK-ERROR:         shll v6.4s, v8.8h, #16
5999 // CHECK-ERROR:                     ^
6000 // CHECK-ERROR: error: invalid operand for instruction
6001 // CHECK-ERROR:         shll v6.2d, v8.4s, #32
6002 // CHECK-ERROR:                     ^
6003 // CHECK-ERROR: error: invalid operand for instruction
6004 // CHECK-ERROR:         shll2 v2.8h, v4.8b, #5
6005 // CHECK-ERROR:                      ^
6006 // CHECK-ERROR: error: invalid operand for instruction
6007 // CHECK-ERROR:         shll2 v6.4s, v8.4h, #14
6008 // CHECK-ERROR:                      ^
6009 // CHECK-ERROR: error: invalid operand for instruction
6010 // CHECK-ERROR:         shll2 v6.2d, v8.2s, #1
6011 // CHECK-ERROR:                      ^
6012
6013 //------------------------------------------------------------------------------
6014 // Floating-point convert downsize
6015 //------------------------------------------------------------------------------
6016
6017          fcvtn v2.8h, v4.4s
6018          fcvtn v6.4s, v8.2d
6019          fcvtn2 v13.4h, v21.4s
6020          fcvtn2 v4.2s, v0.2d
6021
6022 // CHECK-ERROR: error: invalid operand for instruction
6023 // CHECK-ERROR:         fcvtn v2.8h, v4.4s
6024 // CHECK-ERROR:               ^
6025 // CHECK-ERROR: error: invalid operand for instruction
6026 // CHECK-ERROR:         fcvtn v6.4s, v8.2d
6027 // CHECK-ERROR:               ^
6028 // CHECK-ERROR: error: invalid operand for instruction
6029 // CHECK-ERROR:         fcvtn2 v13.4h, v21.4s
6030 // CHECK-ERROR:                ^
6031 // CHECK-ERROR: error: invalid operand for instruction
6032 // CHECK-ERROR:         fcvtn2 v4.2s, v0.2d
6033 // CHECK-ERROR:                ^
6034
6035 //------------------------------------------------------------------------------
6036 // Floating-point convert downsize with inexact
6037 //------------------------------------------------------------------------------
6038
6039          fcvtxn v6.4s, v8.2d
6040          fcvtxn2 v4.2s, v0.2d
6041
6042 // CHECK-ERROR: error: invalid operand for instruction
6043 // CHECK-ERROR:         fcvtxn v6.4s, v8.2d
6044 // CHECK-ERROR:                ^
6045 // CHECK-ERROR: error: invalid operand for instruction
6046 // CHECK-ERROR:         fcvtxn2 v4.2s, v0.2d
6047 // CHECK-ERROR:                 ^
6048
6049 //------------------------------------------------------------------------------
6050 // Floating-point convert upsize
6051 //------------------------------------------------------------------------------
6052
6053          fcvtl2 v9.4s, v1.4h
6054          fcvtl2 v0.2d, v1.2s
6055          fcvtl v12.4s, v4.8h
6056          fcvtl v17.2d, v28.4s
6057
6058 // CHECK-ERROR: error: invalid operand for instruction
6059 // CHECK-ERROR:         fcvtl2 v9.4s, v1.4h
6060 // CHECK-ERROR:                       ^
6061 // CHECK-ERROR: error: invalid operand for instruction
6062 // CHECK-ERROR:         fcvtl2 v0.2d, v1.2s
6063 // CHECK-ERROR:                       ^
6064 // CHECK-ERROR: error: invalid operand for instruction
6065 // CHECK-ERROR:         fcvtl v12.4s, v4.8h
6066 // CHECK-ERROR:                       ^
6067 // CHECK-ERROR: error: invalid operand for instruction
6068 // CHECK-ERROR:         fcvtl v17.2d, v28.4s
6069 // CHECK-ERROR:                       ^
6070
6071 //------------------------------------------------------------------------------
6072 // Floating-point round to integral
6073 //------------------------------------------------------------------------------
6074
6075          frintn v0.16b, v31.16b
6076          frintn v2.8h, v4.8h
6077          frintn v1.8b, v9.8b
6078          frintn v13.4h, v21.4h
6079
6080          frinta v0.16b, v31.16b
6081          frinta v2.8h, v4.8h
6082          frinta v1.8b, v9.8b
6083          frinta v13.4h, v21.4h
6084
6085          frintp v0.16b, v31.16b
6086          frintp v2.8h, v4.8h
6087          frintp v1.8b, v9.8b
6088          frintp v13.4h, v21.4h
6089
6090          frintm v0.16b, v31.16b
6091          frintm v2.8h, v4.8h
6092          frintm v1.8b, v9.8b
6093          frintm v13.4h, v21.4h
6094
6095          frintx v0.16b, v31.16b
6096          frintx v2.8h, v4.8h
6097          frintx v1.8b, v9.8b
6098          frintx v13.4h, v21.4h
6099
6100          frintz v0.16b, v31.16b
6101          frintz v2.8h, v4.8h
6102          frintz v1.8b, v9.8b
6103          frintz v13.4h, v21.4h
6104
6105          frinti v0.16b, v31.16b
6106          frinti v2.8h, v4.8h
6107          frinti v1.8b, v9.8b
6108          frinti v13.4h, v21.4h
6109
6110          fcvtns v0.16b, v31.16b
6111          fcvtns v2.8h, v4.8h
6112          fcvtns v1.8b, v9.8b
6113          fcvtns v13.4h, v21.4h
6114
6115          fcvtnu v0.16b, v31.16b
6116          fcvtnu v2.8h, v4.8h
6117          fcvtnu v1.8b, v9.8b
6118          fcvtnu v13.4h, v21.4h
6119
6120          fcvtps v0.16b, v31.16b
6121          fcvtps v2.8h, v4.8h
6122          fcvtps v1.8b, v9.8b
6123          fcvtps v13.4h, v21.4h
6124
6125          fcvtpu v0.16b, v31.16b
6126          fcvtpu v2.8h, v4.8h
6127          fcvtpu v1.8b, v9.8b
6128          fcvtpu v13.4h, v21.4h
6129
6130          fcvtms v0.16b, v31.16b
6131          fcvtms v2.8h, v4.8h
6132          fcvtms v1.8b, v9.8b
6133          fcvtms v13.4h, v21.4h
6134
6135          fcvtmu v0.16b, v31.16b
6136          fcvtmu v2.8h, v4.8h
6137          fcvtmu v1.8b, v9.8b
6138          fcvtmu v13.4h, v21.4h
6139
6140          fcvtzs v0.16b, v31.16b
6141          fcvtzs v2.8h, v4.8h
6142          fcvtzs v1.8b, v9.8b
6143          fcvtzs v13.4h, v21.4h
6144
6145          fcvtzu v0.16b, v31.16b
6146          fcvtzu v2.8h, v4.8h
6147          fcvtzu v1.8b, v9.8b
6148          fcvtzu v13.4h, v21.4h
6149
6150          fcvtas v0.16b, v31.16b
6151          fcvtas v2.8h, v4.8h
6152          fcvtas v1.8b, v9.8b
6153          fcvtas v13.4h, v21.4h
6154
6155          fcvtau v0.16b, v31.16b
6156          fcvtau v2.8h, v4.8h
6157          fcvtau v1.8b, v9.8b
6158          fcvtau v13.4h, v21.4h
6159
6160          urecpe v0.16b, v31.16b
6161          urecpe v2.8h, v4.8h
6162          urecpe v1.8b, v9.8b
6163          urecpe v13.4h, v21.4h
6164          urecpe v1.2d, v9.2d
6165
6166          ursqrte v0.16b, v31.16b
6167          ursqrte v2.8h, v4.8h
6168          ursqrte v1.8b, v9.8b
6169          ursqrte v13.4h, v21.4h
6170          ursqrte v1.2d, v9.2d
6171
6172          scvtf v0.16b, v31.16b
6173          scvtf v2.8h, v4.8h
6174          scvtf v1.8b, v9.8b
6175          scvtf v13.4h, v21.4h
6176
6177          ucvtf v0.16b, v31.16b
6178          ucvtf v2.8h, v4.8h
6179          ucvtf v1.8b, v9.8b
6180          ucvtf v13.4h, v21.4h
6181
6182          frecpe v0.16b, v31.16b
6183          frecpe v2.8h, v4.8h
6184          frecpe v1.8b, v9.8b
6185          frecpe v13.4h, v21.4h
6186
6187          frsqrte v0.16b, v31.16b
6188          frsqrte v2.8h, v4.8h
6189          frsqrte v1.8b, v9.8b
6190          frsqrte v13.4h, v21.4h
6191
6192          fsqrt v0.16b, v31.16b
6193          fsqrt v2.8h, v4.8h
6194          fsqrt v1.8b, v9.8b
6195          fsqrt v13.4h, v21.4h
6196
6197 // CHECK-ERROR: error: invalid operand for instruction
6198 // CHECK-ERROR:         frintn v0.16b, v31.16b
6199 // CHECK-ERROR:                   ^
6200 // CHECK-ERROR: error: invalid operand for instruction
6201 // CHECK-ERROR:         frintn v2.8h, v4.8h
6202 // CHECK-ERROR:                   ^
6203 // CHECK-ERROR: error: invalid operand for instruction
6204 // CHECK-ERROR:         frintn v1.8b, v9.8b
6205 // CHECK-ERROR:                   ^
6206 // CHECK-ERROR: error: invalid operand for instruction
6207 // CHECK-ERROR:         frintn v13.4h, v21.4h
6208 // CHECK-ERROR:                    ^
6209 // CHECK-ERROR: error: invalid operand for instruction
6210 // CHECK-ERROR:         frinta v0.16b, v31.16b
6211 // CHECK-ERROR:                   ^
6212 // CHECK-ERROR: error: invalid operand for instruction
6213 // CHECK-ERROR:         frinta v2.8h, v4.8h
6214 // CHECK-ERROR:                   ^
6215 // CHECK-ERROR: error: invalid operand for instruction
6216 // CHECK-ERROR:         frinta v1.8b, v9.8b
6217 // CHECK-ERROR:                   ^
6218 // CHECK-ERROR: error: invalid operand for instruction
6219 // CHECK-ERROR:         frinta v13.4h, v21.4h
6220 // CHECK-ERROR:                    ^
6221 // CHECK-ERROR: error: invalid operand for instruction
6222 // CHECK-ERROR:         frintp v0.16b, v31.16b
6223 // CHECK-ERROR:                   ^
6224 // CHECK-ERROR: error: invalid operand for instruction
6225 // CHECK-ERROR:         frintp v2.8h, v4.8h
6226 // CHECK-ERROR:                   ^
6227 // CHECK-ERROR: error: invalid operand for instruction
6228 // CHECK-ERROR:         frintp v1.8b, v9.8b
6229 // CHECK-ERROR:                   ^
6230 // CHECK-ERROR: error: invalid operand for instruction
6231 // CHECK-ERROR:         frintp v13.4h, v21.4h
6232 // CHECK-ERROR:                    ^
6233 // CHECK-ERROR: error: invalid operand for instruction
6234 // CHECK-ERROR:         frintm v0.16b, v31.16b
6235 // CHECK-ERROR:                   ^
6236 // CHECK-ERROR: error: invalid operand for instruction
6237 // CHECK-ERROR:         frintm v2.8h, v4.8h
6238 // CHECK-ERROR:                   ^
6239 // CHECK-ERROR: error: invalid operand for instruction
6240 // CHECK-ERROR:         frintm v1.8b, v9.8b
6241 // CHECK-ERROR:                   ^
6242 // CHECK-ERROR: error: invalid operand for instruction
6243 // CHECK-ERROR:         frintm v13.4h, v21.4h
6244 // CHECK-ERROR:                    ^
6245 // CHECK-ERROR: error: invalid operand for instruction
6246 // CHECK-ERROR:         frintx v0.16b, v31.16b
6247 // CHECK-ERROR:                   ^
6248 // CHECK-ERROR: error: invalid operand for instruction
6249 // CHECK-ERROR:         frintx v2.8h, v4.8h
6250 // CHECK-ERROR:                   ^
6251 // CHECK-ERROR: error: invalid operand for instruction
6252 // CHECK-ERROR:         frintx v1.8b, v9.8b
6253 // CHECK-ERROR:                   ^
6254 // CHECK-ERROR: error: invalid operand for instruction
6255 // CHECK-ERROR:         frintx v13.4h, v21.4h
6256 // CHECK-ERROR:                    ^
6257 // CHECK-ERROR: error: invalid operand for instruction
6258 // CHECK-ERROR:         frintz v0.16b, v31.16b
6259 // CHECK-ERROR:                   ^
6260 // CHECK-ERROR: error: invalid operand for instruction
6261 // CHECK-ERROR:         frintz v2.8h, v4.8h
6262 // CHECK-ERROR:                   ^
6263 // CHECK-ERROR: error: invalid operand for instruction
6264 // CHECK-ERROR:         frintz v1.8b, v9.8b
6265 // CHECK-ERROR:                   ^
6266 // CHECK-ERROR: error: invalid operand for instruction
6267 // CHECK-ERROR:         frintz v13.4h, v21.4h
6268 // CHECK-ERROR:                    ^
6269 // CHECK-ERROR: error: invalid operand for instruction
6270 // CHECK-ERROR:         frinti v0.16b, v31.16b
6271 // CHECK-ERROR:                   ^
6272 // CHECK-ERROR: error: invalid operand for instruction
6273 // CHECK-ERROR:         frinti v2.8h, v4.8h
6274 // CHECK-ERROR:                   ^
6275 // CHECK-ERROR: error: invalid operand for instruction
6276 // CHECK-ERROR:         frinti v1.8b, v9.8b
6277 // CHECK-ERROR:                   ^
6278 // CHECK-ERROR: error: invalid operand for instruction
6279 // CHECK-ERROR:         frinti v13.4h, v21.4h
6280 // CHECK-ERROR:                    ^
6281 // CHECK-ERROR: error: invalid operand for instruction
6282 // CHECK-ERROR:         fcvtns v0.16b, v31.16b
6283 // CHECK-ERROR:                   ^
6284 // CHECK-ERROR: error: invalid operand for instruction
6285 // CHECK-ERROR:         fcvtns v2.8h, v4.8h
6286 // CHECK-ERROR:                   ^
6287 // CHECK-ERROR: error: invalid operand for instruction
6288 // CHECK-ERROR:         fcvtns v1.8b, v9.8b
6289 // CHECK-ERROR:                   ^
6290 // CHECK-ERROR: error: invalid operand for instruction
6291 // CHECK-ERROR:         fcvtns v13.4h, v21.4h
6292 // CHECK-ERROR:                    ^
6293 // CHECK-ERROR: error: invalid operand for instruction
6294 // CHECK-ERROR:         fcvtnu v0.16b, v31.16b
6295 // CHECK-ERROR:                   ^
6296 // CHECK-ERROR: error: invalid operand for instruction
6297 // CHECK-ERROR:         fcvtnu v2.8h, v4.8h
6298 // CHECK-ERROR:                   ^
6299 // CHECK-ERROR: error: invalid operand for instruction
6300 // CHECK-ERROR:         fcvtnu v1.8b, v9.8b
6301 // CHECK-ERROR:                   ^
6302 // CHECK-ERROR: error: invalid operand for instruction
6303 // CHECK-ERROR:         fcvtnu v13.4h, v21.4h
6304 // CHECK-ERROR:                    ^
6305 // CHECK-ERROR: error: invalid operand for instruction
6306 // CHECK-ERROR:         fcvtps v0.16b, v31.16b
6307 // CHECK-ERROR:                   ^
6308 // CHECK-ERROR: error: invalid operand for instruction
6309 // CHECK-ERROR:         fcvtps v2.8h, v4.8h
6310 // CHECK-ERROR:                   ^
6311 // CHECK-ERROR: error: invalid operand for instruction
6312 // CHECK-ERROR:         fcvtps v1.8b, v9.8b
6313 // CHECK-ERROR:                   ^
6314 // CHECK-ERROR: error: invalid operand for instruction
6315 // CHECK-ERROR:         fcvtps v13.4h, v21.4h
6316 // CHECK-ERROR:                    ^
6317 // CHECK-ERROR: error: invalid operand for instruction
6318 // CHECK-ERROR:         fcvtpu v0.16b, v31.16b
6319 // CHECK-ERROR:                   ^
6320 // CHECK-ERROR: error: invalid operand for instruction
6321 // CHECK-ERROR:         fcvtpu v2.8h, v4.8h
6322 // CHECK-ERROR:                   ^
6323 // CHECK-ERROR: error: invalid operand for instruction
6324 // CHECK-ERROR:         fcvtpu v1.8b, v9.8b
6325 // CHECK-ERROR:                   ^
6326 // CHECK-ERROR: error: invalid operand for instruction
6327 // CHECK-ERROR:         fcvtpu v13.4h, v21.4h
6328 // CHECK-ERROR:                    ^
6329 // CHECK-ERROR: error: invalid operand for instruction
6330 // CHECK-ERROR:         fcvtms v0.16b, v31.16b
6331 // CHECK-ERROR:                   ^
6332 // CHECK-ERROR: error: invalid operand for instruction
6333 // CHECK-ERROR:         fcvtms v2.8h, v4.8h
6334 // CHECK-ERROR:                   ^
6335 // CHECK-ERROR: error: invalid operand for instruction
6336 // CHECK-ERROR:         fcvtms v1.8b, v9.8b
6337 // CHECK-ERROR:                   ^
6338 // CHECK-ERROR: error: invalid operand for instruction
6339 // CHECK-ERROR:         fcvtms v13.4h, v21.4h
6340 // CHECK-ERROR:                    ^
6341 // CHECK-ERROR: error: invalid operand for instruction
6342 // CHECK-ERROR:         fcvtmu v0.16b, v31.16b
6343 // CHECK-ERROR:                   ^
6344 // CHECK-ERROR: error: invalid operand for instruction
6345 // CHECK-ERROR:         fcvtmu v2.8h, v4.8h
6346 // CHECK-ERROR:                   ^
6347 // CHECK-ERROR: error: invalid operand for instruction
6348 // CHECK-ERROR:         fcvtmu v1.8b, v9.8b
6349 // CHECK-ERROR:                   ^
6350 // CHECK-ERROR: error: invalid operand for instruction
6351 // CHECK-ERROR:         fcvtmu v13.4h, v21.4h
6352 // CHECK-ERROR:                    ^
6353 // CHECK-ERROR: error: invalid operand for instruction
6354 // CHECK-ERROR:         fcvtzs v0.16b, v31.16b
6355 // CHECK-ERROR:                   ^
6356 // CHECK-ERROR: error: invalid operand for instruction
6357 // CHECK-ERROR:         fcvtzs v2.8h, v4.8h
6358 // CHECK-ERROR:                   ^
6359 // CHECK-ERROR: error: invalid operand for instruction
6360 // CHECK-ERROR:         fcvtzs v1.8b, v9.8b
6361 // CHECK-ERROR:                   ^
6362 // CHECK-ERROR: error: invalid operand for instruction
6363 // CHECK-ERROR:         fcvtzs v13.4h, v21.4h
6364 // CHECK-ERROR:                    ^
6365 // CHECK-ERROR: error: invalid operand for instruction
6366 // CHECK-ERROR:         fcvtzu v0.16b, v31.16b
6367 // CHECK-ERROR:                   ^
6368 // CHECK-ERROR: error: invalid operand for instruction
6369 // CHECK-ERROR:         fcvtzu v2.8h, v4.8h
6370 // CHECK-ERROR:                   ^
6371 // CHECK-ERROR: error: invalid operand for instruction
6372 // CHECK-ERROR:         fcvtzu v1.8b, v9.8b
6373 // CHECK-ERROR:                   ^
6374 // CHECK-ERROR: error: invalid operand for instruction
6375 // CHECK-ERROR:         fcvtzu v13.4h, v21.4h
6376 // CHECK-ERROR:                    ^
6377 // CHECK-ERROR: error: invalid operand for instruction
6378 // CHECK-ERROR:         fcvtas v0.16b, v31.16b
6379 // CHECK-ERROR:                   ^
6380 // CHECK-ERROR: error: invalid operand for instruction
6381 // CHECK-ERROR:         fcvtas v2.8h, v4.8h
6382 // CHECK-ERROR:                   ^
6383 // CHECK-ERROR: error: invalid operand for instruction
6384 // CHECK-ERROR:         fcvtas v1.8b, v9.8b
6385 // CHECK-ERROR:                   ^
6386 // CHECK-ERROR: error: invalid operand for instruction
6387 // CHECK-ERROR:         fcvtas v13.4h, v21.4h
6388 // CHECK-ERROR:                    ^
6389 // CHECK-ERROR: error: invalid operand for instruction
6390 // CHECK-ERROR:         fcvtau v0.16b, v31.16b
6391 // CHECK-ERROR:                   ^
6392 // CHECK-ERROR: error: invalid operand for instruction
6393 // CHECK-ERROR:         fcvtau v2.8h, v4.8h
6394 // CHECK-ERROR:                   ^
6395 // CHECK-ERROR: error: invalid operand for instruction
6396 // CHECK-ERROR:         fcvtau v1.8b, v9.8b
6397 // CHECK-ERROR:                   ^
6398 // CHECK-ERROR: error: invalid operand for instruction
6399 // CHECK-ERROR:         fcvtau v13.4h, v21.4h
6400 // CHECK-ERROR:                    ^
6401 // CHECK-ERROR: error: invalid operand for instruction
6402 // CHECK-ERROR:         urecpe v0.16b, v31.16b
6403 // CHECK-ERROR:                   ^
6404 // CHECK-ERROR: error: invalid operand for instruction
6405 // CHECK-ERROR:         urecpe v2.8h, v4.8h
6406 // CHECK-ERROR:                   ^
6407 // CHECK-ERROR: error: invalid operand for instruction
6408 // CHECK-ERROR:         urecpe v1.8b, v9.8b
6409 // CHECK-ERROR:                   ^
6410 // CHECK-ERROR: error: invalid operand for instruction
6411 // CHECK-ERROR:         urecpe v13.4h, v21.4h
6412 // CHECK-ERROR:                    ^
6413 // CHECK-ERROR: error: invalid operand for instruction
6414 // CHECK-ERROR:         urecpe v1.2d, v9.2d
6415 // CHECK-ERROR:                   ^
6416 // CHECK-ERROR: error: invalid operand for instruction
6417 // CHECK-ERROR:         ursqrte v0.16b, v31.16b
6418 // CHECK-ERROR:                    ^
6419 // CHECK-ERROR: error: invalid operand for instruction
6420 // CHECK-ERROR:         ursqrte v2.8h, v4.8h
6421 // CHECK-ERROR:                    ^
6422 // CHECK-ERROR: error: invalid operand for instruction
6423 // CHECK-ERROR:         ursqrte v1.8b, v9.8b
6424 // CHECK-ERROR:                    ^
6425 // CHECK-ERROR: error: invalid operand for instruction
6426 // CHECK-ERROR:         ursqrte v13.4h, v21.4h
6427 // CHECK-ERROR:                     ^
6428 // CHECK-ERROR: error: invalid operand for instruction
6429 // CHECK-ERROR:         ursqrte v1.2d, v9.2d
6430 // CHECK-ERROR:                    ^
6431 // CHECK-ERROR: error: invalid operand for instruction
6432 // CHECK-ERROR:         scvtf v0.16b, v31.16b
6433 // CHECK-ERROR:                  ^
6434 // CHECK-ERROR: error: invalid operand for instruction
6435 // CHECK-ERROR:         scvtf v2.8h, v4.8h
6436 // CHECK-ERROR:                  ^
6437 // CHECK-ERROR: error: invalid operand for instruction
6438 // CHECK-ERROR:         scvtf v1.8b, v9.8b
6439 // CHECK-ERROR:                  ^
6440 // CHECK-ERROR: error: invalid operand for instruction
6441 // CHECK-ERROR:         scvtf v13.4h, v21.4h
6442 // CHECK-ERROR:                   ^
6443 // CHECK-ERROR: error: invalid operand for instruction
6444 // CHECK-ERROR:         ucvtf v0.16b, v31.16b
6445 // CHECK-ERROR:                  ^
6446 // CHECK-ERROR: error: invalid operand for instruction
6447 // CHECK-ERROR:         ucvtf v2.8h, v4.8h
6448 // CHECK-ERROR:                  ^
6449 // CHECK-ERROR: error: invalid operand for instruction
6450 // CHECK-ERROR:         ucvtf v1.8b, v9.8b
6451 // CHECK-ERROR:                  ^
6452 // CHECK-ERROR: error: invalid operand for instruction
6453 // CHECK-ERROR:         ucvtf v13.4h, v21.4h
6454 // CHECK-ERROR:                   ^
6455 // CHECK-ERROR: error: invalid operand for instruction
6456 // CHECK-ERROR:         frecpe v0.16b, v31.16b
6457 // CHECK-ERROR:                   ^
6458 // CHECK-ERROR: error: invalid operand for instruction
6459 // CHECK-ERROR:         frecpe v2.8h, v4.8h
6460 // CHECK-ERROR:                   ^
6461 // CHECK-ERROR: error: invalid operand for instruction
6462 // CHECK-ERROR:         frecpe v1.8b, v9.8b
6463 // CHECK-ERROR:                   ^
6464 // CHECK-ERROR: error: invalid operand for instruction
6465 // CHECK-ERROR:         frecpe v13.4h, v21.4h
6466 // CHECK-ERROR:                    ^
6467 // CHECK-ERROR: error: invalid operand for instruction
6468 // CHECK-ERROR:         frsqrte v0.16b, v31.16b
6469 // CHECK-ERROR:                    ^
6470 // CHECK-ERROR: error: invalid operand for instruction
6471 // CHECK-ERROR:         frsqrte v2.8h, v4.8h
6472 // CHECK-ERROR:                    ^
6473 // CHECK-ERROR: error: invalid operand for instruction
6474 // CHECK-ERROR:         frsqrte v1.8b, v9.8b
6475 // CHECK-ERROR:                    ^
6476 // CHECK-ERROR: error: invalid operand for instruction
6477 // CHECK-ERROR:         frsqrte v13.4h, v21.4h
6478 // CHECK-ERROR:                     ^
6479 // CHECK-ERROR: error: invalid operand for instruction
6480 // CHECK-ERROR:         fsqrt v0.16b, v31.16b
6481 // CHECK-ERROR:                  ^
6482 // CHECK-ERROR: error: invalid operand for instruction
6483 // CHECK-ERROR:         fsqrt v2.8h, v4.8h
6484 // CHECK-ERROR:                  ^
6485 // CHECK-ERROR: error: invalid operand for instruction
6486 // CHECK-ERROR:         fsqrt v1.8b, v9.8b
6487 // CHECK-ERROR:                  ^
6488 // CHECK-ERROR: error: invalid operand for instruction
6489 // CHECK-ERROR:         fsqrt v13.4h, v21.4h
6490 // CHECK-ERROR:                   ^
6491
6492 //----------------------------------------------------------------------
6493 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
6494 //----------------------------------------------------------------------
6495
6496     fcvtzs s21, s12, #0
6497     fcvtzs d21, d12, #65
6498     fcvtzs s21, d12, #1
6499
6500 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6501 // CHECK-ERROR:        fcvtzs s21, s12, #0
6502 // CHECK-ERROR:                         ^
6503 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6504 // CHECK-ERROR:        fcvtzs d21, d12, #65
6505 // CHECK-ERROR:                         ^
6506 // CHECK-ERROR: error: invalid operand for instruction
6507 // CHECK-ERROR:        fcvtzs s21, d12, #1
6508 // CHECK-ERROR:                    ^
6509
6510 //----------------------------------------------------------------------
6511 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
6512 //----------------------------------------------------------------------
6513
6514     fcvtzu s21, s12, #33
6515     fcvtzu d21, d12, #0
6516     fcvtzu s21, d12, #1
6517
6518 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6519 // CHECK-ERROR:        fcvtzu s21, s12, #33
6520 // CHECK-ERROR:                         ^
6521 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6522 // CHECK-ERROR:        fcvtzu d21, d12, #0
6523 // CHECK-ERROR:                         ^
6524 // CHECK-ERROR: error: invalid operand for instruction
6525 // CHECK-ERROR:        fcvtzu s21, d12, #1
6526 // CHECK-ERROR:                    ^
6527
6528 //----------------------------------------------------------------------
6529 // Scalar Unsigned Saturating Extract Narrow
6530 //----------------------------------------------------------------------
6531
6532         aese v0.8h, v1.8h
6533         aese v0.4s, v1.4s
6534         aese v0.2d, v1.2d
6535         aesd v0.8h, v1.8h
6536         aesmc v0.8h, v1.8h
6537         aesimc v0.8h, v1.8h
6538
6539 // CHECK:  error: invalid operand for instruction
6540 // CHECK:         aese v0.8h, v1.8h
6541 // CHECK:                 ^
6542 // CHECK:  error: invalid operand for instruction
6543 // CHECK:         aese v0.4s, v1.4s
6544 // CHECK:                 ^
6545 // CHECK:  error: invalid operand for instruction
6546 // CHECK:         aese v0.2d, v1.2d
6547 // CHECK:                 ^
6548 // CHECK:  error: invalid operand for instruction
6549 // CHECK:         aesd v0.8h, v1.8h
6550 // CHECK:                 ^
6551 // CHECK:  error: invalid operand for instruction
6552 // CHECK:         aesmc v0.8h, v1.8h
6553 // CHECK:                  ^
6554 // CHECK:  error: invalid operand for instruction
6555 // CHECK:         aesimc v0.8h, v1.8h
6556 // CHECK:                   ^
6557
6558         sha1h b0, b1
6559         sha1h h0, h1
6560         sha1h d0, d1
6561         sha1h q0, q1
6562         sha1su1 v0.16b, v1.16b
6563         sha1su1 v0.8h, v1.8h
6564         sha1su1 v0.2d, v1.2d
6565         sha256su0 v0.16b, v1.16b
6566
6567 // CHECK:  error: invalid operand for instruction
6568 // CHECK:         sha1h b0, b1
6569 // CHECK:               ^
6570 // CHECK:  error: invalid operand for instruction
6571 // CHECK:         sha1h h0, h1
6572 // CHECK:               ^
6573 // CHECK:  error: invalid operand for instruction
6574 // CHECK:         sha1h d0, d1
6575 // CHECK:               ^
6576 // CHECK:  error: invalid operand for instruction
6577 // CHECK:         sha1h q0, q1
6578 // CHECK:               ^
6579 // CHECK:  error: invalid operand for instruction
6580 // CHECK:         sha1su1 v0.16b, v1.16b
6581 // CHECK:                    ^
6582 // CHECK:  error: invalid operand for instruction
6583 // CHECK:         sha1su1 v0.8h, v1.8h
6584 // CHECK:                    ^
6585 // CHECK:  error: invalid operand for instruction
6586 // CHECK:         sha1su1 v0.2d, v1.2d
6587 // CHECK:                    ^
6588 // CHECK:  error: invalid operand for instruction
6589 // CHECK:         sha256su0 v0.16b, v1.16b
6590 // CHECK:                      ^
6591
6592         sha1c q0, q1, v2.4s
6593         sha1p q0, q1, v2.4s
6594         sha1m q0, q1, v2.4s
6595         sha1su0 v0.16b, v1.16b, v2.16b
6596         sha1su0 v0.8h, v1.8h, v2.8h
6597         sha1su0 v0.2d, v1.2d, v2.2d
6598         sha256h q0, q1, q2
6599         sha256h v0.4s, v1.4s, v2.4s
6600         sha256h2 q0, q1, q2
6601         sha256su1 v0.16b, v1.16b, v2.16b
6602
6603 // CHECK:  error: invalid operand for instruction
6604 // CHECK:         sha1c q0, q1, v2.4s
6605 // CHECK:                   ^
6606 // CHECK:  error: invalid operand for instruction
6607 // CHECK:         sha1p q0, q1, v2.4s
6608 // CHECK:                   ^
6609 // CHECK:  error: invalid operand for instruction
6610 // CHECK:         sha1m q0, q1, v2.4s
6611 // CHECK:                   ^
6612 // CHECK:  error: invalid operand for instruction
6613 // CHECK:         sha1su0 v0.16b, v1.16b, v2.16b
6614 // CHECK:                    ^
6615 // CHECK:  error: invalid operand for instruction
6616 // CHECK:         sha1su0 v0.8h, v1.8h, v2.8h
6617 // CHECK:                    ^
6618 // CHECK:  error: invalid operand for instruction
6619 // CHECK:         sha1su0 v0.2d, v1.2d, v2.2d
6620 // CHECK:                    ^
6621 // CHECK:  error: too few operands for instruction
6622 // CHECK:         sha256h q0, q1, q2
6623 // CHECK:         ^
6624 // CHECK:  error: invalid operand for instruction
6625 // CHECK:         sha256h v0.4s, v1.4s, v2.4s
6626 // CHECK:                    ^
6627 // CHECK:  error: too few operands for instruction
6628 // CHECK:         sha256h2 q0, q1, q2
6629 // CHECK:         ^
6630 // CHECK:  error: invalid operand for instruction
6631 // CHECK:         sha256su1 v0.16b, v1.16b, v2.16b
6632 // CHECK:                      ^
6633
6634 //----------------------------------------------------------------------
6635 // Bitwise extract
6636 //----------------------------------------------------------------------
6637
6638         ext v0.8b, v1.8b, v2.4h, #0x3
6639         ext v0.4h, v1.4h, v2.4h, #0x3
6640         ext v0.2s, v1.2s, v2.2s, #0x1
6641         ext v0.1d, v1.1d, v2.1d, #0x0
6642
6643 // CHECK-ERROR: error: invalid operand for instruction
6644 // CHECK-ERROR:         ext v0.8b, v1.8b, v2.4h, #0x3
6645 // CHECK-ERROR:                              ^
6646 // CHECK-ERROR: error: invalid operand for instruction
6647 // CHECK-ERROR:         ext v0.4h, v1.4h, v2.4h, #0x3
6648 // CHECK-ERROR:                ^
6649 // CHECK-ERROR: error: invalid operand for instruction
6650 // CHECK-ERROR:         ext v0.2s, v1.2s, v2.2s, #0x1
6651 // CHECK-ERROR:                ^
6652 // CHECK-ERROR: error: invalid operand for instruction
6653 // CHECK-ERROR:         ext v0.1d, v1.1d, v2.1d, #0x0
6654 // CHECK-ERROR:                ^
6655
6656         ext v0.16b, v1.16b, v2.8h, #0x3
6657         ext v0.8h, v1.8h, v2.8h, #0x3
6658         ext v0.4s, v1.4s, v2.4s, #0x1
6659         ext v0.2d, v1.2d, v2.2d, #0x0
6660
6661 // CHECK-ERROR: error: invalid operand for instruction
6662 // CHECK-ERROR:         ext v0.16b, v1.16b, v2.8h, #0x3
6663 // CHECK-ERROR:                                ^
6664 // CHECK-ERROR: error: invalid operand for instruction
6665 // CHECK-ERROR:         ext v0.8h, v1.8h, v2.8h, #0x3
6666 // CHECK-ERROR:                ^
6667 // CHECK-ERROR: error: invalid operand for instruction
6668 // CHECK-ERROR:         ext v0.4s, v1.4s, v2.4s, #0x1
6669 // CHECK-ERROR:                ^
6670 // CHECK-ERROR: error: invalid operand for instruction
6671 // CHECK-ERROR:         ext v0.2d, v1.2d, v2.2d, #0x0
6672 // CHECK-ERROR:                ^
6673
6674
6675 //----------------------------------------------------------------------
6676 // Permutation with 3 vectors
6677 //----------------------------------------------------------------------
6678
6679         uzp1 v0.16b, v1.8b, v2.8b
6680         uzp1 v0.8b, v1.4b, v2.4b
6681         uzp1 v0.8h, v1.4h, v2.4h
6682         uzp1 v0.4h, v1.2h, v2.2h
6683         uzp1 v0.4s, v1.2s, v2.2s
6684         uzp1 v0.2s, v1.1s, v2.1s
6685         uzp1 v0.2d, v1.1d, v2.1d
6686         uzp1 v0.1d, v1.1d, v2.1d
6687
6688 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6689 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
6690 // CHECK-ERROR                      ^
6691 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6692 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
6693 // CHECK-ERROR                     ^
6694 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6695 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
6696 // CHECK-ERROR                     ^
6697 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6698 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
6699 // CHECK-ERROR                     ^
6700 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6701 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
6702 // CHECK-ERROR                     ^
6703 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6704 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
6705 // CHECK-ERROR                     ^
6706 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6707 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
6708 // CHECK-ERROR                     ^
6709 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6710 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
6711 // CHECK-ERROR                 ^
6712
6713         uzp2 v0.16b, v1.8b, v2.8b
6714         uzp2 v0.8b, v1.4b, v2.4b
6715         uzp2 v0.8h, v1.4h, v2.4h
6716         uzp2 v0.4h, v1.2h, v2.2h
6717         uzp2 v0.4s, v1.2s, v2.2s
6718         uzp2 v0.2s, v1.1s, v2.1s
6719         uzp2 v0.2d, v1.1d, v2.1d
6720         uzp2 v0.1d, v1.1d, v2.1d
6721
6722 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6723 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
6724 // CHECK-ERROR                      ^
6725 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6726 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
6727 // CHECK-ERROR                     ^
6728 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6729 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
6730 // CHECK-ERROR                     ^
6731 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6732 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
6733 // CHECK-ERROR                     ^
6734 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6735 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
6736 // CHECK-ERROR                     ^
6737 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6738 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
6739 // CHECK-ERROR                     ^
6740 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6741 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
6742 // CHECK-ERROR                     ^
6743 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6744 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
6745 // CHECK-ERROR                 ^
6746
6747         zip1 v0.16b, v1.8b, v2.8b
6748         zip1 v0.8b, v1.4b, v2.4b
6749         zip1 v0.8h, v1.4h, v2.4h
6750         zip1 v0.4h, v1.2h, v2.2h
6751         zip1 v0.4s, v1.2s, v2.2s
6752         zip1 v0.2s, v1.1s, v2.1s
6753         zip1 v0.2d, v1.1d, v2.1d
6754         zip1 v0.1d, v1.1d, v2.1d
6755
6756 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6757 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
6758 // CHECK-ERROR                      ^
6759 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6760 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
6761 // CHECK-ERROR                     ^
6762 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6763 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
6764 // CHECK-ERROR                     ^
6765 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6766 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
6767 // CHECK-ERROR                     ^
6768 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6769 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
6770 // CHECK-ERROR                     ^
6771 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6772 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
6773 // CHECK-ERROR                     ^
6774 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6775 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
6776 // CHECK-ERROR                     ^
6777 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6778 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
6779 // CHECK-ERROR                 ^
6780
6781         zip2 v0.16b, v1.8b, v2.8b
6782         zip2 v0.8b, v1.4b, v2.4b
6783         zip2 v0.8h, v1.4h, v2.4h
6784         zip2 v0.4h, v1.2h, v2.2h
6785         zip2 v0.4s, v1.2s, v2.2s
6786         zip2 v0.2s, v1.1s, v2.1s
6787         zip2 v0.2d, v1.1d, v2.1d
6788         zip2 v0.1d, v1.1d, v2.1d
6789
6790 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6791 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
6792 // CHECK-ERROR                      ^
6793 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6794 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
6795 // CHECK-ERROR                     ^
6796 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6797 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
6798 // CHECK-ERROR                     ^
6799 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6800 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
6801 // CHECK-ERROR                     ^
6802 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6803 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
6804 // CHECK-ERROR                     ^
6805 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6806 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
6807 // CHECK-ERROR                     ^
6808 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6809 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
6810 // CHECK-ERROR                     ^
6811 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6812 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
6813 // CHECK-ERROR                 ^
6814
6815         trn1 v0.16b, v1.8b, v2.8b
6816         trn1 v0.8b, v1.4b, v2.4b
6817         trn1 v0.8h, v1.4h, v2.4h
6818         trn1 v0.4h, v1.2h, v2.2h
6819         trn1 v0.4s, v1.2s, v2.2s
6820         trn1 v0.2s, v1.1s, v2.1s
6821         trn1 v0.2d, v1.1d, v2.1d
6822         trn1 v0.1d, v1.1d, v2.1d
6823
6824 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6825 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
6826 // CHECK-ERROR                      ^
6827 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6828 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
6829 // CHECK-ERROR                     ^
6830 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6831 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
6832 // CHECK-ERROR                     ^
6833 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6834 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
6835 // CHECK-ERROR                     ^
6836 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6837 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
6838 // CHECK-ERROR                     ^
6839 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6840 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
6841 // CHECK-ERROR                     ^
6842 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6843 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
6844 // CHECK-ERROR                     ^
6845 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6846 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
6847 // CHECK-ERROR                 ^
6848
6849         trn2 v0.16b, v1.8b, v2.8b
6850         trn2 v0.8b, v1.4b, v2.4b
6851         trn2 v0.8h, v1.4h, v2.4h
6852         trn2 v0.4h, v1.2h, v2.2h
6853         trn2 v0.4s, v1.2s, v2.2s
6854         trn2 v0.2s, v1.1s, v2.1s
6855         trn2 v0.2d, v1.1d, v2.1d
6856         trn2 v0.1d, v1.1d, v2.1d
6857
6858 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6859 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
6860 // CHECK-ERROR                      ^
6861 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6862 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
6863 // CHECK-ERROR                     ^
6864 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6865 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
6866 // CHECK-ERROR                     ^
6867 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6868 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
6869 // CHECK-ERROR                     ^
6870 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6871 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
6872 // CHECK-ERROR                     ^
6873 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6874 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
6875 // CHECK-ERROR                     ^
6876 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6877 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
6878 // CHECK-ERROR                     ^
6879 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6880 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
6881 // CHECK-ERROR                 ^
6882
6883 //----------------------------------------------------------------------
6884 // Permutation with 3 vectors
6885 //----------------------------------------------------------------------
6886
6887         uzp1 v0.16b, v1.8b, v2.8b
6888         uzp1 v0.8b, v1.4b, v2.4b
6889         uzp1 v0.8h, v1.4h, v2.4h
6890         uzp1 v0.4h, v1.2h, v2.2h
6891         uzp1 v0.4s, v1.2s, v2.2s
6892         uzp1 v0.2s, v1.1s, v2.1s
6893         uzp1 v0.2d, v1.1d, v2.1d
6894         uzp1 v0.1d, v1.1d, v2.1d
6895
6896 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6897 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
6898 // CHECK-ERROR                      ^
6899 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6900 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
6901 // CHECK-ERROR                     ^
6902 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6903 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
6904 // CHECK-ERROR                     ^
6905 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6906 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
6907 // CHECK-ERROR                     ^
6908 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6909 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
6910 // CHECK-ERROR                     ^
6911 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6912 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
6913 // CHECK-ERROR                     ^
6914 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6915 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
6916 // CHECK-ERROR                     ^
6917 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6918 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
6919 // CHECK-ERROR                 ^
6920
6921         uzp2 v0.16b, v1.8b, v2.8b
6922         uzp2 v0.8b, v1.4b, v2.4b
6923         uzp2 v0.8h, v1.4h, v2.4h
6924         uzp2 v0.4h, v1.2h, v2.2h
6925         uzp2 v0.4s, v1.2s, v2.2s
6926         uzp2 v0.2s, v1.1s, v2.1s
6927         uzp2 v0.2d, v1.1d, v2.1d
6928         uzp2 v0.1d, v1.1d, v2.1d
6929
6930 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6931 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
6932 // CHECK-ERROR                      ^
6933 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6934 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
6935 // CHECK-ERROR                     ^
6936 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6937 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
6938 // CHECK-ERROR                     ^
6939 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6940 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
6941 // CHECK-ERROR                     ^
6942 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6943 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
6944 // CHECK-ERROR                     ^
6945 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6946 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
6947 // CHECK-ERROR                     ^
6948 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6949 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
6950 // CHECK-ERROR                     ^
6951 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6952 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
6953 // CHECK-ERROR                 ^
6954
6955         zip1 v0.16b, v1.8b, v2.8b
6956         zip1 v0.8b, v1.4b, v2.4b
6957         zip1 v0.8h, v1.4h, v2.4h
6958         zip1 v0.4h, v1.2h, v2.2h
6959         zip1 v0.4s, v1.2s, v2.2s
6960         zip1 v0.2s, v1.1s, v2.1s
6961         zip1 v0.2d, v1.1d, v2.1d
6962         zip1 v0.1d, v1.1d, v2.1d
6963
6964 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6965 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
6966 // CHECK-ERROR                      ^
6967 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6968 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
6969 // CHECK-ERROR                     ^
6970 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6971 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
6972 // CHECK-ERROR                     ^
6973 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6974 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
6975 // CHECK-ERROR                     ^
6976 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6977 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
6978 // CHECK-ERROR                     ^
6979 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6980 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
6981 // CHECK-ERROR                     ^
6982 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6983 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
6984 // CHECK-ERROR                     ^
6985 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6986 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
6987 // CHECK-ERROR                 ^
6988
6989         zip2 v0.16b, v1.8b, v2.8b
6990         zip2 v0.8b, v1.4b, v2.4b
6991         zip2 v0.8h, v1.4h, v2.4h
6992         zip2 v0.4h, v1.2h, v2.2h
6993         zip2 v0.4s, v1.2s, v2.2s
6994         zip2 v0.2s, v1.1s, v2.1s
6995         zip2 v0.2d, v1.1d, v2.1d
6996         zip2 v0.1d, v1.1d, v2.1d
6997
6998 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6999 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
7000 // CHECK-ERROR                      ^
7001 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
7002 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
7003 // CHECK-ERROR                     ^
7004 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
7005 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
7006 // CHECK-ERROR                     ^
7007 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
7008 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
7009 // CHECK-ERROR                     ^
7010 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
7011 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
7012 // CHECK-ERROR                     ^
7013 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
7014 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
7015 // CHECK-ERROR                     ^
7016 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
7017 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
7018 // CHECK-ERROR                     ^
7019 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
7020 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
7021 // CHECK-ERROR                 ^
7022
7023         trn1 v0.16b, v1.8b, v2.8b
7024         trn1 v0.8b, v1.4b, v2.4b
7025         trn1 v0.8h, v1.4h, v2.4h
7026         trn1 v0.4h, v1.2h, v2.2h
7027         trn1 v0.4s, v1.2s, v2.2s
7028         trn1 v0.2s, v1.1s, v2.1s
7029         trn1 v0.2d, v1.1d, v2.1d
7030         trn1 v0.1d, v1.1d, v2.1d
7031
7032 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
7033 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
7034 // CHECK-ERROR                      ^
7035 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
7036 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
7037 // CHECK-ERROR                     ^
7038 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
7039 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
7040 // CHECK-ERROR                     ^
7041 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
7042 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
7043 // CHECK-ERROR                     ^
7044 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
7045 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
7046 // CHECK-ERROR                     ^
7047 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
7048 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
7049 // CHECK-ERROR                     ^
7050 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
7051 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
7052 // CHECK-ERROR                     ^
7053 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
7054 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
7055 // CHECK-ERROR                 ^
7056
7057         trn2 v0.16b, v1.8b, v2.8b
7058         trn2 v0.8b, v1.4b, v2.4b
7059         trn2 v0.8h, v1.4h, v2.4h
7060         trn2 v0.4h, v1.2h, v2.2h
7061         trn2 v0.4s, v1.2s, v2.2s
7062         trn2 v0.2s, v1.1s, v2.1s
7063         trn2 v0.2d, v1.1d, v2.1d
7064         trn2 v0.1d, v1.1d, v2.1d
7065
7066 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
7067 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
7068 // CHECK-ERROR                      ^
7069 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
7070 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
7071 // CHECK-ERROR                     ^
7072 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
7073 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
7074 // CHECK-ERROR                     ^
7075 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
7076 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
7077 // CHECK-ERROR                     ^
7078 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
7079 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
7080 // CHECK-ERROR                     ^
7081 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
7082 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
7083 // CHECK-ERROR                     ^
7084 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
7085 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
7086 // CHECK-ERROR                     ^
7087 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
7088 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
7089 // CHECK-ERROR                 ^
7090
7091 //----------------------------------------------------------------------
7092 // Floating Point  multiply (scalar, by element)
7093 //----------------------------------------------------------------------
7094       // mismatched and invalid vector types
7095       fmul    s0, s1, v1.h[0]
7096       fmul    h0, h1, v1.s[0]
7097       // invalid lane
7098       fmul    s2, s29, v10.s[4]
7099
7100 // CHECK-ERROR: error: invalid operand for instruction
7101 // CHECK-ERROR:          fmul    s0, s1, v1.h[0]
7102 // CHECK-ERROR:                             ^
7103 // CHECK-ERROR: error: invalid operand for instruction
7104 // CHECK-ERROR:          fmul    h0, h1, v1.s[0]
7105 // CHECK-ERROR:                  ^
7106 // CHECK-AARCH64-ERROR: error:  lane number incompatible with layout
7107 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7108 // CHECK-ERROR:          fmul    s2, s29, v10.s[4]
7109 // CHECK-ERROR:                                 ^
7110
7111 //----------------------------------------------------------------------
7112 // Floating Point  multiply extended (scalar, by element)
7113 //----------------------------------------------------------------------
7114       // mismatched and invalid vector types
7115       fmulx    d0, d1, v1.b[0]
7116       fmulx    h0, h1, v1.d[0]
7117       // invalid lane
7118       fmulx    d2, d29, v10.d[3]
7119
7120 // CHECK-ERROR: error: invalid operand for instruction
7121 // CHECK-ERROR:          fmulx    d0, d1, v1.b[0]
7122 // CHECK-ERROR:                              ^
7123 // CHECK-ERROR: error: invalid operand for instruction
7124 // CHECK-ERROR:          fmulx    h0, h1, v1.d[0]
7125 // CHECK-ERROR:                   ^
7126 // CHECK-AARCH64-ERROR: error:  lane number incompatible with layout
7127 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7128 // CHECK-ERROR:          fmulx    d2, d29, v10.d[3]
7129 // CHECK-ERROR:                                  ^
7130
7131 //----------------------------------------------------------------------
7132 // Floating Point fused multiply-add (scalar, by element)
7133 //----------------------------------------------------------------------
7134       // mismatched and invalid vector types
7135       fmla    b0, b1, v1.b[0]
7136       fmla    d30, s11, v1.d[1]
7137       // invalid lane
7138       fmla    s16, s22, v16.s[5]
7139
7140 // CHECK-ERROR: error: invalid operand for instruction
7141 // CHECK-ERROR:          fmla    b0, b1, v1.b[0]
7142 // CHECK-ERROR:                  ^
7143 // CHECK-ERROR: error: invalid operand for instruction
7144 // CHECK-ERROR:          fmla    d30, s11, v1.d[1]
7145 // CHECK-ERROR:                       ^
7146 // CHECK-AARCH64-ERROR: error:  lane number incompatible with layout
7147 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7148 // CHECK-ERROR:          fmla    s16, s22, v16.s[5]
7149 // CHECK-ERROR:                                  ^
7150
7151 //----------------------------------------------------------------------
7152 // Floating Point fused multiply-subtract (scalar, by element)
7153 //----------------------------------------------------------------------
7154     // mismatched and invalid vector types
7155     fmls    s29, h10, v28.s[1]
7156     fmls    h7, h17, v26.s[2]
7157     // invalid lane
7158     fmls    d16, d22, v16.d[-1]
7159
7160 // CHECK-ERROR: error: invalid operand for instruction
7161 // CHECK-ERROR:          fmls    s29, h10, v28.s[1]
7162 // CHECK-ERROR:                       ^
7163 // CHECK-ERROR: error: invalid operand for instruction
7164 // CHECK-ERROR:          fmls    h7, h17, v26.s[2]
7165 // CHECK-ERROR:                  ^
7166 // CHECK-AARCH64-ERROR: error:  expected lane number
7167 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range [0, 1]
7168 // CHECK-ERROR:          fmls    d16, d22, v16.d[-1]
7169 // CHECK-ERROR:                                  ^
7170
7171 //----------------------------------------------------------------------
7172 // Scalar Signed saturating doubling multiply-add long
7173 // (scalar, by element)
7174 //----------------------------------------------------------------------
7175     // mismatched and invalid vector types
7176     sqdmlal s0, h0, v0.s[0]
7177     sqdmlal s8, s9, v14.s[1]
7178     // invalid lane
7179     sqdmlal d4, s5, v1.s[5]
7180     // invalid vector index
7181     sqdmlal s0, h0, v17.h[0]
7182
7183 // CHECK-ERROR: error: invalid operand for instruction
7184 // CHECK-ERROR:          sqdmlal s0, h0, v0.s[0]
7185 // CHECK-ERROR:                             ^
7186 // CHECK-ERROR: error: invalid operand for instruction
7187 // CHECK-ERROR:          sqdmlal s8, s9, v14.s[1]
7188 // CHECK-ERROR:                  ^
7189 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7190 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7191 // CHECK-ERROR:          sqdmlal d4, s5, v1.s[5]
7192 // CHECK-ERROR:                               ^
7193 // CHECK-ERROR: error: invalid operand for instruction
7194 // CHECK-ERROR:          sqdmlal s0, h0, v17.h[0]
7195 // CHECK-ERROR:                           ^
7196
7197 //----------------------------------------------------------------------
7198 // Scalar Signed saturating doubling multiply-subtract long
7199 // (scalar, by element)
7200 //----------------------------------------------------------------------
7201     // mismatched and invalid vector types
7202     sqdmlsl s1, h1, v1.d[0]
7203     sqdmlsl d1, h1, v13.s[0]
7204     // invalid lane
7205     sqdmlsl d1, s1, v13.s[4]
7206     // invalid vector index
7207     sqdmlsl s1, h1, v20.h[7]
7208
7209 // CHECK-ERROR: error: invalid operand for instruction
7210 // CHECK-ERROR:          sqdmlsl s1, h1, v1.d[0]
7211 // CHECK-ERROR:                             ^
7212 // CHECK-ERROR: error: invalid operand for instruction
7213 // CHECK-ERROR:          sqdmlsl d1, h1, v13.s[0]
7214 // CHECK-ERROR:                      ^
7215 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7216 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7217 // CHECK-ERROR:          sqdmlsl d1, s1, v13.s[4]
7218 // CHECK-ERROR:                                ^
7219 // CHECK-ERROR: error: invalid operand for instruction
7220 // CHECK-ERROR:          sqdmlsl s1, h1, v20.h[7]
7221 // CHECK-ERROR:                           ^
7222
7223 //----------------------------------------------------------------------
7224 // Scalar Signed saturating doubling multiply long (scalar, by element)
7225 //----------------------------------------------------------------------
7226     // mismatched and invalid vector types
7227     // invalid lane
7228     // invalid vector index
7229     // mismatched and invalid vector types
7230     sqdmull s1, h1, v1.s[1]
7231     sqdmull s1, s1, v4.s[0]
7232     // invalid lane
7233     sqdmull s12, h17, v9.h[9]
7234     // invalid vector index
7235     sqdmull s1, h1, v16.h[5]
7236
7237 // CHECK-ERROR: error: invalid operand for instruction
7238 // CHECK-ERROR:          sqdmull s1, h1, v1.s[1]
7239 // CHECK-ERROR:                             ^
7240 // CHECK-ERROR: error: invalid operand for instruction
7241 // CHECK-ERROR:          sqdmull s1, s1, v4.s[0]
7242 // CHECK-ERROR:                  ^
7243 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7244 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7245 // CHECK-ERROR:          sqdmull s12, h17, v9.h[9]
7246 // CHECK-ERROR:                                 ^
7247 // CHECK-ERROR: error: invalid operand for instruction
7248 // CHECK-ERROR:          sqdmull s1, h1, v16.h[5]
7249 // CHECK-ERROR:                           ^
7250
7251 //----------------------------------------------------------------------
7252 // Scalar Signed saturating doubling multiply returning
7253 // high half (scalar, by element)
7254 //----------------------------------------------------------------------
7255     // mismatched and invalid vector types
7256     sqdmulh h0, s1, v0.h[0]
7257     sqdmulh s25, s26, v27.h[3]
7258     // invalid lane
7259     sqdmulh s25, s26, v27.s[4]
7260     // invalid vector index
7261     sqdmulh s0, h1, v30.h[0]
7262
7263 // CHECK-ERROR: error: invalid operand for instruction
7264 // CHECK-ERROR:          sqdmulh h0, s1, v0.h[0]
7265 // CHECK-ERROR:                      ^
7266 // CHECK-ERROR: error: invalid operand for instruction
7267 // CHECK-ERROR:          sqdmulh s25, s26, v27.h[3]
7268 // CHECK-ERROR:                  ^
7269 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7270 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7271 // CHECK-ERROR:          sqdmulh s25, s26, v27.s[4]
7272 // CHECK-ERROR:                                  ^
7273 // CHECK-ERROR: error: invalid operand for instruction
7274 // CHECK-ERROR:          sqdmulh s0, h1, v30.h[0]
7275 // CHECK-ERROR:                      ^
7276
7277 //----------------------------------------------------------------------
7278 // Scalar Signed saturating rounding doubling multiply
7279 // returning high half (scalar, by element)
7280 //----------------------------------------------------------------------
7281     // mismatched and invalid vector types
7282     sqrdmulh h31, h30, v14.s[2]
7283     sqrdmulh s5, h6, v7.s[2]
7284     // invalid lane
7285     sqrdmulh h31, h30, v14.h[9]
7286     // invalid vector index
7287     sqrdmulh h31, h30, v20.h[4]
7288
7289 // CHECK-ERROR: error: invalid operand for instruction
7290 // CHECK-ERROR:          sqrdmulh h31, h30, v14.s[2]
7291 // CHECK-ERROR:                                 ^
7292 // CHECK-ERROR: error: invalid operand for instruction
7293 // CHECK-ERROR:          sqrdmulh s5, h6, v7.s[2]
7294 // CHECK-ERROR:                       ^
7295 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7296 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7297 // CHECK-ERROR:          sqrdmulh h31, h30, v14.h[9]
7298 // CHECK-ERROR:                                 ^
7299 // CHECK-ERROR: error: invalid operand for instruction
7300 // CHECK-ERROR:          sqrdmulh h31, h30, v20.h[4]
7301 // CHECK-ERROR:                              ^
7302
7303 //----------------------------------------------------------------------
7304 // Scalar Duplicate element (scalar)
7305 //----------------------------------------------------------------------
7306       // mismatched and invalid vector types
7307       dup b0, v1.d[0]
7308       dup h0, v31.b[8]
7309       dup s0, v2.h[4]
7310       dup d0, v17.s[3]
7311       // invalid  lane
7312       dup d0, v17.d[4]
7313       dup s0, v1.s[7]
7314       dup h0, v31.h[16]
7315       dup b1, v3.b[16]
7316 // CHECK-ERROR: error: invalid operand for instruction
7317 // CHECK-ERROR:          dup b0, v1.d[0]
7318 // CHECK-ERROR:                     ^
7319 // CHECK-ERROR: error: invalid operand for instruction
7320 // CHECK-ERROR:          dup h0, v31.b[8]
7321 // CHECK-ERROR:                      ^
7322 // CHECK-ERROR: error: invalid operand for instruction
7323 // CHECK-ERROR:          dup s0, v2.h[4]
7324 // CHECK-ERROR:                     ^
7325 // CHECK-ERROR: error: invalid operand for instruction
7326 // CHECK-ERROR:          dup d0, v17.s[3]
7327 // CHECK-ERROR:                      ^
7328 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7329 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7330 // CHECK-ERROR:          dup d0, v17.d[4]
7331 // CHECK-ERROR:                        ^
7332 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7333 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7334 // CHECK-ERROR:          dup s0, v1.s[7]
7335 // CHECK-ERROR:                       ^
7336 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7337 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7338 // CHECK-ERROR:          dup h0, v31.h[16]
7339 // CHECK-ERROR:                        ^
7340 // CHECK-AARCH64-ERROR: error: lane number incompatible with layout
7341 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7342 // CHECK-ERROR:          dup b1, v3.b[16]
7343 // CHECK-ERROR:                       ^
7344
7345 //----------------------------------------------------------------------
7346 // Table look up
7347 //----------------------------------------------------------------------
7348
7349         tbl v0.8b, {v1.8b}, v2.8b
7350         tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7351         tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7352         tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7353         tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7354
7355 // CHECK-ERROR: error: invalid operand for instruction
7356 // CHECK-ERROR:        tbl v0.8b, {v1.8b}, v2.8b
7357 // CHECK-ERROR:                   ^
7358 // CHECK-ERROR: error: invalid operand for instruction
7359 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7360 // CHECK-ERROR:                   ^
7361 // CHECK-ERROR: error: invalid operand for instruction
7362 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7363 // CHECK-ERROR:                   ^
7364 // CHECK-ERROR: error: invalid operand for instruction
7365 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7366 // CHECK-ERROR:                   ^
7367 // CHECK-ERROR: error: invalid number of vectors
7368 // CHECK-ERROR:        tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7369 // CHECK-ERROR:                                                    ^
7370
7371         tbx v0.8b, {v1.8b}, v2.8b
7372         tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7373         tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7374         tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7375         tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7376
7377 // CHECK-ERROR: error: invalid operand for instruction
7378 // CHECK-ERROR:        tbx v0.8b, {v1.8b}, v2.8b
7379 // CHECK-ERROR:                   ^
7380 // CHECK-ERROR: error: invalid operand for instruction
7381 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7382 // CHECK-ERROR:                   ^
7383 // CHECK-ERROR: error: invalid operand for instruction
7384 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7385 // CHECK-ERROR:                   ^
7386 // CHECK-ERROR: error: invalid operand for instruction
7387 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7388 // CHECK-ERROR:                   ^
7389 // CHECK-ERROR: error: invalid number of vectors
7390 // CHECK-ERROR:        tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7391 // CHECK-ERROR:                                                    ^
7392
7393 //----------------------------------------------------------------------
7394 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
7395 // Odd
7396 //----------------------------------------------------------------------
7397
7398     fcvtxn s0, s1
7399
7400 // CHECK-ERROR: error: invalid operand for instruction
7401 // CHECK-ERROR:        fcvtxn s0, s1
7402 // CHECK-ERROR:                   ^
7403
7404 //----------------------------------------------------------------------
7405 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7406 // With Ties To Away
7407 //----------------------------------------------------------------------
7408
7409     fcvtas s0, d0
7410     fcvtas d0, s0
7411
7412 // CHECK-ERROR: error: invalid operand for instruction
7413 // CHECK-ERROR:        fcvtas s0, d0
7414 // CHECK-ERROR:                   ^
7415 // CHECK-ERROR: error: invalid operand for instruction
7416 // CHECK-ERROR:        fcvtas d0, s0
7417 // CHECK-ERROR:                   ^
7418
7419 //----------------------------------------------------------------------
7420 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7421 // Nearest With Ties To Away
7422 //----------------------------------------------------------------------
7423
7424     fcvtau s0, d0
7425     fcvtau d0, s0
7426
7427 // CHECK-ERROR: error: invalid operand for instruction
7428 // CHECK-ERROR:        fcvtau s0, d0
7429 // CHECK-ERROR:                   ^
7430 // CHECK-ERROR: error: invalid operand for instruction
7431 // CHECK-ERROR:        fcvtau d0, s0
7432 // CHECK-ERROR:                   ^
7433
7434 //----------------------------------------------------------------------
7435 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7436 // Minus Infinity
7437 //----------------------------------------------------------------------
7438
7439     fcvtms s0, d0
7440     fcvtms d0, s0
7441
7442 // CHECK-ERROR: error: invalid operand for instruction
7443 // CHECK-ERROR:        fcvtms s0, d0
7444 // CHECK-ERROR:                   ^
7445 // CHECK-ERROR: error: invalid operand for instruction
7446 // CHECK-ERROR:        fcvtms d0, s0
7447 // CHECK-ERROR:                   ^
7448
7449 //----------------------------------------------------------------------
7450 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7451 // Minus Infinity
7452 //----------------------------------------------------------------------
7453
7454     fcvtmu s0, d0
7455     fcvtmu d0, s0
7456
7457 // CHECK-ERROR: error: invalid operand for instruction
7458 // CHECK-ERROR:        fcvtmu s0, d0
7459 // CHECK-ERROR:                   ^
7460 // CHECK-ERROR: error: invalid operand for instruction
7461 // CHECK-ERROR:        fcvtmu d0, s0
7462 // CHECK-ERROR:                   ^
7463
7464 //----------------------------------------------------------------------
7465 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7466 // With Ties To Even
7467 //----------------------------------------------------------------------
7468
7469     fcvtns s0, d0
7470     fcvtns d0, s0
7471
7472 // CHECK-ERROR: error: invalid operand for instruction
7473 // CHECK-ERROR:        fcvtns s0, d0
7474 // CHECK-ERROR:                   ^
7475 // CHECK-ERROR: error: invalid operand for instruction
7476 // CHECK-ERROR:        fcvtns d0, s0
7477 // CHECK-ERROR:                   ^
7478
7479 //----------------------------------------------------------------------
7480 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7481 // Nearest With Ties To Even
7482 //----------------------------------------------------------------------
7483
7484     fcvtnu s0, d0
7485     fcvtnu d0, s0
7486
7487 // CHECK-ERROR: error: invalid operand for instruction
7488 // CHECK-ERROR:        fcvtnu s0, d0
7489 // CHECK-ERROR:                   ^
7490 // CHECK-ERROR: error: invalid operand for instruction
7491 // CHECK-ERROR:        fcvtnu d0, s0
7492 // CHECK-ERROR:                   ^
7493
7494 //----------------------------------------------------------------------
7495 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7496 // Positive Infinity
7497 //----------------------------------------------------------------------
7498
7499     fcvtps s0, d0
7500     fcvtps d0, s0
7501
7502 // CHECK-ERROR: error: invalid operand for instruction
7503 // CHECK-ERROR:        fcvtps s0, d0
7504 // CHECK-ERROR:                   ^
7505 // CHECK-ERROR: error: invalid operand for instruction
7506 // CHECK-ERROR:        fcvtps d0, s0
7507 // CHECK-ERROR:                   ^
7508
7509 //----------------------------------------------------------------------
7510 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7511 // Positive Infinity
7512 //----------------------------------------------------------------------
7513
7514     fcvtpu s0, d0
7515     fcvtpu d0, s0
7516
7517 // CHECK-ERROR: error: invalid operand for instruction
7518 // CHECK-ERROR:        fcvtpu s0, d0
7519 // CHECK-ERROR:                   ^
7520 // CHECK-ERROR: error: invalid operand for instruction
7521 // CHECK-ERROR:        fcvtpu d0, s0
7522 // CHECK-ERROR:                   ^
7523
7524 //----------------------------------------------------------------------
7525 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
7526 //----------------------------------------------------------------------
7527
7528     fcvtzs s0, d0
7529     fcvtzs d0, s0
7530
7531 // CHECK-ERROR: error: invalid operand for instruction
7532 // CHECK-ERROR:        fcvtzs s0, d0
7533 // CHECK-ERROR:                   ^
7534 // CHECK-ERROR: error: invalid operand for instruction
7535 // CHECK-ERROR:        fcvtzs d0, s0
7536 // CHECK-ERROR:                   ^
7537
7538 //----------------------------------------------------------------------
7539 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
7540 // Zero
7541 //----------------------------------------------------------------------
7542
7543     fcvtzu s0, d0
7544     fcvtzu d0, s0
7545
7546 // CHECK-ERROR: error: invalid operand for instruction
7547 // CHECK-ERROR:        fcvtzu s0, d0
7548 // CHECK-ERROR:                   ^
7549 // CHECK-ERROR: error: invalid operand for instruction
7550 // CHECK-ERROR:        fcvtzu d0, s0
7551 // CHECK-ERROR:                   ^
7552
7553 //----------------------------------------------------------------------
7554 // Scalar Floating-point Absolute Difference
7555 //----------------------------------------------------------------------
7556
7557
7558     fabd s29, d24, s20
7559     fabd d29, s24, d20
7560
7561 // CHECK-ERROR: error: invalid operand for instruction
7562 // CHECK-ERROR:        fabd s29, d24, s20
7563 // CHECK-ERROR:                  ^
7564 // CHECK-ERROR: error: invalid operand for instruction
7565 // CHECK-ERROR:        fabd d29, s24, d20
7566 // CHECK-ERROR:                  ^